From 05b13685e44422b65bb76df6524cdfa567d98f34 Mon Sep 17 00:00:00 2001 From: Ivan Reshetnikov Date: Wed, 30 Oct 2024 11:19:25 +0500 Subject: [PATCH] Configure smtp for immich --- immich.yml | 5 + roles/immich/meta/argument_specs.yml | 18 ++ roles/immich/templates/immich.json.j2 | 12 +- roles/immich/vars/main.yml | 7 + vaulted_vars.yml | 422 +++++++++++++------------- 5 files changed, 248 insertions(+), 216 deletions(-) diff --git a/immich.yml b/immich.yml index 5a3e9d4..ff9f179 100644 --- a/immich.yml +++ b/immich.yml @@ -8,3 +8,8 @@ openid_client_secret: "{{ immich.client_secret }}" openid_issuer_url: https://auth.comfycamp.space/application/o/immich/ openid_button_text: Login with Comfy Camp + smtp_enabled: true + smtp_from: immich@comfycamp.space + smtp_host: comfycamp.space + smtp_username: immich@comfycamp.space + smtp_password: "{{ mail_users['immich@comfycamp.space'] }}" diff --git a/roles/immich/meta/argument_specs.yml b/roles/immich/meta/argument_specs.yml index 2c3bab1..5304c1c 100644 --- a/roles/immich/meta/argument_specs.yml +++ b/roles/immich/meta/argument_specs.yml @@ -24,3 +24,21 @@ argument_specs: type: str default_storage_quota_gib: type: int + smtp_enabled: + type: bool + default: false + smtp_from: + type: str + default: "" + smtp_host: + type: str + default: "" + smtp_port: + type: int + default: 587 + smtp_username: + type: str + default: "" + smtp_password: + type: str + default: "" diff --git a/roles/immich/templates/immich.json.j2 b/roles/immich/templates/immich.json.j2 index 43d5951..ff14d3a 100644 --- a/roles/immich/templates/immich.json.j2 +++ b/roles/immich/templates/immich.json.j2 @@ -158,15 +158,15 @@ }, "notifications": { "smtp": { - "enabled": false, - "from": "", + "enabled": {{ smtp_enabled | string | lower }}, + "from": "{{ smtp_from }}", "replyTo": "", "transport": { "ignoreCert": false, - "host": "", - "port": 587, - "username": "", - "password": "" + "host": "{{ smtp_host }}", + "port": {{ smtp_port }}, + "username": "{{ smtp_username }}", + "password": "{{ smtp_password }}" } } }, diff --git a/roles/immich/vars/main.yml b/roles/immich/vars/main.yml index 604a590..b052aa4 100644 --- a/roles/immich/vars/main.yml +++ b/roles/immich/vars/main.yml @@ -5,3 +5,10 @@ openid_button_text: "Login with OpenID" openid_scopes: "openid email profile" default_storage_quota_gib: 20 + +smtp_enabled: false +smtp_from: "" +smtp_host: "" +smtp_port: 587 +smtp_username: "" +smtp_password: "" diff --git a/vaulted_vars.yml b/vaulted_vars.yml index 22b41ff..90b11ff 100644 --- a/vaulted_vars.yml +++ b/vaulted_vars.yml @@ -1,211 +1,213 @@ $ANSIBLE_VAULT;1.1;AES256 -33623562616365373036323031306663353630613366396265613134306632663230363861643935 -6536396139623338316366643235653461333961363563310a616630633938366264336661363438 -63373439643263326664643966353839303430626433306234373937656530303034366130663032 -6232333563383265630a363462633264333538373830373961656235356139653332373866376633 -34626138346237616230363239393533623637643565376237373365373065623564636538663736 -36316431316430616661313366643138366530646238343330623161663130373138386438633731 -63393065336530623231633335393438663733636630383363396364663566333239326537383434 -66663662653735643833316663616335386363613130323766656565613136323731383464626439 -34393732386437393431303363356164386631656630373562363762656563663530376665623531 -62386666316137613665323032383936653866313535326162376238616436393062353734386633 -65623635353237666465633961643835373430616539643464663033646132383631306630663964 -32303034373438613861363838353731386437356531383066363335613534663461613661316235 -38616134353334613637646237653131653532376535386338656431303235653837336131316466 -66633639323037653364303932656638623130333039346166383937326361336336346135366433 -35393562663034363335636236616561353466343064343564616365643964633337316432303530 -34633638663635363766393161626362653235363264643661643364366230313162363438336133 -33326235396332346431616664343731313835323166326330666131646462636566633061653636 -64643535616363646439386534303834633963383533626530393739323334653335336436376132 -37306137353238393465333664396439636233336139313562303432303637343765663634326536 -62343232653764646534363332326364313437396365646139636135326564376563306133383235 -63316132386437313464313338656531643366633562356166643733633934336565373464343133 -32643366613236636461363734623332623064663534623433393765363565633465653532646466 -65353639663034643532326130383137626235653036353130643439373062326436656434336339 -64376266663733363932333930653962376132636132393565333936386462653465643334353065 -66653565353665613738613663353534336530306437346237373433656164343936383061383163 -66323464346363353537373961363430323862373062323665343638373264616133383763356233 -30626532346161656134643939383165616337383831643235386239613732656238323939353331 -39376436386332666265643434343461393264303232633962323362653931326162396333393237 -65333336613363636461356562316336653839386632626439386439393133623261666564643763 -39373365633131646636306332303963663964636163373433663062303834653662363366303430 -66323263663635336565373566633835336163373561373330633032316665616235363932363062 -62336563396534363835656161626164386136333061666337383138613338643662363666653434 -62346364616365353964366236383936343462303931663862383763303562616534613535636536 -33636364373933363431306530356366333939306136333037376531633164343963313466656538 -30356634363564346563613264653536323933626636386632363365646531343736333531636132 -33663034333837363561643136303262663864363434396435623836623630313830346134653630 -30396165353864643065313562613038373137323562333262613338643937663438626539663666 -31663230303363386230393463653133653365613639633362376533366235326563356231313938 -65316432653865653861633634623730633335343534613133616339306437326432396333646566 -63626337623939356338353438306661346430313738383563323966646363643034613261623935 -33313836316661306264363534656561613634366330323939636163393534393839656666323161 -64303030633764646234366564393638616639386164643364363762346633366565303465623833 -30663866333737393163643738663236616430386535666261313333366632343463366637356230 -31326331643036623465633434383866643937636462656238653462396265376531313962383337 -34383966353132353864643666643466343938373036326530643337343435373065333638363766 -61636638613262613736373431666237306163613463396334393139633366393566616538623039 -35346564366261316565323135626531363532343338373966633532666431643835383765333131 -38613562313430326339383264666361393438663331383633396239326433623531303539363232 -63663063643763613037613261336666633634366562386630393432666439323935353230386137 -64303932633230653531393238393839343832303334336131396536633139383438346235663035 -36626464363535346563396365323562643939613830303562373636636632373463633364383862 -35373062643162386465306430666432323264363362336632353736653061343839383130376331 -63333237333235333730666133613063383234323434653938343562373932616665613631373532 -61653434623465663165626138386339396432616636656561356165343164656364396430333238 -61643036393434346633316332376364356233633335633131316238393232653063643963316232 -37376436363066643366326263386663333731353534313538356661666261303862386232336164 -37633962653766343866383431626534666561373437363430636233396232316663663133376137 -39396338623532353734653765663038316630643038623932393664333063363838363632333465 -30353836613736326232653436346566336533373838353532623764613864323536666566643236 -36656564313862643131383333323234666439353664376130353632306133303131393934333031 -32663062353532386238373364663233366438313037613731643562303739633162393362343832 -32633761616561326634333731653934626231613265613630373631313565633062343261356436 -34336362323865376336303938633263323333626339663265623562323837373031653937316631 -64396530616538326236636663633030656434393436303439343864343766396439386535653136 -37613832613636343433633165636339636132616631653265616163356639333734666234393234 -31313631663337303632656264333336343564323466333264343938623530333966323736646262 -62333137333833353033316132376266643835346564623762656533336365363266656566376533 -65323430366165323230636637646461306531306365383763323566376634656436373635646666 -31333866396637333331653337333066313334363861343030303663323964303337313533643963 -37666537336665336138313239313436316464313232303333346262396435663837313737353763 -66373139313831653730663236643039313065363537303236346138373166646433616632323766 -63383133333436383732343333376133353632376162636365613534633634643661343630626230 -64363461383131373335623835353435363336366462366235646333313633333730393835363434 -30313465343931353135323632336234316339376563333666623362326262326661326231373861 -35323532633037373864393265376561373438623738626338363535393434636336643732623561 -38393431643630373566366432663862303164663537356462656566613731323731643233663830 -63346665303531626532613666636161303962366139313362366434633939646138633165656663 -63373137376137623939306164646436396438666131626330303262626435386339386536356139 -33343063383165623032633932626262653432383438303434646566356162653733356532383535 -34313262393563393133343234356236616638383137323639633930323631643262393139323430 -39393533636231623962343935346333636536376162633433343636663461383932343665306638 -65326136623236663066666134393761663338363437303439643563326535656631653164383039 -63353938353432336662306233666265656333306230333232333161643732356134663738373962 -64646635323331363965373664366632633833306631346164613462633433616532336430636532 -66653837303339313137333731626665653562626232383731313930623963313062663131666264 -39393532356438626561613534333331343438363466643136343830333338313764636166646166 -35366165643439636264336433643063363763383365633739666439366638663836633265303832 -30333061333436643438383332313031323761333832613366383363313834363239663964383361 -39333861336663663535303633376337376235363462666265313938316265663839316666666132 -36626132396264663738613231646665646430366637633331623333326430636462653463353237 -31313732613339306265613264633361306234656561356237383366656532353635333863653566 -61646237393666623531663063663962633535316436613830613134316363376438386666366138 -37356139366163623134633030333334333236643335653135363930356465323863353638313330 -66316662653730636261333666643539353264396463323930633538326266303132313039346464 -37623237643439356233646433616530616431396161643965643037313931666237623733343530 -30373766316563633433343165393232636637356538393930373433636264386562316138343636 -36646661323534326533323532313538336531623736623830633432656666666238356462643131 -31393138646538646137623138323766613464323861613530356438313862643436353066303664 -32343434366435643338623765633133373039303165306334653035626365616337613062366534 -39363435363662643761393330383733306638306139633634326663666363633437306163313238 -35346333346665353263383562316664666136663461646533653636643431643066623461613365 -66616630666239616435623030353635333235363433653734656533343463616366373963323239 -32653863626563363363343330646631633836383435303031626335373063616462643530333961 -63643430396166623364633738386162613037363633376136306561383766636534353234323166 -64663166613466313664346330333032623436613738373832646138376336323062346537383236 -39333464346638666438306165346435623164663435316161306334346133613939656538393935 -66653232666337663936666533393036366433376637366534373338616231363639383966343531 -35383466633633383866306533303337656237336539653062643164316436643938353436356664 -38383365653937316339343337626631396233616233383534343735383862343766666536303163 -66323531373537366166623034616163366662656333313630313632323337616535646435343631 -61323063393134643063316234313032356161623964653665333731646338373438393034396534 -35663630373061653864393733376561636263343165653933313331306639656534653361393666 -39656135393466616536653435646364383863396639393738343766343664636330613239623231 -64393265373365333632626435636132616136343662626237393938633436393564383063353531 -30303764376365313038346431663264633633646137613237373336663230656231643334363330 -65666166373066613764373137643538396661343465323231313061393834626265303930633462 -30643531353236663061653539626332656638353835623664663335393930383738646166333637 -38363036366430316564343035373934636130636330333261646330653262306636633765653835 -66396165313461633765643731333166323365306135326466303932643337643865396536613565 -33613036656435636633313162313939643637316431323135666535313262383432386632373235 -31643933643365353466383666636332393366363934336330633165306364663063313562396634 -39383330393234313965373761316364643965646561623233656335636232303536356137363233 -34363263613363346531666166363661633837303065643366386237326662623064353131313863 -39633630636435326637316635616166653265333565613035653936303539353336326533636163 -39353532343566656431343462303638613063306539663935613633633734313666373866353939 -66656633336266316562616339663866373863626461623336323932613735356432636339376264 -35356561623632616636633332663862633163663339363235323763343830363566366334663336 -33383939643730396531323064633033623832363565343638636335653962663164353536353732 -65343735306166323436653439353438393763323437343666313837343330376562636236663639 -30336261383934303261663762313363303332633030633864396137653832333036303932623962 -61323431336261623937326139623666616233333134343330626338333763363336663333633364 -35636233636161656537333833646463376331396235376431633832653535366165653434353431 -63363262396465623834353339366233373135366534346166376363363130306266643065313336 -33623335653061363865653365336661613131666435346233656433326364346461656235366161 -39353862336266323534353733633037653661613062356462336631626335626163326239313238 -62653437386435333532633262306466363033653661343734363337643333643161616135663062 -38343537333532653632303439396439313733633431633039646133666132366436386333366338 -32633933356536666339303031313634396164333863643134363037623637633061623036623866 -61656266313236373737653136643938326563303663323839373364353066323332396139363066 -37333432643238323930333735303831336665633832323035313032356637303862373463336430 -65356561326664353330353266393763626638623065333538653532373431666635306630386666 -62313532636464323939363631373339623535616132353132326263383430613733633761303939 -34646561343366653735313331633363363438313365633832643231353739316163666537343462 -30383462636135616232313634363632633862663638373232356563623039666232656363336432 -64643066343566363537396230326336666163343239316166376533336261306435333339386434 -31373030623664623434656462626231636532366333306436666433303038333431386232343839 -30613930343665643835316264613231336538626536316230313361373337313431383633306539 -38366165366133393161326563393533366261626262653565656635383138323734316664346433 -35303135396436393334383435656362646261303466613233386234623965386539656664373032 -39656466363232353038373334653662366334643562636130343736323238663832383034666162 -30383663376364376137613937643032653466636632326433383364383239333634663164356163 -30613265303265636566633666653636313833646262356431373032653964626138396235306433 -65353161633461633866313264393834653638653663633237663730613230636139623236363038 -36323735653535313733316164336238633333313033653433356138623465633334653335636265 -31356666346131323466353333323632313237343839646661323432636463636531396436376163 -61666136326164633935366632636339663632346634636235646162333730336265623464666565 -30306238366639633735346231613634363938616339383863386334613537383264316531643862 -36393461663564613762313733616661303935373664353632303365316331333033323464623539 -63353038393932303363636464313937646266613833383962636461666661646362343439316135 -31353932633862356563376630326462363839626165306239623135653734333562343437613134 -37393262333632306334666361303232316636623635333862616335636139363436646432616165 -31343262386431386162393732306438356461633330383333653831363237333265613638666430 -37623133653231373461383462663930653935623131366430643530323532356563383938393063 -65353535333432646266346462646630646262333639363562353266313763616264353564666662 -64656438336238663966663434383431366530343033646233353761316638313763646630376465 -37383565313764653564303662653235616462636334363638623930363334646638353132333334 -64356136383136616166633138343166396561373933376165396634653763336664336265353730 -37356134333638613664303466353866313134366235366230393365356666653533633834613234 -35353231333263336630343830303933303935333465333962356332666235346138613530333133 -66643535663032333438303138653430393261323831623034333430626464316432656266316433 -33626534666536313633303430386231313035333833373831373639653738373031373532323136 -32306433373762353734353635643762316531333934333064323362663161306330353966343666 -63333832353332393738646433643661316633336535626464373933643732626361383031323363 -64323662393733303133643236366365623363326263303535366130356530643162356434616663 -39383566313261386237656634373761663630313662393235323330653934303438653134663831 -33613636393633616365313566356536333936626238346635396539323062653136613939376638 -66623133643163613361643435376461363239363639613039653166323432623030373761333931 -36613965306230356466303033366663636433616630316133656164356631363531323139633839 -62653832363838306238633062396230306564643038373565643162396136623232633730613735 -32343365383838373834616138623534376438663238363065376630303339633336393066353062 -36383132326237366231316433636130363033386263373539663038643861356637363466393930 -62303937643864373561373732306563313434363334316630316463636531313963343233306666 -66343366393331636433623762393738396264633034646539643133316633643934316336353634 -65633134373132323837326539626336653532363366646233373836353439323631356533356233 -36326133623762306539626534633333336130653961376635383163646436363061663236623839 -33313635666131386433313332616434356530323233626265383038656336313331383462333131 -33653134656264333662623365333231373937623139343434373931663966663238633032633165 -62656537663164643164613664613763356233623064656132623463613237393662633662386430 -33323731306464353338613564396533633630333462396330346166636639343465376139633062 -63393661383862316165626362373766376336363034643134643563363537653164646235653563 -33616166323331396137343233633535326365613038613662343030613339363036323136316365 -31343862356338663464656332303735643632303833663536356138393365663233393233383439 -33326136636665653134316235616436333962623661393437666336356536666436653831626262 -36343464393930623166336335623839333833383361346134646435393462626338386432343435 -34323562643632306364316637383437356562323930383761313666353138396238613930363963 -65333533666461323334316533353933656235333933386162613736336636653334373536373535 -34353563393866633562653266666132383230366533643835383135316566306434376339373831 -66346261633661336533353163336332323631313034623735303635303637363765383930356365 -33376361643135626531366238343730626365396634623935363639653035323864656465613434 -64613763626662653661636562306230666135383136626432613262333361643266663164663136 -63346430336663633035633434336362393465343239383436383366316261653338333764386330 -64373064386263316134383035333464353464613839383633653634363234373237383733333333 -31653166353830643636303933326433326466383535393738396535613632363432656335316561 -32383764323561316439616336393365343162613364663036303365356339336537386161623232 -63613261346234373661313962666536306361666433633965333337646136353766383334383938 -62653462343832653838643134653735303333376437373266663838653737393261336639393334 -64313534666163393262633465633437666337313034393635353865396137656139356439346265 -35336635666437363565346438626137336336333432646266386238646465616137633635343234 -30343536663730303530363839613037666135663261353137323632333537613032626235643333 -6530663563333539353235313730353737316366383334383736 +37653738373233376237353836326534666561343865386464383338353665366536313032636436 +3630633233333562363561366636343132313366663337330a636233323765373037353237303566 +35613165346265666330653435663763303364633164313536613364633261373965343032616136 +3732346366336632660a643565653261303163396137656264666462663432373837616433326165 +31356631626434626332363966626331326664356234326131636561313631363236393432303834 +35343138353738366432376639313662383338343632316363333562306164303539633730393966 +64326635303364626137306361663564376531616466323536646539373438316332303933643732 +61313336613033363931326562633462633534663164303933653331663231656663393532666231 +61316338663631613039613838666435633036613966316235346434626530386362353564343332 +33356235353433366437633066653363623763653231666435303662636435303033363337633265 +34393539613063326536633630646366346138306431306465363035386232313937373166353935 +37333766313065366233633937373431333061326333373430353738383465646337633633306338 +64623438326665313431303165353335616266383235653731636531383436383033313133616230 +33623534656661383161613734303230386636663662386532383562393461663762373331663766 +39616230636135383031653035333434613963316136343062363363613138393266383539616631 +35333834366331653539323338633231336433656262343438313438303438613739323230613733 +32303063303561363263356461313735346330333637383665633163353366373832636535636133 +66616635663533303335656237613962383663623536663331633666383063316535393832366161 +62343963663564363530383335636565613564366332366563306539636339376465363038313361 +38333163373837363639313663313339393531373033366536636263663238323564396631373865 +62386533336638616337656662363133346436613939656532303930336530343337636436313630 +64353832656664393030363432333139353439636331646437616663383830663534383461643334 +64353030336330636165343431643961616638363563636465633238303233666237343230663765 +66313666323332306431366238326330633534353664326131376438613237653364653735643838 +37333831633036303136663731643939656561616531363033343261633830626339396536313466 +34646433333936633132663232373539326335653966643764343434363438376265643635313737 +66316334666465313465373238383463323561363334396439613639346337306639666133363666 +32613830383262343964346535333465353031626431383733353763303162303865643430653239 +35656635666132373863653163323632393234313435636464326334353935336566346661653033 +39306563363065303165373732636132343339663865663361623366666163386463636339666633 +36383836346565383561303131306437333638386530626265383265636462386338343335303834 +61313430386636626234643630346663326262653866333963633234383566646565326662336163 +38616563363035376562346536326363663064306338346336653130346366613532336561336234 +34393930303661336665326634313230313439323431353535666130336565623264643466616630 +34373637346636653565646664633739653837323130653731356565616265336438366663313561 +65326339373332343232373534646231623461343065303261373430373636356263313638333437 +62643662376132393334373934663033363330316137616365326136336134646334386161306131 +36613065316433363561356661353733393766373561666532303638353466643734323261353139 +35623738363938303461623964393830616666616562326235643534313937663331633263336535 +32356536393636396331656335633261666438633333326238336661626232633635333131303264 +66646633386534663365616638343934636537313232303236353534353331393962343037323664 +39623063333932616531343565386233353436356436363866313262343932386533356361663462 +62623939373962646434356439656165353266353663636233356338323865333361643166326165 +35663961356564646232356466353563343832396537366635376435656332656539303833646362 +32663761653562323632373665303133353938663563643463313536383962663936313433356439 +30636530336430633532626264653466343137356633313464613936323633396232323463646231 +30653162653533336161356435316435336435616365333432333334376536626261396530373034 +66663231663765323836316234633734643131393462663463633266383361663635633663313364 +33316163336539336561663765393431306139623662313631383963666433386466633261666364 +63396232666461663466623035316337646161303638373265663036323933376239636137383764 +33633531386333346263353564613638343030326436313966356161643334633965343537643735 +65633461633436643039336166613766353162343862616436383330656536623762373364623230 +35333631396662323261646635356434396131633964663831336364343962383539366264333133 +65396437376561613566323839353331333933656139616336316534633966623931663736393130 +31623961326130613438633231626238373532633531306361306363353436613163326565356437 +30306461646232376264616463313235303738653766313233346465383633616330303538613432 +65336365343038653435623233666334366363353535663662373934303536373034666537616537 +37646534373361633332366337313630663539626339643337316162323736323766663738626438 +32653533633931333461353935343238366630613866616565333938663234393230376638333738 +37656239373131383434323333623466396237666237306532346464653237313635623738336437 +31326138646265643131616366663166616332616639383339353131323262353363643562353634 +37326438623962333465633431373438346538346336356535363233376636343065313930346339 +31653337613533346636626463333234623562306331633865343963393132346430313437623363 +65316633643739366532366635636466646231373334393965316565383764366531613363316430 +37623834343963616363656139623837333437633263333537373165366464323532303135326266 +34623937666630626637356630353139613736326438346233316562353831616137393334303161 +63633362353036373137366337616133363230616534353639323332313339613864633230623238 +39336636616661333038326136636662653730636536333966323938656338623437393238363833 +64383433343934636330623363363766303336313262323066353436346235626632383239316361 +35353030646265336232346530373030643731313436373837663031343036363135363330633137 +31643533316263653631373964326262666163643633643662383036616161653766623339396362 +61383135366666376665313634633534666134323762666438373439393565303135333366303538 +31663461343031316330623334366435393166363634383239366561663762333562323966373563 +32353961343361666661306539323132653535346466633135303364656334353865336636616535 +33643736313438353765633266373964663739656336363838393039646565643738323663313237 +62396166373733326266363264613165313665656665386431346566616133313966356566356261 +38363764653665636566633762316133353833626133646133313834376134343039316464336463 +31393932326538366533653133633961306434346335366663373534386233343532363866376364 +32306233643031633735343232396634376339376561393631666361396337326361313564646337 +33626139663935313434393030376539643439393331643832663539336465666632636566343432 +61623865356631346333613030383935366663373764333961333639626635383038376662346430 +37326464333835643938626434666162376165393837396264393533383765386631323632383939 +34323431323134366561343063346131383664663231303232356363313434663738373135343733 +37313633303862383663666665396262303232653536396236303036643736323131333939656231 +66643464623661333233396630353938306366613134363666326163386366383463636263656630 +37303232663161396533633535363535633330633335366634303964616138643062373162623731 +62363361383461633934393430613664316437626565626433323637646133643632616463383433 +31396136323833343134623634663335623134643765636237393631613464383635363135613530 +35653030623565373264316434386138373931656262633231353135633034376163386662343330 +38633232356564643733346633313631313662353137623137323931643466333462353639623933 +62653261323533306332626263613763666134633134383935666637313237313530393033663266 +39373237306465333761363361663436333932343164626264376365363231363963643332656632 +61303932306139666363313739373764333435396234366465363563383831383933356664303166 +32623763343866316135356439363139336464343263323863353866333038636564396265613235 +61366536366164323432383830623064363036616363303861303538653730303539396336376563 +35633964306637396365373730376338373933353934646133626230363837336163306636336131 +65353630333633306236666639643035366432356363313064386266313936303163636366373733 +35343163353832623239633530316232343864313366383235303830333661623436616164333866 +32633463306333626337366137663263613739376364316661306662613862346430386332636231 +66373336643531306266343061333637373263636661656465656165366633386163663432623665 +39616362613931623264653430646563633334356536626131333539633164393066333631303864 +31633731613332393462353538626464363739643265653332386630343132613862636637366336 +62633562363531303737303665343234663565303737366164386431303736306238633963643662 +62613935653864353937383764356364343263656635656666626236316232383665613865636138 +33633435373133333264386233643734386438623036643361663530383063313539393037663039 +33626564376165343339333361316565633764656334383730383564613565653831336262303737 +35656162306438626462383165363863643265326538303762326662363335623566636435323166 +35353164656136643538396434323933626334303764383130303065383461373631393138633938 +33633864663738643031316563633035653931643031613064343633383036333934663938316538 +39633763646138343162626436616532316566663931373264336334376234663966313763303637 +32643766653736346638333066366165613237343337343966303833626462653031616138353266 +33393262646138346564366538316565626561376537636134353263306337316438333965633465 +34633664613539343863653630343738323939633062316231396431326335353734366535376263 +64316161383163356436373632636365626663356337633234373361396466643965336239646639 +37636266316133323732393335636330616130396161336639316434316662626366346162643337 +33333634643030623934363130366362646161396466303731663134623164356436313334373834 +34356136383137333462633837313963313034633365373036396639396635643261356339636330 +36633961336437396332346163346665613861363130356665666333393038396361346532393738 +33336631373465333365623032663734653736303536333666343536623336383264363631376534 +30656135616134356161353830306130316135373132633233383336323164373039333864306337 +65616238383534636334623663613831613334663663613761313161356136646334356439623737 +33666564623036666235653964636461343434616134353462333566666334313161383136306334 +30366234653061326435343431623434386537353062666339386433633761623561373061636264 +64343734393637346437383538333766653563383337653763373763613035633231323361376461 +62326562383162303939313933386631633530316531323637633036393462633731366537336239 +33646135643538376266383831656137373634663062643363633463323134633831636431656466 +37373838343030336330386561653962323137323133326239333361393433336538383636633837 +65306561336434386236636139613366366566303466373463333939323161663539356131633735 +66663162633730663263326639336137626230386537353461333762633330616263363764376137 +64303630396436623431396132613562646265643464393835363132646365333263363764393866 +66353162393964356533643531373766313963613161383234613265336533393335646232333466 +34306437386230373366643864356562333737316633366564393564633232353466333930623239 +32313063323865306631663361326265353638346365343433303436333639393434303863313263 +34363832306238343938346236363431626439636161373361353964353437653062373932313539 +66313632366439623439643931333365646261393163393765316263316436386338326161646364 +64626535396664383630323639353538336134366465303666626631616266363162336637373536 +30353637336532383863653831336666646437376464393531333036313238613937666661663532 +38356331306534643936363964343638363566393361653864396430383531333563643436343161 +31333936653632643066333030323265646436653037633937623937636536363035626136373963 +66366265616639623130616662313332346536313030353433353935373435653634666233323030 +35633365356535363837383832656463303336666662353731343032313339623930383830653732 +66383164663634386237373236363832646239656232333062626464316236643934653037316237 +65633531363462653630386364373364336331613536643734663733633130363238343663613339 +61636466333830313964336666343735303939333462333635386665626333363266343464623735 +32393739323138306639633832313662346138316237643830653936653932366230323038633839 +66376463653633386330386162376334303830643165333833653439633438313534356333633736 +66313330633938663039656638396631616332666266653232323133656365316131323234333062 +61393663323733656236333532316665663562663136633038633739343663646664396234386339 +35373362333166343133363061323166373836373438643165343861386263323637363630393737 +63636363353330386563323766323731656636646436333133656262383935356432306331663265 +65383163346538393733376430386164326536363236383839343537316665363665313930356364 +62616165356635356232633337373032646136616165623763313530383137666162623364356262 +64353364356630623532316237376333383864653163666333343134613537336338353838353263 +38363633343463643932663666383034356561623830366436396534353030633130656663313164 +66636134353530633237316633383462353130653963346165646431653563316333386430643365 +61633236303337663534363430393864336130373534666539643130376439346230316335373239 +63613439623431346166366664323365643862353431363436656336393733316434346335626530 +37623561376361333863313537326534663665313931316438623261313063623561623034366331 +65333432396265663464383131396232326336323163356431393863306639313237333931363362 +33323137636633636133613361396361663430633465663638363930316134623261323630626566 +37366333333237386535623261336530666664373630373965646136396234343464353036386262 +66636463643034363764666462356335633461393762303832303130376131623639363234336466 +38323730363866353166623936393862373363646361346135393063613563306533383237613233 +35343537346363303433306537313766363635633164383566343765323863333863393730333263 +39343763346631353032656663396238653438643264346536666462663937643436386565376331 +32356462333530306464353038336264396337343639643236663330316638313263613536333337 +61386431373663646231336562343135303232616535666163373664363232376432313535343138 +61306330333330383139336435376561356461636662306137303938653739333131636530666632 +32393630386165366365653830346562663962313665356235323531616562306430663930313136 +30633234383238393332383862303066336230346535383633656334376638313766653466666466 +35336265643166363138373536393031643833643564333265303766613035343763363364393366 +33323839383263613338613862346630373561653033633439633864643566353334336666326334 +39646464363564633761616265333030376130363365626238333966653836376139623639336162 +65356237623137383366373865313135333737393531613363636666333639636335336636323334 +31306437653032656236376161653664613564616236383935323432383631356464343462353564 +63386166383462653365363962643837326638336361636533643233656164313139363830393336 +33303332643536623931396562356133643435343238383032633463616330313661353935303130 +36386536386533333665663038643131343165623465343536323634323433363363396665653765 +34313830333163313964346434663731613461666563396262383234346131316531333130653438 +32313032306164653739656664343861396430633635333735386666653833333033373038646539 +34613731383231373531363237323663333635636534393135396438306661363438306332383961 +30636636666164313733373639306663383734393733303166363332363234643634323464646136 +62323134356462333831323336346266616339656361316433656464386636353962386637316631 +63323236316232396164323435333665313962303139326338656266333766316231303031633964 +66383734663537613238303764333165333065313165656266393666663937626539393861666561 +39383233663039356639643437656531333361346566663732386135356234653532393363303965 +63623235343536313466323065343432383861356230373630613730616436303438353765343832 +65336230346131383131373466393932383363333063303234326333623331656337613530373637 +32643032636434353538626265343036653065386233663933346261663564636138306231626636 +31646136393636346434636636653230653230363035353133663734336133336436643061373261 +32346537613733636137306539303432333833633134326539323031653132343731613032396133 +30306264653132366633326439653635336661326665333332323331373763653862633536373631 +39663831396232373738616562623737633038636432613333326537336564633631346566656138 +66333664646631663731666439366264373162653532313739663131366339356532336663313738 +36336533616630303564393566653735623432396637656138316366333163383730386433383962 +61303337626165663033383964613331353163333465613034353238626134323239633363363935 +63336330636661396137316338653338643137646663646339313863653666316639316462306163 +65333939333033376161393934343333653335303937663661353765306336333730363361383036 +39373433353764373838616232393336313432643461313332633135636430633238653666353635 +66663630323365353432353031383065656339646432353265666562643761303765666234343634 +30323861373237346433373834326530323364363634303839623961346431303338306134666535 +63656663383839613562663765326530383439346661373465623234303063383239386535616265 +64623661306239306461333463306139303734636239366135633364323436353530303634326138 +35623737333731643032643632633265343934343961663963343162636339663461363561646630 +62386463383530316662663562616433666262653861396335396233636637353463316262343431 +64326532326532303833643939323364306261653165633463343265383734343663633333636162 +61303038336533613566333634386333303739316464333830366366653139323739303062656464 +66323337383662333261616462656237626235303033343934363633633435643032666433643138 +38613935356261396139353564633861333666353538303363666664303937666531363637383636 +31636563643562373863353363343831333039376139333262613334626435633035646437316363 +64346632656232363161623835393263303964343366353438633561623031646363353130643866 +65623230613331346330