From f707b9c95b2b1abe7d31fa91a8ca79b2ab90bf17 Mon Sep 17 00:00:00 2001 From: fredmaloggia Date: Mon, 5 Jan 2026 19:15:03 +0100 Subject: [PATCH] primo commit --- README.md | 10 + VALIDATION.md | 23 + app.py | 11 + appsettings.json | 14 + pricer/__init__.py | 1 + pricer/__pycache__/__init__.cpython-312.pyc | Bin 0 -> 200 bytes pricer/__pycache__/analytics.cpython-312.pyc | Bin 0 -> 6818 bytes .../calc._nj_caso_airbag-893.py312.1.nbc | Bin 0 -> 29112 bytes .../calc._nj_caso_airbag-893.py312.nbi | Bin 0 -> 1649 bytes ...c._nj_caso_airbag_one_star-980.py312.1.nbc | Bin 0 -> 25418 bytes ...alc._nj_caso_airbag_one_star-980.py312.nbi | Bin 0 -> 1662 bytes ...c._nj_caso_airbag_twinwin-1020.py312.1.nbc | Bin 0 -> 25695 bytes ...alc._nj_caso_airbag_twinwin-1020.py312.nbi | Bin 0 -> 1660 bytes .../calc._nj_caso_one_star-961.py312.1.nbc | Bin 0 -> 25217 bytes .../calc._nj_caso_one_star-961.py312.nbi | Bin 0 -> 1653 bytes .../calc._nj_caso_relief-925.py312.1.nbc | Bin 0 -> 28798 bytes .../calc._nj_caso_relief-925.py312.nbi | Bin 0 -> 1649 bytes ...._nj_caso_relief_one_star-1000.py312.1.nbc | Bin 0 -> 25458 bytes ...lc._nj_caso_relief_one_star-1000.py312.nbi | Bin 0 -> 1663 bytes .../calc._nj_caso_sigma-909.py312.1.nbc | Bin 0 -> 29413 bytes .../calc._nj_caso_sigma-909.py312.nbi | Bin 0 -> 1648 bytes ...lc._nj_caso_sigma_one_star-990.py312.1.nbc | Bin 0 -> 25538 bytes ...calc._nj_caso_sigma_one_star-990.py312.nbi | Bin 0 -> 1661 bytes .../calc._nj_caso_standard-877.py312.1.nbc | Bin 0 -> 28461 bytes .../calc._nj_caso_standard-877.py312.nbi | Bin 0 -> 1649 bytes .../calc._nj_caso_twinwin-941.py312.1.nbc | Bin 0 -> 39991 bytes .../calc._nj_caso_twinwin-941.py312.nbi | Bin 0 -> 1654 bytes ..._nj_caso_twinwin_one_star-1010.py312.1.nbc | Bin 0 -> 31759 bytes ...c._nj_caso_twinwin_one_star-1010.py312.nbi | Bin 0 -> 1668 bytes .../calc._nj_max_row-859.py312.1.nbc | Bin 0 -> 25382 bytes .../calc._nj_max_row-859.py312.nbi | Bin 0 -> 1624 bytes .../calc._nj_min_overall-872.py312.1.nbc | Bin 0 -> 23876 bytes .../calc._nj_min_overall-872.py312.nbi | Bin 0 -> 1569 bytes .../calc._nj_min_row-854.py312.1.nbc | Bin 0 -> 25382 bytes .../calc._nj_min_row-854.py312.nbi | Bin 0 -> 1624 bytes .../calc._nj_payoff_for_path-1031.py312.1.nbc | Bin 0 -> 221589 bytes .../calc._nj_payoff_for_path-1031.py312.nbi | Bin 0 -> 1838 bytes ...alc._nj_payoffs_for_paths-1114.py312.1.nbc | Bin 0 -> 153601 bytes .../calc._nj_payoffs_for_paths-1114.py312.nbi | Bin 0 -> 1840 bytes .../calc._nj_second_min_row-864.py312.1.nbc | Bin 0 -> 52428 bytes .../calc._nj_second_min_row-864.py312.nbi | Bin 0 -> 1631 bytes pricer/__pycache__/calc.cpython-312.pyc | Bin 0 -> 50720 bytes pricer/__pycache__/cli.cpython-312.pyc | Bin 0 -> 12197 bytes pricer/__pycache__/comparison.cpython-312.pyc | Bin 0 -> 4826 bytes pricer/__pycache__/config.cpython-312.pyc | Bin 0 -> 1259 bytes pricer/__pycache__/db.cpython-312.pyc | Bin 0 -> 10333 bytes pricer/__pycache__/engines.cpython-312.pyc | Bin 0 -> 3621 bytes pricer/__pycache__/models.cpython-312.pyc | Bin 0 -> 3549 bytes pricer/__pycache__/payoffs.cpython-312.pyc | Bin 0 -> 30160 bytes pricer/__pycache__/report.cpython-312.pyc | Bin 0 -> 3459 bytes pricer/__pycache__/utils.cpython-312.pyc | Bin 0 -> 1622 bytes pricer/calc.py | 1445 +++++++++++++++++ pricer/cli.py | 342 ++++ pricer/comparison.py | 107 ++ pricer/config.py | 17 + pricer/db.py | 202 +++ pricer/models.py | 93 ++ pricer/payoffs.py | 560 +++++++ pricer/report.py | 71 + pricer/utils.py | 28 + requirements.txt | 4 + 61 files changed, 2928 insertions(+) create mode 100644 README.md create mode 100644 VALIDATION.md create mode 100644 app.py create mode 100644 appsettings.json create mode 100644 pricer/__init__.py create mode 100644 pricer/__pycache__/__init__.cpython-312.pyc create mode 100644 pricer/__pycache__/analytics.cpython-312.pyc create mode 100644 pricer/__pycache__/calc._nj_caso_airbag-893.py312.1.nbc create mode 100644 pricer/__pycache__/calc._nj_caso_airbag-893.py312.nbi create mode 100644 pricer/__pycache__/calc._nj_caso_airbag_one_star-980.py312.1.nbc create mode 100644 pricer/__pycache__/calc._nj_caso_airbag_one_star-980.py312.nbi create mode 100644 pricer/__pycache__/calc._nj_caso_airbag_twinwin-1020.py312.1.nbc create mode 100644 pricer/__pycache__/calc._nj_caso_airbag_twinwin-1020.py312.nbi create mode 100644 pricer/__pycache__/calc._nj_caso_one_star-961.py312.1.nbc create mode 100644 pricer/__pycache__/calc._nj_caso_one_star-961.py312.nbi create mode 100644 pricer/__pycache__/calc._nj_caso_relief-925.py312.1.nbc create mode 100644 pricer/__pycache__/calc._nj_caso_relief-925.py312.nbi create mode 100644 pricer/__pycache__/calc._nj_caso_relief_one_star-1000.py312.1.nbc create mode 100644 pricer/__pycache__/calc._nj_caso_relief_one_star-1000.py312.nbi create mode 100644 pricer/__pycache__/calc._nj_caso_sigma-909.py312.1.nbc create mode 100644 pricer/__pycache__/calc._nj_caso_sigma-909.py312.nbi create mode 100644 pricer/__pycache__/calc._nj_caso_sigma_one_star-990.py312.1.nbc create mode 100644 pricer/__pycache__/calc._nj_caso_sigma_one_star-990.py312.nbi create mode 100644 pricer/__pycache__/calc._nj_caso_standard-877.py312.1.nbc create mode 100644 pricer/__pycache__/calc._nj_caso_standard-877.py312.nbi create mode 100644 pricer/__pycache__/calc._nj_caso_twinwin-941.py312.1.nbc create mode 100644 pricer/__pycache__/calc._nj_caso_twinwin-941.py312.nbi create mode 100644 pricer/__pycache__/calc._nj_caso_twinwin_one_star-1010.py312.1.nbc create mode 100644 pricer/__pycache__/calc._nj_caso_twinwin_one_star-1010.py312.nbi create mode 100644 pricer/__pycache__/calc._nj_max_row-859.py312.1.nbc create mode 100644 pricer/__pycache__/calc._nj_max_row-859.py312.nbi create mode 100644 pricer/__pycache__/calc._nj_min_overall-872.py312.1.nbc create mode 100644 pricer/__pycache__/calc._nj_min_overall-872.py312.nbi create mode 100644 pricer/__pycache__/calc._nj_min_row-854.py312.1.nbc create mode 100644 pricer/__pycache__/calc._nj_min_row-854.py312.nbi create mode 100644 pricer/__pycache__/calc._nj_payoff_for_path-1031.py312.1.nbc create mode 100644 pricer/__pycache__/calc._nj_payoff_for_path-1031.py312.nbi create mode 100644 pricer/__pycache__/calc._nj_payoffs_for_paths-1114.py312.1.nbc create mode 100644 pricer/__pycache__/calc._nj_payoffs_for_paths-1114.py312.nbi create mode 100644 pricer/__pycache__/calc._nj_second_min_row-864.py312.1.nbc create mode 100644 pricer/__pycache__/calc._nj_second_min_row-864.py312.nbi create mode 100644 pricer/__pycache__/calc.cpython-312.pyc create mode 100644 pricer/__pycache__/cli.cpython-312.pyc create mode 100644 pricer/__pycache__/comparison.cpython-312.pyc create mode 100644 pricer/__pycache__/config.cpython-312.pyc create mode 100644 pricer/__pycache__/db.cpython-312.pyc create mode 100644 pricer/__pycache__/engines.cpython-312.pyc create mode 100644 pricer/__pycache__/models.cpython-312.pyc create mode 100644 pricer/__pycache__/payoffs.cpython-312.pyc create mode 100644 pricer/__pycache__/report.cpython-312.pyc create mode 100644 pricer/__pycache__/utils.cpython-312.pyc create mode 100644 pricer/calc.py create mode 100644 pricer/cli.py create mode 100644 pricer/comparison.py create mode 100644 pricer/config.py create mode 100644 pricer/db.py create mode 100644 pricer/models.py create mode 100644 pricer/payoffs.py create mode 100644 pricer/report.py create mode 100644 pricer/utils.py create mode 100644 requirements.txt diff --git a/README.md b/README.md new file mode 100644 index 0000000..ac6c1ad --- /dev/null +++ b/README.md @@ -0,0 +1,10 @@ +# Pricer Python port (WIP) + +This folder hosts the Python conversion of the C# pricer. + +Notes: +- Uses the same `appsettings.json` from the parent `Pricer` project. +- Target: feature parity with the C# console app and LibraryPricer. + +Run (once implemented): + python app.py diff --git a/VALIDATION.md b/VALIDATION.md new file mode 100644 index 0000000..f72a398 --- /dev/null +++ b/VALIDATION.md @@ -0,0 +1,23 @@ +Validation checklist (C# vs Python) + +Goal: verify output parity for the same ISIN and inputs. + +1) Build inputs + - Use the same ISIN and the same prompts in both apps. + - Set the same number of simulations. + - Use the same dividend flag (s/n). + - Optional: set the same RNG seed in Python. + +2) Compare core outputs + - Correlation matrix and volatility values. + - Fair value output line (value and date). + - Percent "Sopra/Sotto" and average gain/loss. + - Valore atteso. + +3) Edge cases + - Ask = 0 and Bid > 0 (reference price changes to Bid). + - Ex-date warning when DaysToExDate > DaysToObs and last ExDate > last ObsDate. + +Notes +- Monte Carlo output is stochastic; use a seed to reduce variance. +- If parity differs, compare intermediate inputs printed in the tables. diff --git a/app.py b/app.py new file mode 100644 index 0000000..1db7016 --- /dev/null +++ b/app.py @@ -0,0 +1,11 @@ +import sys +from pathlib import Path + +ROOT = Path(__file__).resolve().parent +if str(ROOT) not in sys.path: + sys.path.insert(0, str(ROOT)) + +from pricer.cli import main + +if __name__ == "__main__": + main() diff --git a/appsettings.json b/appsettings.json new file mode 100644 index 0000000..b12e2ec --- /dev/null +++ b/appsettings.json @@ -0,0 +1,14 @@ +{ + "ConnectionStrings": { + "FirstSolutionDB": "Driver={ODBC Driver 17 for SQL Server};Server=26.69.45.60;Database=FirstSolutionDB;UID=sa;PWD=Skyline72;" + }, + "exclude": [ + "**/bin", + "**/bower_components", + "**/jspm_packages", + "**/node_modules", + "**/obj", + "**/platforms" + ] +} + diff --git a/pricer/__init__.py b/pricer/__init__.py new file mode 100644 index 0000000..5438d59 --- /dev/null +++ b/pricer/__init__.py @@ -0,0 +1 @@ +"""Pricer package.""" diff --git a/pricer/__pycache__/__init__.cpython-312.pyc b/pricer/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..090763f4b2d2a6898341751d2114e959cd240161 GIT binary patch literal 200 zcmX@j%ge<81iGiAGsS`QV-N=h7@>^M96-i&h7^V?Dm9H%+}JZPKO-vN#L621zeyySeT-R-`?py0|3e z#wm@tXa*=~fja0z-0ejLhQUR4$*`C0ZF}AZM3q|$go|Zs_E4M8i#4M_GTLA>;~Ch{6;}iJ4#+ z)ICK{$vfc%-K(%gw&a`eQQcScmjV+3s{4yvDL4_NdY~98@e_PWm=GAEG9Ge@DBMM& z1h0DRey%#*O@tk92)z7lUeWOi;0@pAjVPk(Rii!7mJ$KY(WxC(V@eEuarh-!Py%$K7COl6Om~~cRjzX^L1I^RXyd910Xugi-M{O>U<1Bt$EgJF@ zs$MM`R-{^1RINByC{IgexujZwsaffHSywF|DAgHiE0veZ7N=k}%nI2W=AL=SZ*dZ> zDM?mHl1de&T2w(7B|WPQ^ksGyhGM;te<}E#DkMh z>8hqr9#=|*@}yp=YI${1Q)eprvJppk3K}`X?5E94q6!d z7Ewe{L_t`AS@7e82dP5mTT7rDz=+td+mG6SE0Umm=4k2QBgqvuX;;UZ-A8*jc}|5W_DAHS7f;(`!9rG$t_xkN7A-zs(KM+f8(QJK6)IOt z62z}+=vGvb=XA-aps%VGj5#ZU-i<)jEmo5a6~ewSTTs-pqFcgj1%tR)Fbb+}1)Mmy ze7L@K%de@>QaMkz3wRAoxCAkX*FUBk#59=?83-CQncP)JpXUuX)QL&lT$7hPZdoJX zY9@b$(SC~YqF-#^qT>bzZ$fC^Mc`MgqR+;<#F;H>?QNzZoSTnU2`L*Xok;w z&U+~AGZ)|^sX^*b7RncbYr~GW^BXSG4s(sX537`Pq+YI6eQFFdz1Ae?^VBD$DLP(y#8aBn4u?0 zjy*H|y|*y^_1N_9ev9ejV>y4f5Z7YRh=z+g7truCTWk?F7ws<0=Fs+Oa(P;{{PN5U ztV0TExuosii-kr|)`Dy4-lZdNR%-kWF19%Iny}<;aDA^q z-NfSY*Tkh=4Q|J4;?2}>{efm`v=&;+?5;o4%0m9?-N4;1hDBRv0`RMYGMlkzYbn6BPASBq4(`BUoMhnc zPtzB~qMvWaqF)}H-hZP1&wsqX_fA+e2>oh1LF71!McS7@w?dtbZ;m38b|2R{5AyY3RKCK&;^0gw;@o^Kt1!;;PR&jot@76M^ug1l&qD z)EO(eja1pW@$I=&v-wUS!{_PHrXK@fiRX4W4R3l}b##Uph)*<`qFd7#x;+oc+I-U3)$#Zg<^p^hx6XWOi_f#gmo|`+ z&}1gzPc&0FRdjr4rCkdMpfj(V3Ew-%re99}@P7I0))iM9-^bSu0eWvR1^Ul(J!?LvUlD z;TgCpsX~55nvykWXcj1>UQpmt!3yA+Qkt5zd&qTT@EyR@2y2zyYH(-R=6Qx zv8&w3yWGg~BMt7*d)&y)USEL*TmT3 zXj2^cL8AU_b7-s~j=@eUM6O47*NsMWv?<)ZaB^*%eUncju@zHGeElR0q#^FxV%!R_ zg1=2zpWo)PPI$q0Ap~Ov?e#?vSIDLf!2`h!d2VozlQ-aGIt?KE9I&f-@5c79akjqf zc|F3CdA7UPbnZ4b)nwe(;f!scdf6wT2L^ug-j_(udqx9%AsWJK&SOV8awoVF5p+Y= z40pMQ;0WjF8V#){u-cO#bZmewUAj=UN6~=-u8N6%8k7aHHnM-Y@Qa~$N-HBroBYF# zk)!po*T)z8-xCI|j~rbXzs^6rCdLG>DC@aAqyd0Lti@<+c}%8$d^ur9+orXvBuwKFopsV##)ZsvODm zwu4j+k#tX+r>a2sXgf?*kwlZUu?RJzB#~LHULI}7s2L|>Upqn7BoU&E-b+W?DQc#P zKU5oS_|oecYEOFb@qhDX`x?Gf=gm$qjKA|{Xl$J`%yH(7svLL;f?EE8>u40EIoYXBbC PcF@PK4&FkG2F1SsTNDLt literal 0 HcmV?d00001 diff --git a/pricer/__pycache__/calc._nj_caso_airbag-893.py312.1.nbc b/pricer/__pycache__/calc._nj_caso_airbag-893.py312.1.nbc new file mode 100644 index 0000000000000000000000000000000000000000..d9fb3416d59d7306de6c21eef4467426c75d3204 GIT binary patch literal 29112 zcmd6Q4_uSg`uICGwuxg5#e@WU(PhJM?GM5bu?-MMqT-**zG!2xAxqfi7zma)81m;f z3v0LRYB#KY-EN=mjc!`jH3O$+MTS{vX$flou9lWo^J?*X&iiM3-!Z&)v%0Ub_nhZE z=RAMUbDnc{_Q}Qj>7_4_0%8fNPgVEwBGcNaf__ngU%;ipRuH+gFTRW?$ zAcDgovEh@0&4j<5Tx`(~$b4)I}DS zO6_~6u44?T@?H+&XJyHdHI;FV2W55319nxZ8X3s^*R;eBp?v{9@S`xBD zsv#j>DNYtzr14PD-`gUU5bw=W#9z_9Tcv)WsbAL<({c_Gzi@kx-tFhatowgZ+uhqB z_d9a++o4Q6d%nCK(|7pwz5bi^DTfQ!i+hL~Xu4`Q@PmjJkMJ?|%d?+_3=hKTrsXh6UR8oBw=uSrHQAX%gMygofv>U0s#BitXP9G55EL8wOB>Qe% zgZ%K%mH0Rz@o|>KXdquq+o++Tp)darK4PxR$1vUPy4!TO>K5O2`>n|AenhlBb*prM zEIcdiCkszXd&t6OX*XH$O1sE{N7_jiTBI&i@TcyO+R4IJX(<%+9S8L5TckZ8pS~ks zT8}FGsEQp``l(7KsvM>&rKmDMRhFR27gVJfRnAfsJ*xPriWXHcf@Ho_gDOI*qCgc1 zRgs|z;e5aju73r36Hm~dy6qx>=w3#jL;d>KTcl5uC>V0fSRT_w^ll9n)AAq}VE1~6 zVGCcQkTKoRA$`Z*!X0#7-_ffZdJlZ!tp3#??3Y#!Ki4yQq{d#Iv`Bx3~qs|jhXE!rzI59B1HqC zI-0boy_=|e2<;W_gbMNKhCa{-D#ZN!AOhk0Kq_eJcwOJ|;n4du|A$cz*v~>trw|8*BOYcUj;0U~4@Vqe zAs$B>1gVirhmih)h4?ash$aG3Eb^;|0anR%Zu=-$M>eq9JwG%g(Y8 z(Tv-3ckEW_M!hUs}8Vrqa(e*iHDMSe6>7zm(@E`Y!+Lfwf6koN+zUq;3U zC{PijUPi@`dKn#6WOSU7(UAutW)G6FUPebJ7-s;fr)f8eUnR>Rh%VJF)7_~v`1CK+ zM1#}(R9rY{kiDV)Q!3>UrT7-jk3&PJ#L6RdebrAxLqS|*>ndbU`2V zfSH~pEUWJT4UvE+NelZ4!(IZzf*JE+jrN0eLrm3$diZ6adk7RjfC>doyAhMVnCoEK zeZ$E=s~;NWwY;{h@4gWV!p_x}(U1kJu zhTUN)H#^eHjaB8!X(9b{)pbfuu3A&Bao)1H&|FY>SADLkaL%ITh3R>Yx&?Vv3;r*o zpnUbBT%FFKHqA0k(>WZ*hC)-3MLA2EmswrwG?rDFGmTZ2P;lK7*=ky z-r&S*t!1`)+=%+(6%Jc9UfeLBNUCs))oH`6MyI9DjMo{fYRz&SUtDR%$(#$XHa3(& zr2;qNCQC(y*#Yw5&IY@g9zTvMa8@tGIQ0@vqDUa@1mi6Rcp{Ai?*)-mC08uT702g_ z@m#S?Csydh8l70H6YC?Eh6fay{=p?)?!DCvLp%h*CNRpED=vW*fQNlE6b^@rL1UPQ3q8U;T#Obb*ou}f4kicyBvk1>&;^3i z^+zc9mlS?CRlkFJqZgMk4h?=00`M3H-BU0wdP?Ar9-9DAA94!+EQLqwe+ksX;XecL zSnS&&A=RILqcl1k{#_%Cb8G~B1*kaOIEE4M9~%L_egyb?0H28TLorVK#oZ(DsUKk+ z%?R+njR5ba^ju7t9^s*9BK(Du_pd}N@(B!su7T%Gs)XQC0Vsxj!+cq{||?+o}D20V_Mx`-dfRuD^J!0Fh9y2I1{+tR@E zE(1P30L8GQ3^>v!E!!6icsv9DTLv8AcT;Vb7;xIhQIm}FKg2(i&w~s&Q!X)ORD?eP z4M06O^+voPRnhUIJ_H_c3c15vWt3Mr&Gk-9PJ9+Oprz03FcehTj81Ic!o`NU=ITOg zg$?%gRaFL))8@d68)ns)8y3S#GRxrz)ECxTotA0}WUjXposA}=-D$9zh~>+GmM??7 z!C7guVsfj^X_n8Pck9#|r?Gqm3|eHfE;s0E&G3inrAPf0zRD?vbGwHXNO9Lo*2TJ0d$;#zwZf)M%y z>GEy0u;>Q>1)vcML^1h4o0LFelvz$1?{`Xz$}4KE<#OQTccKq|4=y;ryu8-oFq<%W zjne@s9K0KaB*bHa@7oCa8Nr1e(#;IXelo`~F{AI73A%0RJlr>N%6_oD@ zX+-gY`Jh;jU{qKNG-(4Rb|EyQvcmYNKQnft9$NGP4;?4TTCh&TjU)6graCa!E(D_M z^c(R_@lOv)^eiPlF)V>br0OgrfT6xfCN2CipB`#)?4s7o(a?ypMtV3p*3YN-2Q=2u zE(&oJBEWc9NC000e<3IYb_X-qGx~?(&I17aXQ$WeomBXVY}YGJ7rS-m^P0@_dtYcpYZuOJg=Y~e}ki1*s?_2xnW{{=a%Nj zBNBXqx5gzb^mwk9Bu#hj!>|qaI$dv zpC)O?Of*$!_dTnajq&ra8eUiNGZ8M%K%#xWa<jpK_MsDX@F-y%9ZGlQ45B7RPZ- zj4$T#Z^1qjHZN32?n}$#bO{Aq&6?Ju%p*FWf!Xv_$jAVxzT!3GJ-k4hJ+Jgbi4Ki;Gxih)#~6a1>##BX zf~Ki`z5I#)MhzT$hU8sTh;eOg+Q@gsWJtW&=3f5eQ(Wr9+9iBDe?t2yY=0@YDWxZ& z3jYUBjjCx;S$^uBaD4O*Xr?Nob=p{n@xK-~ zHpSCB3t<|DRZhoaIauD59d8JDU|tN zae|_`WCtR2eDgl zoq_`j9gu;grcEaDyDEYU3|PA5lb=$!t~UTFKOR+|7mh66C(0f6ztg2!TKY zx4Lzatf5@H`AxgV@Gwt)4mmpYL=%e&o*&z4q}}|Jd|*?wW1$;`iTSyVp1CrH}a!|K)XaR&`>< z{pH)9EBP_0?ejA>&D8O2@9cUcr*-UpdwJrr!nqHvFPwI#Y>xadpG&J{FU@W{{qzSF ziKqUutMqL4r15WT>sp$;|AsgEoX^Hj_~fJ7)l2&1$9A1Q|KYO9sW~$#{~h03prq$vu6_t_wa}HgdoZygj+4`# zr)lwda$SOkdO^*`m7>qEn6D(_^DePkl$*S(H);Qt#0o_uf##mj$IaQ7m*e5)^woQu zcER03L4&@{ZWpY!bL;Bc?08#3U#$3ar+82iV^zeQI4eF|ELKZ)Cw-EVcsM0#mod3Q z(UHBwo!y_8wUs+#hkHf~H@oj_TwST)?n*&sWt#&&U2XQxHhZa{P9~`HN5ZhHTx|wn z+sgPh$HumXjZJA^pA~;SApWjLd|JUR+qWh0=M=CHe+m4f=xHfMaBv#Tv(|Du?$ zv6yd*#V0$(C$uqxxcD?kfyn-m z*TxHK^lgT&wtHOA_jxa8hQ~L<>(lh-O$T@C1C5FFDdTdD$-wIV-lT<1aTP_&72-2^ z%$WiHnc|r9XejZg1N_hMn8AJ!_6e=Ku2Rq-Y)e>p?RH-__~Daznm*7WH>=YF{s($T^3pKM9~f|LBOrsN9E3YYj(iTEsG zpfd{bxlZxuXNU6*d$?OMsu-AEoxF=e}#EF6>vsJIb<*&1gn?WH-Zh2`m*|c z&7URi-4gwU4oz2(pY*e9(od9%KQ9LNjX8;&IOg+W@%e67lb}IH%&z)2@C@WzOYEC{ znysAdC*3(-U&IQSsEJ1h6OZDFCynUyi>BmV#>D zyuHd7L<#MFf&gvujR+)yqtOEvs-LOURrO`n*3Z>;n2xT^Y9-J8}eO>3op)%ZCrnZzX;nf zc;olq!slr5cbd0{uzjVaErxR!q9rBEj@&>72MDOv zpSwABqU2`9k0Ql_Se0>d7|cU2=KH_@c*6dHGuzfA?!F$MJ9s!|@KCxnB|(z#6IS}} z%~`LF)!+R6_*lGXW_3=B;o$ci;e<83-4(}PY=~`q`%s&<%Kx_`{pS`Bx#IVoJU8>J zo7*0(8ZO8y^C!Tt&T2eTlF(=>Zn1s7tuS`yt7i(ruym{<-=FbziHDcpYQPSj%-)aOGiEXtY-N8DwfBM?U-4!Rkj}(=>y$M7(U#$ft{PX#A7+>`6rTHzw zmPf+K`||t}7^>cyT##S%PTZrM=RbbYni>NtRpV>1{Mg+5r_}yS)&=j73_o{q>ri5A z1n@Iw?2D3{C;rGA_sE#RBbhb>Sox*M*v7f%UYzCsZvO-TW?1I~d#^5wZT#Djht&QZ z^y#t@$1n{fbYpq96LSuwUU3E3(;lopAzJ2%bv56(v02vDJTWUmTbl0bL+#%v$gFlk zYblYIsbjTG8+H}(ic6nVjOE0|r}pJzkp)pd4?Ky#IHI|H4097#V9#Q^|lR!KbZahR~Vw?@!Qg0!n}PrL*`I+MT`-FvO8H!Uxg z=j5o$TxqzFKQ=k7Lc%}V-qZ`-i&sg~cH#=7wl~EW-4x%_Yv*p@Lon%nL9{p46CWQ1 zqo|{v>5O`T$C>5wH{*ZgM8Zq^2q&_wGaf_p9)`S6#)IC;K*;?74`K_}T#7YCsOBKn zqG5z-QM=l82Y{URuZq4gGVZvx&UT-&OpE$1m?FyLHDdf1M5D(@uBAuZeAuBsn#dp!=|@BcaL$1M5kHN1|4lTJ3p9}hHvy4X<7@;nfc zh=B;6!r2f(tE)Q?e6f=o-=`{G1bn4~DQ-nwW^uuIZ~GK;w9$(bcbUe&+s;9LmVXY= zyAb+fz4jT5_Pz_W_dOUxd*21x`&wdr(YkEp6zhPyjWDjOefN~Jxv6I(Zt~`3o$O8W zx)Zl@uJtrMydXv;xsg~!fQ{mu^VC>NevtHy;SFl1!lIFp?*E~Bsr#K{{P__1At<(m!x)+aBRe+x+_;JJpzi&HVZ%vEuOlfkQh6MU9VcIz0HpOUE=1 zewEU==3L{6qPln&gvyKS)sG~gP+a7G?8t3S|4UzI?l;}ye(WHBw!ik{BkvA;zReOn zbAAbo@=9U!&c zP)XXI_@6tX(Tq1WKUebZz=-?zTUIZzb)8HPe{P5}l zQRA{rZQqu@)~y*cF1BvA|GPC47EfHTK0=gdx=xp$zNqB_&B@`n2M%rj4wmE3>!$g$ ztyS%YL)$>Py~3XwM^$K~ylQW;E zh(9oJ>;fkasp3LPa`)AA>m(`Uj5u^LoCd z@$F;dyM$t&X8m=s58fKR^OKTNZ1B*9>e=r5KOe6gk?h%mflD>f>Th|MBTBXge z9eFEn=^~zRtkVB3XGY5-!bY3Qz4qWkD*v`MSR~l7BDvYHseRz{I_O(1a~lqQc3g5O zj24UkG&bRoZKj$U$ry7p;??-8B@)G=JI9evk;#+U*YLHoKQ_(OVM0)Oa1?|Asz2!bKF0`SmH zfdY7=oRhvafNqe`55h;!cIeQ+c%xHq$z%*u0xqx+cq2GEU(Eq{6Ts;=jlUD%u>hyv z1ilo*-T^rJf`)$6@J|4a@@V=^!%qVoCC2odhF=0WvKRfP;gO&iG!Ffy;bQ@gzUiai z1RVIk9^gp;r{6SwF2Iqy&~F-!zBNN~(Qg`FN{vsyX}AO6YXP5rBRJCMHvmUpG|_Jw zei7j40GfUi;{c!Iz;@_%1^p)ApilJB_C#+4r(tfY4ZRUu3S&G1<;UQUe$)6GusgB~ z{YG#!<7Wfh0C4(E<39y(q)+-y<0Jn<50fVnf?>8#2uU}RAL^k$p#?I>k*)<$<;=?cb;by zx@(52HBjLh9m{KAT#f^{G8r3c3{IQDR#szZK-aC{w`CqtjkBT3Y_QZA%(Z|t+HSHK z%HYPC#SFFRa--eiG*%gi8`6Mmci5bUYKs*Cyq;00L~!Tzj0=!Pn-^J%M;b>^f$sWcq$6aDbCt#9tn|*&dLltyli52bv9`^- z5Zb^Dq)B9z8I{*p%EAa_h3jF2)jW~JU3XxhQce+zG@&MMWd@KnS*pErI39kLvB6dg zy5i({E0vyc#3ex)#Z4NnG^OErsou);xmFIr1EN|9DlN1+&C9{I!O@|2B;1Av87kGl zI=_avQtxfAOrLWt*);>04*r`{nSuPK+Gt%~Wi}Z|Jv97oQ5jsS)@oTaGr;6u~u2EW^ac_V70-I8jLki6dKDc2B#4w z@G`GQdIi6f$nhFI+*+7dbH>!Rddoc5Fq|9|K>tnyj0Y0}`L@XbVB`wX%e<8f30IxK z=mSm%SMlI-Yqh<~=!Agc8MO$U1I=wS^n#!T?uP!$Zme$y69p&bw4zt}>v$UA_!HCXor%Fr7$OpGxsnSvu z1LgLHs7d(LsZ;Ty!g;fBO_rLd0IbSbX0E~&P{MHso&&%8ST0kf!LK~3%{h)#9G^ZN zrzQx25+)u}os?9kFc{=8VP_jLC^MW=qp7ITm`&s`#Iz&2F~Tm@OHK7+vLG=p2FVls&Hc;I&L%TC^!VJY+PN*R?^bpLp z;awRk57jY?>d0sr-fabitfXCO1&I?h9(w_!(P<}Qx3b5N(pvAbIA!I=@=9~gVn?kx zH45B;;oIq?Z%3KT6?jNslR47xFbV&H zSO5r^KP^~fni9ZF^8hbIMnEJ2Y50mXJVZ~^Nq$)LGf4V~JeuS7I*6akEl$ulvG$Y8 zUmC8EE7)od?I71cmq2f3T%a*c5J;p-xGQZo5o%$QyRzQ&@T3@Y4d?=QVMNPhizX!m zQYz#sxhfzYcpR+kq-aGJr`chwDgoFsnKCuNq*SRYw^iGXkWbm{ay9g2x&xk*gR_Q4 zvX|LxRe}D5;0)q{1}Q>QX25{t(j`On>G+KDDq~FzegmrAFq7nsPH|-+jlr=<%_6}d zS;eWLWg)zSOF*uiL$#)%a9)!myUpkrj!3Nw(=}O{scEU;POAVD-gQO?^vaoMvzm#@ zidDg?6N+Xh(MGaONR*a}Pn{V?C8YEL2}u87sXEX`UizTj2P_8hNvTj#?c^e*)CAC_ zD&{cA+JULWoIm(XaM@sTPON5#so*%Mrn*W7QW37tGLR}m7Q!miKq^=U7zSd?gaQw- zaR15%Qe_0RK^Tb5MWBr~5GiCDuA&S?AXqAf%@`$aw3@ESDpb%SqX;96Yl5?zY$Lru zMS1}%=#Weitk7_&N&~wLlYyLgaz$_s!afVGn9hK`Vr`WfzX4Tmz-7d?Wva!RO3lZ) zM6>KNXl!z7k{oQy97ObiX@bf!Vi%Yb$_>~Z8gt-aBy{%Ed=T>(?RjxPnn}hgS~k*7 zZ28#SWGHH_M%Y1G&C7|O>&nwXegY(`u;$DdP6QBVqS+2V>J3f%5LNV`a4yZrD6fBRh*>?J1Bo z&_g&^fP*YJJVMKGP`O}QvNb^EvUX+TvbZILp^e6Bq4N#75|IvJ=0;}jHKGV?MG|6! zC&5gnfZpYV39=Q;Hfb0zDnkJb9kI%$I`ApsvfGjs%Tl2QGG@lXRH#)_Qvt$AFTc6m6a(KkZrLgpeH_&5}{oYW8EKy8l3c5zh-8pR0Nbl_-zOu zfkt}i2c;odAu&_J_FSb3$k<*Td6{9 z6^i;B*-8~^D>fg)ZAHoowo*~HB2a#2qQ){$_&hC3p$LWrGLlo-I^`d9bSGVmWQ*X1 zZh#$(YQ$8n9wz4SY^B;*KWy7H0v4MT8IjZ(@^oUGM^xz@uu>6r4;)~VTo9aa;9#=U zDb*VJG??|_-TEdv_ED5B7v8BTNn*0ORi>*@RFR|o2^n5ORV8DcM$n5ElSkT_Lwhol z4)!2Hk5zY z{at}FgQQ1n3s8y}vMmVZ=PK+ALWc}dfJPOvGf<*z=W1*Xlo}085wz=|_6AC{>G*9o z2g)p!T#4o-e1j22P{<;~ae3M48KwhErKHz|p~k|JDzh?(xlEh}QInbF9E_a;DMeuB zve20GHkhN*J+A7cypqWX8#0nMOIlJVEWTOoLB>@I$j;C-lm>$xvQki6mp4uTk2O9? zpN^iaCI)FZDO934$pDeuObIzxy=;0O+M7j<&eMtfmw`!=W+mKLN`&Ydo(R$-gW}~h z7epIrQ&AtXwv4pWk;^99U|i`&gneioy6s>bUS}zkWNr~PY&VjnPzBSDz-}ZoCk@u= z-H1wsb^|Cdk!wG3JWQQ@vyO)qjN@UIDm0r7zZ;7fQ<^D*2& zq^w||bjm;kN|-H(f_+vTVv~{f9n@FYC_hIJ{Z%$lBj}JY>YPtS^1^D60wyyVWSIEZ zIU-g~Bk7HJMjXP=RY(RyMGR3uW_n06c(sm+RT>357yRwdiB+0(@}O81MoLIA!mxO` z1v3mjOPOTM8cvFZ1cPW$?#DPSW;+EV2_*QZ;{Y2gd=5x;2u1_-FW;A4VG2l)W=Tq_ zgXQq7b}AQw(_A%dyMMu0;iEJ;DQs6p-p0Xd%9z+}=8(dfv6XhAy_QplSE!%%}UCH+@S0fCKxQV4a0@DXUFQ$R{q$o|kb z>FH{A3JAbJ52;!mYS>^3$U5aDwqe7Pcg7`xz?g`|z#suAX-)OjvZgwWHPy(PYdD_G1RNSI4FESzBGo34O68^npZI-J5F2@WUQbj`CXK#5@>L zk(Gkly1a1$c&zbB`gDk9H8Dt|!&CN&c{<6>&pI(@pZ~IG5o`qZK;+;ogutc*C0N5a zyYk%<^QH@t4-hEXymoBpuA-BbmJ!tL; zH3YUYj4PJ`*hqK3S>H=&hJDcy>`z`W2@s+w6SoWlm5~Psq6CIu3Lp>OA13?^E|#FJ z5(^jZg0O*sFXP(0M`LQu5f?=esJ4HZ1qF;b-_A0UCE`G7B0*vg!&l2+6Zt+Gz71Qv*07= zyELT$2CE;r7SlLkLLJ>S(h^O#hejwG4*L*dPspMQyL&cJny%J3%$SuE0m@b#0k(MhlJH8baXPXQO$J6s3`aqUS;VzuhT34{{#9& AD*ylh literal 0 HcmV?d00001 diff --git a/pricer/__pycache__/calc._nj_caso_airbag-893.py312.nbi b/pricer/__pycache__/calc._nj_caso_airbag-893.py312.nbi new file mode 100644 index 0000000000000000000000000000000000000000..063be7c5ab033a742338ca43a367f71f2cc69b2c GIT binary patch literal 1649 zcmZux&5Gkj5S}43vr8Z$WSEeI9G0+$U2KWbk8SBT%R)jJHjo@bZl=4{vb2_3J>9Y_ z4+Qo!lY?&C`xbeKJVTBlkCAI2UrVwxu(6@Kx~lY5)mJ6GIequx(eUfeF5P+Hdd7Wo z^6rPT!T9ZqKY#k?_rITh{pzr!vMS-``m4>o`O#!2*`xnyLC9U-3sSyNitGTM zeKf+KCe~%Li|#}ud1=^Xo5%M=!F6|L55S(tg%P^W{8rBy+a8 zNUE)NO5HGUpx3*CthxF5uMdunCi4(XOeZ91A-JA8q--71v@_2ibeekeL1R@Z3*HWw zRPN2Gj0O{m9JR7))Cg6l!3b361s?*j3PQ_DbEIr6UekJ)uIKnOn`yiZ1@ssHp~rWu z$3AFr`$ESO2R*Mzu{wCRdyOS~ExFli=|LHq=>hVzBzt>9%lx5!$k-GIvk?Dgku=&5bm@fJ-dwhk*$0ArMBEIe-YE>XoL% z&MIv+0#~VRI8$76>`g8j$#QVJ1|!8*PAA1J+MQ0y5(|ao6f?(> zjTI26%@OHzB3V&xfF;3Cnq!c1y@9nS5f_PAsd&n3mVpwfQkG%Hvfip3OgIuW_=pBk zid3KyXCiHZI24dnq6FGhiRRo|>vB5LBmKkVtJ8k z^uMJ7eKe>Q-z#ouZY$8-YSN&B{=mTc)6Rd;@bcYm%)RNZ7Bq;xc|fBy3cY~Qc;N+M zL=zUqm&}_-m!aneey~XALF6ZiAI{Rnf+umn!dc*X_-J17fL^jN^y4UH9`nMOq%;j# z6vy+F#(wB82oF6T&cm3-LC8oL&*Ipli)iN4Xf`uq+NHP2X literal 0 HcmV?d00001 diff --git a/pricer/__pycache__/calc._nj_caso_airbag_one_star-980.py312.1.nbc b/pricer/__pycache__/calc._nj_caso_airbag_one_star-980.py312.1.nbc new file mode 100644 index 0000000000000000000000000000000000000000..ebca38ce7cd21900e98b3e471acdc6882c9ec54d GIT binary patch literal 25418 zcmdUY3qVsxy8j6YNmK|ysSWb*AW=h$G&~LRXabRj78R{ltd9^#fK*6g2ngC@AmL#f zm1=6~*0$KXy}kFp`(NFvwJlW;w6sNwkE*SclRF4 znVH{w^UXKkeDlrB$(&Ow=cPyUG2)UqL~6q`>U>S9QLWLN^E8EOqd})GwP?&v2iKVQ zj4t2eOuH3=Ve4jRWq7ezWHGq2uvGXPe%+chh{=hl9P=5Zv{JcLxI|8+F~w6)Eq+o} zeXR+ALzNLb#8xu0Ol*SWLUAtKv&7klDk79(`5{-tvtlXSEn-}?{;2AO7I8KRbEsdq zTdX1@En+!}tQFeDB8aG7*d|6&WWBIk>_VLTAwz~J?nc?gxe)QQtp{B7f?ZsM;I%@B zSV~5mVj)CSwXJ^k*HF>Bi(6GT7t60!0dR++GU`*aLbVTai0jbR#h7ZnOV#FjR26n6 zbA!+QL;XuQZ481+$yWp2(44OheVFt4q1#JZ4}F%?iufG!t4GbhdKGRAdSIBjfpcHg zHUJ#YBW|w2T;N1;x%&U17|6X%EJ1REl!)h7f30j62-z;sTxr=(ls`3C>7jR5fCkkq zVjL;Pqv?dka{&HLk=vosACe6})bG!YZaw6ZKwrWg^=pL$^>KxS=x+(?`w9uNg9-_0 z7OLtFq^G6o6^a$@ev_>b#}tbdPbn5D7CyCj5i%p07pR~j0wg3OyTw8>@&_?SMs|pA zAvIM*Y!mm85vRDDj5x%tWW+Asi6SoG(@aKoiyI-LT7OKn!7lEBdR6P~;sz8#`U;h{ zQt4YnS}CqTnJy|}LJ5puq7)aQ1fNReqJ)r2=N~93`Yw zLWUB^s8Nm-CFE2>f)Xk!fvY|MS%_<}?-ct4fGFNa_knKJ$98cmL4je&?u$9V)ZNc2 zn+)@_|H20B1qZ=4b3a9lDF#ld)*sG1K&Msf+Y|$*p<{2UJ{rWnANV5Eom32bfd*GC z4^;vTk9fTT*wtVbvflIai?!Xtcw6m$^BjtM#R!CYs2!km? z)MY~mJ3R<*gJGifqmCXz*zH01DMg6PV+i3H55nyfp>Q~1j|X7|MaUmcc*TQo9z}=^ zC%olBIE^B7A$_{7W8hR~3joALIMiO?qgvli==h{+Jt+IjK^0#>nV=9fj)-=Wbf>`) zKwmHj-=_%C0Q4Y4X2&FKqzHR}5DXQWwh^Gr^@nK*+OyV!anhZf3z>u&HA4Z_`fcKO zAUw3zzeU_c04?H164*^R0m%7-*h(T=aRnri+gj_tP+SD}EO2CN{gvVz;P@G@(bbq&EB#Q6OjfftO9-#DTkGelF z@SPy~ES+wK^q>H!ugO*r69VaLK`P4oR!As+Tp^)7w1oEA655Ny6mbi6T7`u6^b*?l z10OUS!0dr$ho#G5`dFq|u2`W^w-3rN&|Tm+S&3m!!6bq@1f2hFvI|_WB0%Hg&^_o2 zG)5t^jr6e4d4#37ggZz-1q~q_3b;|!AatqLJ4ows`R|~t$4*+$J;F-vft6$*a)Ff$ z>3_rkl+b+$xjLfn5dxfdBerlMEB=2Ff)Ue|!F1#x^1&c}^4s(l}8BU5YdC5j&lc&nO4po>46fp6=0;ZlRE=!5^tv=n$mo6&}5ys{O>my`>r$V_`9H z)j$tWqHDBeE18R7CHm4*y`d1FZ7A29jfN7P!7>Y1KRs6}n_E_rrvW&@WY*{F%yIde z;{2Gn(fFmsmd7Tf#me$!md6)n>M}B)sYr{-eB#N%%(!%O`TX?a`A;Wg+XEwt^Ow2=g_D=@z`qkY}vG zHHZaXU^bTE*_HE%ML4cESd6$qW6_uE@N!LYnJx;)7Z&Moa*d9cXe#p{QGjc3t-hc@ zXNLCTmP(V3uB6Pc(qLR|z;$M`(TuMy(iw1Qcrj8D#kHW!kZ;i&4P=SGmOj~l)Ebp< zH0z@BO=VH(*^APR28*u3LW`)e;L-{yx}p`aiPD4wX}naLO3N2OMObSVV5|xuE7*s} zN8WlF;K4KzgpYHnM4CXDCJ?0w@HBx$A&@ErGKD~{5U9K~0;{)eOdY?LXXiS+H*hwx zH+j7r+7$fCq~D2NowzOFwehbD-w-tWkbJ}tJWH`effec`E`>mtE$Cs{yoCh+a<7(fxiDLcePiIlmtT?;k}EcShkKG79cH3Z6X*o=Ek3Bh?{R zNTW+WikzI$@KN+1H46QuQQA8R_>5#HZKPOW(-;O#abFjx7{YzsDA*ody163Ghk8^XuunGq5$G~?maHhStGH`zeeK!Li z&%iG-@Cgk3HUp=9KFXdB{emte=L1BHynREtJcLhV;Qz_MA7tPH%Jm?6%Ec482@G7s zpwDCA^q520#SEPBNDEubz=Ifk8W}iqzWN;lNBXDjV+R9AzKg#8%)mow5W*G)j`-kI zUMB;eOkpTE&cG3UHhF+rrn-n;8Pj&T*_Y$ z)mtb7pT?lasW{R-GI@G_vkt*&fBDW3oSq*rSZWzcEm8j$*153ko|$i|v=kW)|NKRF zK3eBSfk^*+QKHPcVog*rS|npp#67zb?M`%Nbw;sKW5MPwSg4+(E6Fqz7~vUxaj{x! zF`BXL%Gnk9>L)8pExMA~XgNOfM)iSo9?nM48KI+Z@EgY*wci>ojIeS7D;f z>#x`bP-0n(rc8^@3_BIrN}vX4v>KB|ZO{_C8a3M0s7YJEq6|ihF6yzli)O$N4*4rV zhAg9@P^~CM0r~@k(g&47GCrxZJZUk*#szX08T9!^txlZ*TqzJ$snzA1bp?>GR_gK> zK#bU&s0;PQYEZdOQ>tSiIzwrhSw}bce{CN|Dj0;H3%{^nWY_D8Kp&bC9Z0G$7pfN- zOrVB^Wu{_;5GDZ1P#Vi%2k8b-Q{52K$6~YIqFZDzYxJdPtBH-e$&HR5()+Ntjh6lW z_O`I6C9VoB2#X|}m!Dr|HtV!lRH?-b`(OwwONg-8Y}9Hj8Y~$ypeIvl?f=cY$S9Iw zRDP*N2FfM4qeOH9&H695n{bYddC|#{EVqpG}m;FnWJQCEaNn|71{pnk7M+ zOBINq=101`2N8fBP@b3{X#y(jp$Lnp2BWzisgkajUekO8`KbM{M)qLcNY#tvV_qIa zkkJ7Jhma8DOPGsF27{rr9nkrJnShPQl}nXx^*{&Zr{M!oex&xRDEm=SgsA;!X)?6^ zd!X>px=|6F+8i*~^GKwj<(+Bv2nMl9gdGNhYKFY%ZfoL_^hYVb^d;SOX0dt?}%nSp)UgUS7|Wwdq2RLdeM!iX)Vm_+xo1=xaWh zVJ7ekdb4K$E*@ZyVm+9PE%*8b-&w0kpMqf#!7Ug!eOFtc7tWe!6$sUQIm?=W+c9yg zS9Xx22AgR8Dp%ya6FbT6lUu#tNyzF%y!@;Y*uP;e)-9fubCT7~tDb=cIm869gbl=X zg?AAdOX}T&Dit^Tc`X$th_bLqETkBpe#Gb5iKSQYPf=}8{I1@LhVFL?@ z+u{-NEFL2M84EwjXpXM{}M3!({VH!3^I7NRjcK%CcnpgI&dhO?Gg(yqdk^4KLqsc z$Y)#GNiOfCW?O=_epQiet%|oAuV1~dzOu+x-o#rgs`vd_zf#> zjgVJPvL#BrE99B2yvP0c{+ktb4kyNnOKaLTr6qCs>*a4emn7+#z>TBam9>YB!KlSS9T@E9lHS>y{enhiqnryLo|cwpzxTtqj%F@3w+P|c<+bK((*)0Je5t7d zcVSr1-Bu+B%U*|1@q!W$$MFvB^el1jil3vJS>lZ1#}g{-U?8d*`HfpFOfI+8^Rb?{ zs)3cyzaMmn1F$BPMMz`y6D@ct?iDW{ejFo^|c|QMsD%v^)CsOVjuje_DJO zG(@lqu{kj~uwtm<`@-&_f<1mrK2?S_d5|3`#xmsyA#_a0Kk2Ns#!5hL`ODr@Ol1*m zCS)PxFSDt2ipR4I8huF`yaP`cMJGd$~M3ZK(S%L3&(rNuPPQwiot9e zy}hudP%HFpHeP;MTaOaCz8d>2-GXxKQT^_XT_0X3u?OxTCvh~=0!;h+&THhzy zWdG;K_3i9e^1k@`!pzWst)I15HZHkuur=TPx18mnClvabzxtZ%ujR zIs0XWan}dQZ`;1=ZQ19u=2eA8m{^kV@+IBO5as9XpDlc6(#fw^{@j0q`_iQ!-V3%o z_VU-wtD26?{qS>qb<^v6Usink!P=~O2fo%yLT{b>aj)#!qyv|9r$sAP`)>cD_w1ZU z`mQ#=N7SsD#jmSx%a!It%06o=PRQ})-ezIDL>TrZ=scEh4esa-E(lmeP;kd8i1kSeJ=hjP;rz8WX#`qTYnp2X^@jt~CmJrG5sfU*9dkt!zQ8up{J~u;4RcAqO>~1=96NEw-fY z^u*ol)alEaeHtVaX+UC{xmGOqdMeM4fj-IdSYjKViR%S*DiCW z%Np28&h|&3(t9;YC)r6m+kHOP*PC+c%_f_rh*yzYZxPj7n(G6PKIwM@^ZOxNaIsO) zC->{c1=pYzxFqCUTj)VW=<%@NbJd~edV(+ZhWsZhv_LdpwljU!Hd|6xwwP*2ZvE;C zUPaUVtUHZt3e(|+?Iy79an^2?0xV|Z^$MQ}N$PhA_xmYZ zU=RxWqyk9Z?%`hT5nRj`xTN71u4#e~R)?JFeehaX$hTo39bqBRgIB^P7vQfYwWO!) zV<$RoiCsA@(EHHXH6W*|ezmDS@UzQ;n^M2t9>G<)-_>TQrJcnteTN5aQ8$69APrl( zp)0HHio~9FP+bc2RF}M?IpovrAw7!FZ`y(j#Q9P|FX~@EU~);C9%d^O@k&+o>gM`q ztx$HCla=gfPj^naFH*18 z=?jZ2r5F~@=LI_OV4bvG$VVRa-(l>|fNd=Fl;O_0goupA{+E{*fK#`zVt6*FM**V^y%b+XHz<_H9 z(?|kK1V7QqP6Cm!V=x1tJ9Qy!Z-fPDYsQk2T{si4R+s)Z{jWzv8t3&*&8y zx|0jGwn=Jcu|m;k5&Iz%o)%anQ1Urrh34w8aIUwoCU<8`nyEm@HC5x&xvZ}7 zBK89fA;Prib0+Rec~^`?AwAc~EpF|K5v#JxKuRDjl721Zw;>Mg>MIOQuzN7 zkh`x+8_Vfao_R!evM=tG(iJ~v z>F;{a%C3h`+yYsC*tB1_+)k>#lfTZNb@1ZZi~`r*=lUD&2FSIp=YLFwdrf-E+}n?0 zF-?nlZ-21q%qzWTXWk5dEW0@VX87SkSNyvEh9g=aV_P!^F5a7q|9VEPv`X*p(*;(| zIh~rfvd-AIZ&TA;uCnfP{K$Z^L4L3GPHd}kcBefs3&2OQraSYF-sBwL^y_R6e~WtQ zqTZW(HsyS#Smt#+VB<$4aNZpjar~l^ldj}yme;9Ie7Nb%YrUuYZ-n#k;yVunyn3X+ z;ibU+C4H%RhGS3u%Fe^L{HcHUKyYeae2_5kK9+m@(ZmB2RFD4jpg*3q|Hg^BLf4N+ z`x_GdLE5bl|E9m;P+-*tD6XkfpWnTy=?RvyZt^Q5h`R3VCXTXBjh(ot?C`_qV+8KY!lwbvkstvS98ey;6RWztxHYe& z&UksxrZX@1o{qmB{&s;YVMTvKC1~$?6ik^zXVC*Zibg50~pt8%WC~$aci1?Mxkqup}%2{e^tqe zt#Phd#-~AtdpB)s-TB47-Fx5qvINXodFyA5riy|bx#kr~RY&jY^P+I#xW_3(n**o(c7vVY*o1HzOR z?%}6SL!*SCgh%F_NxRo@XTn15W41TWzYXRzufO4XVAT<@oMj*wSkCdD+jqSsHSN;5 zeUEim*zJdJp8~Qs`Wt5WrvB;dgx=E@Ka3SkKIvIn=cCx`^NbZ=%1xCMD|XT^cf+!O z0!K~wW%Q&cz=3r~du8+D<)0MES2?hNWo-dU)&l|a!!eEn9=f1i0`k!)464f|IK}$6 zD!4nO6Ij7o`Pjd2BAh$Xt0uSmPTR+0Mc>ACy(#Y01a#n>c3%aL8|#0TsJ0qa3ocOV z-x`^Y`>^L=GkjKUKjtML$DbkG-E%DMv2npOM8U#HOuH{Emo075i5hY{T2*qP&+GH$ zwK+{w`R{mjHYiwDTqJ)>2>t})*C^t~wvmwPE!+WnG;lHEu~2WYwJkE;pW|d{JFxk{ z;-LjOCv$yT{Mq>|g>+{|SkAN6tqzv=m_P%+6ZfeLYDnPQ#@S!fNjK7UE`G;*1=K0= zYIsDrBeogC_sg5Rtu=OGAcnjn@Wh|yXZVc8IBocwwYelDep;B}!v`q$ceTBB@_^Rd ztzn89@a&jE+L*0)Wh$TVi^b$+V>q9i9mN5kjn(7|FQrLIXh9S|oXY`7+I!HHZW@~_ z{j3>h?PAHvdaxhpdZwtUs^vd;YdWk*nzvVo4E!9HPeI^BF)qVsP4&4oC7?Cc=hl<} zG!+S&V%s=M9u^oa!Gs((KZFvvp*u`OLSsVg{%q8SrlXpDVLQE{bBY?Rw=kS+0JbNc zYQX#?s!jMFn>0_3nmHlKXC~)EjQg&SV7zd$TX&VT?l#xcx~rsh_k4YC9Tp6_>s5Gp zd0WY@W?B5G1}J}~+Ei`vJJ`TN29foX^qkPi7InqQRq`DenoB`i>$Nb@NjK8T4hb|x zB;?q>3$^>(YQP8@f6+8eZR9>QKJ3rqiYOIU0r?q3K23}-a;q@hpEkDfv zDojQytmRxB>sH}ZT7}tDXcbPSRX8^fRLBDrzSC&cvS<~)ri2z;L@ikM6ev>)ntSkZ zum*2-O)ma^hx7@P??Q1+ZO|7~gQKF)3GX2CT$MDhIUdNz&OPZhtHo{5hww*|eU2(-3kqLHc8VGPN@gWlP6H_Vnq8-;696Q)9w04BH56$Aoy-&m{)i z=jZFnT}jtx9<@BEm&ZM6zpISJYv;wW7r2OsYd;a+i|#q6dip*L;|i-velD0K=g*DJ zY3#YZH_jDrRN2&*e}dWmKu{?7$dYBYH_m3nyJi~H8{fEH6^5l=e?%b7DZpT6DcQ_w zQ1^XwUbbZnFk1fe;W$^Bae>YF^WFs4hlWioySnea65py7OON-Q{v~lY>sXfmw-b(7 z15%IqsCtP=Z~tH%K+Q`~=JH+L$j{fyUI2!Ewc8W{_y&V4A4tSQ<^i!dQR{Az3=^vuR;ghDUsJ42-1MM%S*C1^hg~iT>jB_kCt+^ zBXlro_z8di*4%Y=_36EfeDA+DS*`%qOHTJ(es7oW{iBo9MWZ(1w2AwhYRu7Ny=U({ zCo+yuG1IaLTWj-8eM4=XBJ=5st5Rl_gHnxKP~ZMMW2C-y+XFMQN|---O+T)3jBX?6 zC&s%Hs(2$6M;bzQ;myUXmS3*w%PJ6AU3)e_?|z9)`UAsSyZXfYwTV?n`)e`Rz5}w> z+{N|lZUf=W??+dU+HGr1MZl${WCODO-QR~*&G``1z#MReQq29Wj0dEmp{s#^FK)-L?wRGcfJq!J|ksl+<68Wy%-S<(7GGa6?C}X1}|d-f+U1iJk%Fm6bGu zj&FXL=$l&gYCd-1bOpFQ?Rvn@-x(808*)=)&(AM6j?i%)zTxYTssqRZ@_^0Hh|M#$ z1D7)$&~m1_fzt@6YRhf$j5Cf-AXd{BOALJ%s!Ivgf;B z!f?6vWUBw{x520F*%(9^aESw{pnrDL$aaAS*y+>-O*&}ST>-KFMJM}~)@6$J`ZP(4 z0}sk^SP0`jOS#Fyh8gJ+e#chU1Dw3iZjJTYrQ7LUeJ18kjl4LpQvqb(;libLtA%wl zY$-steKL^A#{-#sjOI*Ci(L+k;nLvnMgW8pI4WWtjegIB=Nl&#zS%L8&y+P^KEDjwD#6*XTii8#;*(Ff9wNuDwoqH&$DT^R!h95kxA@nTQ;>U(EHM>!yEJr zo9WxI#EV+g#mKH`Hnz)tYVEOUI+}A~nYUx6q;^S-hFlnjrr@>no2H5mR)gH}@Ha8s z^}#WIm2tLh-PyW0*UXZcFoP^62NUUVdVQ*%Q)6k!&#N>_oAK;Zv99>%c$3haNSZY{ zN26)VKTLKcH^HVpoe=J7@lNcBpKX=;+aARxnAo;;H@8ATL%Pj);?xw^-cR`VtGNCQ zCMr#aZCxKP8x5z&b`pbXflH-{tWm$(oxbcz4u3+l>o_afJ{25vkfZ1F^k%-GUAAGe z{}z^S)gRBk(9`$r6xU4DAL!EH@GK6(2^=NScW7T@3GkXa6~cDkbT3$4Rtv8+R?A`e z$(sOMkwm*xD{qTz7jn|M2hnmdi(gZHM+6&J;soq;tLr^vzM>a;PCrQ3e8M-9awQAS zK>a+NtRL;o*ig^XIyu;89qg*eYZXrZCLSXYPO&qeL5DPckK#{PKO9b^5%3FklVhH zogtjYHd1*gM7S7q@JERM2mH|?O}`inS`9cI()eD$VF+P#NaL3Qp8z-=BAgHWe*qk| zmkw!s91M(D!0C|YlM48wfYTw3KL@xCa5_Xdk{=C3;SG8jfg|`+(g-J7DauK_{C3o0FHL9@qP)ypu)=`+wk6F(v8$)_F~e{a=1+aD?Np z6f}5H_pfFe6+;#ITMtH#YF+=hpJzxdxDO|jN#@z)A-~`JQ|!LDxV$6^&OJvJB*cL{ z|1!tbhaC(C^)b&tyAMbcr-g?e8g?ImCQH%haf!y3=t@d;mMD`nN}mw-o9DFMb)ZAo z!_H{abq=0OCMzS3lDnlvho1j+PTmh52PY4Ik93fn6n)6y>cN84Ir72N=7dr!WC>9k zi?KwXA5~hG7nPq+D|gr_{upUgbd(I})d_JkO!+fb>kV4t>e3k{rRDkVQ_*NT!JKu@ zdZ%LoQ8jo2c)u3C!JyTZ<~tptY~rno4C>WgC4gqV30@L#ZgECbJLf*@_ za5Uz^QsB#iPXtZSYAQ?B7NgpjSE{Z=huPtKLBL(BSLeZbf4vT9eDgIXy+u>3CSF^1 zI($rKqeWe!Hz2_27=vPjI8Mg{?zmb5BpOQ@oNcc}xTb=n@x*<>h>hk-b-uC8WHdm< zWJGP!=(SDkoUYWkwqBj6Ye~M{~b8fv8bt;GKM_vJXPb47@5$i3h^;%1j z^9i}b8#JQTIiCnFt9LGdJm@j9_asHKqUl8sjnE(iyput6u)|w{UOxu`ilkI!-ddF9 zERsRBT78N036_Iftf@4Xfv#BT&Z1by1H{W65=xp#JX#xxr$;!866P3KgbYxx=Rc65 z=wSyh6J8OA-eA-Q+`QpscW6^lJT!${O1wDlY$!^2V$vY1IZ(AviN;V^tkbGVUD*E> z<`J;LGJ}3qnT`@FXvixUZnG1|CP2sN4CNHz#!+YLf69Ca?IS0LFb#V0t z_*j6>x!%Du7~yLMno@}JHFv6p0`AE%=1H&@1UIj^@s_IP=y=uBXE4yESwrg1jz^GHHK4b30UfjRTirD=m=<}u|SD>po&w@C6e`9->vh2}C{#8_wx zW28lsBWr65|aj2X+~324A{Yl4aHMahSf!Q%RHm8nCJ||OAEers6-x_Bl31rh!L}BBm+79 zNlAg|~c6TJNhywLI)r&vooTMPPx#d`{s8Hr|t z(iF*48uKtZYF3$*D2t1TjEKZxk(wfbuv}w?LMdp6MI=_P9!$b_JPUOeB99cBXisDW zJ|h($rZ!3jxBN(zp2E7b$g{Gzm~0`e_rRCSWMoh43;y!{ql|+z1jZ1KA2bj$kDN54 z;|K{zi0o^otqsd$4%p$DgPW9LdG4{u9Dt)!4a@NyBg3*Oy?Nl`=r~x*Yt^LPMM(!u z5cWYuV1lrDD=XIF(@}CdE+IAtGxUZC${gnq*^=KN^Qi++D|}| z0z*pj@JfI%6`4DH32W%837H4FXm?=ttSUYxPfyeZJ9OACN6kc<)>+^s>JqB)BTfvk zKi5^HApbX_JQN42Gw1~zDafEGD?LO(Y8jy}4;nEDYc#1#%8KI?qGTZINUC}W7Y}b0 zb0IlYj^X4Ul@k3myh}W2#0gU5)}j(YCepuoSd_$5aN5mz&`{oPDdFur+KHxKVhs)6 zE{V3t@M(Yz#K|R_?=)pr|k8G->Mys6}6GcoK9t#HiVb7`AV`)FMM?5BR zk6Mrr9(+A=2c@5x5EUJZ48+|rU>2lS-4gz$O?c9J)IunN=IfC&Sc4375RdA2_arIN z!^{=QZ|Z=ta`C8xsNIvRN4{8=0O#<_%)}EV_%dE}0%4P-7TTG)TSmx8da(b-96)6R zu}4K@Eifq#t#5EKNRdd8mqrhiB{R(ULnDpyr7M?5Kn|>98BfQCnoL9lAWXFo;&`m3 z5(cMAdT$9cF)}aO|1oD9a=9fNWu_UjT84da_9CUe)TFV%TH7p1MoSgK#SbBb$${~0 zzuC%|xP;g^X(~vM3=Ta!lKf9OxmyISi6IybmQkZ6HC`^$rHgu&pE&-9v1Z|Gs(9wo#>#-lq^933n5oM6yA2mjLq z_XIQOlZH<&bXypX%gvddP=;4P&L~v=5O@3c_HTo;7riQBgdUU4%>Vuwf!iehKE4tj i?!d$4qP!wCdIapSjry4UANPYc{2aFcew4E~qy7s7xTkXf literal 0 HcmV?d00001 diff --git a/pricer/__pycache__/calc._nj_caso_airbag_one_star-980.py312.nbi b/pricer/__pycache__/calc._nj_caso_airbag_one_star-980.py312.nbi new file mode 100644 index 0000000000000000000000000000000000000000..9d0b253a497e0e42bf93fc84b6f37271a9c221a1 GIT binary patch literal 1662 zcmZux&5GPc5Z)#GV+;u)%bLXGU_uTyGZG_>MkC$U7!tzb9C8RbW$13TM)F9l-foRX zvk>rUHwWF^ev3Rro*~DO$H+C1uceu>gEIrw)m5dhs=g}e_37J(N5ii>o4DcB^^E)a z|=}x~XDpFg72XvhmbuM5$tLQ6^Y;Vl> z_kBetf|MLdQX3owHaM?0c~WQQ`l>r!uqxr^`pfmb`N3o-+4=vpAmq011u35^MYaIX zKHkBfCe~%L%kD%Zd1_K<_ov8VeTZ;DCfOeV-+eP*nia*o&Qt-t5nq6E!eh2josUNjbxCjGBGG~*E zq}phw)C~ghVzBzt>9%lv))kg+KaW+C2%NFN+< zrLlhpzpNw^^)BfFT-bM@;cAF$_8?XPL{Dwg?rza|Wb3d31u#}hNYu`XgqKwf7Fm%N zYn@dRaIDx+D{r}~;K3+xDP*)wT+68y zpha6oAiyQ$w3mVF?M|eJH6ZqCy-rO_2;CM*t$?#eW#Dp+oTVkT>0doiX`8>X%VK$v zEA+pi0(~^772hmwX>Kdf+-lOGg8sn3`qR#T(D3rzuFbvauA)g8CJ~v2(|P2D9`%V& zlj+2tbC0Icl+z$0DWA^>n@s!^(~mh#=CgE`#sT+c_*`D`DV?w&@Z%_D9`k~jq%;j! z6vtsoV?Xfcga;lE!XT#cG+-o%XL0P&c{KBBG@F?_TZx0OHggx^)q)XSEl92?SuQHU Y7rG|OiKB@tw^Pq|Jy%d>^qq141@i(p4FCWD literal 0 HcmV?d00001 diff --git a/pricer/__pycache__/calc._nj_caso_airbag_twinwin-1020.py312.1.nbc b/pricer/__pycache__/calc._nj_caso_airbag_twinwin-1020.py312.1.nbc new file mode 100644 index 0000000000000000000000000000000000000000..cd4003d7c98a82f986b84518be3b7ec9c932f72b GIT binary patch literal 25695 zcmd6P4_uSg`uICGwgF=dC4~fh(Onx}T-!h#0<{6sOj7();Z++iYzWEzI0k}UX)pw= zSy;PWx_NJC-s<-0mX(&48Hk!08D*t?wS=^+tEOG8R$Ba?^Zwc1cN^Bd-TS+}$<8^? zdCv3iJm)#jdv=yf@P|bvjC>TH@kZ;N#!8~jW+ZAH6~uC*b5)HM{&_t@Tg9E`N~gEL zJ`Tg~o>fvD!Q)Y*;FE{l0Dqy6eQW@xBda=062NrPy;P~aUq`hU_tGWZ#<1HA?z83l zn$k<;rTZGwi{!d}zVzSARq*MQ-z#NroS94_96e^VY}%+m_H9&vtqtzI<#+VQO~mxK>u=NFs$X>5?YAy8w46)tV} zZ<8Yh4C~tDE>uDrO^sn)k-QN#j?xV~Y7EhhYScipkI>3d1Nj7Ml%WQ)AZnDN21YU} zk{eKiG$!=uP(w!dXi+1PZm3WLryB~?P|ywB@G{UPpMaV5J7NK%--$j)1`V&bkv@o! z*7nA=l?Xr(|J)heS}d;Z5FcRRtBCCE*AOOp^dm-Nunm1-gJ`}8C4!$e&$uwY+} zygz#vgQ6dK&j3u;o~8*Rq4)W2@7;GLzD=$|4OB58=>sCH_flQHRU?CF@NHmW59FJ zhtxev;vb>Vkc%`bKIb6rr4i980xj5x7dVKI(1>XH1tI!4hz>y9cUSx_c@JPhWt+U4 zsyr?4f{J0?MtLV$!t#a^Fii4B_*^Qt!{;J-HGG!H%i$B&C&Z!O!@>lgB7KKki_qwW zfoREU*}h5zbXWu*K-@(Ee=EX5YS>R8=YCCbm&FXgQ1K4`M52 zoqayoGJFVfMdl?V9GGAuz2-qZ9a6>z>Y)`)+O!-hC~hH3q6a2uo4f~AeDTx-LuHHH zMM2Pytnkt}Cg%h}`rmD*90DW<1 zlikd)NuVpd)eA6Qql}j<5sABChL-|7nL&c`uaR`4Kq@PcCKgEX0;xhTRq3T#y;P@{ z8X^ekkiZ?)E?z5Y6M7=o3-06JAMwZ3?&OEB{Zry2<2EMzdCXsAk4k$a6dgqS_cTdV zB(dsOtKJ3SUVwcy5)OxtL1&nU4f1#P7ZU%a_S#Tz{p<#R>H5lPXQC0F&&VpaVf@@iDc&+t6 zFS6j{{ZI_+Wxak_7S1!rOj>iU2MNBDy@{tye!_&(~A(0+;JXUq8<3(nT-M;3en zO&b+BT}QGYQ@Id9RFa<<#=x2NhbbNAT0&XtG&ediCHYy}gtkhv!&qEvBb?aW1&fTg zm@TudRW>*usI4`coHhqm+BB=N(zpnAnpqBqzrCQ|>a4NQAakRg988!9yVGbjk=vUQ zZEr?aCSZ5a@p` zh_cS-;rtg$~bt;0BeQhRc-VUcyUoDcMj2m9j;7)n zT_p=0JUI#9OBkYn}&2Q5FK zaY(yp#PlG8bC7`EM)(Ut0SJcujlCI=5b7fs_cj2)KRYd^A9E``zS|F>DvbOLcs>jc zr+*LaKPnm#>5oV<;~D+$1pR|~qag-5N$R0Hk=)_Ndkf?^h7}a{emotvdt~7XiAsL+ z;@ywma(VmPG4ov|Xk;49h61KKCL)dGhIUp_%j6CE1A^H?nI`7}UYq1Mk>aFO!Mzo( zgjo><55yE~k!cdN;>0=8ngyK(``)z4MPoWVGW`P)rUT;V67a&}PW%m?Wh{w7}!}jVxuR^8kje1KHAm*Q6?e?D>M$+3^eDW5dclrH1IJDYN!R z7A%+|p82QAx-pZtRO=2rt-1*l7GiaRp39~bXW06W|{AJZ-u z^hhMGNm!|Xe^0M2syA6*8ZF$j!K}a%h5`H_@AYJCBmc{3_ogv~>6BrqcCO~7u%hA%uX!kWnkO;w6b#EQ?XW{Ie%Et`+Q5Ip!`Fb9#OmzdmQt@ zD^>4AY|NmjW!gZWaMJgvgJ;i{y^AVwu5B&dLRVb2%!_U86Kwo6WWCnI?rH- z%K0s6y-BtB^8&3qw(W6j`PP=Bv50H668LF!~5xi562v$iV zTnVmBafIB!&%}U5S-04qJoxg~ zl4Cm#UGBvtQ^XazTg3az3*d8a`5xIi9ysRMjNkY2bA6GyJ??B*$I5E=T?WxAykpgl zj;3mNL$~Oz#E#f!OQn`U>1z1I;v9C7y+>4si&m>djzQrCT(n9?)=40R;OG%G=tQf_ zMb1It7w}0oEnU);xTvv5ggys_pSchns{W-*v|1)=pvaP=UXY0#F44_#;`j&j?H(`2 z%PQ#JIB8eTvcEJux+YiAJ631~-O&>fhq+R`ua9wUMIMcoRu4DEwP=2gWVjH zSA_LSr!H-7N!*1NA3Wkb^oPguu)?Vy#zzTYiZM)wdaz!8`=V`oA zP>Pjb3;ooFkymc`>mBbzkPRFS1LlQK{jmC4szI@dOI+}`?vqqFq~c6tZ&&o|JtDH9 zL!(G`)eq^Y22z4#cTeVZ5oCi3uNPct?>{w12W zNNet$iUSH0ltHBDHkzpK!~7y0JY718?|K7}{OtaaB#ahdhd~b<4My5c)k?Br#Q_nJ zp`J=yBqPVTNGzAgP%BeBU4da;kr9Oe(xi4LB*m9>d7`G=v|ms-^*5#ad4gihaQ5pN zZ(NT(aFK6F!1mv`*ie}k8ykCX!|EI6z4CU?=3{?(=(Uf|J^#ov{59L>CLUUBySIPV zOCJgU_{8hx97}T5{pJ^*UGhUp$LaGn?X>Y7ZyUeQKezjdkM=zLXW`gG_R8dCvu}B5 z{p{&?DCQ`iI4!p*Ub?B{?2{iPx*!1$>ZPH-m^6I&~vb`xErzIavOW8xDR;kwI?sDf27Upc@=k0RmwefQYE+jORi|(ox&8Y5h zz^ALj-qm3*7d0qE4ZcVqyUNvJ6nCsl>~M5lAhGX4dc?Yparf-Io_ALN1ys`TJrIh z)Z;_Rr-oDh!Aq@5oUh$lICG;rcc4^GD^lLEs!`O~J-_5qR~)iH>Yb?viR91IQalb%#bp?Psg_{EU)RH@Xbn*7OG zB6&|s%F*HRXVX$XOH0|CmI5>QdD_G({Li_&3iEgHbG+`HfwEmN`=IP!{derLD|Q2?uKenlei;k z!L>X3bHNX{6lw>+hWwl^cisR$4~*&U_soeszA5$p^vQdM#~+7&M8r!wgUa)QpQq!+uSmrA8r6OK+DG0c%_zzaJiNl^}s0iWFB z*|6cAq8^#Tl&97d+}D-%SfXqUhE9np9E7#9+PKPGv%K0_2d6*c$n4fqQ>LUvh5ZfI z?KHrNiFPPpJ&0D9*}Gv5koj^3`&&Ot-oGjKb3IzFpg-kj`j}P>vN8XP`KaUJ@1+W1oAlu4EpbS&X&fV)(Z?+u(_J zk=0MWOB_=vAgibkcANg#xqAmR33}D>9*JJFzkR~y@@}iRYg1mLwR2onw{@_)mk?MT ziD@#0>QqEwu_PK7^x4dWkk&Pj6R@BuTAs$pr2#<67rLhdA9t(co7W${EzFRUpB4GCmmRxVSk(SD{?dv%TA;B6;J`MVQ_k2PBI+|ORTy{GoYzh5rO z#P>x?maKn7Hhkog_2xF?iI*O(1$p?c*(0Z}%*B5=YAkZ8zS}u(0t~FT&T2Crd8H{a zUY)pJ`fV16Nybj>kr>(EJ2@qbbkKg^#iH98!fK^eJTPzse$j6LbW29shH>*HOmzwK^S z^t4XOiO`j2xdu@GS1KwyozPxRrb?Odx|R)lN(80lTU29t35n?gMOb8U^uGh{)c?VS zCuTT$&-K+$AJ{BEKqTzN1^uxtLSbfn8RF75AGp-&1Y>vu8o?e_DgVhms&Rjuiaq6e zGGbG-P;^P;lFSe+$Am9P`0<{^#AtD=-Yr^#MZX~6&3Abc6EJaWi(Ay!spkQwyha%X z;iYy zE2Db`_aw?dKmB{rU^0cPFT>p`*d}DO&WvHSeu2?CD~8efdC+=e1ZbUM(AoStLCU;7bUlz8ut$E z80P`K3!#@9bWixD|C*70VH_j<*NpTLCfX9m%)@uU zWCvnWX3#zBXEMStxyX#wjWA430h7KwVA8)9{ODm2-qj<>=yXr*bZejPpXuXGe7Z1o zuy4YX`XrZr%Jc)e=gMgx(p|=*DbFkax)7YTjnC7;Ci*QVD$1PIjRLO^BGp>5(smw2 zEvk+x_a|g$`M$N>;ePwXxCY;qFJ~MwEr(FE?H!28Cs%C{j!MBs(uo(!n*aQ5)lI(b zA1(0=U4-yG-KKRLPe0z_`}(cR>ob$C9X{f;l(-)~R-EOVVO_^-GoIO%9@{+k7=aBR z`QG9J!0GK@Nt!=8_U_Q>?Vn1T|Ndy<1ld~9Nhtk4*gJ$PTcaQ$pyn7PfuIahrL*-N?F2`@_)=%oTAT zXmRn|NM_%1#?*(Q#c@!E&C z<*Z4tg<(yp;oI(CBq=Q81(LLdu((j!NzdK>+?8yJknD-UE zs-o@FU~#;9__joyZ~NROun@LctdIe0?@Mc5cCz_oN&8K{uh*Y&6*9)XKcNbt-m&DJ zp%X8E2Sd*bEAoy$TlTHYP-T;yFQNP<3??%QQq3CwoogA5;? zxGmea#=4;E(euq|So4>MfBXdNkIG;?tJ^d5?UXFvOKYNP!dQqsIo%%&o!_ZOS{<7L zqSoKHR=jljg6F zkQ6${hGW8>hNDM@F7CKBcK0(ABO;25&yAgL`hC0c#Ljug-WfW%{nPm7HRrD*MmL4= zvVo|DS;&WjB{lU8@Dkzd#1|!hRMjT+>hKpOHMnF+d#w=hBlo7a!`* zV!qfT>`H?0i)F?aL#DHp7cUm5{)ELp7Bye}CmBYE_N_dkw0&iAq1_OFNgMluBC23* zS~3J~7>5q?zDe`FxL&;5DsO#l!a(8Dg#z(dweMYCUfaXsW?Q=3cya2FoK7`;k^>dv4SE}4@e`iMbRyD(YFZwvHd*AURq>lyIORxE!{M>wY*2& zrZVBgLxi|BjZcV+CHG7b^kH{;V&Me_eS0xutM4UpJsDO;bly#F6HVggHN1O=RG!1W zc=h`rf{!Quk^Dvs<_OtsNxKeg-j2*kJ}YtRI|_|dHmObcRAgtl&6RLCrfmKJs^1JR zgwH~C4Bu-<-(?^gMtJ8#@09559@()B{?LO;cvZ&WXrF|e0T10&xC=^@2dBaxdbT3P z=?CGX=UpJw$|}*Rx@-#A2XM)EQo2NNaR!E!L;D`UXG#YD9{@-1{Y**X%Q5USz|j{# zOv%8bK_T@1&y);25#T6UXG#XH063a2rexr1nhsMk@EZY+zDZ~C6~NJYU`mn>$ayos z(d`bVB;jCB^f2>@N(5(M9=Z>e2rdU2PeJ`j_+v^2e*w%pnir--a53N$07o~tn3BQo z1vs)NQ!@C-ztF>$iGpC*G6{ys(Kx<$GWwqF>X$fvO;;~zNq_a%D1z?R&|?3$Zmdw; z*f)3n_m?JWYa1*|xId(<%Fg=r+$jmU%LArkUpVsLMj|ix1mE-VUqPZqF_(KtRV`*q zo!P0htCTg_S?I#msCTCPJkX7&kPA@^&%jlpU&}QZq!e`*i&VH#o2?|AHcL&VvaY^D zSy{;_9&*!6qf)AsTEI7EXHBzLPJ^GMnQW`-rdjG5D*ZQTP;BzHdpo?Iu~u}=8c^~wqw|M8S@hUt*>Xx;)(<8FjOjfwO z<@Ll+cg2WogC(Np;lrLEp>gJ0{#P!*${s4;mxycJ$gG-8A98m$10 zWJJBwhQu@iVEJ;ym=BD-9%&Wf1cR9ApZ|G5KK_bTb>4K3$YHKSN_jm=EaQ@DDv1gp zOe!k(Dj>`e~ya^Mi!nHWN_4rC)7bzV;-xrktXJmQM_np$U# z6@bi75g+uZEjtW|u3|wu>zzfs8)zfdW@<y!Iyq(q4=UhvXDWS*!V~K^ZF0VD4jFcr>|M$Tge6ZeHv$Ebyi*)TM_dDfTDwq?q zwSmU-{F-tFP-1zltpb*#sRq{ST#vBET3cf^d)IkHRvY}TgQ$b5n5d{RItf_k%e)@> z&-k%OzL)Uu>tSWiQPj74D?H;^3ji#^{A2~D6&4Hfdy^5s$Teb@d8-$aZajfC1{@Nu z5W>A(i@la`Lfr90Ed*yl(ZLL(Ahv<4BX2Ka`Q41_68MkwL(pul(_67Fy{t$9uTyw& zO|5w*UO02`EL^S9sK^!oYl#YTEv|wZjyv#t_|?mDg(?Gn<6<%AJJNA{=1iPk zKO{<+$Vm@U(}TibP-Ma`Mv^Ei@Y2LIG%;3Bs4ScaO%KeZ2XgvChq8k?Ju-`7$%^x# z1H*=Wn!{-D>f;TXFpqlZa;QmmlV5*owj1K`Q6pyHd{j6x@G!oefwO!x1Lyc1^s$^NBRU$^*r*Rz zAPp_hsOZoU*3U9!mgf`an_~CMdrABnAT}6S~ zGx5C2TB5EFzYevoyMgi{CP`HUbp~juHFo$_0MJ5t98Qx~a5VrUK(d=pcY@&|8O>MR zMmR$7=x{v~Vsut|MmkK{D!_!YfpEa6{JA!(nQW|B6=*u4YIc%+l+>g`8R_`68}JZ= z&_ehXKt|$9>+hm2j^J`iMM$6^NNP0M)CAU4{j6D`r<m~yI<+KSX!Bzp=( zPa$g+g>-VgE2Nv2odcJXNwGQ`US-s1-q6op6c7b7@SL0+%77&`PP2okT>{W$3Iyd6 zPzU>G@Jhn-^KlLvw2}I!f~{QeNDd=%ZdlTCI?0LD{Bkd5q>*bvJz1ks$hpe0U0DOs zm*vXAh%8^8{-5<_Mr6`H$gCO-$226ID-NfhacoLsaB6UDbtc>MC}-5LL6kGnR^pJ8 zYl8jZs_}~6Vn=m}z;4Usf)vgC56*XH=zM3wd~=my&vzzwzJn3}KhAe%nEB?4!!aE* z-;~A~cqTpHek2HH!3z;BVOaS%VKrSn&{5OLigT2AvSVE~H`Y-Il#8*vj_uW)M8Yp7 z8$(Vh6VfNo%!1c%laboml&Zik2gelEu*<=DN`0*vzYaC8!xiNF{InWtI=$oFLUt>z zf)>g$i((0977lW|hTRC&73ASbey~IkG@vsdP85UpSVk6dyF_P0I3V2+2)!qAAc5#JrC&;-HcdX+?-gC=`a_8GPHABWg0&v%;{XpyZAZZhWk;nVDveT|MXqxybs}|y4OFF4s;Ct`n%1<&PIw11 z)ikJ8SxWVE5IOvAc|DUsG5mhY(ZZ4mQGzrpN0AT|xmr#6nHsHM%F%)?&G;He7xD#= zal7CVVLUHnFw6fkaO9%o8x+egRlnRXnFF1l^iSX&Vj9wV)Ux3SA09E-1R+?oLl7pD zTCG*8QQYCYzv91zw~xSN{G<(5d3;7wvnqlJv|+ql5I)9#M~o|8Qh$YIcnv;W(3YCs4S92 zi|S&pL1vQ=&iwpv>UD-g1I)%vlfa9Z9pXQo4k9_^YR-;@xN&pAV0r%iWYDj6Fv%bT zgyt0>)h|o~8Qy^ukWxN0JNobEe~c`F+>e1=E$<`c_2)loCh1d$u@;0rb*N(Dq94OJ z3_fR4s7M^jih~3P55d_U*SVN27{x0jKeO?2vBGS-fdQS;OwAew%QO%~6%I z2WRDQ`st%2Eo_l0WhS^Um3Wb7R+=y;R+_*oQ_wu;z{ZA-5P~R9g)E2leRtTMgi(Zp z$q|!OgG#MvQ90eL4J`*WL2qNM4ULlQw?X^=)x3-oz&V^)8w;9ik~9Z_QeT4-(CmLH zlVzEc&VMv2I7mc!;%IwE5U;Ch6z*05NAQ4&8R0qIv_0YNQv;qt=2Ib7pT=07tH9Od zqG@mjaQLzej&^c#dN~MziPpfo1C?6^*0(>o3JCr)#PK6@IFX|GNprdarqIAemY|G^ zmW#8uUws_}zFFaLVc7zlk0Q%KfFs1LpP5Bba)!^MnDrQ}6^9p-J%zFiWKaKc=A_U- z{=^9bC@119M|>J2SmC^xNv1~0qqsSgHjqOx`4js70p+%g_CbfG445MfX8=d;;2usp z_(YJ?$^K%23<@9^`(2!K?$#LoRh(%2Ij`af%g>q)CRr-w&wm3a#iMo~W(8+ylt2CA zt)aODFGatN!_BW>QdXp*==gi&nyhT}QmxEJI~jS56Kp&M=bO{ufQ6)IHv8a_?CqXQ zgtgbJ;0ra@0TA0NoKqm}FV6`^ecNWN$QIIXB32Ax3&-sbR^8t#*G%Um{p2Ymd4Gm{ zJNl2E0aJdT%{u%=@6167f3Ph7Uc%2R~ z2-Cqb(WtW!!12?icrsDd4`#9RCtZHupe2|ZbUz~`qpbhOO bQX@#Oe(o_AcUppvrr;)IHL(`14=ev42*!Y? literal 0 HcmV?d00001 diff --git a/pricer/__pycache__/calc._nj_caso_airbag_twinwin-1020.py312.nbi b/pricer/__pycache__/calc._nj_caso_airbag_twinwin-1020.py312.nbi new file mode 100644 index 0000000000000000000000000000000000000000..3f1ad599b916fd16d85a59e0247af8fabee3bb39 GIT binary patch literal 1660 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 literal 0 HcmV?d00001 diff --git a/pricer/__pycache__/calc._nj_caso_one_star-961.py312.nbi b/pricer/__pycache__/calc._nj_caso_one_star-961.py312.nbi new file mode 100644 index 0000000000000000000000000000000000000000..b750c7ae58e4d505d8beb3cc54f30049340ce2f0 GIT binary patch literal 1653 zcmZux&5Gkj5S}6Pvn(Wp46`Il4!a?Q4YtMT#~SOl%R)jJHitk$Zl=4{ZD}pFdb(v< z9tiAdCI{WN_bu`ed4?QA9wXO4zLsofU}Kx=`e}bv^;Jo4j^8~z7(U&}g%^jOZ@o81 z?|wWPoZr6q^QV7)|NF}?Uj6pRt^LJ5>pqjKk`j+qntSy|apMtcYE4*eyR*6T%r$3~ zgm1;_O53-#J7tyHXuh!BNACweeGkwuQV?xycl=FJk=h|VpsT#7a|!23MPGAdduzYH z>nl2vq~u5<+~qiOm-Bj^r*&qpo_EJ{R;AoteZIQ0KiKRjJN=&)q}ueoAmt0K$p+xr zhg8cJ@jh4q4B$ z`(MAL6YV;PW7U34C&I>+V#4<>uD#MYoad=JZUwHl`n7T|`V<@0Eg8PwR z;v(*k4!19KTjHSSH7OSR$a<%-bf=})J5B7Bp_v{a7bV&G8(QY~^?k;s*t@0t?}`e* z0oMlGw~wnzFF zM6ohir2xl@HFffa>k1K!0#>OQYe|~Ip&14;Vl8q&VqkosG^D&{CE}PigLE7~L{QDb zP~v7KT7!!V;Tp~~HynGD%SN#r+%CaLu~y?zaf5cpqq4+8Avwj&aiqD%rtMS!Y*(aQ zlf1?XNYplwVmwl;C|AHz;78;bq*|`v?MZ~8a93$Ac+E0UqO@QcW~}P9&cVb)frbFL zL6jyHsKl8nS0D}zB%NxBHg#$^ciy@jj||B`r{Ov$MSg=$%>rpm1`Z(lMKqbImoUrF z3D9C3BM{&cGVEpK`P&oe;f;thU35~@62i1aT5I5}P#L&fA!q4GZTd$KRJ!J`-Lg1d z)Dr!#sYD+QYQ-CiJDS@HG`EH{sGvVEu>N%OA2d9CH!FK*yXUb8Ll#bH8b-5OFuSDq z#*D^ddP%3L2;)l@CUKY~(;$dxdJ*6k&`=~|nkHnH0D_0~f<;k~%mnk9A0`8!A9%heDYNF*djA51{WMPi literal 0 HcmV?d00001 diff --git a/pricer/__pycache__/calc._nj_caso_relief-925.py312.1.nbc b/pricer/__pycache__/calc._nj_caso_relief-925.py312.1.nbc new file mode 100644 index 0000000000000000000000000000000000000000..4dc0d0e166d22529a399e7dc16c2f56e7090b71d GIT binary patch literal 28798 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 Pc6dd&5MC5ooKgQD86>HI literal 0 HcmV?d00001 diff --git a/pricer/__pycache__/calc._nj_caso_relief_one_star-1000.py312.nbi b/pricer/__pycache__/calc._nj_caso_relief_one_star-1000.py312.nbi new file mode 100644 index 0000000000000000000000000000000000000000..ed0414f8861543a1f4e27843fb8fc6b52a31064b GIT binary patch literal 1663 zcmZux!H(lZ5SQ&jV&)-RE*sGV1Y43$NZOVLZxAttqcJ_6gc(n0*-mKF&WS(hEG6Nf@v2mXXopLx z4(3!vg9&BrwX$mT9;!}fd!RZm#1M#ekVaKTAZ6q5nwCsGGV$jw)BZ9P&|my_J^sXb z+=C9cFLYnxpyxF$R!7hFpz-9OB{v5xJt{*pJwTq8^k8pTnZK(aGd9K1Eakr;$_EER z8|>fFuPVi5y-#`sm+l>CgdXCW1Bg=q(No*B`&%>~xjLLc0i2f#61DRp5oJ|_MP8)E z#$=TO951%a$y=c-crXgwO2v6glLQ9MF^~~&kpmI~6Dy@5m+ODq(UGt3-El51?*K?T5mManJB zYpj4oZ4;S}M~WBa23QLGq&Wtu)*D!R5^+(8Ra&H?<{2naI^`K=tm>`K!Nf#?1|QKN zO4ABd;!Kn)5QhemPP9auIx#{xYh8{wAiyQ$te1gD_9xQA8c=t2-bu|$2-6lxt%0*aW#DpyoTVeR>0doi>6*WB%i?%Z zYxKWm5`8qN72ho3Xl^Ue+#1@Tg8sn3`qRyS(D3rzZtT77o(VFYlO&Es!tIfToe6{4%RQS#pxk#6l6iZW6 VJt5QS)Kj||@jc>6#;v)t-apIXH-`WK literal 0 HcmV?d00001 diff --git a/pricer/__pycache__/calc._nj_caso_sigma-909.py312.1.nbc b/pricer/__pycache__/calc._nj_caso_sigma-909.py312.1.nbc new file mode 100644 index 0000000000000000000000000000000000000000..3e0a46b42ed2b749c384330d31c23c8296dee34b GIT binary patch literal 29413 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 CiKVXq literal 0 HcmV?d00001 diff --git a/pricer/__pycache__/calc._nj_caso_sigma-909.py312.nbi b/pricer/__pycache__/calc._nj_caso_sigma-909.py312.nbi new file mode 100644 index 0000000000000000000000000000000000000000..46400d7cf4084b50171c214cebae511cac5c81cd GIT binary patch literal 1648 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 Yd(D`yz5mbtDh+>ETL^z$Gdm*x3;mw4S^xk5 literal 0 HcmV?d00001 diff --git a/pricer/__pycache__/calc._nj_caso_sigma_one_star-990.py312.nbi b/pricer/__pycache__/calc._nj_caso_sigma_one_star-990.py312.nbi new file mode 100644 index 0000000000000000000000000000000000000000..bfc7ee4f633b9b53ea4bfad0059358188652fa3c GIT binary patch literal 1661 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 N@O)2FX3d@T{sk?)G%WxC literal 0 HcmV?d00001 diff --git a/pricer/__pycache__/calc._nj_caso_twinwin-941.py312.1.nbc b/pricer/__pycache__/calc._nj_caso_twinwin-941.py312.1.nbc new file mode 100644 index 0000000000000000000000000000000000000000..fc347ca8b375c785709b89c4fca194515f9b3945 GIT binary patch literal 39991 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 H-t_+uMY4&F literal 0 HcmV?d00001 diff --git a/pricer/__pycache__/calc._nj_caso_twinwin-941.py312.nbi b/pricer/__pycache__/calc._nj_caso_twinwin-941.py312.nbi new file mode 100644 index 0000000000000000000000000000000000000000..f31c5004ea149d3573fb3be8bf2d7428cf8c33fb GIT binary patch literal 1654 zcmZux&1&RE5Vnc!T>=Rq#vutgEFpn4Gb2VCjXb*TvXBtW=8(gZ+tBKtk#?k3yIZ5t z7y^5;bI@&j-y#o@XUH++F>(#$Ye_RPY&@pAep+8ueO1z%({~>p^?&Wz)Qe`GZ@o7s z?_Qnt&hMZ9`RbqF|NiFdm%sgSXMeFz+b`s%NQg&E&An=;xbaA0Doto*+w-OKEH$U4 zgl|KuQrow-eMC#O(|l#ykKYe|{vM#ABq!R~_Vl~FB$Y#WoNThZ$|Rg;W%8OM+gtnN zeOJ+mBn3wj;Vws^yPQ?qj8&<~{%Uh?f3oRG`sjaJkZRZUf|Sp-COd$q z9}V!Q%!O=v(Vj?_754hLJ}|Pf#7C5Aw@GGbu;&aUQdJ{^%^Y;mGh=I zgxb4>TJ$ayI%q{%>jA0~vjM2ea^7FWI!L2R!;!Lfcy;4XJ%19+U8ce43+RmCVI-Ki zhOQE#-e#Q~(aR zHrT&IT$PH-YDjtjm+l>?x$f`Pdl07pqNBEM25T`MxjLLc0hAUB61CHu@uIB2BF#m< zF=?p)NAqpsU@7n;G7M6!H}G~O!ce%YG#9+0DJW4|&=fOP)mCRYw=+vx`#-!i?qFY3hnraQRm^lGj zjAH}>Ttdz|8G8P3B0anzai)t-s-%E0P0lI}oDC`immB0P9I18p>VZnv{Eb@{$BSB{ z|7{}CM~zzX&Ek&crUcE6AvG%K4h*b2-TZqEFW>FP-rM%sG!UGHV$S0*X2fT7o``Tt zBEFdNXhF$5V$l_6LFgwu5iH^UbP@VY#3D)Jcs>IJpCwZohC#d#)Te$J69Ejmh~r2k zaS#Sqgoi#4qcBe5Sx8A3&*Runt`_qkSyd literal 0 HcmV?d00001 diff --git a/pricer/__pycache__/calc._nj_caso_twinwin_one_star-1010.py312.1.nbc b/pricer/__pycache__/calc._nj_caso_twinwin_one_star-1010.py312.1.nbc new file mode 100644 index 0000000000000000000000000000000000000000..f7d309eab260dddcdf9f2cbbbb7ecc02e3da3d8c GIT binary patch literal 31759 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 GasLB0kuARf literal 0 HcmV?d00001 diff --git a/pricer/__pycache__/calc._nj_min_overall-872.py312.1.nbc b/pricer/__pycache__/calc._nj_min_overall-872.py312.1.nbc new file mode 100644 index 0000000000000000000000000000000000000000..0c231438995723ff1e6ad1d574f47e9b9eb58701 GIT binary patch literal 23876 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 ZO9{T$jV{;FT<3pfeoxeBYq7P&{uf9nB zjD)nO84kW}?_cl{ocI8ah|l1P#A`bVD@_j7)z#gvUcD;k&E(xjC*!X_o4et{^^E)G z^j&l|2ETjp*H8cc{?FH6z54CXJM)X_FGN!&#HE$uZoQLSyCl)IBD6OBXDb_7DNZYa zSVQYdnYX4trhkG!3 z)=!wdZnD$tynp(Do~EQA3hyT078SA2vXA!(K@J4)dXfv9IeUtPXF6XC&djgb#q}4%(>v2Y>7sBI29Bi8HW#egYNymK z1#7+86=cKB&woEUIhlq5xX-49bue7d98z`;X}hK8kA9MR;pow-lm+j`O)3xJR7PV6 zl=fa(wQ3Jlr;9yMofmw(h_(wYE6tIzwRmmk&0Wv&mp0RWGZGj!{`)7sV^8cui#rhA zQyl%gCdK-AvORc|9Xxh(@Y16*7Bc|kX-N+8HYxM>{bRn&H~z4icN9Y74yw%vXg&8C)zH6TD~DPh5#7L1ow4HapT7LCp-2{>A8 z6Kij|s&Il_?>BlDx(U2yk;m zI-5#blnt;X^ht9xQf?YV2NAK6xGNP;c}+7&B2`K=^jOwgl|ufGC)Ui)FZE zEQvTxC}nKvEy9Qg{yex^kl2gJ{3;>Tvk;49PJ_UYqm+8o3u2Nc0E^-{Oq19T{42r( zj|X88C-EYnB#4)B>?K#x(odr0(%e}lm-s)W?n=B~mAP1{YU@PHz?Hj&=ewRO5^D6F GasLB03oW<+ literal 0 HcmV?d00001 diff --git a/pricer/__pycache__/calc._nj_payoff_for_path-1031.py312.1.nbc b/pricer/__pycache__/calc._nj_payoff_for_path-1031.py312.1.nbc new file mode 100644 index 0000000000000000000000000000000000000000..2b38660cce4df151ecc366e8ee342b1720180e97 GIT binary patch literal 221589 zcmeFa4O~>!_CI_E5JttB!Pij%2b~PdxC1CczRe)&j1Gooii*PUqF}sC!>FKUgMcuB zhK7k{T`Vgr>tb11S$B9-e5pvw%*>0XUdSwZy;$9N*4k&EnLWc`dVk(-_y64U(K&m6 z_u6Z(z4qE`znpyz7O$<3{FNhDaCyJP?B$6@Lw?TErHM;(Ob|4uSC)I{Bri`(F;_+# zf$)K;`e_~_5uXEoMcgF#-}O=*aA0Z@RC9eClop!$2fZ&)6Zs+^;_uu78;Nri@9yrP zzs`Idr?fTjrpSvC@p+opVG(&_9&D1z%FGR2J%MjP^x*P zQmNtt!ew z;+0A{i31mMFIS2QUZmvkeyB*fo3=QHPch+YCfv+~tC(;T6P7dK3MO32gl$aN!i4uT zVHp$7W5Qx4Y-GaeOt^*#3-*ciN@DPMCfvbW0?|VpgSRudmci9bSjB`DOt^)~+e*WF z>s)1=)~Z)(_0~+KT4()G3rM8i+Nih2C{=n$3D!bLq1{h&aN3RKO3bd^SgCA*d#tr1 z*7{9nbFocY{1oD4`;@94U>Iv;J9t8GP74cRBkzjYJ4Ifw&`pAA$H@aeq$}kC9}9E}Z9xNewnd8*muM0+i#1C$ ziS=6R0i}(UzC+mzcTf~xQ&;5_9#AHE0)cc>fESScEZe7y1jR~U+ozQC3f`xbK_Eu@ zTBTCV2g;QkAK0PnfK1ZY4k+9C%mD0-elk`3fx4(u_a;a{t_F>6eqW8WvTmyNs7CzrRB^p@YmxGONP}z| z>DF4v5MzB`E&f_#{Y4{gm|A2*f@45XbR5!cYVo&PJ2y;v50cd4_chip)Z%y5rF)b| z0nmt>VoHmY?_y9<7gJiPJOV*+eT?{MgT`L0Ii?*{#YX#2$iJ@064+l}DMbAUs zi$0YWY2dEyY}7_Uy8x-Q=nS?6WQ@m*Wn+kOwLnh1&=QYROVo}iB7R9QN3dmdPhge@ z|22Db+gTh9&3BtQARRQ!0b=hU4x5fr8~KLwZEeuxhg_8w-bri2A)X&Hp*43FlI@0Q z!@2Kn^J>Ld6Ug28^8&Bd#-Z^o2w{?ACzD@KuiVN;xFKnrWRe07Ci#h02u8P#2C*L zq1AHcAi&W&fIQBdP@z2lRUlBcP4poUnmkX6HU^|0@i9JW+`yR zp2Mx^*Y-;XwZC!SOv zEd?TR7{SpFBfMip1jjo>z;~Hld>1BjG}*<6VJYZp(W^7Aw&-n;m=p^5Wq%BzFVP-C z!MV2n*w%oxKm?tq4ewS_Tc4k?LLfV6x$&`h=m-#T-?&GiaUYJiwOv2~fC`NTJ6r|a z8`t>lQI_(7T}lfdh*9PNo}e^>rvitDCH(9cqfCe2waO#{o)SQ!uO^7u^;IqC3(Kma z5w##5uQy03r76VsTWBO0$?|B#MSr`g{!YQY@oMl%J!r!Sq@B%$9lx5zIBJQ(6o`08 z+x9(Qn|;bE2>cgUyqZ?Lx%-Msd(w&%TF@aGj(+yz+CD^&gw04=EI-61E&LVLu^)cO z)%eyDAV}Ot+S%Sppj-5};3;C7Ivm8E&5dYHWeaR*i&#k8z0`#vIfArj)smhi29fc? zR{!_)EGz|kmJ#lbo`usFlu%k^MF~JDnBMmKFMP+rzJl_)uco8Q;FiTgWu?W5z(V@q z0{BJ$3@X5WkRMVjT|X5tCf8d_#Gv*{Wia&L#>802qv6sd`FU7tJos;dWNu;k5l{^AqC@l^pegq^(a*)~k^2o;e`1es;PRf)ueiwhF@jKp= z0i7t+)+YUtZ%J$e^k@I&-Moq_tf`B_?EZ}y6E-2zw)Ll$?6&7|K!Ml4x94Fg*vLt6 zch~cxFdgg))7vIqh4zBsRt}MWzi3zridF%4hiKBGqlkk@h_^l8!Hd+vOC)H^u||O| zvWLz9GVL>f9drheV4ndTpsSa)%3z)KU7huNbUqyES!UO@43>q0#kmNUNE}iT!Q1>m zFw&!mhJVvjV1?Lj@Zab#;;~^sFRgIz)?pNVgu~4tAc5ACd`p!?+8R_KxH|L%L05c zhK-7S07t>L0Q8mJtyg3~h1b8=w__<-i9EPFDj_W@pu!{Gmhl~xJQArvOGbV`*Yhi@ zU_kML%2f(;8<-LZ2({WuVzroCm=EnI6x~?yf1`6lMW8YjaCdcX(xMYYc`*AU_ex?V zT5GSiJFZae5`$v&)9rk5kFcui>hknAIA0`A^!J-Ds;P!r+-eA)IcN{T1_IdJpf9Ob z&_Wvz&;JoEhvO&Wu%b5&#JJGA$>zyp@#fkNut7S%zFJo+A~CWidZX^JsPUV*w#KXL zY`aC~K~D2du-ru0&A}NaFunGgp|O5J6ImX82aD|o+o_P)@@*NyNQJd*TLdxbFbh`3 zWk0_OY6yGvdz3YNV3)F*5A0A@@PSIDg%7~umk&T)G0*|K_qf9XfqhCf1hm!TyA z61PSDKE(OeHQi)@xP_)Sfiy_Zugi;g8-zHiGt92BOJX{|L?|Mi7~|D6Kbj=Qchh(^ zjn~jPniHn)r|}9Jx6ybhjbnr1Y~DiS%_I)vHD*3VBSwt0&`3H)T4^K+BkeR2kC6@< ziNgq*3BTHbh?qvym?EQ*NQ}s7M1>IrjRa#Pm_`)L1{|t}T$=rIxNF|PUsx)4%(pfE z0%Nib@{j=98_s}nXBjUHH`6feUlgsztspx$ZDAyg6}P~i2ChG`V8TQt1mXm4a3|c} z;qO2Xo`#Thtm-_eh23W@kceSp7Yf;0FFtDdStKnw4|@i%#ai5h>^~hK8T4hl$c_>| z-BBZZxMMMT7>eS_eV;Ok;5(G*xk62J%?fu0L8-nnsN{U z#lu9gwD^9ET6fUCyMxeTx5Gs-mJm-$fHt7*h@TlXooz)26oGty#-rFe%D)wIM48jqy$Y8qG3_-+~xrtumYSCDu)F)q7=9QIO_ zP>#J6bwau=)k&QgK-39`yn}=?T7no#w3lE51(6a?p{Ae& z0th-NrX^q^l&}(`P-mne?Fa^m@fI2v(-Jtg1PdhcT1G0=G6F&gT3SLCfKWmdEdgn; zgeF=-HH~w$1njByI;fE$YAGJ6pacR4CG?{uU?P;@MN2>$EWt)gNTTr$5-%r?!Crz5 zD}*JS!q!49ks8u=I15|Q*bbNoCA^PO>mFqbaMHuQmE3nJ+sXZavYOoYDR;viZMcTq z4=DHJ9kq*PfMoa(iD;L`Pmwr0h=aQ8>>XGG-PU?gXMZTJwbp7nKZJ)`?Yg(^o!t73 zrt>4MJq}^)Qza-UbVKxxI{K&{d{QSo#68IPmf|0!MFFHv@Wc-Vs~`d+OUh^xWpoM{ zVRm#-UL?ms5XZra&tB@9y^|O!?2wV{SRH#MI7i@DPe325`x)QO29pECMlUxl1Tj4N#FZiz6+XrtKEe);iKg(zI$m?GR-rrEnF% zeDl%z<^_X(8R;&eO+o`z@c9qY{O?n^RLBpH7fGY%1)tJdKXJ6nGnCNMm9WK$@P0~| zM+o@_OaM%W&-7gyupS;(If|GrnlpirAl25@_A-yIJ0@yovYl49srb`&-jT1(B8YjI5nzM<bcK9z=)0E~SUMJ9NBmx_wY{?$j14#90fs3z|4`l0C-rdN-~@Jt8c6Rvfe&y= zw3AHovWIN;P!$Okcbapho7SU{cG)_c%jUtpy`*rR0v@~Xz_gU(Y_b*wnT9z%d`}Y;JoSz{1XdniC3PeqZz= zlDq*0lgr(75y#8swql^umrav7*zv_e-zmy)DyHooXO?zx+a^0F*q_Z`-g0dTI-Bt! z`>#L1^VMI`c&;ff$a>^@h#t8fqU7r#3b_s$De%eThlMp2kFBpm2@?aj1>5u_>6@|gjH#1()^kDbNV4hhb{Q z2Y5#T2&_91!9_1N5LxtEAfU6J&{>Z({sMbx=#v{eV9j5OfnQ()s+u6dJCrsEXyHIx z2f6PfOCM|)eo3=KSq+mjY#5yTf!Bgr9tJvOd&p572<#)LbRdaeyO4uFWPXZTii1HB zn-eFWkW#5khk*38JxVRy;fN0`vG~9qa*{*(8o#2EzQ%7)pl#(rRq(>Fk%lejL`spy zauNPt5UJr#hJ|=YMXw$Q_r^TfF;hbTPvAr%um)zgDhR}s?joab3?wKZ4##rjc!QM* zlHuSX#y|&*7dVPQ0H(MY_!&kfGJ?P=iHx=|wQb%86M~Zdpu02YO2AL^&A1EPmEwVu#g-@^{dL3=p(>8-V$&9S($@dO;ZAnp)q4!{qmEBw_% zT0RGYWc}AM3Lk&Nltv9{WNwp$REVVGBu5WB`$mju3A}MG?mq!F&XHgr2p^ZDp#njq zz(D0ZInum=IYSTYtj*+XSkZ&XzbuBFs!=sw4f%2POcZMER2^`K=h^zGZ>3vmwbCig z%=xW`f;F-Ue+TN$)do1z*;v2$M{Q>vkZPnmY+7k-^N+Qn7;Ei{j~!Yd76Sb?;&QYL z=!jnK+N)$9;(<~wr3!xWftmF^9C72o@`wY+enuY8sd?l8Ih99-PaIyz z2rGvGjvLskasGt8AH6^alu0J>m$2}w^KII~4w1ANWooF+59u&59ig#pK8#Hrcvx8* zbV|3;_g6ex$*hJO^Mg-=?dOj=-B5db{9$tDGN4*48fsdJccV?8-GbwC-6!t95l z$c5~68@+zj)^-B_zaeku<5Tr;gaz5bLq5{CKo!ujP%U}EsG_`JqOM?~x?rM4m|ajO@fUvfuH~1?c$z7tK(^LX1?LF{vuN_e4vO^FnAq^nS8;@hq&KeO7z(Hz(|Fj z5bo&8$DN&JPP&ek6qb zQY^15Pp+5#1s;4t#LgSUfGHj90ziTMuf2)*Xji?%%Q>iWSeIqOc#U&qGQ)*{%RV5? z{~S#Kn|@P64+~8&Oj~A#Ca{l>{PM*b&QHoO-$k0l@eBiZDLx`UxIys|QbROCduSRK z4Ry$tL0FCvy>*=e;=vFnGjEbB#@Yg{gIaf9pD^WnUM^(C@oc*f2fA+BuZa}&t{$Gn zSU-l7eK=(y<_)tC-t2erW)Ex6-9U>MuGxk1941DZ8lHlH{^5yir^o%#I_nB(zASO9 zHBE-Inn==|Q{_7AVuj9ne=uS=J(*+EudFjz+X~Nl5--!@r7irYm$c9q_HJ+) z5)*nj^!U_Jo0GqbEz>LI4F&nK7?C`->@K-ZbQofOF=Dx{&?eJI*;ag}6@8%<)xwf% zZQW)04^q+;V0(udx~NarzNtF1lfr7z1A%eC+W6X;g`s8*QiO7EW? zTYN=Y8VQ8@QCHR-&_jw9cI2S6wwHi0>)-Vo)t%bf^Ip)W{XlUsehOV@gSOMAvo_ip zO4j`aTw$tUlhTd(xa?;w9P9`C7}}AA+|95&23KLkqjBlDGEUM%C>|dO@CJtt8qUeV zJ2YloM6bn@vk7>B4x9;+D)41Q>_NEEgS|%wFBA&B2)AtD$>tyw13CpEv$knR)xsXV ze$*G*s1MdH(?&H4id+||gO=2niS*X<+S;GsrNlbD=)AO44BJxrs5$?50X7W7>+X79i`ogab;MKbza2Nt>9@ANW!XwBV`ybW51I`Vv2eeV&kf+Of zY4pj4ooi&i$AO`rFW7b4Iz6&jy+CU{qPJecBOujK)62t9UMNR@0*+4k`JT{joB_fe zfeg}3A;6L*p$wm3(W_6i1p@5MrL8xmJlX*?O)LE|7leV~QSHXrK>dL}>Wc?H1NB^n zZhNFlr+5X%Ev@}AHa^AvM) zN1zYErZA-ItgX7jmS14pni_ii@(^Y|q!WFi6V=AT*38Diuu&arh0TsDYY*gzC z>wj6X30#@9C=Il#!{?HR1vs}8KJc9k!&$7uMqt(gF+ ze!g}1>vbHg&zF#_9CLY+qtedXVIIVE+Vs$C;izVmK1 zL^*f~Rt~wWguG2%Q>bimB3oZpHeKy`&&y)`b(D%_=!6pt7DC-ux6#-+W8(z!8fD`* z^AE>@JzMK_=-8eBA)NIYYdxu}{dIC|(0j8sPQWfN>;DfZx^9)cv90a{D5>rfpT=|Z zj>F-{kJLXlidHPqb=Co|`{$v6tM7=7I<298WBNaIqLVN%YOhvyIhF- zlZExa#zq}n_bilbTXP3U(f>3GvGNfr8I<`zo7Vc>`v7*r29a8;NI?`PQN!USK_7e0r;2sLja<3G>Z*(p-%F)BUtks50z9;r>tl zb!?;IoD{@^gP#~!15dwjHVFZEz{4lO10D!qFT%9~?w++n5$JAP;ZD{QUt^i}-LvO0 zhEK18kwJdQ$2YpcWZy*#k8cuo(Qv!wrD6a-ova!a>lcZFAv=w7;+)vKzILKZ+i&&J#8|^GFL_bE6YF^S7|s398&hj?zQj z;Xx{Gi*#~_M}??ke3}@K0n|Fq3?WcNmKzYDyM5TA*dXYJ7398yv@kX#X(K9p9AX$6Z!cz(_%)yS3|@rVpq>(ki);RLCQWihL=ahjgP_GjW5uhQrtz+ z!26JrN255S%xn zufaJ9?_&0l9U|N~h=X*dQ@id2bzrLVP7pdL%o&e4uX76sPJ6>QQ1~q%Tru$bKd|ng z`#(dWhne9uWV>^*KPjU-@k!dkhCC-X&DZ~b&!_C`T^x9wo<}DBv7bi@{<{jy2>kah zrG*bT2G;x=cs_+58hbi%%w(W~aTJXm-7i`(SQs68uZF<68Ay>9S^>v#7kxcsgm+8% zKqdbi3wQD!$E@~|R|DzjM30y>4qLr}=T?nx!3)&*sx&-jLOvfzOR)NFZ77J{_6wf0 zeEJ&CH~ER#?`=Q)2SkV=p}QqBH)s2q4lrr=8*L*xV{>hzBh-Fye(2mP*K7>Ie)hSu zpHFU7wr=d_=t}k(&I|lA9QJ9hFs1CsP6}XREw>^oySF*dHxEAzzPVj$ZJ4A4m)ThLfYAWPzY2@9*&^ zAW*$<%mGe7W2NzgVhaZFgkm!v*hlwN;N%i)uOK-#?0yVj!`AS~KJsQawww_Foad+W z39#{r0c_zG2uKShm<}K3gUyguf#eh)fY&Y{fZyzE;sH3*$Om?jZ%07MFq1_D2P6xj z-9eToxH3#4@qNT}@Dx=X$qGja$tp5vDUeRwPWJu*nLO98%x$U!I4 zW_Sv&1uKHbI@_`Mf(8zhLC#>{2jC9D`!G;&1OAfB%@;9+By!Kn$j!~jUZ$9uy)wg; zlbw~8ZN5{HxNw##a@LBhWCOqvMpH&gnrTdmAu}a3$_>Bhu$5z@!y{87%`@ie(x&N_ z=S7Fr(X@VN*k=jLTYKHY8`J zjWc9sEXz)_C+F!iLa&hwx&Nri-ASIBmzSEFnhaNJa%yT`Ds6=nL-ws^#ft3YoIHgA zHKSN+%E?m1<=;gg^4d#rMX^NGG%oS-N3dP*?GzI@nQ$>~`KN%uR6$V9W z#?qx}CTKr}Ip3HjH1brFDaWKpF{J?uXy&+lb9zp;!o0$mnZ}o7T9Iwe$VyYB<)x$< z%^8qrFfChwc94raR%G9sowF)ikw*BeN>9sHfFWceFDlj271=46k1z4}E^k6MnrTQ% zjwvl9#keA5O58nDaNMI&&?u&~)D@)SiX3B_3DgU!%gV^k$Xb!5 zSe2fUlCDTMI3vrLnFwT+dE&6JyHGX z%!UMg4k$Pw&XlvvWXQ@*;9HE|!b8In^cl$sxf$lPJB)^udkxFdaubLO60(g6#DKEk zqqiZ({L0u~9wn6}l_5e+`TM!YWmjtY?5$Bg@si(*0q^>1{ZB1&rr={Z3SZ9!`qNT6 zR)76w<(PF))ig9D=+&}M?COfxCW=?3tq;FGfqd8GFnb6`v*_6?LF&Q=|N zZq~6^efG8}G78KdBQ6ymEuS#ojhS+|NWY#7?0F`oWBXt4*tD!1Q@*|5-KxpV1iwO@ z)KWu6W?HHu*l5a0hOsxF)S1*}l#8&y_|4$Q3)&Nmitnbc9gwT_`diuy_?mv#YhG8# zEdugJ(u8Zt+aJco>>RTKh8h$*O_72@B1w+{p^HoRNryl8@{O)g$Bdt z1G-*Qxv@Au=3K(aWDolp#Wohoj&oq`n`e5ryhO4 zO|je!$oDAC&+1R2$%UZ~%}>zbsB#HRJreI*k&$w5ZjQ+uT3McSlSf3D+omMg3&1gP z=IgFQVpH8uJ70>t=XO)W@Y)gHQ!I0JLua|G|I_Y3HyE_f*6XZ)Pon`ef;#zKs-8%y z9+2sq+VWG+DPLcZODC+{(*OR^7i!&9gR6E2y21Xq^-Uu6E!ydSXJM{)%J%$T%ik_o zY})(!Gi%&b<3{Rx-S!PLN#5oY(ZGL~MxNnn->nyqb|&jQCe51k!uqnmh5PwbM7XOy zcLVl)Gv~{6#Qd%KvLWwxm@iLoH(wrjF|2*bj$~_JLt4wCU(V8h>q@ykh%|F6xL z`_tNqR?p!?c`}i|ua6k_XA%JSXKH?U5RF7jWYH3Nv_ugt3D!td8cC!^qSi>X9tKHE zkHVfC#Kk^E-sL?udTsK2$YWbzmH+l3kIEk#xTF8$eV>s1SyD|$?YY2iEyLei`dj?( zl2k~#@E=ko-#+ls{*U$DA$wf%1n|}a8{B~uE_~CLT;0iSmQ;IpVcWl|?{?XvlE-|x z36NO{`Vg+Sg|MBUM$p3oNsFk^r`WrwM>$`4->P0jhp9pyU@}->MDNJIh)KUu{xOih zfyo~!gzfUVv{Rgv|t>3&(kJ-`K@s z(>*z+KqkQxa=5!ZxgK5MCJFvc8$r1oC-mblpbsFfrnb^qem#{(M(s`DKY-FFQCy&3OzGi|Vv$Rre}>jKj^ctmkpeyK7Xp18 zl{1dwf;|ir^iSN|l<7Jf3)`66s8a}?dfY$)%KS*D37a#Yb_!rRs5wD5m@iUZ9P(Qw1n(6#e znCDFbrMc7F0nmdV_iZQbUYu}Oft|UdAJ&cj6T9I*3EI&epNj+B<3E7Cx}*QR8$7ui z{-?Wb;HNh4ZVLi?Gn@tAN(^pkksXRy&JrU z_Ujht_jn2O`G>oar(ZXCVK?#=bVKje4ZW!wIh%rb`>!6$%PGvCzwgGbuzR@E!@Gez zpCr0FDa@ZMNAq~IhUZVa7gySiJU?_}KlqUq(%qNzI@CSAS2yxM+YNmVjDzmvd=fg5J6s3jojV-I6L~zs3vsXh?|v8AT@mh^ra=YX*;I z@K*3Mcp*KVx{&w`I>AGns*2#N7+g&d{--DSPrQ&`Lqhz|5(ZZ@_;LnE{!~1!+65P~ z;9eD8$UlaJ_@65bj(mhM;(hQ-cp?2%65@Xf!H?nPDrX>!YXUxv50c;4yTRY51tA|g z1Q7b;FdxGUaV-h)KUezlcf{$`lmL&yd=D>Ic@pWw-WA^ih89af(-(qlV zceMwf*vR0E8T!u{dCw$!P$BxF*wU-IfJu&%nZ)*DQ0k%&qEB(^4ZSdET88YoaFIlNmgnp|4`_BnE$y z!3_+)m%-WgeT%`deTC-+jSSA}XTa?|Q`F}~hX0ccp26TlVI7T^s~xJk!6!2~$|F3l znCXJIcoDW-B7?Jb{tkmL=Sj(Lk30B?tNdFSoRzTtI)I7^?(;3y|`cib8VM>z#P+ZmkYBcl7luH_DAaF+fR250+MpRrIFT*&8M z65@YmF*s{K2N|5@)4|}G44<$FK7#zS75CKUY7bOvYZ`!<8K z{ZvLbHBb+^44lK3dscLpCoTum{&MKd@{pTyuS{YD07>0e@Smi{9K$956y|4RmE`Shck zJFaqu>LD{+LcIiEIfud3go6KB&)~>kps!|dmi}D^XX(FUaF#wemM;h8!Ft8>QEoDW zvwRjaxSG=9EqxXr5$a{(qnwq&)fB_q+YFB7CLsvdhYXJ8S`dWmTLxDXg#Yoni@&>; zJDkB;`gYoINKZ|SFi^~P=2O8(xycN!rWoFY`7-iBJ6B*O;8J_>cL5j9n+Wr00Z*cI z?Jo2-8W-lX0==vU&sXK`%wITfBFu9I`Z!A0;zD0TQ+{*3+53h0+V-us|=IH>q)Q+nuD1(4jSJ(mou1-qUuSyZyooSw3-rQy6MVjpmw*fBO@#S{fD7kMR1z0@8W;Si zou1-GsWZKr#s&W>&s;gkz5JjV{k0^yRwf8-;a zPf2&dh4Ut*F1T<$1z)qqOW>14=j$?b3JfkhmyUPAh3CxGF1YZV+2(=^=UMQZmMnka zxiOcOmX%`6=emEjcnrQ;oMOn$NzBbymSuHr*(5NiKy=jh@ViNIn(a^BO@DzLvDl<1RJS}vL^J@j5 zr?9B#F=5@lew|{7ojo>v>ePGgo-t#Y%PZJ!RrOn%BpUp`S0u{*`U_Se;`gt@zuE%- zalswBXYDvF+_?iK=47WO=9&#AP;dCSo7a>0euOkq!TxlyVbC zA*S!RQ_Fu)4)>Y~9cR}Jc#`Z?gDDlq<(ueD?BjBmVfpthx|{ktT7>r?=u1^MuagM1 z@7hH|f7g<`seLH6K75-Z(Uh|a+kMRS*W59QaQm4TmpKGGj)n528uDnV;bAwo)ZeqL zZuA<7dd*Es$;nP-)EjmKhIKvab*kv^P-F;n5kp8OetU%rA-^!^hZp5JGSf|@ADT(T zkF2C7!sli(vX{bK-)w@fsBm%lv*0@}X{N+!nK=f?4ywsDhmd#0|J9Gz%$hSd5x#<; z!%|@GoSB$v&M|Q;nw_>Paizh8-*ey-6c`PoQ70`(VU207rqOWh~EWDG?MT4a3Sz* zgtU<9v+lVA+;Ymj&Z{bZUK^Hej3gQ1OF^NLi8+~xJR9MQ3eKyFF}Tox4>^swv1$0M zuqga2h6$!tW0PT(l9Fl2%}oqbC5DaTmpAxbp0P-h8<`EVV<2>lhSVo)9IR#%$EHrr zTmGB!kL6pC%AR8aNy7z6rzD0goj+R>6+S;yW6ip}_{pQW`0XlMyA|0+_41t(pK#}cf_HJF*mSA_$^iNn-S!*l+F!epFoC&!;lSQbnXhH5x!s(m1#~~ ziu3baXq2!>VFKpvo1a}boq2UTYHTkgip)##tA(Ls;0tPrReRixEm|pvG{ZA7E`&9T(b#2s|xr0EOO^pW~Q7}_`qa0 zZS81=aWGTIWvTNDAyW8qCCt75WqIB11)xA~tl>W)hQmCa#$YlH!+nsPm9Rd`#D&rg z?36m1tJ~^3%C#%PzIY1@&(1Mrf#-x(DxECDsujLY3YHV95-jKXRzdkxmhOg3XWMYn zfnz(4eXei=AO5{QcLZDL4t=>b@83vvt^%*l8}FHsHY-)VX=Pw z{STV`=1XL^yZ^8pu07$#n=W*W^LGWY1#fT^xsDe6R}Jg;kX7SzH*Y7Nct7iTM`wDlmFEp>4uP#?Hop$rW$WWYZB%c*@ZpBa_BrrKSfU@1- z)aJTP|BocmHMOPU_dUrsMx9SmjCG{g)fFcA`s*7|uR~qe6fTq(!DLvO=6cRU1+7ds z$zZ-=KjLwta;e;XM&I2a>C~WO$@rI@3VUUy#FWfjXDf@Cm5Mvnq2chkb8}*@F)bxy zX-0}OO=xIJdRof8iDY*V3^DWuH5&<=qhza32a}bssZ(9!|A{Kt52;*VBRGj1>QV)W za}#pOPVgjQ=k;Iym_5v(uW4o~ejR6q!$r=m6orsr{GtD{A9HJDd12#nvNB+|H#IRV zGBs_fVFj!o!&7m8H!&^3ag5YluNB6*jJ$iiC!Sjtd<#Ho`gC zQ4#m)v?9P<6&^ZH)m`@P(j9tGMTA9;3-7*kx9Rrmb~V7uIZUI4y705phlWL{#*A@I zW-9A8-6?xS=$J9x>I$-VO}A%PMU4v`8y*$bU3T~BOm@C4yU*?}-JU&kOvIRRW5;$| zy8Co{_VDls)mZo|5Z#sTntuIHAw#<5sfyw|Q3zUjcLfVw<=RBl%CAA>u+?i2g{eZR zMP8eT+R<+kp|xC-NU(|DAmUs8nnXhTUXw^@#cL9UjtLD58ylgz1`#R~6g5V5Eh5I} z5;qoVZ)5U&`(J$g9%AR>;@}0byEi1hTHU4FolU69nS}NcN1dIM1^2?H6007n~k%x4*|5KGJ>u7Md^JCBN|cf^ctj$S<%aIq*+- z;kAvvAHv5R?+**{&mlk7Ni6{MzT3e#q~x{L(T$e=|J?kLBa5AFk!kg7+6(+Z1yKr{Hhb%awKv$OoA4y1PAt zkY7#D+Y1Ro`9l0pkl&sB@tb%G1uYQe$5%as{DS^gK>cYI1(xKVzLbxunfER5`wFi4 zE2CqEh`8t}wzFgV^DUI@t5VKb@Xj-_Kfn5Z@7WeT3J?Uv>*0;u-X1}uG$@qwDHyR? z)8wV|mW4%a5f%B~(nCBr(5o!j;y=|RdQ0!<3$n2Okz)DGUSXzEt+63!L`>h3a+zj} zM{1LJZ-2#!0)(T<>#qz+h8(`7N@5JIzfTXH{?N#@y!5-13kz#GZC2_?r@ve8&idQ^7>DRPXeaUOi1chok z=lu+)dW3~4D&`gV_u3VwnCa=!bBL^J1XmnnIo=CjwyDr^eXa00FRhZZdXZR9 zPO+I&_T|*WMF3i2Jb(n!0Ob1iR1e>-RX%)JDHD5*EI1q!HmWXl4k~r`R1e5Jjk_dX zKPQP3>7MbGbJe~*xoR<|_8Vy#p2Xe4_1Aa=M|;G1*>-tV!TaS~qT#h#HRw{^OM6U& z0`$MlQ+WwKT;A6*>t zB2H!AdvPkr-Pb}&dH8VZ z@XeJYvB|Nfo3+X`PTTis8_25PF0iJG>8l&e^;LJ_c{payOI>;DM_z;%3H$LXg;G$U zEl#9}kmB{quB82d^kq9&2kFRuht;`_N5XWS+=(L$c>^FSW;L zE+A9wEz(+gR2TN~)^NSmS*l*%@!ax4!x)=K+|Y7QkAc;vlN9}GxDUNY>;$q1`H>!@ z)vwmZk4X~k?&JN62(t{4##@#bo+}a|+2?+qBx$a<&13G+a&aG$Yt9hDd}IWN4C8XR z(cG)GyIbJRLn!NA$oP@>=P&aaSNf2m^-@cZ-4XiJ@FyZWrIu0Lvs{O$-N)kfp{UuX z;0|tR`5oLq%jqPeCltEj*`JY2r0UVqA3n&Utd@E#l10duKqib))cx{{W0ldxM4)Vzy!Medb@_9m_~QqdY>E+K#wqOJ?bj77Y2=`dg5u!&B|? zlcJ{B;A!v{*?fkUhIe4Hs3Jm^uHx3#1kGR=T0C2%T+h}*+rSNdir|A=qcV*r6v&a z@1s$?0PUWf#4?%Ng=KjM_!9-*8Amj~vIdJ#d}R|o(x+!2h=FyVvbUhgQxsX)rzp_N zHaJu9qlMeu$7@)B4F6=~-b?a4=i_7a9$GqCZ3#c6wnTgEsP!J+zkiEwgzU*0Zdpx% zyoWbr_Zl?@v&^U!K^8+VDQ3Cbf?2Agy)erFC1!bEC4wyRJ$hl5+vj4Ig|!}7O0Pkf zWxfrw*rL5L%fK<1<>ea8Qq@BOS$yyC;zn`HWM0||@4T9V=ZZN+j~3tcT+id&fC$xV zGHw^QLnBjYhNy>@E|LSQxRz*{SM7%3gNhX52-TaEzzYdBEf!nC#p^k^bkHZF;NI_L zwY;=0vLa?d)xrE~?W4PoyjhbOT^%cn$gXS7|C^V{w=T&e$h%Ih7avTDR(to`5T+_r zRVj9ehUg=YtNWa^^eK%n7WOQbi#@;b?&lF%rEVxt`24L%<6C4{ALf&+@b%aDtVr@% zr8=keoDlCBp*U^pGtxgpCieWmJ6jdhRM@jH@Iq~%UiQ60Ix;oi=5v3G&jVbqor+#h zse3)0)azMGuji_Jy4j^wKC2WZtM-@Vrx&iQ z@>wG<>GPL3NmjFDHT-f?lhMam?USqUS*`LhHG8)!d{)Uwn1DQisoH0y+Gll=kGa{q z4Sq>9t3q<0!Y8lV2Y;KrFIkWeAO6bXvs&h}l4nbDy(055S$t+l#eQ3&HG{h@b*Y!IDd$kI9P%j(rx{U6kXcw;We+{|&OGzE+O<@E_TgMdq2E#hhlAAEaG zu=g8IC8ibDb|IV5*dpCj;LL4js!?iD41_Vyg8WFKzlK|Ss%5=lBBMr($o8k9Yn$Sn zWjhn0@H8l#tMKyBydy?uvX*hOKCawM0c(#Y4RNYz@_67Tcjop(K;99HGq#KLwZ8hE*NpsVLbK{ohl| z4<=L0qYq~Z_%OX!Qnl~uP>L0Jb2iEH3B@MPYp)tGG7H3}FMi%b$E}Z700!-kUy7?K zOkP|tjMI$9@eK!O(yTjQuIcC65C<1^RGk~+)cV%_YVW$FfljJBme5{l_>&Xa<~J(_ zx^g?6*wNcnb(v9X-?cb5#JpT+h)8Fhd>xf{#OB-(3(YNEj3i@xRS(yOm>>9_hpfQ^ z>WS5b7m6(bmG?{k9KOp*!@GwJYf{Uboisf63F#AI-#fL}?nT4iSr)eul?E5zYkr&r z&AQ8pEco$Z6Vlq9tB^N&?fW&(HO+niY8vNE_VeVtBkj&LHC1#}7mRgM@3|n2cU_Hh zE97l%uM{~qR@(?smsT)WcI^%aX0H99#aXr=w}EU)&azF`=N*wbll@fH@#HyY*}e$_ z*_xeYQ$N~Xsd1L=>X?Edt`>6a@s8@9&fK<60B$YL+>Sp1_U6p(@kzB^t#_}YOILk% z!H1qM77{$^j$~I0nR|KQu&`6kZTjOKU?FFnETq5hpeMpAoD3;=Tu6+ki@o(0Nj_o2|&%ZX!U&YI6C;Mp0h*%f0+diE3q$}Ay*&`m36Ms%6hC+M2?U&(e zA{Yn!KIQG63WD*z4QhHd@_d!ZMIopB{R+cf#M}D9h$dI@7ERwF zB{k>ELG@nPG-j9!xAOs_K@qsFq`nz-a!=;SW*2VHx9fLHT)6$PeXc9Fxnr!8T&i#- zJ-Kfd$2|;n;!{w=HL;aa?im=s9J1Z}Snx1T4@FowywF0vh}e6E6I*z#0ftq0;W1+l zM-T;)!B{%w`R`(b$8jDCUTc6s6+ZfPMrh z!`=`NUXB@df#aU(;UwM@7wY{v+dd#9Y9QwHWxuu6o?I1fh}oO$o9f}x6)-P{$|(RR z65h6LZt`#mmy`@qzBXW=KRh*KsgD|GR*s_U?tc1BumSRUF3gM8{_69```yQJC!84m za8J93luKF&Q&>I)L&Gd=eUthZMW-<3a??Dtv}?pE2q~z+cvj?a)v|McICYI zRdnBV@F#^pNCn`0^UYr}>pawD3q)yM)X9bFbN)j)%V^nV4~`29tWpg2(^r(^4w2WC z8RcC6Z`9kp`y14wdiSqU>w5LSS3TIfQa#uw?ip{f%0s<=*Zx&zp9NLfHM3R^N!{lC z;_$==l22{v^>tBtNmgm`E#H_ore8^4sy=T!d%7)W3#`4L4gR&x`m0aXrd>64k5}C* zO|I1(_h|E)cC7cd!TB$3IX<<`x9IQdJ-1Ij|3cN2;T<812Hd4x-s9nQb-sJo42hh2 z{-8}2I7Z=J9Q53rnB~!yK`dUjHvHlir;aE zcG}p^Eztu{N>?;Kw{Y`_fjt95*M~P7aW?k<;jPNCq#~_ zi<3NF8&$aX*n}Rhp0$O%aca?tw{;`G4}R#Q4(WZ`9<|bhTItDX<-GIbE-CIzs*`Ma zIe1&aKhF1`St-7~_vS(Rs*7VM9NJlMY3BHee}49}WpN*5-F5VDU#YckqL) zAEtg%HTU!4moJ!B&pN)rw8q@DX?fPcz3XoC_5N$PY45j$TNiA5k3{I84aye~~IA-cLP0rpoCp=Sl`rLv2zN;V87-Ugd z5!)`NjSGl*zy9dlxJkiBF6Km~kNy*6`^R9fcTaqfGp=+=$ty<{ul(|v_uV!*)Ee?k$bs>KkW6-fGJY+dbsN&+h%l&tG|Oz4-0x{^sf1KC8a3>fKpyy{}kR z^~7u2G?(67qrdB~pPAz(w7hXS>%LQC*Bw3jQs{xNhD5(m|N3J~4xXT5)tP0!(!$!L znt04J}O=yx=qW;?s`}Z5o=eJ%NO@iymFHaM9wSO#ur} z%ZG>;p7JmKbf|X7g6%^W4_O?T7Ie#q=!HZ5Kb^nm(V@3I^>LMC{znPh&-l-mEdXG? z%-?^ue6f7ciBIF@LkCr!`E+|i{HOkd<^~2p8T{>2eYx+TyC0Q*oG@hZg5C+IPAxpO z;1mCCixxi?FW)xQe?H2#WRX1J(cTGxX%DZr1zik!dge{9qkPGA)lnY!@2_LOhe#cJ zkE)5UNfp1?aQ{)ZdOuOFL`1Y%{#UDIv-Mh8m z*v{hGtp!zYA1)|5e7N}H?16Lc44Ct#Y{cCj71hV-_n|C)nmr*KH-@~MwQ0-j+S|%s zd})t%)>pBcOk1|xce{R8$Y`lDOH%aJl|C_}uVngojn>b4FD)eYFTOE7ln^W~50Sof z?3Rr$?a4yW7isU%f3-(1DU#fAtWS~TMc-X_`2Oj|7hme*^;K4ONNo9wzNtWYtoY@M z<82kki-%-S&;iq=&O5G*zotwMnDbJoMDQkxIe(H8l!_3E?dTR78^PRiQJEuSB0bP}T zyUVGoMsFFqVDJ)qS8Yrf44rMk(56KJ0Zoq$E={QVbiv@Xpr=n@SGZmt3%cdeTl4a0 zuIFuIsV&I;8ooGws`dDpOTmK!)?d1GaN+EQ;9E!CEf2Wx#hG``e{uZa z$xCN1v?d1+u03ep|2&Xg+P}W(^zk$M*SEBk*0t8{uR43M?$rM33uoWEPT#O?7wup^~l1Ox`QX{-aB$>|CujNH`MJvef-kF{q_P9TD}e5mMtA6 z9kuwz#Dog)qQ8T3{w`uxN>I$;ElDD6+yeR$Ia{e>-nN6&wq1&tez;XOX59Rd)3^P2 zX`b@de~g?SrQ2Rt#SH>v8er27izA+?zh~_Hk>d^xh&lPlrGo>!e5UuGHt1mE_YngR z9_(?;KUR($bTZ;lkFC>7e!O&$zeV&LQQufO^5EEQ)8?P_7!>i^z?JhN4qcr0@yLM( zKYAo$+`$3!w?(`b0j2%jW83sMzF(ou*S7tUCG=W}5_)iZVQ2Ic=)B=#i+{s8|E2v! z6HBK=7S)$WTYU2Kd~&Pq^S#7LugE0dTO{GW(Sdcf0q^bfU#jXs$O?xZ^PJc;Wn#JK z#AA8oW~0v3Wd}aNgpwM5|kN?nfd`-RYp^Oq^e2K|eXioRZODZwT zOU%_JgWtPb`V}YrHcoP(Lh`vd*9^`+fAn;6!|Alh_Ux)&i z%4bK`Ou2JM;rL^5N?MVml2v&=c~!IZ-&aUc1A)r}j~M)0g96Uh2CNeWqQF4`?FR3; z#f6c_>c`hinFtE`rEbE7DdS5aT3_DS3u;=j3gi*{tPb`uRTU(BE|Yv|lU$6Ge5V>w zdt4KE;oP88=K{`x0NTOhYYHdsD;!!>A6Y&n>RA1R{k2g|^-#wN$F%$I6Z?Qv_kjZA zO9p>>Q1WGx^hygn4Uk?`NiQm-KgLP2Ws=WT5{Q1+;@#FFxezDmP>neMrNO_hAmG%w zL0<+1TnY+k2nv7}Yz-Q=RPp%u15+mM_l&A6j5-#709qd^yBg%wmaHk7-Do=IZXV$`F#R>ZwVo$-+FWF?sPDxK(m6owA-JHw5qh^0K zEA$U|uJ*r1&^r~k2p@rA-v9eU>lQ>drJ0RplY1rqhYs`qp@jLZR{am@$lh`sH$rT^ zt6ZU+9J;=upwV}VMH%j^S$|9xjC1MdU|hZf?!9}Nf?>S#Ssibz0w0U+F{-(K{U!f{ zJNvY1a5x74#*ZTd$9$e7`Fk7;PtprGNJ;-5C;7g{Qs9#xOh(VV67c*ucElTZ)JN_U zjo(!`v9jLdUKoh|&z$o=qwv3Az~9z_z&e9}^G^RJ-r*Z+MN)W%eGYu4Mbf*Jcf38` zj|4Y+3I@}9aQow7lz}-wlPCGZHXp!N89o&7IW}Qe;rJae$a+q!E}Q@ZZbdy#e+>$b z`(6xtfnKkWC#krz)?Y5Fju}v~OL5zizSFoF)!xD39%{>A?$L6t+|QyAuZMrT`}9rm z;)8jUHZ;gZ1Vuo^eWT*IWx#y+^rnj0x5=Kv@~;@BKh{WoP)mpJ?VIN}1mDwedXe8xTvYuZkf1wdFkgfGW4{CL zqQd_gx$TO--Rszb(9~0}BsZ(li)*Id?w$ScJm1eEUX)E(-q@c1Q7@72lLMy6Ed~3M zWuB_4dE%6$7v)V!zAyDz|45eX&g?1eS+WL&Z-iGW_~UTDyU+LArRpbAPSW)H%}A!& ztGDP_3}?NoqOL~dXY+!Ho<_!aQ7-k~F^YZ=3B3haLZn@0(|c8Pc#ZNMDig&*q@j|J zXkwsvH5LziBQ%065b4Jh(!v%pmno#0EyU=@6ml0^$TX&qNo*lQnL;c*n3|ZGLKFkp znh1qBYF#8^xKy!R%Gs1^Hl@;@!mGle&>B0LU1J4{WVX_R&;o^ge{E({!QgVayq|b| z!O&wH{3~l~M64 zKNxtRmP#PX`LbXrG-I}Lke4bsjtdfd|2bzzgK>(*CtdZKs&Bq5L1pWq4BBKh_66ZI zK6z?xgm<4F>yuzzig`=yVJPIVw8w_^fS%o25qg2^6=1l z_18D`2!?Z|lbcF4q9TQS?x?;y{F>54P{Rp+GTZ0^qx^PI$Au~C+9KcSEqL}-)#KRc z!r5MjYLSBuITUC(AMbs@y}d7TuYDJ&q+z^r25j2m8_}pIRKf4ok2pG_bV9Q5Vb`i z$@7vd_mC_dT-Eq@z)Ji)_jqVjRi1tK7B5WqdBx7;RLNRk(uDOqcLfOxA~CE91SUz6 zyco&yXvv15U+oO2OL`>e-u34;tTC3Ts?v%huP`W&A?|qTIdG-&q zl-%F!^A2zub^!@hl29t|# zw=iV})xEIZ&+|p7?I};cH+n3pDS6#k_F7WetN$N$ZvxiTxh{-mB_W9rAPfo!LI8_6 z)qqS+kT3}f5{J5VM`aMHwj`hh)K(xNfT&==T1$%qDplKxqB2h=fR?H#iV8N^fT(Cu zK~V@B#ru9MgW77(KKGvgKl}0sX86`Oyz_de#obZN9F;>GmCbks>tMa`hk8VWP8&X6 zfHo-I8oqOU8_D{r`1@vYXL@20I%#=P$NfXr4MvPV>|)8OQftTT>~K-M49mK~&ALuYw`FDfLzQnX zQ|5&BrQOQTdUNHnQN*pIECh@QG9Zd;J33`Kg+(LbRA=D2#M=tvxDsI>OH+uWEZmq< z*?3x51K}q&gAPcRcACZ6yT^99MIUxsyV@<%-dsQvpm|nwqIp~xVtk%-`_Eu2$+<}> z->qSZooMOye;|b9F0czYmD?6eegfYbE@lO}lRtK9kG`JjK}`9ayi>?%BO~@h(9p8q z3Gx|wB$x6Fjf~Q_4ZjXz)a!>EFnYi(opC9Rb(`7j7kghc<_?Y4Y2-ol&K`p#$R997D?xgU+l?A; z`!UauPlHxdQvZp>2&=urdWZnh4pOU^j4^SJ2n%A;C<4ah4dG+#Dd)*4VI7oHc4ljw z)L*dP{^AV!BAUHBEe{j{E~d7W+_9keNWUboS&gua2pwG;AZ2 zS@W4(9-&b!`b8%mo#SbA!h;K|%Fh*HB0JDz#~+cewtANYT6wY=l}3}Rg(68fno&E_~0y70~Ya6WbKclldA zh;^BWxeBN{CeG~)DmMLMA2pHD{(Uj}N`k&Bhp#qFG6EfE(+uD!!mvsB5~R^4SE;4- z)O!8REW3tS@fn+jI3I#d-BZz5&9OdQySg}Wn4K)nM`+h@@7JUZduDTB2aSd$b6K`# z&qbN$rfe`~?zzjxiQ4TOM`3$I$Uxnf<{=;wzxf61leMF1DVR+oeRJmA?HTiq2`?N_ z1|H}O%xZ4Tyk0kn?1hav++jCmgMGce>>`l8*fGEf}514V+>?b@XL1KS8NGj_ByAn zfcoXj?I)k>o_w_Z#9iGJ?ekdej6S;gCFf&sq6TXMT#z{*2f--~2t+oiO2H%%JIb%-*aP_NJV4Xrw*!JFNWRwY-f0KWxIXFE-`syO%fL`AJ&4@ zTld+Wa+f5_mr`S2x{-x%Q%lJUL(`;{-PJF2O>2X@i!nXNhL4!Royr&dGo&59uDUFG zPLh0SKvBSw!-RUq!$H9SG4t)(js%wZ>U_~*#!F@rS{ z^G=`0pE(Qq{~`4@+I3*Kc#fW_=YrwJb*8+PEtOZPD>UDS7)6--jvuNB z;W>&r6|Rr%m(JD@gS+6729`CJUF^1TswLd-?hF062HVHlis|8{&&s=ZNMA2saGOlY;v_BhHZ1V!8+U z7fAs0GRX?UsT*#IL9JRcx=Ih|MD%n&AWZ27|T*aFFylBI=eDhV$qaj zohhcaLnWgDHCbI%4-FYf0>yn`3b&QR89(YVYA-7i#z_e|onF#7WkqP-eW{wG zT+kEc$b_|~le>J|LZ=9Ahf24>HiLVrf20O!=n1E{n7q>(9_c@VOQ|>4REAjA2<=As zu3<=4$xG*Jh;1|fBoRor7z4?%vfDG_3MoSZ9MV!XN+Ysd1)Ug(53M}#8Za|r26-la zbZM!gJj8{xNSX1&pY{nkK|5=)y5AuH? zrNwl8DL6q^OVpkHWp|>B@hu?{;%Cep**_e>Z!KF0Ql&ou;2mExoU!g*#&|yD$UEDE zi^<0zgIiy|Vx#vOS{&n5L^ksAr7Y}Cj5$HdIN1uYDG$`JLK0s_OpB3M3ig5==`NR8 zu{kb_QfCt~%!J>_@}b&%SW8w-TLYg+cM-@;6$h8?*cinbbaM88exyjL(wq znIl!YpKMM1eK>3S@_3{nkO1o1$ccV+LS9VhQq-&*EMGM^lm89Tm|>BG1$}K|pcRsH|YKw^Y%6d}-(s*O@+I>K_%|sB!V#%^ zI=AJ>RIal8vHh4J&>b2<4I|_N6f8=3e`yHb?>CW`S16@*jY7?Js_c%l)@SL1jqZ zR5(^eR^C@^Sacd97nP8x3<+&MeZ#d7m+v1TS>7`kZpsVpu3TfFR*98~mLG9C2dgAj z^G@BEwLdiTbmxpG_GuDR|H;{mZ-p*tT|E@grzN#5=~MDmAGB6&qeg0ZZ~^mGTd1#) zHB@2?Y~Q5tjL0UpkiraHUlE-=^g868kL}Yzxeg=^j`>(aa%C&^7@qt4#~^J`IGpj= z&^&2nt7pWw$VWaAPUq zXsxr2F%lwJM4<2*$+##F{{a+P%jV=o7nkyyPiB zP}1toiJpBqRQL2%ocF%h0;~I`M;P#CU(Gj$R>&y2BCh~DC9w;uaUR! zm^ng3zpl4!bWS~;5pzkS3UBjDrJY?sq&2}>G6|M%(Gu5dT%zuhpsf?cm>u+eA9tZXKt0MIDW&zt4q7puaS-U0vWI+ zE0Ki-GO~4O4GYn%*El1LPVryHCv4q#7%VBA zv5&ev`OlDGRndjYsvP0pCZ>nB7E9XB0x?zbMPwkRa{drH zf8{--+FR2#eAw?WF&otS{0tevApk7g-}`TZ#2I>Qe{%-H_4ATIW7Cn}hckkWS-6>_ z4B*R`&X0w!u5aSsB&A7!!=ylK{R8~7Af#JMC0689k4pp>LF@D;@Xrv_Lgh7rk-rN1 z) NStdw@9rkY$6lzJW*MDL@Y-?^q3L`CC&k79GfGfPs?7!Ma5*x5?D+E=f^iV~W z#C#$KdMK=cyd!3?Vw!E%9eXM$kzkb)$wL~jOwtZU-OLyvg30Wddf28SUQkLLh1+X@ z5KI?nnH01&CU1hMQ$F;>zBP{jqNW9rgNiPIl-7@GNbfHH6%e?;rQx3Sw3VE3-vu9VxG4h{)8G*&_d&c5M#`<}0?x~Qb z4ZMhKVGZ-{>+AqX9F$uz(T%X+T+5g`gP> zT4c0UKLwjUxTO*^V0fNY98HNXMg~?}Cy;>a&aNu^YoKa&>7I(H23N zt$3<<3Uf`-np~X%dMUj^xLdY|W0vjQ=KP2fLE)t<*_XmD7TKV|Z1N28RG$pyr$uW# zjPAl<$CSOYJ>h-~7%Zi2fWc!qm%}cG**C)AKJr8uydTX>8;xdun36Bs)47u2(&j9r zr=V;bRbG!6UYd~e@w^_?#R<>r8F!r!=ugr;6sCJZsQVc?pRIeGNz!Ero$U!^bN&2Z zAs0v;oYlmJ@ks4|${Tx1SQvQBR?Iv_8Rk$Tg)5i(1ur7cSx`S^UW%1Jhwcr2v%Mtq zOTGmhJidL3g2L264P#Yt?$1#?`jYSQzxxsoY-eB_V41a%w#_2TTnK3zWrNd78vxHG zVV9iAbOt%l{$mYbw8pqH@ej_xW`wiFJ#qrU8v8!U`U8_5&aD z70gFde8M$zRQRndhfoE_RH!6+pQD-*GNv(CY=ZDDyuGP<8=a(j+X@rGw_6HSZ_Qs~ z;D5Zxuwp#Lgqh|{Gl(h=n62*9{gI)o-oOh#7Nu6mru+<7fTQyS1HAL(pj4So-DT(T z^H2a7oTN6qWoO6`AYKS?iY_=cHqv>%kUJLbUrzGkS?r=EDTA>|NP3eAyyuhw7v@FNr$F-sK3&jR5!j7w2t?>mid{<=l_0 zGI}YR#uR$bgvc!5XjZB$mee^WJXTb6hHhvIerN(Ld35ZxDKZG$EP)f}Z7SG$?2@s^ z5?!?Hk!AxJkw((MFv0p*tl`sa12qi4nJd(-6=v)9t6(^Q!*G=fh5?H;FyuR)AzxO* z@R5_vap(DroXH4=)pc{=Fa-t#=Lq2nSo@z_8oUD@)z4N18n8iY&J-mvWy*6B;If?| z^fjluGa!m$Mw@k!yIcnGA|ca!OYOl+#=dHzyEQkt?ZOnyuMA;EsAmf!nrCYkaewHmCt_Z=5Nf#?1B!QUN{~0Y2PP1$av{HQ*=MT$mzrRRex|Lq_E# zrBY$8Y>pW>SUZ=O`YfVBdks3h>@v+6aAM3{34$TaI*fIZOIgXDp*=}Xpqj3% zztgZ!&NfyA8?kE`3xWZ%FHt4=@FV{J;T#whFL`0NC9$0BjKec7+D8860$xYQ#Yp zQGiAibIcekH6!AVYCyknk_PlgwV=6TK}v8{i*F5&=*Yt z&}SkYU>S!!)zJ`c>m(VV(H`bvP-7Wd%7e>Ply@8`Z#|;CSgCuAW-jLBdVSGOghs14 zY#T*0*Vf4zG?r`7xOK7yjj}=jpBDn(7tK2L`WAV>arNfKfgm*UMd*!>Wi@)!i0w^9 zx^C=U4#9$Kx0M}flrfu_6Ug+ZhjB<8R{n42T;};q>#O_t5Anx$i66J8Oug~;m+yo!mn?;6?4ze{> z<})dsbmFwH$2#j1Y_I2L8;OYo4oeyJ!!&=oE`coT$ouAuxsxLS@*cSBeo%sNO92M0c4IapEp1z!lMp@6xH?Sqzx8Pqab+% zt;!^AIOxssHz7up+xD4EHxD)!UM1V*u91pon?r8QJ;SJa!?pH}Y&&}j1q1_^^3a*w z;MlmeEcsDAf^f=bGvBfiO_!m&~GJM}&$-WMgqzY!C znM3CK66!mvv8zEw_i=X>pYNAv z9|phy?F~roF}5lK&>%0DcC{wj1n zW`$CTzUQBqEQ}l?rpG91LP7&S41EOl75$ z0kgKLE2%5U4Z%H_mniL!m;FekC-E(RQp4=J{7Y#^YZ=5`Rk73;f-|JlhwUQ*;)gNB1EEsTC*nNH)TbZykG-d320EyU2!*t@!8mtXK zBxvV>!6aLP=aXp$tTu$`ig4ZWDx8+@)AjI_XwN&A#;~Xi@y)qyz#J*;2kM|eWO7rj z{3{@YDjnDXUvYjGTj?HR*#Vx0%}-j6{tX8m$U7+I;F0F_h78YIsR02xhPfGh~i5bpuGw1H-u2 z$~Or+y3=O^bP{bs{zeXH!#cQIjsn2jxIYh}J6@n9rp9zBo!Z_*yIL`+c`*{_OJ*%Q zO1Rry0~7}FS)k6aZY)KScS6k|OS%(gz{UzKlcgPs;u0Xttp4*L^IdB#t3cMc#`F>; zG4fIkeGcyW8_|c$Pkn^$?g2-Zaz@ge_zwfE3J03T?Pz|V(5Y~VX~upLzhXxQ?16|- z!ahp``gm~QWyEw>gEX)JdRW!ERLg56h}R5&_DVy1uRd&i4?zB;F3^%IFu!+nR6zJo z8c`jr*lG1126;!#frAucn?~r6Jrg)oEhT9Mrdpe7Ndi|pOJ@LEuLN4W^#&LC?)6~z zCBQj38oqNAfG0mjQC)~I(KCR!Mq+svFj2#AMATdL5aQKYgL@`*C}$%=?Lvea3}kn^ ze{lMTadRc_9soE_un#0_YZbs!2Gj5d_drm#Z2xd^CzW1XDDQw}X7TqBx8a)WYNGw$ zsB@g=+sXhzHINXX)^$ymNDo)>UtwZN*Pe-lq0LBhc6%b;T83u-Qt&e|`$`u`6$s&@ zov%YI-aP=~sdPbJKLPo-?_()fc=ri+6mh-4vd2JDD{5q*VVZbIoK(!wo1L^zf#edJ zb;W{z17i(#Mq?lb;t^w6tWgUs_aT+XO%Xc(!#tRzwQF!5OovdMO6FIbgWcTD`&q+5 ztqC4N<-mTx?(It-)>I>cZA5YMVALd*ayI`e=#`$*3Ye#m2QgE*JHHmr*A{f)dLY0M362(m;~*mbxO@((eGA5r5!7(1-V3`|iHW{)S_5i|3rhioZ~C?ioPr zrkGo>&E7IUEyR%~ScdlWWz1_#tdNgEn~~%}R8Kw&rBKCml{^Hxt?9n`ai6l3uh9=- z$BAM^>wPe0;aP*D{uWn=X9LJiv|KvXL=wEv~+`-~)wG=JAfI)sj0a|<{(%Th_W)0K!c z+$%srch#>57QLm@gpip9WV!q_0JA*NHTrL)F?i!)necoxY597Mp08X7Gp$tYK{&}$ z1isIFP)SEmoam^K_xPdP3l;PwrZ*=uhE%3fWeBo(q5z;T7UUJf7H1}!fjF!Haaah_ zX=U#iWd8Db4+))$LH=&oSxfOPU5!=AmxJNdTd7e@=Ru2YEQBa*S8ElLi@0>T0lP2k z8URCJ<0=G)IN{T8zkoafJtvFfJqYo zz;4J``>q?dn85D_;J23Kz@mw*M}TCM{By8JMKSCVKk8E8ig<;VZp-0By~R@zTPr3M zX%x?T-Shrx|vcy90sQl!C|2A-gIOkCyxG`Td5LUr+vHV!`e@xrF(qWuE6eD{c}Zx z91#NcVS?H?|5|N)B_UC6-VYq|B8fWguNy^_Sw+lI*~ySJhPeI@1nhq;{~Hq?zo`h% z(U`Hg5<+W~3NC0A*6jn5|5AS-?z2z(0kE3Y>HvyrV5J<1>_L7i63ec5?8g!AuX*Xy z8M~*FENK_^bQ+M?T+G%@IlU%ZhjYt0Tbv(lq2zE&=~HYSd6fNV7!QVtropiMv2~}{ z2=!rDdwNl{MS>3uyJI_rm;RiwXDVq6?c$zJ&(t*+r8Y2(W)yzQIX44_E%jYiN_Vz{ zVU|XFrivvn>|hWK%XWZ8g(fhpeH#or?+3Fzv_sp&f5MprLL7!-LJRPo&X7(^*nLbq zmig;i0_IOz>kNGi)un(?i${Db-cd}%G99)^*AmUafe{YQjSLyI-(J!zK8fMQvDHXT?AtL|T&Vbwb^VphFp>w4=W=xc-E* zBWXH|w8L2(xIO>q@(cO&OH#V&be0(ZT--pvluy4PrC%aAk)}I}omr&m9xy;Pj1Cvh zE+@@8Mw*!`PBACD)7rxHuQT=6(g~>-!n~vGb~Q}!4{sCFUWOCWEosRFD4MZ_@|o?) zEU}T;4*X$CX+-WC=Jv4s)rZo^77U^K;|J0@KeY>rv?EOAck(Q!`O~-4!F@HnEn*Mb z+=&SeERr)DLai!Bq1a(1!AS5qw_QtIGvr!gl18%+(td%Qdt>l1vZiSKN(BeUhC9z^ zYWzy=X&S%MMzgjl82ET`zxPV;K7tDi`LMUdW0vTRD%SJEQ*=2il?0?j_ziy3;f`mJ z{|FPu^tep|p&iUi7W%GOOs1JQDGlKU{H~m0LojMJ#p-xUqLc+R+PX+VrGVyrV#O&&RQmqC;C(f^~U+97|au$RUbPD*VTRmt?9g-Sc<2f$Jj8{(DZaR%1n)Hz)aD>=DY`3a#jlYaa9_I>oI-|5 z69Muyd0T`&YC8O>w49l;UY4+tJcyLlg8e{Zi%0%a-^u=+}jQmeY zPJzv&=|+cDq4Hy@Q29YTjt(AeD3{&xI85K2s|y}&+B{bCuIALRG2-P`Q8~@2^(Y8| zMm!OM2g@P`>Y9*i8m||g6;@A4TZ)(3`9dj=ELMCk7vxqB+1?aYVR{7^vgmWk<`z)w zRcCU^*c{?y+!c*%zbI1^XRcEr=PHP^YoC}yxmzsM&qCye-8iLQgn})ofa_kpIh2sB zVd5*cGff-f>chyn(M<5YXTxJe+-W@4#jx=g+2`VnXzHRhg;xOtJ5EthH3}4_ecJaO z1Ze8Wq|wGUto(eHbQD<%Q@28l6ED3MlFe6WYUh|3Wses#Y@Zi1a<3P2?e9fc&Nftu z&9sDY`b`s_g^=SO&8A1P2~dZ{qM$k!@@M!Pe+s$7kj695G-p|XTi-IX!JN#oh#qTk zygt@PYJeh3F0v^y2z2f@hiIE-L5FY%;i>Bc!;IJVX*QKh9=iz@rui@_01uR7psFi$ z6j35HIkp5gXBQIB+$zGqxEy1e#DD`lLTN&7I! z{TT{wts0_w;EqJghAw;0h#|~GJLThPDdRCJGrBmCY6ba2!cfb2DdwAQs2tR1@Cy5n z*uY(Sq5MlW_&N9IC4%u5FL;IR1cN$xnDSJaAz2|hePcGBD($A)el7nwmT_`8L*nwy zV=5%G_IUCiV_PMy6`?KXZ90@-CYQ!ABobxDuT;3d8=T9Iej%_-g8Ad09PmDU56_3% zD=oTRd5#J*{`I2-0V6HnHGr7}g6_Mp?%yzv{L3+(2nq+W*{X3Gec|X7Velm1ihyJvU!tAm7Edh7Nk(v0n;T4m<|f zUBUc)gRYn^&zE)%7Q-p@k$h-{5$V=%N%gJG(JxL6V@$_}Fvdo9^gysBjPI|3@hhq0 z5tt7Qm)xKR(68aSwlTxSyW82lab<5*aC@8)SAX?P}q=CyFbNHW^?yH|WRXi5V zO_6@~x{J+}#^N=xq{!c#8!>Ob#RI~@QhL0Q%L9kyv8narnAi8%8Zth+*g>V0tWlz2 zLZUO@!W;XplzvDU1X7HBWU6=~vt>`GX|}p|BreO~i6>yA`e>g!GJYaPsMjZ2Av1?b zp7m8M-J3weoaQsY1VJKj0=RmS;BWgv*wOmt_Bs#_099KcI+Yl01QNASo)(z6a1J&X z{=-%WdjASxo8M2%-rnwZG%BaicP@*i-ndZ)n zbg=Ily&(YkPnMe%2v$9~&b>&rAIPR8W+dZSo&&li5!<1L@eL%;RhvS4Qpt2S80+cz za5?@H&IB3#e^aLSu=U*ov@%_q${ZtJW)+bmeIwH!g@H`}NAz1V-DcLZdWz25GM)53 znLg&v>}{Fuppxm$vM)6}7le$ar9Q@$$jD<{iEPlhu(ZGU ztnbJdZE9&%`VjxVR`q?vGqo1DVZ`9o$p0#%k7h^Dz{A%QSkYymK zf1wta5ID(!%|WKPWG{B=#_UA;jXih{tu~oH{1Fb|m?13f%AhAWz_(sOQkmi?RQVIX z+av`~ISAk^s#R?w%mb3j$f#wy-vH=}IY_dLh#8?RB{1SUs!K{eYeCoChP$&Qx2UE7 zlM!1NUQJIDfu`$Z-Y|}lm)MdHiqSPWFIgqlp_hsJlE|wn(6-#ShKNImd`2w^$(R3| zvbziD&V(GOwL`~SV2;?I8ppv9LcP@@apqj6bwezv4l3%!jNOo!vQcZUjGySOU_o1y%oC-Z_eUJVYPD?LURNH z<&%zFT14!OKTYyU2zdgDkN~nXL z4XNI2LbYKh8_u~Oeu2o`Vjf`PD~j`gxPd}M;;nH41uB$Mm1?4@)zy!&)X`@U@%rw+{qzOS6AxDf8xuE@WF z#a#r082IO2VKmD`>XmePIjUEfe~+&e|C7Wq>3fqOh3du_c3*Ci^JqSGYG zli)NP1!CAzSBWd^wWc4)4*v;f5(t05tACFtcZsv-vVbRjuHig+9e6SW@nj3|r1uYh z=E>1Pa6lbtL?}{Xhb1WxANdt z_{9b?TPY$dD>Yw+h4smVdcs(+B@Qzfgh3w<27yojFv0oq&s>NoS6;U8eH31*kH|ni z#+nPbnoO}qD8ow*UlSU`vJpKD{SWb5sfynqm8Q2uQ)b?#;;d`$A$4?@1F~ZP@f*1z zN>MrkHrmv>l^v}tlyA|HO+O-=aB4JggQm1YU5NqXUd5YMxrF0wv)ul{5}Mrs(7jkoF43-kW^ag%J+c+dIBKvxd}3h@O!O&Q1VhL z_zg)}Z5iMZSmC8WL{!T!kWa6z{=}@`A&zv1(nTPOGPs$93Vi5Xp?q=K5`Ez&c#Sq( zGY&RfDBlCqRT}_3qMvXkf$#+W|Nkq$Mw$mby2KRf-DG}DAdMB!ZnAR)j5em@Y++}* ziwDUiSCCI~p;?*83~oxDjEJI?Q58~@;z{GMj@_{3!l;xt;Ghzn}G@Cb2Y*8BN3jcN*L-!7ughX3#m5ncpmb3~;x z5)q+Pa}ecp-$W!8qktm15^!(4r|ceTn^7+hm0*8LYPmu%8EtD4)$*RPNl?}WPD-se z1Z>PuRJ;D3I^g0GL?3eSgFH6^>#pC;rf>EQFDAu#s5)f$O1KgUq^b|_Evm>W1J^rD zUV@}kVizJaFsoHca(Mxqv0Cu;Tl|J|lj8kcjcb#pJfy^2`FEgL3(@>p7rzW|a7sXj z1^zH1+tNR=EUp$;@{(bMhXAMea!_hXi7iLaR%+!qKgHmEP2Q^FO$F9aR9L{CvwDvp zX|hTVHz7SQ|6lQ}Ty0Np?2GoeJZyZ;vG)0t#>oFR*DgmSQGt51bXDUbR51WMOAz2{ z-6aNB4V6Pk9Q7_m++34~;5$18scYO*qT=6doPYgs8yFtYhWlcFrLnQmD>$Z0MscH1 z+-{LXD$sJp<+SbiWAU4PBs zEQY{L17`*^eb2&wumg7!Xde-r+gW#s;Fe|hv6^$5)7WO>Wu{gh#5%@8mZs6wZ86xV znH)KP$h_@b{rUXK(G~%7FxTCw^`lQAT%$54Q)?sX55sxkk&6p1Bc-DQY^ux-{zRd zm?X5dTocZ}Z;fI5sBf0>!e8=*2Gog}?fcM}w1c8b7 z;C9|UM1{}1a>lG(XqMb*<}5RrB{PXy2oD8>rns(xcz#58n>qhkx-!s52|n*&ScbWp&JkHLhsL7aoGx&G-u^ z7tV$a;hSMd==3$Au91G5KKl>f-aB2X|C8aU?IHYrfO>?+0Jd@9t8u=@$r-SQ&>#H; zV8dk{KQhulqf;S_)0i{}f@b5{2e;1|yfqQ!oa{n`TsX{Y~?KdrVivI0P zM2E}Tv}WiNe-iq{hq@Osq{4qXL5k6m$rL97>GL!erFFZAexAT{+ATAWw9L5DRjQw2 zo+_gpqBpYXbs8I0ZJ%mm|0@fm5Y)(q3Pcu}^wG9pn%lzsv~UwDx)9dpGDP-Fnvo7+gXIK!N`P5PSS#pjqpo$MHh z<=^trbfsk*-hk{UylF1ma1ZprbUeu>yfq3hjsAZAlx62K&0Va)BWty{{*dX({N*W8 z`tIav)Oz>45g4rz&G^2!BnYSDOLUSn^KuPyr>mFX8ZKAw#l{l`;&}y~KI;4h8_x`g zEO96_3@l`eNXT_%>7hXW8a715WOE54!Z6A$sGW>OAAZV(4>{iOp^$O|K7?Xfu=K|+ zfvftAph+(ZByJh$fV=}2Ow%|Q^V)JlRUloCc?mIBRoa9qN#UR>pw-DHgn}JcY8|Gm zf>^;Ps;Ifd@+)CyKZ*j|^x;i1Y>W(dat)dl0UGrfrhkcs6P(sjLV&fc>eDPA#n5-K{Q z>X?KUxCwJqNC5PB3>n3zdFkE|ugw_C;-%}Lb{zJOy!25{;;E#xT-lz3-q6`2%oe(N zlxI(Ga}GmYJDgEl4{OxQ!w`CXkj$A;(7uDz03SvO;gWDV14cGuXuwR=7$l6Efu8t{ ze!`hx`-1^*LN362d6>dyD8C2pDP>E1IlI~VrjX*Z%*b>JMls#MUcZ}TYr2*_1W7gc z4|NGs{o|`cRQ;rwhWYDImJl^rL8|+O7ceh=zc4oQ7Rv2&duoy-8hccPUTbyke_!-@ z;Ob?=nlF&raMf4>|J!Qg|KP6vYHa`af#&40PVmK=4RPyY1ffVtBiPOOABEk2p^-Oj z`u~9P|A5{9&uH!ceJp5+DLOiV|8aCoOzg+;f(y`vRH8NZ(&r?zH6k8SkR} z(e-OU-(T9blx9(8d(4g2R$`kAdVG=kVJlpVyR9_n2H$YQ{K8k=%{enqdPoTzhP{i!r z&<=<844D;MpiDp3#}+aeNxL9w{`_?@9 z3|*LKx97ops&3RFd>(dM!$;)lT-zazHw&^Szg1#l5rYWrB5cq$J0Y`iQTqeYHF)kz z{9)=m7+q{L_jNw?<*lFW^sV-dG@T-KCVR}OG zRG~ChEY(Btd4n1V-lcdj)B*Je90uK;`3-m(gSaqvcRrT|9eI2qD!*h2Y^uD@sXeTk zxB)fh;f|)ev&-4AnLnBhU^7g}8`{u3ZSOQD8+ERrlOf!=O$0M7L5vobc0#R8$TeUUFL zVfBSEG*q94>`)nG3+bOn=zzQ_;GW>?WW+te#~NTE{55ewzV@~Ef^zNalm!La*L4f_ zYF`sWG}i)QFNb_mGn+>UD{3+~vzY~Xa*)fq7>r|U;oNztP!1r4NB&&w6LEk6lnuv_ zI~V%z6N4eybVSH#MpHMFv1S7FZTHPKA+yOsuwB_E@J?!iu_@?XkqP*s!GO=d8qi_l z9&Vh9+W#9pAY)u2nnT%;ft>~ucdff|YTAMV@>IkRE5b}RaDspx7$%WGCX{f7m61sb zXL&Sw%n=N}izSj@!1FeQs25I#%$y9j6D!(vQF881Av0eGdOaD^uzvy+McxD#e8FNJ zjDevA^WmWsMp8dQHvX>qTn0vjQVq)3@5viv56HHtdp?-~2_5VW;lR6*VZgg$7c-#N zFv=RnCFAR|;HZOhzdNTtcgd$53h>I7XP zwt&N$F9kvMIct6q^z*r9QI6FX05`f&1o_j}vF10!hsI}%IIWbO&;%=qg9(AI^38x; z81S1)fv!|yczj9SKgL4eE+E8%oirM!3!Z@hznstDgqSx<8;)fVW*)&v_4><@#1S-8 zWPW^t`#QuC7(7p-NHh*u`r7S1H;>9Cib@S6$0XCY2NrlCh7)o}>d@oiS2OYg#^ zoA66%P6VK9&L%ip_6(wTEd1tM1C_)wq|oHwoXj>y$7Wf>%+c@*kBdOZZq`9d6>Nni zB4J-5a~Q+5dHb@}_-61CQ80p&q*`qo4#hq+T{YrfK75B|Ag00}gcZh+)?i7}bE2<+ z#JH$I4{E9dJ#A990nSL{8Ubf40L>zIYLqSd-;Ek(OWi39Gj#OEXJ#QB*_j5=^bxy0 z=&)14D<5qVoip?8rJOz{K9JIA5F2qrZFN9h$i7LLBi&aAHR$ZIv~wnrJ5e^m(7z3+#e+O_gr`y8H z$_$WRk3^7F&v3MRZA7HmjW-6p;Ej~&R%31!Vx}DY`5?e_zWW~;Ag1%MizX6Bgnc%# zci5vi$>{V*ku#*f!urQ(7;}eo6z!7ncp%gRLPK;#hFvVWLTD2YSBMhP6+4g_K#oVd zCu3om*U=TMdi^H{Cjj%Y;^3s5NyX@-97xJ2CJ_h;lY~|o>y_m(2bvaodLd-AA;1V#A^UGot>v_Za0 zQauo%Dg-zoXJg7S$?kys`8T(2OTDIU6Oj` zdu#}PsN<#TX8sBUdT+T4Zj!!ER+QnZ4qOI^DEw8cRlh)e0Tk|V_qbDg8~<)HBTA4q ze=Y3l8hkRhfkfNBujl5R<|&Kr+JB>9w5CF1QMPhsa2|Bkm6!7`6SqkQ%R>S^BTf+0 zPqvgv_EOK>QYx3~GzD$nlu@a%fA-<4$!^jB< z95FGXVszgnEjK-cP{zYFFs(g_oe<>I&m*DLIHYa&sNLMv#Z-cmM zZ!y0JvQy>d67vdmvHkA;BbweT_sT!f0C;mE`$J zr0obyw2A)|jxijN6{>4ts%jrv^4hn7Lm(Lq?Y_Hsm-_WBASlIbK`->$?NwnrL?Q21 zFI~_QHBnt1-dVQNkckf8t2jSdXx^~8zgS{LP`8wZG@z4R18JMyi-&;l%cO1igF5C2 zZfUAelk$dzX9990OOl|}DN*hZh^W}dv&T^T>1N`#Pgv+2g z{%~W{aLH9e)R4yPRCJlDmr%q{q((bG&qa@`(hSEVqW?q=&pAQ6FMA?S|M)EuEB#$w zBkb()jF7wAk6v(>dRaJB0t-K7Uc6_;E0lXKGJh%URQ&77;$6YGhvfU1ypz&SXo{?C zER0LT``RWw_A*+}kg|O}Kf>V}ZlEsL-W+pCeQpTI5;H^Po*P%i=6yv2V@cPl4aDUbsj_r&oBNUG))Ir}Y-0;PDw zY$vCl?5PUY8}GTQ3%1y}em1YLMU{J-D#?AKrrwp^OXm=V1`~&u^b=Cr<~8+>KJ6hO&5Xkqcij;K?vDJgsc>^{ti8hDx#0$ze(m4UK_Q zlDEre|%0c zw84K3S!Z44zZy8=G;!UH|0^*Qmz$0IhBJOOL~w&Ep1^}h0K-XqF*)^s95QN9<Lj=Ze~6GALY)cl`1c*IlnbcDt7p%;#MiCrjF zWc|zwOM7tD+P<~;EqN(1rG`hlT^`Qx(Bb!KSKQF&N9y@@&QOw z@raQ>*2oX}QFgTZ33(}S`kW{Bd)^kr1FPhfZMjY^P-A%~>W|TKbE;IO z?b=Hv<_~bW*RPU$=|CnkZ(9zl7vuN3sj(t%Ju*XuAF*Np(b7Jf9ZNlOra}AkRy7d- z4TS{ygJ>>5Th~Z%?_qJAZ3#hF&_utK5@L6)u%0oll=} z{-<#+06_s9>3umbsTZSG&w4nKHNRJsTrxd$Pj)9@coaSAO(+D#P@^t}XId z9lD}6#>VMiLYZRyMH}Xp>e9j_VITCt^2X|}Y?OylO#_*e#GC&3zU&tE%bP2s7v}fH z+jPeKa_iA=0|zoZXkkpdpAFZNw}$UMFUk0IqqT_*cl=Kah2a^`<&iqpXMc~$Q#`gF z%sD^z(h9=%jECRZdD&UBxzTgnFN)T!-}}ql??vT;%7KZ$9vx2_?Kn1cknb~|`EtwI z!kHZeyZY8G?VnLiw|!>SC@_g_vVc$m2vjo3b^YiOo zX5=1^mBRi`ZJuRQ^m4d1@u$rM&Z&*RA02;SQ}#Je9om7T@rO;BFKaGOO$>V)Z&R@u zeO|3IX2LU_qZWO?&y7xG=a3IMXB;hkVaY80XIWE@uy64Dv!sYK8-FjS?(y5crQn(6 zo$oJgR1Z7yx#ei)mfvd&7r{8WTPx;wXsnKTdceuYi_kuPTsO-)V7%xU{Z8jbl1;#v ziO+I=s{P#3inZnT+~`*>1%)@)c@fBI=JdLw<87RL0P>rMmt4+|wF`~?UUu@;1Umzw zc}64be%F?H&(zT7jb^>v+nv}@r=tSQp%rBjqK02SZ~y&sn^SEXz&yE9_gnOD1KXn5 zy05oohzS(CXGT3%T9`bY`0E7gNcdZ%nWf#W7dygnuzO}H+Wb;pN;SsOzp0(9v-8}k zE%K97Lvg^aA4as&TBrrU!>>DaCp;s4Dt-Bz3d+fLcbGy^h9KqEAO9Rg>)SYmhz>p7 z_}X*tkyyI}Ybo%rz+?Ll_-mV|MwVj&URL$;YX)<^s(_gQ4=;aH&#`5mv!5EGw38=^ zzkRk(Lvl8!<`U}^gYsq#b&M;k$Lh)ke>bNZye|Ess(b2JOdOG0%ccd~da?rF$YL|0 zUBs718YLOP1Yeyk+@wL`=Fi8m5N<9kqh=!%SAJD*_}0+8*21{_+BU4J%X%iW;5 zzv5bruG8HFd%Gi_ZlAJ@xgIBnxj~-7zAwhPBV_l;e_v-)G4`iF5y}R{)az}WR;z*5 zI5$&!#*K?{sssHzYK%?q#skY7W_1@X2Ii?gON=-Z^V@SBnxgje`Qw>eYD%-b^4D%@ zKg$0?1w-mDQoVuiRNmI>fhlj$JLKzY?zHQFgP7r;6t@f7@g0z~EmLn!qrE z9t_LWfnj|p`ndTZ<M5*ojh>$`@P(x=&l^C)pSMN`E!s29zu>%v>kFLywk zlJea`Qq)E1^v|TQ9sDPpNg$kp96=NEr+8cu<*JUKC^ixr9}}e<6K+37gu*TOsn_3u z+-711J#PF=+XrOX7&^HA$?oth@cH0jVP%1L!NnK6iE-;u4To&Tr5VH&Q@W)ohCi~` z1j}SUKz0Aj8Q}Hd%8EEf9q26!Jv#IYqd4%vfG^aKiyn(y?@O>})FKCFz%}qTEkj;r z^x$OVWuDL2r?btTxfV^(sGfk9ia+3YS3LM*&0s|ia()`ZW8{sw;DQ^+T~h=;m^k)S zJ?M;1cc)u{2WCkic(-jE=Pe8PfyxV7`(^VtI_~Z4E#Qynm?&dQQpf-N)b{sT*_`N1 z*{od7rri)yVC3VS0qXVZwu0k%4S@oV=e<}bc)@WG^7u$0eEb;~eOx5FqyE^Ek%Amk z@Q`Q1%(cir-*`%90q(X24t`MpA6@iC2fFAwcJD72fe&q=t{HNx1W@6TIA)F5OotR} z@J&Mlgg%Zn?jiR954q_A@CP=^oZ7jUpvgXX$U}^vJZ@g6$Ifjm-DG?zGRf&;7#o_b z=TLu%tZU3=FfPoYG=8o2jSYoT?{*V?~x${8!)@Q+<^?6O@G zYjzzwWb{etXV#1zH3Y7+UL1!@sHgjV_Yc3=ch&aci?&`oB)xT4=QWL6YmUy<9Cq7; z%WIAs^2F@D!_R3u>+0#7md;#1VQmv!E!|R+sC{O_kXtfmeBXEOuH&XJ-Fo7RX0rv7kEiD&je+`Vx7*%)E z4ZGGao!m5jOKp7i@k_TpeEbl&zx#~4mu{N*AEzBQAvbEx)PH`Ot;O@2wfOe!_1buKmT*8*9e&EZzF8kGxy+FPX9H0;8G^`PtGN zmyQ{6%6G0AGsfEbV(l-F82kB;vHHK^_cx7ya{3`ZoPNmG=^uxRcODYDDKl>9$H(1% z!=%uikG#0{>+#P_zx|7A*5V!9*DQtqT=2&@7WrRe)_y8Iq+!z`aHn?R5r|~{v+0LC za+S}w8JzYv*1i3~j}3kEs_E={;Mg!fk&Kz?Et6 zSn~3F7sn@D|2i!W9vpHlEMC6-%Hwu6@2!q6`sOS2{wX-Y+Pf0W1AJSDWK6qz`mP-- zzq#o4ZD=p})0SN$#a(J0XW#s7cy;*;w?6hcX6)Pemp87tXwifG20*b)d%Jaqu%A8o z%L)HR)Bl%${|UI+?v}S-zCo-jZiI{AHn+a~(h0xb`{peeGX?&?@&s|q&hM_s|8mIT zm!0@E*i8cAFVCL$)+GB)>+f03ezfzpQ=MxOpS^v}A79?`(Aa5T-E-p!3;l4l8Xo#t zmH%rEzwYpyr+S-Cp)B5S{hLkRx&G8mY(~9s=lgJ0_xWD9n`iIlS0}@1OPI>u0ax;^ zXOr4HrnNqg`*Z&OKX82UmLb>*$?p*Unys&lF>erXUqH6x4 zO(?V0MR#rc`A-jxDdwclt;0IrV z8n5fvm5z^g5Q8sjPFKH7ndWVx$vU<#R}qqSKgWe0ru|Lx$Vwp?|$mgiC4Dn z8}(4{fBJU4y*KyAAz$K`8m&HI{pMY#@u1+`?pJ)}f)i|;S?g&3gSYHEbl2nyu%RB< zaih50?%X|ibn?OLCv1Xy&Jr6jp597~K=IJKZ*_zLf1*}*9qPaGx|bg~d)^apDb>cE zXZ-ljKjACfkN?ZR`v6_7uekROy*A{Af4W> z04QqR-t@_Zdn4a``vS4v$lW#M+MT<9lAO&q39Wc=^)WwNzk}VDHg4-S1o2<*o{wGS z?RTBC*RR_cc=?HMwQT(*v%Y+5^w_^&x&3j`zWdGI zSPibM;PCl|1^aqi8TS8n=n=v9A$-Tky9B!5Y5nmKfxPEmxo3LIeNQd=7NFq1r)~zb z)$T5cBYjPB$KKYxL$0&yoxTBRd#-4O0Jr&<(fWKz?~ec!Z(XvlC;b8$9~bogm;)t| z`#v?~{NDc%;Q#jSlRiO6S$*ZCpWV2FMM!yO6>FgQjdV0|;=^}7fA_g!%- z{*#w{{Xe&b@A%1%RPf?SKYxC4Ti3nAKl9z|J}+j>FRbYONPNwcf4%S@Th6L^)w0!wLO!s+H(31o3EC| z;{D^<703ABJNaYX7eLM5eeDOA5Pikhj;nj`wC}bbdfdV*KJ_+~*4cZ*aIxHeALClt z@lr<2glY89Z;u#*GgQ7u4$rt8HSFQ_Lt*R#SCa3oiT=HB^3X4s#Fz39@GLZoPr%MX zYw-#2EVLG%z;G6t#U~JFp|$t~>@2hvpJ3sLW>+uQx z>=B<}!_4WvU-0+@{|<6t=P5UUk?ECtuaeJGJ~e)9Z|nBCrX#?;C-Gy@$4+t|gKmT4 zlsoU6>N-w&!jQXmMXwzC*abVbTx>f1xV4K>`I+3u4nOPDL(e+z>a%W|Z%VuQTM&Qk z5<3jR19)z7_em!1w&RY?NGqNTgEN6!ucI@8MK~Vad!L2;?NH8HK4Uni55x82n9&jn zI`9SXk99$`H|PBF`6fp1c@qx_?mP*sesCNbPP_F+THiCBom>eiw%j6)JF_FL_poEv zZ{yj?H($6J%iEe;4{fvif&Vt1gN{PN$o1^d@?IEU@Er81SUr9YI*-RJcfZ@eLzSx_ zatPd?dG(9oM}Osi>L0T=On-0N8=-Bp=RA4!v*N&|61M>M(*A1Cv2}EQ6=MAUD)ns5 zSkR~8)S-Wy{Pfuizw$e%#r!=lA=h6J=PIv7=xyBvFIr!5ABM*M+6jI6sA2Qj8940f zES|{Ex_!S+cl(CT7z_WO-Fm~gnsJkT?2pG@w`w0BH67{r|3e_o$kSKf^qGZ|W}kA@ zgk0y^)YjCAYyW$_?}(=HN1izD_M5)(;xS*{wf?`CHH{wubM2c(?V8xLYyBy(eE3N1 z8QEoz9(G}1Ozf<)Al$(8N9rH_9BjAv+Gn17H2B=M)ezj^Vfb_VnSt5Xb1z;4dx+Zn z4|g36JEc;7h&H!uY|n&kZI9mbt%r;2KH7%s!WrY#@Cm=Wc-Ys66`EoHO-*oNuxtH< zF`Im&p18B-u8}o0ZBx&i1Um^ndK1Pu`t8Hxhh6{0wvjEk?+R9QiG@&DedI3xaeIeMj6XAk zmmY`GmqJ{xcc85i+Hd`^_lGdUf!jZoXenO?&}_f^UtoR(p`wiu8NLZA-hS(lv5T&Q zNOIfkBh@#XqN;4%x%NlTPh~U8lVIH6{QLx%-R|tn8;^Fc9ttt?AZDHEEcdRFr=R`i z;Tx_x>&iXb|K2_hW@kI5wr(8)7m3{eEX0&s()&0ff61cT@kRbVc(Lu0Ixf%>fit-4 z9@;qqvgmkV0t8^+d0(r1fO-UQzU7jef%D!sV8RJidf=zP2jpugSfq4+WW_&qB55XKBd}{mLN$9dT zbX(&WX^ePi-`%T0AwR$KHV}I3!JFY8gV(oQhd0T*9>pSFScHO$y^#0 zp89*P7b_QsI2bo>-#dQn&6m9L`{RENoQZfpE02dAKWa!ISc$?NDfw4e_z-Y$L(Z`! zix9%A=^XXND}9Kq`OnOJZ^Ii$omU(KYXY`0WZV_LH+VRn9a~WAUxU2f55bHcT)kr@ zO8bGG5C8bp=&NU*@o#&d{;~gSc#=65NxG}_ii2e7+L;t_- zRHJjYQ9Zx!b6KV;#rFZlBBkOpYX|AiC zC#>|rIs1S3w!>Bqh_ohdeE!0OF2q>ti%^CuLgErC<;vG~s0YxY?kWF=GX~*t7h!AB zxvasBLHLLhSN32GLURnlCD=L`R~F2W<`{&Bj2;IUmrYytX9yYo@_Go58asP;6Elzv zg~(WQQSY3+^O5P{bud|k8`tckWfjI0?7d>mW4;|Y^z8**H0{dW$3mFB_=6CV^_7}y zA*x^!RtGNzw!JCB72f|a1PZ-!_idAwLb3bqJ8bmC2X6s`$un23*$r1o?0j&>>2O@^ z!c8rav-jZ!1-|`hP5x&7zL&p0>4Y_~5n}Hd=N=Cs0)MjlBggz^jBQ|LI}=9#lm`vG zY{;W4UwI1_6{{{u&YBZmhlVzLr`|K-pdD;L?Ao?#4}=VSa{SmuPi=oRPYLnBe-VB26lbVSH3uM;+4;1q`}T@yL#_|9dT1fj>G*(>9=c+ z8oKxk!|RWRkiIPb?pyFJi$VC3+k$2XBs>6P5UylvhBMik0c{3eF$ggh_FQ<+&b*C& z>(GH3gO07OQRJ@<}QVR814CFDqC2VS`KHitoY1OoQ1|g)*#0|{v_wX-*aHaOIgG*+9 zqV}?-;~qV&4jg~SjrH};gl*_|PK2`@OHYK!{nG2yC~Qy7ZW}-RxKV}k(IFVPws!bS zGkTt|p1YxgMTN^iRJgYJ@U?%$d9bWV-=Ic?``y{YE*!Dc2N|S5n_LAxr)O(UJQ{+( zZ5r`d{W=WS-F)YWU)0Z9J8aI#z;g>nq;R3p=0|7RlMjzq7aHd;8WtOw!`xUzatJ5> z(??G9KYCclnvpEG3rAi$9d3Z0G-~@{Gbat30}H2xBQL`oH~DelwBeECwH%YUcDrKi zlkcO)6J`rf19qaIxH?wfylJ|a39*1{8=t%Cu4nIgb@E#*epzVP?%B_L60f&M6%d)< z`|ULlHR;vKW)n+O-O{~VR`1(jj$d`<^j)vtxA7v(0rpsZW?>6#CwytjQdn2-+h8`e zu$b68rY*Y;?xNfcyKYxud`WF-Uo=FWO!lsxzH86sjpIs(fc)Obx~Km%d)TbmBU1mU zSq}l%HePhw8i)n=+GLDwbKecbe@uSB**b2LVZW!_#9t4iXPn)*PV;X)N)aXsv zxdloZLO^c8zaSFpd>BElgG|=J4&j}!JzIpkGA-@C;1Q(`!U`n0Wg9_uFK^y>(I%)@R-ww&NaxwB1-ZS|&CE#5XRDE-9-v$^HVWPPOCYq<^-$Nm9*@&*2t$!YQ^t6Ze zZMdwG5O>Jl-q$9-gv`IN@5w2%CtUf;gI9;Y^vS7*2H)8*4~5(7gd6_?q<-Vo$u~+d zDvKi?2b12$ab41a03%o4y7O^F;o18(bU;Q=0p9+OY{EWnT>89YdrXQ$AAS7ww=n6g z`!;NbC`orPdrW|b+kL46)maXKlQ&-zaKL4s84-r)QfAUZaDN0Yhbs* z)Umfs7&dLx{~Wz^Yt7+*@xhjax!?K-Y)PmaK2>ZEnt9@y zi`V)wzWeV1gJwN{6KcBC_IN1z2`1H)zxliH&FK)N-e|zu3*n?;qc5tI`!`OUao6we z-*^#z@ZPJFVYaNV-*<000Xox?eH$#$GpHS(N6Slv;R@fbx#l70s$@ekTh(uywCRkm z9d*Q*BgS9-KHjeYy6h&+~*{pvl_3d8@a3HCKtsOLw3wv8;A za64pkKPY9;OmNBHhB+*9<5$Mxm;q-K%yE9d0xB8KVBBPgTlh?;Z}{x>pPsWJHTE}q z!jFA&{`54&Fi-Bdzg3P3yb{z<$AWzuh6C$M;QY`RafF274z)b!;wG48L(@hf)tk34 zeR=)sj=mHgjJEe7s;J|^NC3~bfEK+Pvf6(C#+wwY+%u@=-+FB_T3I&F?}bpWuiQTc z+YLSuYMqUp@4hyfsnh&E2*-gM{>ekeEV^#Os_C%I7en_m9fqjM5Pa@@)Z@@ZY`Fgk zn~1oP*{j*YR)8$KBI$B|$I1|s)SD*UW#xp)WW6l;FD6ZVM;TT|W z37~`xf-r#qu3x_A8r1U8&_c^EhS3w|J13#6uG_Z(j8W5Wb;94pF#O%EfSK3t-FOj> z2YA)SmGj?5-LC8X^`Ca@{rxwuFJxM>nI=&Dp+NN&e_B)g&Vph;7wl+$S?_;Inb*&f z=JlJLd40EGUjOVcm`I=JIj>*pn%8U5p4q(K9ql>IqCMYq6-ImhENmv+^zcUmKOS?) zkw+iDt!?P|tI_?j?W%F$fbfrO(i{-2M?5$2?iz?4eJ{?!e>(lYY7f13&6wD4YbLSW zxNl@wCpu)h#vVNdayIU z&=O4Vyxm95zX*i}_v4`6h+Mx9?zVwJ1T?X*yk84iv=>%8reX98z2AXvx4t%+t(R_r z!$P1^mTcE2_T#}30G9S%+0xDwH7K>KKr8Kl*24u==c{mg126*X6*g&y+PqbB%^jfS zZiG~?Y~A>baqj*vijv1$GIm5^Z_>IuApSGxP?*2}4fQT4`EQ^S?8n?4#|>C`tXc}8 z^!IHz0@?zH;TLL_`oJ)M#Mh zUSHXI&5Os*zMyU4#4)k(2w54%+-Y2=9KnjRj$_PJwVORcyWX7Y&7gM;AC zk^l48_;LsVFnvTL#3S&Hc>3jz=Wa}W{rqztoj7mdH%6Xw)UX*x!O`XK&p?*|p2{9^ zFF6OmJmPx^)?lmgssmVps)4Bg3=sUmE4NJ&Cx~{K7x*u+X&Q_n=dUe3XWex2{B@UK z6We;+dVq!Swi(Kf&kwJY+^s*n0nuu_yU_KlS^3xL1RoNFP=2^ZgF!%OE{HDShl? zJ|AXJPnI4IO`HMrBY{p&%IEVyKOE@vr1V*!9}jeT5`8_;p?W@g61@lL;O6tuljz?8 zI^IV{Pon=o!Q{{-l8y_k=lM1KQuI~`KL+UZB>HFoD9V$bM4tfk^+2a5(y`oc0ev*k=}Gke z6m)tLeKXJz`}9OQ;`Zl2p9pk%GCJ`1GSHEKdQ$p*K*v5$Pof_KJYl`)N%@=t^lO1m zPoyLNcfr5Qflg1Nf8u1HuM6n(B>H!N-U)Pi5`AKw&sP9CJ&Arj(7yt7dJ_GFDI8by zMEWSGZye~zKRp>8wr#AqW>J| zn4X?QKO1x==1)(e1IgB-hzq0>Ee-tzY4}8X?J%G3O89*Z{G%tO|N9V#!w6~VN%SQ{ zeZE;hrzg=j0o?*RJ&FDspw9t1J&ArSlpO*(J&8UK=${5UJ&C>n=&OKEPoyLN|A2ot z0Ns8H`o`hB-RVjB{1E81ke;4Ie;VkMfKE@M{}t$u0G*yl$8vu(g6B_9O8*<6WB&9c z`kO$<{OL*bqejB`33PfQ9rND+bnGwmB>H$zo``39Qa*8@W4ZJs`eLACx%4FZUM zOi!YJ1L!9Mot{L06zG1S)061Cft~?6J&}(5pK%DsEj@|;3!q~^q9@VM0Offz(CJC^ z-9X3s(i7?Mr*8-hQdnPl68$8gV}0pK^w~iF9?hgDejCu~N%XT}F#Rsj=}GjrfR1vYC*^+(4DQGe zJ&B$GI`TtLqF)Gf%!i&tUn%mTC(-{^!QZx#8_lju7{KJ+B|K9LVSi9Q|%YvhNX zM8`c*STA}KeKF7(p2d^sm&4ziAU!>ij_vzV7{syv(v#@V0UgVwC*`vb=vXd2iGBi1 zmatrU5`8MrF&}yoeKF86A9@mfjmU?dME@qxpM>=EL^|@{bQI5@o|OI?pkw~@B>MM& zj(pOS=uZG0aY#?3WB!dWsYnBzowtbD(CJC^?*RSFK&L0tk)Kb(WEk}xJ&E1}bmX6&M85zA-s^!*Pon<`=<9$^ zPogiM;PYJvbb1o~4WO?DIz5TLaw5;4oFgL6o874o=6`B z_5B3Up=;PrqMr`*^+2a5- zK{}VmK{*_h!~Wwz6Be3nf`vCmi(3sD)7aMQ~LtCmV-_(?B$`|0*Vl(VE z2*elQ)lPGAE2Vu02}5eQ+b2@F>&w~E7BpSZB3^fT+~4ASZM@#)L-5**^K@q??A2Qa zKj~%ZbZ1&fAMR6W&*ql1$Dip}|)zu3{%lHmox2-uiJX)F9l$s3NQ%T!y9FA}!FD!9HFb z+dq|Hg`?qEB;utK?AKmM3I^;Xd|55eLJ(*nD;Dq=JzcN83UDPc6@cYi!C)k6?hCHh zUIn<4comR{MJ&&ms1+8kOBKMAR0Yuc@fNnK@Rxu&MKO!(G6Zq7Z?lRrATIN|v(u9TQ5Ov5@`YBo-2L)Q5^jk_vs02; zX`zEz0n#Lu)wxSl+RK1%hL6+b!Il83MzSS@`Z#qhrOX^#0z#v`m@1$W>4W2?oGrl) zCEzr^QK^@CEs4o(4GB7DR(ULhq`M-0u5%96F<5SL}#Ldm1MrJUx5DYoyAv`=R z$)k!!BGItu0FiAql02N&+3zQrJ;dQ~z>l^`@~C3a43Y-`q=Y;M?Vz1^hjCaauFB@% z|B^(ic+Q+8!d#S{3%llYHYU$4=G)NV500yRPLR6VihKY@f=sa-!F#+*EKgYd$Br>VP9dxD7tCB01U2mP~ zY-?zWh5-_>#x~|=Jt*y#?DAYDJ*UiwEna)gdsN5y!mb&G<;nANZK=i;%vs08-=825#Ocr$wDgI4rL2T;Do*r9rX=>(1Xa_FUaJLv^?9A z%;efT3Lt#&CpYHP8CUD_2Dz{RPVVz_*hDEnne!pcJTj^F478DLt#D@egS{gFA(hR+ z=8-1+EuF#NSZ8a=Hf3**ee8--g_Z9NOR55c(>{@D(H41+De?U3&< z+=~xcrBhw)$znd4U)Bz6y8cSyN-EV@?CCzNG2hXa&vD~7q&i&u4fS2VJX1hQs-u`^ zGdgA<2g(sP#Yr^=)^Yg)WZRMg7P`lZY{2xyU-Wd3X)kuQfH$N)ndvC>bdPRJXK@9T zUBN01e=LI~UN!@-4r@%cWs9j6&J=vvR>&9G9yH*fr+WmSI`wo9XWazF!L3~Iilert z`y)*-r-cR)(Q`qNWHScd1lM-|>ggT|CBh4m5bWaZfQf!rPj^kB2ZS_q#j5t6DcvK% zQ-GrG=^pQDawhzS)H0|Glju=Nq`)MaZHB-V9&7XNk?2t=WR?SS`pa=zhV3A77?z-x zY!M2m=^lm4N7xPy#1VWOIZzi|+k;RV#?dpf2^YiBFec7|Ski!lGpBbC2lqlc({tv; zj%#~92k!tU95Z#zR&&@;9oWLm6Lb%sfeUXasQENe)bKRE>S>+{g{HHuJ!cN-9?=5l zKsrEDHM4q}r*a4rZtsY4%@bqto<&+&?d^zWF55kRm9hx#6q9ilj%FFp$r0Mz$-fzW335di>5dOFf+v^JoRsO{DFJO>A)1^R$mydak`dV22C zY_YB}1t;OAqW5XaXlPHj?hbO@JsLK9`3)17I@HqA0PHY8H?|1k5iWv)+Va!n%^?p}hhw|OaPI%{9 zbprS78Wvy)`&YeRbd!2N?*kPx7b(M>+&}95gnKBFugGnvGk%>WCR_qXQ%>V;D7ROX zmyFGYgMMuoR*LB)pL8_@0G<5TI)oM;ZWBjmVIH#Z{Mp%dKo=mhPjs(=Lnbnh{IMAiu#Kh(wKk$JAgfcAib6|*k!0$k3sMD< zO3ai_!|BnKCG~z->`$$mQV*xL3y^dwI$+r!D^@vwg8OWFrpVs$`qi;zvTL4H?>~9g z$@TuZsg`#5TzCL@$F85^KXsa)v>r7`8s=jPue=%El~rWUY5ivif(xXmZ zgO3voA`lIGqeZEg0vAPa1RapRhq$y6CoYtg31A5sU~Ma5;kGB-x>7>|L-yf-oV^$*_|V15U{*_es9;MKQ;$;Tqz=Bgy^_Cg2tl558MyW_WhkW* z5_e~1V9r!Ou@IxqFW78LWz%IPX!xcf=oHKH@Z#Q84(G~6fGk*JNW(^$W*w$Vh$#Ru zR2$`E3YcCC4Hk+NbR_;!$JRVksY|h`3DT#sjn^C>bb{Y@(^*sOwyI^2iiaDlu&5~_ z3_1tki+_C<#vVwuECSk+x`6W~3}b9{3V!}#wlN9(K*CnRkHT*~bhmV-b1KXo*)Ql8 zoGKL!`Xo2?bY_J;HJf9~g^h$F+i9E^KIbE$FtzUH->wyVBa4g+nV5FTtAR;sQDBLw z8N`H#N~}!;-MZe2VnZ<7N?ierjbK?gy|E?L-tIq{{duxrd#)JQ>(sY4!?jibFQ;p1 zuo4J2Htwor)iLHt@v3j#npY%rv}!oi|IwGpoR6!lQn=5(2+ju7pEmzY;3`Y@+gi&C zLPI7INew|ZA!2AD^tx)#+nE=H$xY=rvT{mjYtCA5#0~RSOT!LZCPRrmJJUMl|WR3R)69)_SqCT#gj9e}m7R4Io=tP6VjcoR7F4zdx% zfERZ@K|7yi&{mDjvglx82U){^Vqv8~SE4mz;fS4$ z4G2bohV`$2j5xS>@1*qsmzQhS7#6D&e1Sh~odAb}-RcC}Raq%~n5K>n+oAZfY%T>Z zN!X(XzSo8rGA`+VmwqMPzoM@yp31{X`m!!OFbKtP)u;+i%(`kVjWbf0>KATx$yfJ| zwuH3`pQsx1bJB$){nx5}S<`T^YI9YR568V$bB0kljRH45;9(L;#NM-681NUZSRxih zJZm?^UCUr9x7La%Sg{z&C9v4$499xGrwbKA#yyvG3XTT(xvxwz-^Qm*u3ApRVZy)~ zss>x(QC?iYdTL3+wfLD8bbY8&*TfVx^ssTyHiBoNT9 z!=;uXtqZ@=DfNK#{w>O}Fg`25-z3hNyaY4)3zd5*g{}N~-9h6=!Mq6}6dbH(o7`}P zhScB#7!_t3Y(e~y=iROaJb#S|gu0K$ZGQNNem_=6*rd$w6zh>Ok=xv6PJqTQ;~Q=U zGrpq5p82KA$YxGpoA5nf3uC?cJs3reFUYWFe97jf#y8kKndQm7x-Om4^DQ4Q%&%R$ zX^aVEJE1X&Yj`X9o-7>3L}Go&omQn%kXkgSaa&fsQW)u4zcHs`##!SlHlxBxxB0Em zU)sxBD;AXJ4`MwFlVe&x+Prb;^l=WM4hZg^tmLe72dw4W;A~9Vip3iupnXmJenK{B zfRRHr3pkpEYY@q}(ZHvsY8pdHI)7GNnl!ow96(z$3^=ggtph??o{WEl$)q z)+k_VMBuqj87g5~?N`RVDgIOZILtJF60bY80Dl>D5H1u)GY=eOhrc(;^+^q--b%3m494=Od|> z5tk2!*N`tiaG^srx0QuDkK*EpDsw32ca)aZLf|xe9N-*Elp1v{s!=5?YwDoR7It*w z64Cioud|+yl!h&~gE5zD9ZMLhLuQQKQFa` z7fC`~_sP6V323D)Dh`Y680@zRMdA)*wUxGls50y9h|3Y@fLZ`O=AqLCJ2tDlcYq~5 z7*h;Mo`A3FlEE2LgWx2?$+n3TMJ-mKf@KBou^iCrY>-Pl?zSN_Q!MvL?Z4$fFu}`Y z%K>y)f$`V990)2rRcSe(W~&P$6bz`#0dz-HX*p0E3PzQQzYapf060L+Yj**AN)-x$ zn}sb+jTMGzpNZ3QGcMCdnuwWRF_o&NtPO>POA~typSsJyaZTNMjYzr5$;?xC`og7S z2e8GcA5(YEfL3j;c%=@arE#Y2p>VLl!al3&8EivGer21^p1LzFr4`6q&CXAIFG|nC z${`en#RM+#vpLv@-AgRK@ zt%+<$0j576whc7FSp_(7B&hg_P36{wQd2#tK&{?PE>5>%jiDuSXThAC`~#P;Dr_F- zi;`uis}Za0YC+=A8NX3+xL)}`0dsosHyHSRf zEk5<{QT3`hmTL$lz19rO!5fOZybV~k^c9q9@2ldBxm;iob?0sdwkVeJMMPX1OfWb6 zAzuW}#W;okm(9RK(J;Wz<$KjfAi*v>F51VT$MK3&!Msq_V5>WPC0zBfRImQ)(hRX^ z1L~w&L-kQp>im^Mg5euY*j#IB0@u>HwP!rgfD@wqqC6!WHo%?;MSY@>Y&}^O?WvTg z)m+h^$bgnc&I64Vn!L(3mP_NJfXkGjYliX$9feC-yGbumjS2$mVyHw zq0Q+|#tE*M2LGx6>fMf*FlDa0S``h0Ryh;+{3QTSSDFGP)M8)g< z;Q*X~3J09UISocKjkmkwg|LwzGLj16yQXj-l}!fA0>c3z%_=!YmhjgDzjmesXjW^L z5qin{N;nX0fKbMO99Lf{vELQH#vj&S!hyKU2!^vYet?Amo8?E@Yp|v~oL(c6YL#FX zF1S6SD&VGKYav4&;8w7%R;iN&a0@2t>|h7qQKBVv0X$ZHD;M$3M8-Ot<)Bk~sW7IA z)CM~j0^r;Nut!{dhG)l>EWFfm;K<^iYcB<|z#ra!WLYY**pVm~ute^a0E;Kp*<>;d zRvTDB1F(V!EV)V&u!0J()TDzAte_XLWX3d++Q8yM0AK}60W0VQEdIHcy#Q8lAix5z z9lKDCZH7aYMW;?-EaoapWM2ugcv78DhOAJvkrgr^D}>0B>m(s7q##R8I@rhxc_B+? zOcSY%EG`5CGxKXT0E)FD1#Opn5o88 zj|Pp}aM%E?FhWbNlmxA?0xdP^U_&eH1udB|O{6xoxDWtZ;Zo2N`|eS8_~T6Y_~%;o z0$N~9>_4=^Dzs>0p=&@C1yq79o>b?QVJlK?Y()&%iXgV+T1nW7DA-by4mP$TUf7Zu z(?n`xiwgm;6%p8ylENy$nK=ji5H6M<0mtU$e>$TS|J$WoIKhpGfU=0-ICWd+40{WB zA~EHQ$okU_bkhc4>3yk9!0v=>Mkk5E{noJ8*ZtbwZh%Dh5A{dq0KR7tc-q19CCSq> zfxdkg*`VUxb`j4kO6;$7=jC#wd1ggvz}3m3%6TS~%#-C((T)l4bg4Gacgm)j^6AQ! z#`}n8M&@0(Zb{aLc|SB}0WYO+1!$Ic9YTT~HW*EvhjK1`id{;opJk5*W>tQcy|TPK zDin``qJ%AjXv@Oi;OxIr$GU&$_X zSC^n%pMznHMFz0n%Cd8%1PcRCsfm*Zwubk_GxHsOh zD!4fn+8s7C*aW5gvHinMraP*U6dP_laFREYMJ-6yo)QcLDVP*j;4+AbCD`c=|M{pB+% z_I+wH_hM5XHl#rVh78w9Ow2$MNwmc7JKg3f966?m0x1t#E=#;SFFi~Q++^xu*{Z;v z8VSJqv5#IYE(`FBMIfkxY@Be`8+?IE*;lZB6iKz}GfRCWz)r>Rjd!@9?B`xo7wd7& zQV)gHsdb`R1C|NzB}=_hefL-wg(J?@KKe<#vsM-SXwqUY6~?qgw0?vNp%B1Gk6{NR z3DvpGmu>J;%Rv;wKG$A~riU9?`)!+uSSqp@N*y$j+Q8yM08C+22~S{&;1Vc1{IQjtkfD~n z09J4yzzV9sa%>=S_LU%ubE5OfkQJ=9$_g5g6+~pob&`-3RFI`69c*L;y^tj{ris)> z78e45DpU$tAupB1Ki9GsO&=NvvS9nCJQ%vHX>$IRK#Q}YGs>V9sy4Jj255y4T5_c% zXoVDLsYwSLS|KlJ$&6_twV}m@0MH7Tf>ziITKsb@d(rf;_qG3{VOWJ0*%2K}eMA&c z3AT7rol}ObaJ8`&Hef4^*ph1{VJoa)OHDf1*a~}LOJ+f(Ob`bLsSWNjMGRWPd^Fd2JpA1#OQtz^gNN{kAo6;OK!K;BV+)@H%!nBN0jJ43| z+-JBP zTdh`T-*-MRmPqz}yT5!?*I z?~=k)t@@xEq_L=^m0t-fisjIjech}@Rx-m}#IbF8EEBm!)x$i&Uvi_Ggf}N!ZpzhO z^3`WF5a|EvGa7J5dNl3Fr|c_Ody1qwpSbpn23*m$kT6gyKV+y``GHnftJI06BZ3LZ z%C9ALtvw@yVC4sXHEA(CD2!=|XzeM4Q16eT|00@Dv*SxXc&X(eieWO;UJ7Jch%A1j z){bmm=2R5#MBqP)S}L*>D}PkvUJ0;xQk_lKrtV1MRRNY|0G5TolB*;E%YuuFTn9b0 zq=OACOGSdvUkYQINNr$oApoY(f8hx%FK0rOf39UOfCZth`)x3b2326GR{p5Sz7k~d zq&lArS;1b6BSmX7S^C)$ zqXI)eUy5jUe(+lM(av8wBaeE-gP{DRu)J#3`e7g%1T(*LK!!BE%J)GN|6rT=-EHCw zsRy`u|HHQ{za3QVij1*8qanq0_`@@e?P+uGhAyAlJH>&!abHy%#yZwU6LQpIX6J!j z^7gG=QCpE#XxMi?FqTM$eZ63Lu7@MCYS?E3K|j>Cp0j(rcYc@6`XZ`}RtqP+`?tZd z>dPF`9i47Iynioa(|43yNqfHQ?oTR;?D_gyknCZG83)a>VC~EnK9ZQ7mmY=)ZdmoO ze^p|2O~m_e!iWU|%0@-869EH9v0xQZk$okrOrBJ$KHIe)3$W;U)!VfX8EW=?pw-nX zb)vZkE_LC(WOmh(IzwVKF$ng2;75}dYjTA#EfK9Ug%Ilfu>h=})Ik%ejVvw%Ko)u`Jdx$)Hi+@hwd_UH z2M40ELMpN}dwxvhUkS8$Qk_u-tx&b06*538gwT>JB|!@V9J!&TCLL^OdBs#x>Y$0# zh87nBKnpz;p3w4g8^rkMTJ{23p@BdvtU^n-=f^|=m0*h})j4I@3RfFjVFR|ph%LER z61FhHksDiT(!s`-S5PIT4w^`9Y;hp~w$M|7*piZ#vgdRAy)#O2`@T!J^dr6w+{aSV zo)26~{NVzJmLdm=J>Ps~rn@H8i9D-Xg^l_01~Jc)T)Q4U(+D#>4_sU>)&DwUJ=`ab z3pQiDL6t;HY|G~trzg=QR`!-|IjtTWCo(HqxzWDD%#3w%zO`fHsI?S#X%lwnTn8yq zHM!8Ji}1E#&x^G6%p6ra5Ie83dmF;1m5a7g(RS;SA+prE80E}YvI>4=?Tk7@Y7Pvb z;Sdm19!;Sbkht=3#W{-^LO+m(s*S~@vnDP#yB)xTj|vsIpv3T@`JkflIhDhi#SAHv zlTpUCaR~2#PN*P;0LS0_TJ8E_%^au`%4xzr1btFl#oen827RJ)CT`I>3M2-1s~wC9 zuQP1!rxp`vZtg%)P!-q&398Z)S%qiB#GcZm!RmLFo ztcfy}kOfoXZX(@|A$(D$2{o1BB{3YQ89-)zvC>qKUm=Lb8x(NnN9Eco2M1z^^7P zh6jZ)EfHBrgb=_uf*Z9HT6WwQ1uwN6L@{RPsX*31HfqP^{lI`M#TON?e4DmNs?~ux zIpfvdrVSbDz`||XN|hvFDciKQq=OACFMF%Pm?lyiShP($j@z_7f#tPLTgXt$UI1$# z+qC2IW?%r8SX|j&&UodUv_(>#Po^!Zy-7RHH!|3(IZ+58ORkfIEM=3nmUOU@r5HKw zQA%M<6RC|XE(B0nxJla+S<2pMS1~13R%8Ij;o=eX0D#M0ERZYmuVggjNi{ier4?}* zCJ+V#J!u(_7?f57m6lv730e`bs=NFJTGGLWmg{zSoQXPZF4sX5sSPbI1b|kg6toQY zPV&)^f39UOnm#&!vnBDU3N13DI}xPfqJT=U#gposGK~V~4(u4`Rl!!&fUPKEORklK zt*C-6HR)huE9y1Vk{Q!PYGaEF0k9Pn*pia=#TTWWE#b~7HzLa3^$;^0jOTquO!=bn zl+WFt4isP1!LudUYVIG>h?Sl#srdXzwy-RTvq1VB;bfSI~#%*;o@(8t%Ch9?hMfGB8S{Chk$an=+^sd6M?9F z(Xti8;6rVs#ML%CXtBq(Zft1l!W$#VVlQoqW>UA)*q1O!_E2|#Cp(3DO#?UgyPL~Z zG(@&$-T>2dssJ;7K$?uR&d5`_i4O17o4>4uO|i{gY^vNV@U<@wIk2fP!jD$SU( zHW8GMvfw@`bf$AEUT>6} zdit`CY)kRfY>wS^RLtgc^!>EbSWy|Gzi9@hm0P)Bq#;W6kMKL7xW0lBzN47O2~Cn} z2Y0`-NkK_Bis9BdI?|(CcZ3_oG+m^+g2}>c;^B+*Qip-O%#IZpyAuQ1#hj3L@d9jA zHwtB6!Qx&dm3kNhD6Zub)!xJm8EV#Upw-nXb)tEpU_vq+X-S>gMl3!EZWQ2GlNM`o zg)uD=E$)R7z#NHod@Gy(a-f*K9^WQ2GRsF+Z1LPxSxp<`3c!k)b+9+4I%20&U&4<<&$kJSu02 z07PKCQtVb-F}qF@#XV1Sf<4d*1f(wKx|hp7N<@mY0>33C)w>@YudlrOvExK#^D+t> zY6Sbt&~+JPb1&w))N1KzOLhg&Vn)GiG1Zb}>eJJ#>+VsoQ`^+hlnvZw&!telNvgMP z#w4w56Sz93uBcVc-4_RT?nsdadEM+w>lM4V)0OQM@}10v1jcA&D0;gva`Aac)=3$I z$U6J+3=z-U&`J)g=ye&AV6?^}0VQ-)+$WyhV$%p(=pd-5c07Vu8xzAnr&l|F(Q zlR~nH;_}2*uRDsLYv3sD$FhxBt}l#*lGD>rwm$r;UQZeZ20m2jW#Jsb_#?SNNI_UPYlTsF183Z+EoeZKn&fC}f1h@`93-%=xQZ0*MjVT&gD?bfkG1OjXu2(K<*YlPP?H zHdAk;DYi;mr@@CzoLU)#wAcXrJysyD8s$}AB9z|;sPVKquN-Resw=g)32Jc$HMwRo z)Z(gAQxgw5)Z(5>O=e9KtphbK3sh?H(ol=bW^otPcote21hx2ppq5afrui0u^FCmW zr`4I|SW8qLYY7w95)5l{)nu$CRII6q2OVn(PprwTX`*$o#$|z6OO(c%c59xP9>RyE z)f$VB+)r1d1@Wi2ft%SFDy5eEj{HoPJzrAe32JA!`r&tk zVXS04LF7|n5LZs5Wy?Aqv&&mko?jmTK1FWwDeW;NJ5704Am5N)EhEhV=2#>(V1xr| z0?E&zT-t*cin0L!MIzm|5!wH)Mav2vSiZ#u9-Rmej%l(d_oAUvq@lHM+)fS85QR{b zCMLJ>Jsv*5JdB3=81YS`gp6_Bgl4qF!EiiaAEW006rk;n1tC2 zDeq6IHyB6VyM3JQs?^inT@M@|q+3^nqU2393)z_*ItL|9zF(BPlNL14{`XO;ZRiwl z`(+I_Z{3Y4x3rYYAfK-6pJP)0N_AD*DcFnZIvCy3GinS}+8;hIB%$4tWkrd2r!)5k z&-C7&N*T|d8PG%-w#8KH(5%YgO?`kfvIxoIN(9FU8z`Jpm#!hCQWvB%=okyNU66X& z`s_e;K`P_nz{f7VNVlKN^t+88p%F!Mt`!;0u#Rn;hlKJi1^=QN`_)*|9 zc}D$me=v;E1C?{%E=_azcB{OSUQ)wmWZRFVoBhcQCX5>r(8*K){t^!(necacm}|vb z55IwUTXLhnWhDj>Gzq>|qbBig=Q6%g0hJivL|RQo!uXb`a@ZtbUyqxFL^Qt1HKVyA zGdV*F#rUQscBUKg!MHIEdDeu+n_sDimdY`{aao|*EdlY9tWYqZB<4pf@wM{8hB(hc zdn>#O!N34QzgfY63N_pGr{rG=(gZI$tE_>8fodZSa@3vjKm?>I6_bz#DP*K+i3b~L zz>y|2jx>ceEtQQlAq&7*Fi;X{@LJ1-$}%57CnQ({QEEX5ACzxxOBFK7d>cCirMXIj zqJWB^#?xvw;YuyYE@Z8yM*(s)K+R%MlWQhJ4X?CwoshE>F-Qx+K~ZW@5lv{K`Q>_O zsT`J`(ooYbi6o^a#Hp1*P#Z{aXE6AwP}5zdK~X|QSmSARX1Q9cc7$i(--I=c z@vK%&#u{F7Ct*#N!v}yhEikj){xWNtXdSF^Ss>Oh)U)>h3a_ zqv+4@34u*YExAg$>(ibuanGqUs8z#Nn(#cRBc_eOr^FyGylDON!MaMR8+fu;=4@pp zeo%SU>sb<6feyM$qYd)%!wnbg@A~|YQsCQC(JVjw?$Tf+d_Wz=Y+&18xz9+Iz3nd5 zD@9sbYcDZ3D03duGUe!~@G%@zfJK#&xUN{&JTlN?q<|1?5PxCU+?thx+0z zl|L{zOB2C99?z^WN2B~}txzBeIDU?1=)b@_*W$Tjx)jKK=fCC?_ z^b&D8UgAgcH75Fe?2+d@Xs%J2+dkffM^camW!*9AR_NM*JV5!1easq;h&7L=dlpd2 zC7LkoptD_~x+BRptr=EvWDs}C>2nNkxiu4d1XenP|!8OM#?~MDFUlyT=yOT5sYj~&1hOkjK~&UEwM94 zNkj(Y^eFJG35`QXVNFYA8`*>`(3Tqtz<Zn%p}o`XI|!+X2OVjOWz$hK3Tv8Z9i(wt zAkxC6krwtu8qY#2gOC)WRmHg&EZ3n#oYZ z`|l*Esfh<2YF?M_0dAxg(nRY(jmrX|7AXz2h$qx|7FrpEgvfxDT12V{Y%lQu$j?_e&XdSF^Ss>P;rLh+E z#2U{+D}%5W9gtd!N)-XDkuS(ShKeF80vk`ObIZXNtvcAECa^^r*yOs&V8a{oB(SN8 z2OVt6ZFsIRRAx;RtpheL3j|w?z$T?Gf4~>Bs3&*sfUm^eFHtF^H=$ zs`v-%5_Q(1o(xh?@k}syUQ-d0>;LN6(GUl|u_0j977M^lT-ZmvB8 zVQbP!G^CV0LMo@#-7t|^eK@mLVP?ikIp4YuYN{1g;*F9^ofM%a7@-kMdmYIT>Ez~U z%7Mf_R3Zt2JK^M6C)fMurdrzJ+P73oc6lz7o_b!PBLhdUDz|2<>>9->R;mh4bc>TC zb{Hsi@Oa2uu^Vw6=Zf%}@VE&I6(OKE5q6{3wJq0m>a+BLOX2S~;B^pAK8LM*; z;q4D^SY^IMV1mT^xkK5rihLx zAg=Vl$|5W$47Y>PL*l$HzomXbR4Ocy^Ddebo+kpt)cBN)CT_Z-sB(3g( zRKb+k9`XS#gW+ulo;9KI=2z;WrLyg}LKa}Z4YRPOQSC^c@V3KiEf*@QWT?sTfWn%F z<(QcOHPzcr`B#Lrl0i+wRS#+kIU110f|@E7laZzdHPsRiI?_CYnkuYm7;%th2Q>}j zNq);4X`aXGg*de`gj*`iqKNi)3sFQ1YRU(6ms5%gs0eDD8J$&Py-_9 zDWzr-)F6ed)U?Ed4K?6M6B<`E3Ts*_8)`xp0I~=RY3d0zc&+6^WtCKFkpK^FD+Qpp z3<2mZQvmvirN+;7`Md;}sf0?fCemtE;fLKLR<*Lh&|-$lG0uo0iP0sn2^>#AFQ{X>gmbe;JMN(b{JOI=Wbu(TE>UZ7k8d= zs%>k|T2|?!!=e)#^MDCTP>S|?z(rb)gb%Pt%dR7os_bodqh2Y}uUdP#eHSGnEt_(5 zDdFIO=4{mKW5l-@6NjaI;L!5FDw=z9^V@45EMVY$rJDD-q+ ze2wZSnzJz)4$kVMv$5hljjd2?MFS$(GS(4rhryQB+7H}lTY>e|*wE;(lFllXKR^uZ zCzO~4IO%~aRt*6jB}1pvlaa3J+OL<)+J%a9$>L#?^p8dqRwXSl1>IqH02EYx<6>SgPb8Pz$e z4&DPFX!SA?Bqe`jhh9IA=T_n$HI69#@QK1w+1a!S`rW*>y=0y7CEwL)m@L3VXt}g2 z(q0mZp`so4y{0prQ&+&0Avg8(WgXd;;;Gr3zo{eFSj^^g^!>EbAghQ)>@FGu{b*)s z8m0Syoo)6o+vzCgaVnUk`Yu|rWZ>=8-=O1_Ox;TQs13V%ZA*-91ScQ0X>m?A8klr= zSSN*Y<8B8@VL0DKUzi zj8Di>H?ac|+&N0kXf98Th$+1AQEQ3q86Vs{Iv74`;8_zIZ+?X}EtPHc6tX~jX9)J_ zg8kiu_B`4wT20H45Ivxy%~AQ-ET~Yi?s55AqkTBpEYj-CawT2$lg&}n z$z~uTq~)r~kXBDNYl#OP(w--q71lJ-I*_(cHb-O7W38xiZrGVvYcI+`+Hi6dyIeU) z$2@zfM}`FHSacw>j#ylob&%uKjcHLtMQWO-)dVlpbR73@RdwPK4;s{TJcyW<>n3A5 z4pU8O;-MxUbWF$9SpvtIRu4_I4yL&*5Y2H2Mgad+F-2-xdr=0{JY%h72h-9kX`4b{ zuawreDFjZ_tpu{=#PhhFU0-=gK~@u7sR$J=RX}=Q$Sz-=DcJ5Y&xCHvx_6@edqH)o z*z8#}b!^WBWp+eVdJkY_msi64`q_ivbp8afn#4my0iRIGLP&9nl%r4MTxJ}@|J zXN3Fcu;m7qBu#-*MSq|(fIrrZ(45)9Xqe|{Y~@-j77BodZE3Jv?pn3p1GgeO?pozS zT=zMWN?frq^%`j_B3!ZZEd(^kXl*D)8x{%Sz;V6GQnQD|fOEsGCP@3%*f5>k6x*8k z)tYXfqn!fG&raT9x)IlH$#q`a?oPmvxlzbrY6Z$TOx3273OOLobXMs5tmq!w1JX?? z!_TN|aFCZxgrsTljf?@$3}{Fi>|n{IeUF9?;8_EGSTQDrUKI{<_nrv5Y-zqnM|YQY z3pths=L=(@w(n6dTc7%=zDIc+8u*x@mxy>N@gvVg`*|$WK9wn}+{&F@17q9rxN4|G zwec0Uuu%`=D(}PKdL#&Hp1?kfOUnU$iQJ_p>k#3>lTZN>YV5FOwq+p}=F2nU(Y+F} zX{OZ&z0_75_6vKJK@@I!Wu4C^Nq@B!@e|d-jILV^c9;oaod3XRjMspOto+YEq^2Ss!&QBwXRLz+B;+Eu5ID;0ow`=Zd)Fk zL896l#BD0<8E?uLlG$RW(BMcPhZi}jKl1>m?42!bE0gK$@@!EbStw^pVb|L=dMH`* zPA=Zt-;Ms~Baid3pPnT>b=%;3uC%uu{BUi|EN^D=YiUD`P_IPc7Jm(L5&Dy%$bR?9h`kIrqp z{M?x{W+X%DIT5xkZeIGVY;cY>E7sakOf754#6$qHIX&0*e6FYY^6n#ZSad_KtpU1K zstbVB4E%N9Ah8u;iGsPdgq{4X+5i`4S#xA6>BCV+vnPe`Fz(_W>w99Nq7o_LG z3oDe(WsAx7woGHTDcdNgv8=}COyi1VdvmHSGc&Z(3R3-MC4)^Do--p6y3m@DnlbO< znG5G#_PLpJXI(n`+|PgRf*GG}O`S7u#+>;1x$JozZ7rF3o!BJW-=aYnC_1F-NT9F? z6cFSOxd>Mc5uL=rmq4IjkvQl_`vYqc5|9b3r2t@+0BkdImnp}c6-K?yZOo}+zJQXl z`o>N=P4d8QdbL!d)FLr^PkVbYl}o1zX)G;PdAp>Yu4=4#XPW=m4TKC`;muGS8FHd& zU^qzNC>W@mBZncQ?ywoz2#nk;F=8Xd>3Tt?6LM|I_I#nJ^eIp&jGV+Y$YdWI$zjwe zIch=V^Lyp^jKIMJ*t7-zK${_Ef-6G=naaBOf?%T9)s`t_nv#)apcWfjQtj=@U?3Tc zF|7q5iVK+tCTWj@`eeUYVWy`c38>FxBt56|Qa9HRmE$^|%mdG;x{33QEaNZ}ZE$6n z>QY&6+z)m6M!C8Kcs&d_i8ya;s067(l{HRfQ0YFJk1ws+_QrxEg*^8WOnu;a zQ&o75vxX>S+L77)GY+AEP1BCPVtt#N#!DMt6P_N*3ufr)i{M_ZfFJ846s zz_4kBq?C!4Vv?ObVTh0SP2BQSr|jetVsr5+MJQPPDMcS9pQ%n+w~EC_suLP2w12cJ zP9#j79vZ}%@a%`RhOHDT8|$RChNY}E;BWT~OCCfX3BpQybehWNc zn(cQ6WBJx>v6x9GgYk5xDb)c052Y8NT_>1u^Z)g7{9AnPP)M!Jw8#~(0x&m9=JJjC zwl0|M*-EN1Av>zoSOYhYUoOLAFqF#|T48B^c_s;i7OpV4l?9M&1*kJu##Wc$3s#v% zokM(8x{iY0F0G?NeH{B`z z4BN{>;VN*~stkqrD2t559Y|)I#1TPVaes6N0h~@Cue)TO2ZqoXtyEmd j6e)aE3f-P8xjLcj+62zRRcuHuE+#C-Sh1(r)A0WT^)gb~ literal 0 HcmV?d00001 diff --git a/pricer/__pycache__/calc._nj_payoff_for_path-1031.py312.nbi b/pricer/__pycache__/calc._nj_payoff_for_path-1031.py312.nbi new file mode 100644 index 0000000000000000000000000000000000000000..532f099961f05985e7528253e16536edb838c4e4 GIT binary patch literal 1838 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 literal 0 HcmV?d00001 diff --git a/pricer/__pycache__/calc._nj_second_min_row-864.py312.1.nbc b/pricer/__pycache__/calc._nj_second_min_row-864.py312.1.nbc new file mode 100644 index 0000000000000000000000000000000000000000..f3105e744dd5a34e95992615d185bc04de5286ff GIT binary patch literal 52428 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 OA9%heQ)hfdrEwDq2- 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 GaQ}aOVPiD_ literal 0 HcmV?d00001 diff --git a/pricer/__pycache__/cli.cpython-312.pyc b/pricer/__pycache__/cli.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..de0a580678f2b137c141a6ba2d0895b2af37593e GIT binary patch literal 12197 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 F{2#u^{T=`S literal 0 HcmV?d00001 diff --git a/pricer/__pycache__/comparison.cpython-312.pyc b/pricer/__pycache__/comparison.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..17bd998cc805ba5e77ec504cfe0517cf375f8c04 GIT binary patch literal 4826 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 RVr98FLEPSllPK~v{|`G3{}liL literal 0 HcmV?d00001 diff --git a/pricer/__pycache__/config.cpython-312.pyc b/pricer/__pycache__/config.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..29e50e7b7ca1a168ff78e73a05b1501a278a4b84 GIT binary patch literal 1259 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 literal 0 HcmV?d00001 diff --git a/pricer/__pycache__/engines.cpython-312.pyc b/pricer/__pycache__/engines.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d0b9ac4cca2145ad1c1671f24f0880c41ac9830f GIT binary patch literal 3621 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 literal 0 HcmV?d00001 diff --git a/pricer/__pycache__/payoffs.cpython-312.pyc b/pricer/__pycache__/payoffs.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c0e0cdf6e80f45c9908a46f5167f7ad9676c2c5e GIT binary patch literal 30160 zcmeHQdrVtbn!nd?u)#cSFc?gDB+i3`y!uFKpn-%W4dg+Zl#;r}z7VIzCfBA3jA^S$ zW;e6y?3!(*z|M>U+G+#pN~M1dkwz+!Mk>`xTVLE2UN0lDnyyBpl~$x-HPWm!+V4B} zUUPk89&I7*u6z=o$9LZ6o_o&ke&2Tv|CE)LNrCyvf4t`T{2WF74g;c53!cYenxgJf zZpux2sSb1%Ub^3K2QrJ)LcR>1gc3w%_CGZP>Uqgd_pY-szpLAAk-3|mP)9FglYw9nS^R0 z)N-KOBvdn@RseOIgjz(Xl|ZeMP>Tm>d-Wf%qpfy2p5b-|oi4945P*Q{WltdJ5{8yI z8X@p_H+b$+4AnuqsSbskW|Z(xRSZ=8xfO1uTg9llHEuNws(L_U*T#)!odf>v?&i0g z-hOA$&&E}K&fwL!*5&sFnVZ3Q79W312x?d+*w6Z0!ZRQh!`z`T{5Tt|yHt=6(fTnx zNn`W#Tm8Y4y?tJ$mw`gv%`EF@?aH_+z<9e^EhJ=hU+y94{Qazp>13Hcf1vX$>v1t`V_%=(>+B;0N8f

+B;P3e@%u#B~hcEoQJt*3DWm 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 Ezb1iZUjP6A literal 0 HcmV?d00001 diff --git a/pricer/__pycache__/report.cpython-312.pyc b/pricer/__pycache__/report.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b238addf3ddf2a4d2011b89f0755ababeb73ff84 GIT binary patch literal 3459 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 K` List[PrezziSottostanti]: + return _cached_eod_underlyings + + +def compute_underlying_stats(prezzi_ul: List[PrezziSottostanti]) -> List[UnderlyingStats]: + results = [] + for ul in prezzi_ul: + prezzi = ul.prezzi_close + n = len(prezzi) + log_returns = [] + for i in range(n - 1): + if prezzi[i] > 0 and prezzi[i + 1] > 0: + log_returns.append(math.log(prezzi[i] / prezzi[i + 1])) + else: + log_returns.append(0.0) + + if len(log_returns) > 1: + avg = sum(log_returns) / len(log_returns) + sum_sq = sum((r - avg) ** 2 for r in log_returns) + variance = sum_sq / (len(log_returns) - 1) + std_dev = math.sqrt(variance) + else: + std_dev = 0.0 + + volatility_annualized = std_dev * math.sqrt(252) + + results.append( + UnderlyingStats( + nome=ul.sottostante, + prezzi=prezzi, + log_returns=log_returns, + volatility=volatility_annualized, + ) + ) + return results + +def fair_value( + prices_ul: List[float], + cor_mat: List[List[float]], + num_sottostanti: int, + num_sims: int, + tasso_interesse: float, + days_to_maturity: int, + dividends: List[float], + volatility: List[float], + days_to_observation: List[int], + days_to_observation_y_fract: List[float], + coupon_values: List[float], + coupon_triggers: List[float], + autocall_values: List[float], + autocall_triggers: List[float], + memory_flags: List[int], + coupon_in_memory: float, + pdi_style: Optional[str], + pdi_strike: float, + pdi_barrier: float, + capital_value: float, + prot_min_val: float, + airbag: int, + sigma: int, + twinwin: int, + relief: int, + fattore_airbag: float, + one_star: int, + trigger_one_star: float, + cap: float, + leva: float, +) -> FairValueResult: + pv_digits = [0.0] * num_sims + caso_fair_value = "" + + if _cached_fair_value_array is not None: + pv_digits = _cached_fair_value_array.fair_value_array + caso_fair_value = _cached_fair_value_array.caso_fair_value or "" + else: + pv_digits = simulate_payoffs( + num_sims, + prices_ul, + cor_mat, + days_to_maturity, + tasso_interesse, + dividends, + volatility, + days_to_observation, + days_to_observation_y_fract, + coupon_values, + coupon_triggers, + autocall_values, + autocall_triggers, + memory_flags, + coupon_in_memory, + pdi_style, + pdi_strike, + pdi_barrier, + capital_value, + prot_min_val, + airbag, + sigma, + twinwin, + relief, + fattore_airbag, + one_star, + trigger_one_star, + cap, + ) + + if airbag == 0 and sigma == 0 and relief == 0 and twinwin == 0 and one_star == 0: + caso_fair_value = "Standard" + if airbag == 1 and sigma == 0 and relief == 0 and twinwin == 0 and one_star == 0: + caso_fair_value = "Airbag" + if airbag == 0 and sigma == 1 and relief == 0 and twinwin == 0 and one_star == 0: + caso_fair_value = "Sigma" + if airbag == 0 and sigma == 0 and relief == 1 and twinwin == 0 and one_star == 0: + caso_fair_value = "Relief" + if airbag == 0 and sigma == 0 and relief == 0 and twinwin == 1 and one_star == 0: + caso_fair_value = "TwinWin" + if airbag == 0 and sigma == 0 and relief == 0 and twinwin == 0 and one_star == 1: + caso_fair_value = "OneStar" + if airbag == 1 and sigma == 0 and relief == 0 and twinwin == 0 and one_star == 1: + caso_fair_value = "Airbag + OneStar" + if airbag == 0 and sigma == 1 and relief == 0 and twinwin == 0 and one_star == 1: + caso_fair_value = "Sigma + OneStar" + if airbag == 0 and sigma == 0 and relief == 1 and twinwin == 0 and one_star == 1: + caso_fair_value = "Relief + OneStar" + if airbag == 0 and sigma == 0 and relief == 0 and twinwin == 1 and one_star == 1: + caso_fair_value = "TwinWin + OneStar" + if airbag == 1 and sigma == 0 and relief == 0 and twinwin == 1 and one_star == 0: + caso_fair_value = "Airbag + TwinWin" + + fair_value_value = float(np.mean(pv_digits)) * 100.0 + stdev = standard_deviation([x * 100.0 for x in pv_digits]) + return FairValueResult( + fair_value=fair_value_value, + fair_value_array=[x * 100.0 for x in pv_digits], + stdev=stdev, + simulations=num_sims, + caso_fair_value=caso_fair_value, + ) + +def fair_value_array( + prices_ul: List[float], + cor_mat: List[List[float]], + num_sottostanti: int, + num_sims: int, + tasso_interesse: float, + days_to_maturity: int, + dividends: List[float], + volatility: List[float], + days_to_observation: List[int], + days_to_observation_y_fract: List[float], + coupon_values: List[float], + coupon_triggers: List[float], + autocall_values: List[float], + autocall_triggers: List[float], + memory_flags: List[int], + coupon_in_memory: float, + pdi_style: Optional[str], + pdi_strike: float, + pdi_barrier: float, + capital_value: float, + prot_min_val: float, + airbag: int, + sigma: int, + twinwin: int, + relief: int, + fattore_airbag: float, + one_star: int, + trigger_one_star: float, + cap: float, + leva: float, +) -> FairValueResultArray: + caso_fair_value = "" + pv_digits = [0.0] * num_sims + + pv_digits = simulate_payoffs( + num_sims, + prices_ul, + cor_mat, + days_to_maturity, + tasso_interesse, + dividends, + volatility, + days_to_observation, + days_to_observation_y_fract, + coupon_values, + coupon_triggers, + autocall_values, + autocall_triggers, + memory_flags, + coupon_in_memory, + pdi_style, + pdi_strike, + pdi_barrier, + capital_value, + prot_min_val, + airbag, + sigma, + twinwin, + relief, + fattore_airbag, + one_star, + trigger_one_star, + cap, + ) + + if airbag == 0 and sigma == 0 and relief == 0 and twinwin == 0 and one_star == 0: + caso_fair_value = "Standard" + if airbag == 1 and sigma == 0 and relief == 0 and twinwin == 0 and one_star == 0: + caso_fair_value = "Airbag" + if airbag == 0 and sigma == 1 and relief == 0 and twinwin == 0 and one_star == 0: + caso_fair_value = "Sigma" + if airbag == 0 and sigma == 0 and relief == 1 and twinwin == 0 and one_star == 0: + caso_fair_value = "Relief" + if airbag == 0 and sigma == 0 and relief == 0 and twinwin == 1 and one_star == 0: + caso_fair_value = "TwinWin" + if airbag == 0 and sigma == 0 and relief == 0 and twinwin == 0 and one_star == 1: + caso_fair_value = "OneStar" + if airbag == 1 and sigma == 0 and relief == 0 and twinwin == 0 and one_star == 1: + caso_fair_value = "Airbag + OneStar" + if airbag == 0 and sigma == 1 and relief == 0 and twinwin == 0 and one_star == 1: + caso_fair_value = "Sigma + OneStar" + if airbag == 0 and sigma == 0 and relief == 1 and twinwin == 0 and one_star == 1: + caso_fair_value = "Relief + OneStar" + if airbag == 0 and sigma == 0 and relief == 0 and twinwin == 1 and one_star == 1: + caso_fair_value = "TwinWin + OneStar" + if airbag == 1 and sigma == 0 and relief == 0 and twinwin == 1 and one_star == 0: + caso_fair_value = "Airbag + TwinWin" + + pv_digits = [x * 100.0 for x in pv_digits] + return FairValueResultArray(fair_value_array=pv_digits, caso_fair_value=caso_fair_value) + +def _caso_one_star( + r: float, + days_to_observation_y_fract: List[float], + pdi_style: Optional[str], + pdi_barrier: float, + capital_value: float, + prot_min_val: float, + min_price: float, + min_price_at_maturity: float, + max_price_at_maturity: float, + pv_digit: float, + memory_coupon: float, + coupon_paid: float, + k: int, + trigger_one_star: float, + coupon_triggers: List[float], + coupon_values: List[float], +) -> float: + if min_price_at_maturity < pdi_barrier: + if max_price_at_maturity < trigger_one_star: + payout_capitale = max(prot_min_val, min_price_at_maturity / 100.0) + else: + payout_capitale = capital_value + else: + payout_capitale = capital_value + + payout_cedola = 0.0 + if min_price_at_maturity >= coupon_triggers[k]: + payout_cedola = memory_coupon + coupon_values[k] + + return ( + payout_capitale * math.exp(-r * days_to_observation_y_fract[k]) + + payout_cedola * math.exp(-r * days_to_observation_y_fract[k]) + + coupon_paid + ) + + +def _caso_twinwin( + r: float, + days_to_observation_y_fract: List[float], + pdi_style: Optional[str], + pdi_barrier: float, + capital_value: float, + prot_min_val: float, + min_price: float, + min_price_at_maturity: float, + pv_digit: float, + memory_coupon: float, + coupon_paid: float, + k: int, + pdi_strike: float, + trigger_autocall: float, + cap: float, +) -> float: + if pdi_style == "European" and min_price_at_maturity >= pdi_strike and trigger_autocall == 999: + pv_digit = ( + math.exp(-r * days_to_observation_y_fract[k]) + * (memory_coupon + min(min_price_at_maturity / 100.0, cap)) + + coupon_paid + ) + + if pdi_style == "European" and min_price_at_maturity >= pdi_barrier: + pv_digit = ( + math.exp(-r * days_to_observation_y_fract[k]) + * ((2 * capital_value) + memory_coupon - (min_price_at_maturity / 100.0)) + + coupon_paid + ) + if pdi_style == "European" and min_price_at_maturity < pdi_barrier: + pv_digit = ( + max(prot_min_val, min_price_at_maturity / 100.0) + * math.exp(-r * days_to_observation_y_fract[k]) + + coupon_paid + ) + + if pdi_style == "American" and min_price_at_maturity >= pdi_strike and trigger_autocall == 999: + pv_digit = ( + math.exp(-r * days_to_observation_y_fract[k]) + * (memory_coupon + min(min_price_at_maturity / 100.0, cap)) + + coupon_paid + ) + if pdi_style == "American" and min_price >= pdi_barrier: + pv_digit = ( + math.exp(-r * days_to_observation_y_fract[k]) + * ((2 * capital_value) + memory_coupon - (min_price_at_maturity / 100.0)) + + coupon_paid + ) + if pdi_style == "American" and min_price < pdi_barrier: + pv_digit = ( + max(prot_min_val, min_price_at_maturity / 100.0) + * math.exp(-r * days_to_observation_y_fract[k]) + + coupon_paid + ) + + return pv_digit + + +def _caso_relief( + r: float, + days_to_observation_y_fract: List[float], + pdi_style: Optional[str], + pdi_barrier: float, + capital_value: float, + prot_min_val: float, + min_price: float, + min_price_at_maturity: float, + second_min_price_at_maturity: float, + pv_digit: float, + memory_coupon: float, + coupon_paid: float, + k: int, +) -> float: + if pdi_style == "European" and min_price_at_maturity >= pdi_barrier: + pv_digit = ( + math.exp(-r * days_to_observation_y_fract[k]) * (capital_value + memory_coupon) + + coupon_paid + ) + if pdi_style == "European" and min_price_at_maturity < pdi_barrier: + pv_digit = ( + max(prot_min_val, second_min_price_at_maturity / 100.0) + * math.exp(-r * days_to_observation_y_fract[k]) + + coupon_paid + ) + + if pdi_style == "American" and min_price >= pdi_barrier: + pv_digit = ( + math.exp(-r * days_to_observation_y_fract[k]) * (capital_value + memory_coupon) + + coupon_paid + ) + if pdi_style == "American" and min_price < pdi_barrier: + pv_digit = ( + max(prot_min_val, second_min_price_at_maturity / 100.0) + * math.exp(-r * days_to_observation_y_fract[k]) + + coupon_paid + ) + + return pv_digit + + +def _caso_sigma( + r: float, + days_to_observation_y_fract: List[float], + pdi_style: Optional[str], + pdi_barrier: float, + capital_value: float, + prot_min_val: float, + min_price: float, + min_price_at_maturity: float, + pv_digit: float, + memory_coupon: float, + coupon_paid: float, + k: int, + pdi_strike: float, +) -> float: + if pdi_style == "European" and min_price_at_maturity >= pdi_barrier: + pv_digit = ( + math.exp(-r * days_to_observation_y_fract[k]) * (capital_value + memory_coupon) + + coupon_paid + ) + if pdi_style == "European" and min_price_at_maturity < pdi_barrier: + pv_digit = ( + max(prot_min_val, (min_price_at_maturity + pdi_strike - pdi_barrier) / 100.0) + * math.exp(-r * days_to_observation_y_fract[k]) + + coupon_paid + ) + + if pdi_style == "American" and min_price >= pdi_barrier: + pv_digit = ( + math.exp(-r * days_to_observation_y_fract[k]) * (capital_value + memory_coupon) + + coupon_paid + ) + if pdi_style == "American" and min_price < pdi_barrier: + pv_digit = ( + max(prot_min_val, (min_price_at_maturity + pdi_strike - pdi_barrier) / 100.0) + * math.exp(-r * days_to_observation_y_fract[k]) + + coupon_paid + ) + + return pv_digit + + +def _caso_airbag( + r: float, + days_to_observation_y_fract: List[float], + pdi_style: Optional[str], + pdi_barrier: float, + capital_value: float, + prot_min_val: float, + min_price: float, + min_price_at_maturity: float, + pv_digit: float, + memory_coupon: float, + coupon_paid: float, + k: int, + fattore_airbag: float, +) -> float: + if pdi_style == "European" and min_price_at_maturity >= pdi_barrier: + pv_digit = ( + math.exp(-r * days_to_observation_y_fract[k]) * (capital_value + memory_coupon) + + coupon_paid + ) + if pdi_style == "European" and min_price_at_maturity < pdi_barrier: + pv_digit = ( + max(prot_min_val, min_price_at_maturity / 100.0) + * math.exp(-r * days_to_observation_y_fract[k]) + * fattore_airbag + + coupon_paid + ) + + if pdi_style == "American" and min_price >= pdi_barrier: + pv_digit = ( + math.exp(-r * days_to_observation_y_fract[k]) * (capital_value + memory_coupon) + + coupon_paid + ) + if pdi_style == "American" and min_price < pdi_barrier: + pv_digit = ( + max(prot_min_val, min_price_at_maturity / 100.0) + * math.exp(-r * days_to_observation_y_fract[k]) + * fattore_airbag + + coupon_paid + ) + + return pv_digit + + +def _caso_airbag_one_star( + r: float, + days_to_observation_y_fract: List[float], + pdi_style: Optional[str], + pdi_barrier: float, + capital_value: float, + prot_min_val: float, + min_price: float, + min_price_at_maturity: float, + max_price_at_maturity: float, + pv_digit: float, + memory_coupon: float, + coupon_paid: float, + k: int, + fattore_airbag: float, + trigger_one_star: float, +) -> float: + if max_price_at_maturity >= trigger_one_star: + return ( + math.exp(-r * days_to_observation_y_fract[k]) * (capital_value + memory_coupon) + + coupon_paid + ) + return _caso_airbag( + r, + days_to_observation_y_fract, + pdi_style, + pdi_barrier, + capital_value, + prot_min_val, + min_price, + min_price_at_maturity, + pv_digit, + memory_coupon, + coupon_paid, + k, + fattore_airbag, + ) + + +def _caso_sigma_one_star( + r: float, + days_to_observation_y_fract: List[float], + pdi_style: Optional[str], + pdi_barrier: float, + capital_value: float, + prot_min_val: float, + min_price: float, + min_price_at_maturity: float, + max_price_at_maturity: float, + pv_digit: float, + memory_coupon: float, + coupon_paid: float, + k: int, + pdi_strike: float, + trigger_one_star: float, +) -> float: + if max_price_at_maturity >= trigger_one_star: + return ( + math.exp(-r * days_to_observation_y_fract[k]) * (capital_value + memory_coupon) + + coupon_paid + ) + return _caso_sigma( + r, + days_to_observation_y_fract, + pdi_style, + pdi_barrier, + capital_value, + prot_min_val, + min_price, + min_price_at_maturity, + pv_digit, + memory_coupon, + coupon_paid, + k, + pdi_strike, + ) + + +def _caso_relief_one_star( + r: float, + days_to_observation_y_fract: List[float], + pdi_style: Optional[str], + pdi_barrier: float, + capital_value: float, + prot_min_val: float, + min_price: float, + min_price_at_maturity: float, + second_min_price_at_maturity: float, + max_price_at_maturity: float, + pv_digit: float, + memory_coupon: float, + coupon_paid: float, + k: int, + trigger_one_star: float, +) -> float: + if max_price_at_maturity >= trigger_one_star: + return ( + math.exp(-r * days_to_observation_y_fract[k]) * (capital_value + memory_coupon) + + coupon_paid + ) + return _caso_relief( + r, + days_to_observation_y_fract, + pdi_style, + pdi_barrier, + capital_value, + prot_min_val, + min_price, + min_price_at_maturity, + second_min_price_at_maturity, + pv_digit, + memory_coupon, + coupon_paid, + k, + ) + + +def _caso_twinwin_one_star( + r: float, + days_to_observation_y_fract: List[float], + pdi_style: Optional[str], + pdi_barrier: float, + capital_value: float, + prot_min_val: float, + min_price: float, + min_price_at_maturity: float, + max_price_at_maturity: float, + pv_digit: float, + memory_coupon: float, + coupon_paid: float, + k: int, + pdi_strike: float, + autocall_trigger: float, + cap: float, + trigger_one_star: float, +) -> float: + if max_price_at_maturity >= trigger_one_star: + return ( + math.exp(-r * days_to_observation_y_fract[k]) * (capital_value + memory_coupon) + + coupon_paid + ) + return _caso_twinwin( + r, + days_to_observation_y_fract, + pdi_style, + pdi_barrier, + capital_value, + prot_min_val, + min_price, + min_price_at_maturity, + pv_digit, + memory_coupon, + coupon_paid, + k, + pdi_strike, + autocall_trigger, + cap, + ) + + +def _caso_airbag_twinwin( + r: float, + days_to_observation_y_fract: List[float], + pdi_style: Optional[str], + pdi_barrier: float, + capital_value: float, + prot_min_val: float, + min_price: float, + min_price_at_maturity: float, + pv_digit: float, + memory_coupon: float, + coupon_paid: float, + k: int, + pdi_strike: float, + autocall_trigger: float, + cap: float, + fattore_airbag: float, +) -> float: + if min_price_at_maturity >= pdi_barrier: + if autocall_trigger == 999 and min_price_at_maturity >= pdi_strike: + return ( + math.exp(-r * days_to_observation_y_fract[k]) + * (memory_coupon + min(min_price_at_maturity / 100.0, cap)) + + coupon_paid + ) + return ( + math.exp(-r * days_to_observation_y_fract[k]) + * ((2 * capital_value) + memory_coupon - (min_price_at_maturity / 100.0)) + + coupon_paid + ) + return ( + max(prot_min_val, min_price_at_maturity / 100.0) + * math.exp(-r * days_to_observation_y_fract[k]) + * fattore_airbag + + coupon_paid + ) + + +def _caso_standard( + r: float, + days_to_observation_y_fract: List[float], + pdi_style: Optional[str], + pdi_barrier: float, + capital_value: float, + prot_min_val: float, + min_price: float, + min_price_at_maturity: float, + pv_digit: float, + memory_coupon: float, + coupon_paid: float, + k: int, +) -> float: + if pdi_style == "European" and min_price_at_maturity >= pdi_barrier: + pv_digit = ( + math.exp(-r * days_to_observation_y_fract[k]) * (capital_value + memory_coupon) + + coupon_paid + ) + if pdi_style == "European" and min_price_at_maturity < pdi_barrier: + pv_digit = ( + max(prot_min_val, min_price_at_maturity / 100.0) + * math.exp(-r * days_to_observation_y_fract[k]) + + coupon_paid + ) + + if pdi_style == "American" and min_price >= pdi_barrier: + pv_digit = ( + math.exp(-r * days_to_observation_y_fract[k]) * (capital_value + memory_coupon) + + coupon_paid + ) + if pdi_style == "American" and min_price < pdi_barrier: + pv_digit = ( + max(prot_min_val, min_price_at_maturity / 100.0) + * math.exp(-r * days_to_observation_y_fract[k]) + + coupon_paid + ) + + return pv_digit + +def gbm_multi_equity( + prices_ul: List[float], + cor_mat: List[List[float]], + num_sottostanti: int, + days_to_maturity: int, + tasso_interesse: float, + q_assets: List[float], + vol_assets: List[float], +) -> List[List[float]]: + dt = 1.0 / 252.0 + + mean = np.zeros(num_sottostanti) + cov = np.array(cor_mat, dtype=float) + df_w = np.random.multivariate_normal(mean, cov, size=days_to_maturity) + + prices = np.array(prices_ul, dtype=float) + vol = np.array(vol_assets, dtype=float) + div = np.array(q_assets, dtype=float) + drift = (tasso_interesse - div) - (0.5 * (vol ** 2)) + + increments = drift * dt + vol * math.sqrt(dt) * df_w + cum_sum = np.cumsum(increments, axis=0) + + df_s = np.empty((days_to_maturity + 1, num_sottostanti), dtype=float) + df_s[0] = prices + df_s[1:] = prices * np.exp(cum_sum) + + return df_s + + +def gbm_multi_equity_garch( + prices_ul: List[float], + correl_matrix: List[List[float]], + garch_params: List, + num_sottostanti: int, + days_to_maturity: int, + tasso_interesse: float, + q_assets: List[float], +) -> List[List[float]]: + dt = 1.0 / 252.0 + mean = np.zeros(num_sottostanti) + cov = np.array(correl_matrix, dtype=float) + z = np.random.multivariate_normal(mean, cov, size=days_to_maturity) + + s = [[0.0 for _ in range(num_sottostanti)] for _ in range(days_to_maturity + 1)] + sigma2 = [[0.0 for _ in range(num_sottostanti)] for _ in range(days_to_maturity + 1)] + + for i in range(num_sottostanti): + s[0][i] = prices_ul[i] + sigma2[0][i] = garch_params[i].sigma0 ** 2 + + for t in range(1, days_to_maturity + 1): + for i in range(num_sottostanti): + epsilon = z[t - 1][i] + vol_t = math.sqrt(sigma2[t - 1][i]) + drift = ((tasso_interesse - q_assets[i]) - 0.5 * sigma2[t - 1][i]) * dt + shock = vol_t * math.sqrt(dt) * epsilon + + s[t][i] = s[t - 1][i] * math.exp(drift + shock) + sigma2[t][i] = ( + garch_params[i].omega + + garch_params[i].alpha * (shock ** 2) + + garch_params[i].beta * sigma2[t - 1][i] + ) + + return s + + +def max_array_at_row(jagged_array: List[List[float]], num_sottostanti: int, row_index: int) -> float: + if isinstance(jagged_array, np.ndarray): + return float(jagged_array[row_index].max()) + value = -999999.0 + for j in range(num_sottostanti): + if jagged_array[row_index][j] > value: + value = jagged_array[row_index][j] + return value + + +def min_array_at_row(jagged_array: List[List[float]], num_sottostanti: int, row_index: int) -> float: + if isinstance(jagged_array, np.ndarray): + return float(jagged_array[row_index].min()) + value = 999999.0 + for j in range(num_sottostanti): + if jagged_array[row_index][j] < value: + value = jagged_array[row_index][j] + return value + + +def second_min_array_at_row(jagged_array: List[List[float]], num_sottostanti: int, row_index: int) -> float: + if isinstance(jagged_array, np.ndarray): + row = np.sort(jagged_array[row_index]) + return float(row[1] if row.size >= 2 else row[0]) + temp_array = [jagged_array[row_index][j] for j in range(num_sottostanti)] + temp_array.sort() + if len(temp_array) >= 2: + return temp_array[1] + return temp_array[0] + + +def _min_overall(jagged_array: List[List[float]]) -> float: + if isinstance(jagged_array, np.ndarray): + return float(jagged_array.min()) + return min(min(row) for row in jagged_array) + + +@njit(cache=True) +def _nj_min_row(path, row_index): + return path[row_index].min() + + +@njit(cache=True) +def _nj_max_row(path, row_index): + return path[row_index].max() + + +@njit(cache=True) +def _nj_second_min_row(path, row_index): + row = np.sort(path[row_index]) + if row.shape[0] >= 2: + return row[1] + return row[0] + + +@njit(cache=True) +def _nj_min_overall(path): + return path.min() + + +@njit(cache=True) +def _nj_caso_standard(r, days_to_obs_y_fract, style_is_eur, pdi_barrier, capital_value, prot_min_val, + min_price, min_price_at_maturity, memory_coupon, coupon_paid, k): + pv_digit = 0.0 + if style_is_eur == 1 and min_price_at_maturity >= pdi_barrier: + pv_digit = (math.exp(-r * days_to_obs_y_fract[k]) * (capital_value + memory_coupon)) + coupon_paid + if style_is_eur == 1 and min_price_at_maturity < pdi_barrier: + pv_digit = (max(prot_min_val, min_price_at_maturity / 100.0)) * math.exp(-r * days_to_obs_y_fract[k]) + coupon_paid + + if style_is_eur == 0 and min_price >= pdi_barrier: + pv_digit = (math.exp(-r * days_to_obs_y_fract[k]) * (capital_value + memory_coupon)) + coupon_paid + if style_is_eur == 0 and min_price < pdi_barrier: + pv_digit = (max(prot_min_val, min_price_at_maturity / 100.0)) * math.exp(-r * days_to_obs_y_fract[k]) + coupon_paid + return pv_digit + + +@njit(cache=True) +def _nj_caso_airbag(r, days_to_obs_y_fract, style_is_eur, pdi_barrier, capital_value, prot_min_val, + min_price, min_price_at_maturity, memory_coupon, coupon_paid, k, fattore_airbag): + pv_digit = 0.0 + if style_is_eur == 1 and min_price_at_maturity >= pdi_barrier: + pv_digit = (math.exp(-r * days_to_obs_y_fract[k]) * (capital_value + memory_coupon)) + coupon_paid + if style_is_eur == 1 and min_price_at_maturity < pdi_barrier: + pv_digit = (max(prot_min_val, min_price_at_maturity / 100.0)) * math.exp(-r * days_to_obs_y_fract[k]) * fattore_airbag + coupon_paid + + if style_is_eur == 0 and min_price >= pdi_barrier: + pv_digit = (math.exp(-r * days_to_obs_y_fract[k]) * (capital_value + memory_coupon)) + coupon_paid + if style_is_eur == 0 and min_price < pdi_barrier: + pv_digit = (max(prot_min_val, min_price_at_maturity / 100.0)) * math.exp(-r * days_to_obs_y_fract[k]) * fattore_airbag + coupon_paid + return pv_digit + + +@njit(cache=True) +def _nj_caso_sigma(r, days_to_obs_y_fract, style_is_eur, pdi_barrier, capital_value, prot_min_val, + min_price, min_price_at_maturity, memory_coupon, coupon_paid, k, pdi_strike): + pv_digit = 0.0 + if style_is_eur == 1 and min_price_at_maturity >= pdi_barrier: + pv_digit = (math.exp(-r * days_to_obs_y_fract[k]) * (capital_value + memory_coupon)) + coupon_paid + if style_is_eur == 1 and min_price_at_maturity < pdi_barrier: + pv_digit = (max(prot_min_val, (min_price_at_maturity + pdi_strike - pdi_barrier) / 100.0)) * math.exp(-r * days_to_obs_y_fract[k]) + coupon_paid + + if style_is_eur == 0 and min_price >= pdi_barrier: + pv_digit = (math.exp(-r * days_to_obs_y_fract[k]) * (capital_value + memory_coupon)) + coupon_paid + if style_is_eur == 0 and min_price < pdi_barrier: + pv_digit = (max(prot_min_val, (min_price_at_maturity + pdi_strike - pdi_barrier) / 100.0)) * math.exp(-r * days_to_obs_y_fract[k]) + coupon_paid + return pv_digit + + +@njit(cache=True) +def _nj_caso_relief(r, days_to_obs_y_fract, style_is_eur, pdi_barrier, capital_value, prot_min_val, + min_price, min_price_at_maturity, second_min_price_at_maturity, memory_coupon, coupon_paid, k): + pv_digit = 0.0 + if style_is_eur == 1 and min_price_at_maturity >= pdi_barrier: + pv_digit = (math.exp(-r * days_to_obs_y_fract[k]) * (capital_value + memory_coupon)) + coupon_paid + if style_is_eur == 1 and min_price_at_maturity < pdi_barrier: + pv_digit = (max(prot_min_val, second_min_price_at_maturity / 100.0)) * math.exp(-r * days_to_obs_y_fract[k]) + coupon_paid + + if style_is_eur == 0 and min_price >= pdi_barrier: + pv_digit = (math.exp(-r * days_to_obs_y_fract[k]) * (capital_value + memory_coupon)) + coupon_paid + if style_is_eur == 0 and min_price < pdi_barrier: + pv_digit = (max(prot_min_val, second_min_price_at_maturity / 100.0)) * math.exp(-r * days_to_obs_y_fract[k]) + coupon_paid + return pv_digit + + +@njit(cache=True) +def _nj_caso_twinwin(r, days_to_obs_y_fract, style_is_eur, pdi_barrier, capital_value, prot_min_val, + min_price, min_price_at_maturity, memory_coupon, coupon_paid, k, pdi_strike, trigger_autocall, cap): + pv_digit = 0.0 + if style_is_eur == 1 and min_price_at_maturity >= pdi_strike and trigger_autocall == 999: + pv_digit = (math.exp(-r * days_to_obs_y_fract[k]) * (memory_coupon + (min(min_price_at_maturity / 100.0, cap)))) + coupon_paid + if style_is_eur == 1 and min_price_at_maturity >= pdi_barrier: + pv_digit = (math.exp(-r * days_to_obs_y_fract[k]) * ((2 * capital_value) + memory_coupon - (min_price_at_maturity / 100.0))) + coupon_paid + if style_is_eur == 1 and min_price_at_maturity < pdi_barrier: + pv_digit = (max(prot_min_val, min_price_at_maturity / 100.0)) * math.exp(-r * days_to_obs_y_fract[k]) + coupon_paid + + if style_is_eur == 0 and min_price_at_maturity >= pdi_strike and trigger_autocall == 999: + pv_digit = (math.exp(-r * days_to_obs_y_fract[k]) * (memory_coupon + (min(min_price_at_maturity / 100.0, cap)))) + coupon_paid + if style_is_eur == 0 and min_price >= pdi_barrier: + pv_digit = (math.exp(-r * days_to_obs_y_fract[k]) * ((2 * capital_value) + memory_coupon - (min_price_at_maturity / 100.0))) + coupon_paid + if style_is_eur == 0 and min_price < pdi_barrier: + pv_digit = (max(prot_min_val, min_price_at_maturity / 100.0)) * math.exp(-r * days_to_obs_y_fract[k]) + coupon_paid + return pv_digit + + +@njit(cache=True) +def _nj_caso_one_star(r, days_to_obs_y_fract, pdi_barrier, capital_value, prot_min_val, + min_price_at_maturity, max_price_at_maturity, memory_coupon, coupon_paid, k, trigger_one_star, + coupon_triggers, coupon_values): + if min_price_at_maturity < pdi_barrier: + if max_price_at_maturity < trigger_one_star: + payout_capitale = max(prot_min_val, min_price_at_maturity / 100.0) + else: + payout_capitale = capital_value + else: + payout_capitale = capital_value + + payout_cedola = 0.0 + if min_price_at_maturity >= coupon_triggers[k]: + payout_cedola = memory_coupon + coupon_values[k] + + return payout_capitale * math.exp(-r * days_to_obs_y_fract[k]) + payout_cedola * math.exp(-r * days_to_obs_y_fract[k]) + coupon_paid + + +@njit(cache=True) +def _nj_caso_airbag_one_star(r, days_to_obs_y_fract, pdi_barrier, capital_value, prot_min_val, + min_price, min_price_at_maturity, max_price_at_maturity, memory_coupon, coupon_paid, + k, fattore_airbag, trigger_one_star, style_is_eur): + if max_price_at_maturity >= trigger_one_star: + return (math.exp(-r * days_to_obs_y_fract[k]) * (capital_value + memory_coupon)) + coupon_paid + return _nj_caso_airbag(r, days_to_obs_y_fract, style_is_eur, pdi_barrier, capital_value, prot_min_val, + min_price, min_price_at_maturity, memory_coupon, coupon_paid, k, fattore_airbag) + + +@njit(cache=True) +def _nj_caso_sigma_one_star(r, days_to_obs_y_fract, pdi_barrier, capital_value, prot_min_val, + min_price, min_price_at_maturity, max_price_at_maturity, memory_coupon, coupon_paid, + k, pdi_strike, trigger_one_star, style_is_eur): + if max_price_at_maturity >= trigger_one_star: + return (math.exp(-r * days_to_obs_y_fract[k]) * (capital_value + memory_coupon)) + coupon_paid + return _nj_caso_sigma(r, days_to_obs_y_fract, style_is_eur, pdi_barrier, capital_value, prot_min_val, + min_price, min_price_at_maturity, memory_coupon, coupon_paid, k, pdi_strike) + + +@njit(cache=True) +def _nj_caso_relief_one_star(r, days_to_obs_y_fract, pdi_barrier, capital_value, prot_min_val, + min_price, min_price_at_maturity, second_min_price_at_maturity, max_price_at_maturity, + memory_coupon, coupon_paid, k, trigger_one_star, style_is_eur): + if max_price_at_maturity >= trigger_one_star: + return (math.exp(-r * days_to_obs_y_fract[k]) * (capital_value + memory_coupon)) + coupon_paid + return _nj_caso_relief(r, days_to_obs_y_fract, style_is_eur, pdi_barrier, capital_value, prot_min_val, + min_price, min_price_at_maturity, second_min_price_at_maturity, memory_coupon, coupon_paid, k) + + +@njit(cache=True) +def _nj_caso_twinwin_one_star(r, days_to_obs_y_fract, pdi_barrier, capital_value, prot_min_val, + min_price, min_price_at_maturity, max_price_at_maturity, memory_coupon, coupon_paid, + k, pdi_strike, autocall_trigger, cap, trigger_one_star, style_is_eur): + if max_price_at_maturity >= trigger_one_star: + return (math.exp(-r * days_to_obs_y_fract[k]) * (capital_value + memory_coupon)) + coupon_paid + return _nj_caso_twinwin(r, days_to_obs_y_fract, style_is_eur, pdi_barrier, capital_value, prot_min_val, + min_price, min_price_at_maturity, memory_coupon, coupon_paid, k, pdi_strike, autocall_trigger, cap) + + +@njit(cache=True) +def _nj_caso_airbag_twinwin(r, days_to_obs_y_fract, pdi_barrier, capital_value, prot_min_val, + min_price_at_maturity, memory_coupon, coupon_paid, k, pdi_strike, autocall_trigger, + cap, fattore_airbag): + if min_price_at_maturity >= pdi_barrier: + if autocall_trigger == 999 and min_price_at_maturity >= pdi_strike: + return (math.exp(-r * days_to_obs_y_fract[k]) * (memory_coupon + min(min_price_at_maturity / 100.0, cap))) + coupon_paid + return (math.exp(-r * days_to_obs_y_fract[k]) * ((2 * capital_value) + memory_coupon - (min_price_at_maturity / 100.0))) + coupon_paid + return (max(prot_min_val, min_price_at_maturity / 100.0)) * math.exp(-r * days_to_obs_y_fract[k]) * fattore_airbag + coupon_paid + + +@njit(cache=True) +def _nj_payoff_for_path(path, days_to_obs, days_to_obs_y_fract, coupon_values, coupon_triggers, + autocall_values, autocall_triggers, memory_flags, coupon_in_memory, style_is_eur, + pdi_strike, pdi_barrier, capital_value, prot_min_val, airbag, sigma, twinwin, relief, + fattore_airbag, one_star, trigger_one_star, cap, days_to_maturity, r): + min_price = _nj_min_overall(path) + min_price_at_maturity = _nj_min_row(path, days_to_maturity) + + pv_digit = 0.0 + memory_coupon = coupon_in_memory + coupon_paid = 0.0 + + n_obs = days_to_obs.shape[0] + for k in range(n_obs): + min_by_row = _nj_min_row(path, days_to_obs[k]) + if min_by_row >= autocall_triggers[k]: + pv_digit = (autocall_values[k] + memory_coupon) * math.exp(-r * days_to_obs_y_fract[k]) + coupon_paid + return pv_digit + + if min_by_row >= coupon_triggers[k]: + coupon_paid += (coupon_values[k] + memory_coupon) * math.exp(-r * days_to_obs_y_fract[k]) + memory_coupon = 0.0 + else: + memory_coupon += memory_flags[k] * coupon_values[k] + + if k == n_obs - 1: + if airbag == 0 and sigma == 0 and relief == 0 and twinwin == 0 and one_star == 0: + return _nj_caso_standard(r, days_to_obs_y_fract, style_is_eur, pdi_barrier, + capital_value, prot_min_val, min_price, min_price_at_maturity, + memory_coupon, coupon_paid, k) + if airbag == 1 and sigma == 0 and relief == 0 and twinwin == 0 and one_star == 0: + return _nj_caso_airbag(r, days_to_obs_y_fract, style_is_eur, pdi_barrier, + capital_value, prot_min_val, min_price, min_price_at_maturity, + memory_coupon, coupon_paid, k, fattore_airbag) + if airbag == 0 and sigma == 1 and relief == 0 and twinwin == 0 and one_star == 0: + return _nj_caso_sigma(r, days_to_obs_y_fract, style_is_eur, pdi_barrier, + capital_value, prot_min_val, min_price, min_price_at_maturity, + memory_coupon, coupon_paid, k, pdi_strike) + if airbag == 0 and sigma == 0 and relief == 1 and twinwin == 0 and one_star == 0: + second_min = _nj_second_min_row(path, days_to_maturity) + return _nj_caso_relief(r, days_to_obs_y_fract, style_is_eur, pdi_barrier, + capital_value, prot_min_val, min_price, min_price_at_maturity, + second_min, memory_coupon, coupon_paid, k) + if airbag == 0 and sigma == 0 and relief == 0 and twinwin == 1 and one_star == 0: + return _nj_caso_twinwin(r, days_to_obs_y_fract, style_is_eur, pdi_barrier, + capital_value, prot_min_val, min_price, min_price_at_maturity, + memory_coupon, coupon_paid, k, pdi_strike, autocall_triggers[k], cap) + if airbag == 0 and sigma == 0 and relief == 0 and twinwin == 0 and one_star == 1: + max_price_at_maturity = _nj_max_row(path, days_to_obs[k]) + return _nj_caso_one_star(r, days_to_obs_y_fract, pdi_barrier, capital_value, prot_min_val, + min_price_at_maturity, max_price_at_maturity, memory_coupon, coupon_paid, k, + trigger_one_star, coupon_triggers, coupon_values) + if airbag == 1 and sigma == 0 and relief == 0 and twinwin == 0 and one_star == 1: + max_price_at_maturity = _nj_max_row(path, days_to_obs[k]) + return _nj_caso_airbag_one_star(r, days_to_obs_y_fract, pdi_barrier, capital_value, prot_min_val, + min_price, min_price_at_maturity, max_price_at_maturity, + memory_coupon, coupon_paid, k, fattore_airbag, trigger_one_star, + style_is_eur) + if airbag == 0 and sigma == 1 and relief == 0 and twinwin == 0 and one_star == 1: + max_price_at_maturity = _nj_max_row(path, days_to_obs[k]) + return _nj_caso_sigma_one_star(r, days_to_obs_y_fract, pdi_barrier, capital_value, prot_min_val, + min_price, min_price_at_maturity, max_price_at_maturity, + memory_coupon, coupon_paid, k, pdi_strike, trigger_one_star, + style_is_eur) + if airbag == 0 and sigma == 0 and relief == 1 and twinwin == 0 and one_star == 1: + second_min = _nj_second_min_row(path, days_to_maturity) + max_price_at_maturity = _nj_max_row(path, days_to_obs[k]) + return _nj_caso_relief_one_star(r, days_to_obs_y_fract, pdi_barrier, capital_value, prot_min_val, + min_price, min_price_at_maturity, second_min, max_price_at_maturity, + memory_coupon, coupon_paid, k, trigger_one_star, style_is_eur) + if airbag == 0 and sigma == 0 and relief == 0 and twinwin == 1 and one_star == 1: + max_price_at_maturity = _nj_max_row(path, days_to_obs[k]) + return _nj_caso_twinwin_one_star(r, days_to_obs_y_fract, pdi_barrier, capital_value, prot_min_val, + min_price, min_price_at_maturity, max_price_at_maturity, + memory_coupon, coupon_paid, k, pdi_strike, autocall_triggers[k], + cap, trigger_one_star, style_is_eur) + if airbag == 1 and sigma == 0 and relief == 0 and twinwin == 1 and one_star == 0: + return _nj_caso_airbag_twinwin(r, days_to_obs_y_fract, pdi_barrier, capital_value, prot_min_val, + min_price_at_maturity, memory_coupon, coupon_paid, k, pdi_strike, + autocall_triggers[k], cap, fattore_airbag) + return pv_digit + + +@njit(cache=True) +def _nj_payoffs_for_paths(paths, days_to_obs, days_to_obs_y_fract, coupon_values, coupon_triggers, + autocall_values, autocall_triggers, memory_flags, coupon_in_memory, style_is_eur, + pdi_strike, pdi_barrier, capital_value, prot_min_val, airbag, sigma, twinwin, relief, + fattore_airbag, one_star, trigger_one_star, cap, days_to_maturity, r): + n_sims = paths.shape[0] + out = np.empty(n_sims, dtype=np.float64) + for i in range(n_sims): + out[i] = _nj_payoff_for_path(paths[i], days_to_obs, days_to_obs_y_fract, coupon_values, coupon_triggers, + autocall_values, autocall_triggers, memory_flags, coupon_in_memory, style_is_eur, + pdi_strike, pdi_barrier, capital_value, prot_min_val, airbag, sigma, twinwin, relief, + fattore_airbag, one_star, trigger_one_star, cap, days_to_maturity, r) + return out + + +def _generate_paths_batch(prices_ul, cor_mat, num_sims, days_to_maturity, tasso_interesse, dividends, volatility): + num_assets = prices_ul.shape[0] + dt = 1.0 / 252.0 + sqrt_dt = math.sqrt(dt) + chol = np.linalg.cholesky(cor_mat) + + z = np.random.standard_normal((num_sims, days_to_maturity, num_assets)) + w = np.matmul(z, chol.T) + + drift = (tasso_interesse - dividends) - (0.5 * (volatility ** 2)) + increments = drift[None, None, :] * dt + volatility[None, None, :] * sqrt_dt * w + cum_sum = np.cumsum(increments, axis=1) + + paths = np.empty((num_sims, days_to_maturity + 1, num_assets), dtype=np.float64) + paths[:, 0, :] = prices_ul + paths[:, 1:, :] = prices_ul[None, None, :] * np.exp(cum_sum) + return paths + + +def _simulate_batch(args: Tuple): + (num_sims, prices_ul, cor_mat, days_to_maturity, tasso_interesse, dividends, volatility, days_to_obs, + days_to_obs_y_fract, coupon_values, coupon_triggers, autocall_values, autocall_triggers, memory_flags, + coupon_in_memory, style_is_eur, pdi_strike, pdi_barrier, capital_value, prot_min_val, airbag, sigma, + twinwin, relief, fattore_airbag, one_star, trigger_one_star, cap) = args + + paths = _generate_paths_batch(prices_ul, cor_mat, num_sims, days_to_maturity, tasso_interesse, dividends, volatility) + return _nj_payoffs_for_paths( + paths, + days_to_obs, + days_to_obs_y_fract, + coupon_values, + coupon_triggers, + autocall_values, + autocall_triggers, + memory_flags, + coupon_in_memory, + style_is_eur, + pdi_strike, + pdi_barrier, + capital_value, + prot_min_val, + airbag, + sigma, + twinwin, + relief, + fattore_airbag, + one_star, + trigger_one_star, + cap, + days_to_maturity, + tasso_interesse, + ) + + +def simulate_payoffs( + num_sims, + prices_ul, + cor_mat, + days_to_maturity, + tasso_interesse, + dividends, + volatility, + days_to_obs, + days_to_obs_y_fract, + coupon_values, + coupon_triggers, + autocall_values, + autocall_triggers, + memory_flags, + coupon_in_memory, + pdi_style, + pdi_strike, + pdi_barrier, + capital_value, + prot_min_val, + airbag, + sigma, + twinwin, + relief, + fattore_airbag, + one_star, + trigger_one_star, + cap, +): + if cap is None: + cap = 0.0 + if trigger_one_star is None: + trigger_one_star = 0.0 + if pdi_strike is None: + pdi_strike = 0.0 + if pdi_barrier is None: + pdi_barrier = 0.0 + if capital_value is None: + capital_value = 0.0 + if prot_min_val is None: + prot_min_val = 0.0 + if fattore_airbag is None: + fattore_airbag = 0.0 + if coupon_in_memory is None: + coupon_in_memory = 0.0 + + prices_ul = np.asarray(prices_ul, dtype=np.float64) + cor_mat = np.asarray(cor_mat, dtype=np.float64) + dividends = np.asarray(dividends, dtype=np.float64) + volatility = np.asarray(volatility, dtype=np.float64) + days_to_obs = np.asarray(days_to_obs, dtype=np.int64) + days_to_obs_y_fract = np.asarray(days_to_obs_y_fract, dtype=np.float64) + coupon_values = np.asarray(coupon_values, dtype=np.float64) + coupon_triggers = np.asarray(coupon_triggers, dtype=np.float64) + autocall_values = np.asarray(autocall_values, dtype=np.float64) + autocall_triggers = np.asarray(autocall_triggers, dtype=np.float64) + memory_flags = np.asarray(memory_flags, dtype=np.int64) + + style_is_eur = 1 if pdi_style == "European" else 0 + + cpu_count = os.cpu_count() or 1 + use_parallel = cpu_count > 1 and num_sims >= 20000 + + if not _USE_NUMBA: + use_parallel = False + + if use_parallel: + workers = max(1, cpu_count - 1) + base_batch = max(256, num_sims // (workers * 4)) + batch_size = min(4096, base_batch) + + batches = [] + remaining = num_sims + while remaining > 0: + take = batch_size if remaining >= batch_size else remaining + remaining -= take + batches.append(take) + + args = [ + ( + b, + prices_ul, + cor_mat, + days_to_maturity, + tasso_interesse, + dividends, + volatility, + days_to_obs, + days_to_obs_y_fract, + coupon_values, + coupon_triggers, + autocall_values, + autocall_triggers, + memory_flags, + coupon_in_memory, + style_is_eur, + pdi_strike, + pdi_barrier, + capital_value, + prot_min_val, + airbag, + sigma, + twinwin, + relief, + fattore_airbag, + one_star, + trigger_one_star, + cap, + ) + for b in batches + ] + + results = [] + with ProcessPoolExecutor(max_workers=workers) as executor: + for res in executor.map(_simulate_batch, args): + results.append(res) + return np.concatenate(results) + + batch_size = 4096 + results = [] + remaining = num_sims + while remaining > 0: + take = batch_size if remaining >= batch_size else remaining + remaining -= take + res = _simulate_batch( + ( + take, + prices_ul, + cor_mat, + days_to_maturity, + tasso_interesse, + dividends, + volatility, + days_to_obs, + days_to_obs_y_fract, + coupon_values, + coupon_triggers, + autocall_values, + autocall_triggers, + memory_flags, + coupon_in_memory, + style_is_eur, + pdi_strike, + pdi_barrier, + capital_value, + prot_min_val, + airbag, + sigma, + twinwin, + relief, + fattore_airbag, + one_star, + trigger_one_star, + cap, + ) + ) + results.append(res) + return np.concatenate(results) + +def volatility_certificates(isin: str, num_prezzi_eod: int, enable_warning: bool) -> List[float]: + global _cached_eod_underlyings + + if _cached_eod_underlyings: + list_prezzi = _cached_eod_underlyings + if enable_warning: + num_ul = len(list_prezzi) + tot_prezzi = sum(len(p.prezzi_close) for p in list_prezzi) + if num_ul * num_prezzi_eod > tot_prezzi: + print(f"Volatilita calcolata usando {tot_prezzi // num_ul} prezzi eod") + else: + fs_db = default_sql_query() + hist_price = fs_db.get_hist_price_ul(isin, num_prezzi_eod) + details_ul = fs_db.get_details_ul(isin) + num_ul = len(details_ul) + + if enable_warning and num_ul * num_prezzi_eod != len(hist_price): + print("Attenzione! Rilevati meno di prezzi eod in uno dei sottostanti") + print(f"Volatilita calcolata usando {len(hist_price) // max(num_ul, 1)} prezzi eod") + input("Premere un tasto per continuare...") + + list_prezzi = [] + for dettaglio in details_ul: + prezzi = [r.px_close for r in hist_price if r.id_underlyings == dettaglio.id_underlyings] + list_prezzi.append( + PrezziSottostanti( + id_underlyings=dettaglio.id_underlyings, + sottostante=dettaglio.sottostante, + prezzi_close=prezzi, + ) + ) + + _cached_eod_underlyings = list_prezzi + + stats = compute_underlying_stats(list_prezzi) + return [s.volatility for s in stats] + + +def correl_certificates(isin: str, num_prezzi_eod: int, enable_warning: bool) -> List[List[float]]: + global _cached_eod_underlyings + + fs_db = default_sql_query() + hist_price = fs_db.get_hist_price_ul(isin, num_prezzi_eod) + details_ul = fs_db.get_details_ul(isin) + + num_ul = len(details_ul) + + if enable_warning and num_ul * num_prezzi_eod != len(hist_price): + print("Attenzione! Rilevati meno di prezzi eod in uno dei sottostanti") + print(f"Matrice di correlazione calcolata usando {len(hist_price) // max(num_ul, 1)} prezzi eod") + input("Premere un tasto per continuare...") + + list_prezzi = [] + for dettaglio in details_ul: + arr_prezzi = [ + r.px_close + for r in hist_price + if r.id_underlyings == dettaglio.id_underlyings + ] + list_prezzi.append( + PrezziSottostanti( + id_underlyings=dettaglio.id_underlyings, + sottostante=dettaglio.sottostante, + prezzi_close=arr_prezzi, + ) + ) + + _cached_eod_underlyings = list_prezzi + + correl_matrix = [[0.0 for _ in range(num_ul)] for _ in range(num_ul)] + + for i in range(num_ul): + correl_matrix[i][i] = 1.0 + for j in range(i + 1, num_ul): + a = list_prezzi[i].prezzi_close + b = list_prezzi[j].prezzi_close + if not a or not b: + corr_val = 0.0 + else: + corr_val = float(np.corrcoef(a, b)[0, 1]) + correl_matrix[i][j] = corr_val + + for k in range(num_ul): + if correl_matrix[i][k] == 0.0: + correl_matrix[i][k] = correl_matrix[k][i] + + return correl_matrix + + +def array_to_table(numbers: List[List[float]], column_names: List[str]) -> List[List[float]]: + rows = [] + for i in range(len(numbers)): + row = [round(numbers[i][j], 4) for j in range(len(numbers[i]))] + rows.append(row) + return rows + + +def array_jagged_to_table(numbers: List[List[float]], column_names: List[str]) -> List[List[float]]: + rows = [] + for i in range(len(numbers)): + row = [round(numbers[i][j], 4) for j in range(len(column_names))] + rows.append(row) + return rows diff --git a/pricer/cli.py b/pricer/cli.py new file mode 100644 index 0000000..135a553 --- /dev/null +++ b/pricer/cli.py @@ -0,0 +1,342 @@ +import sys +import time +from typing import List + +from tabulate import tabulate +from . import calc +from .comparison import clone_context, compare_fair_values +from .db import default_sql_query +from .payoffs import PayoffContext + + +def _prompt_with_default(prompt: str, default: str) -> str: + value = input(prompt) + return default if not value else value + + +def _print_table(title: str, headers: List[str], rows: List[List[object]]) -> None: + print() + print(title) + print(tabulate(rows, headers=headers, tablefmt="github")) + + +def get_caso_string(airbag: int, sigma: int, relief: int, twinwin: int, onestar: int) -> str: + componenti = [] + if airbag == 1: + componenti.append("Airbag") + if sigma == 1: + componenti.append("Sigma") + if relief == 1: + componenti.append("Relief") + if twinwin == 1: + componenti.append("TwinWin") + if onestar == 1: + componenti.append("OneStar") + + return " + ".join(componenti) if componenti else "Standard" + + +def restart_or_exit(): + print() + print("Premere Invio per finire o R per riavviare il programma...") + restart = input() + if restart and restart.upper() == "R": + main() + else: + sys.exit(0) + + +def main(): + version = "2.2 - [12/06/2025]" + print(f"Pricer v.{version}") + + fs_db = default_sql_query() + + isin = _prompt_with_default("Inserire ISIN (default IT0006767633): ", "IT0006767633") + + check_isin = fs_db.check_isin(isin) + if check_isin is not None: + check_value = check_isin[0] if check_isin else None + if check_value == "KO": + print(f"ISIN {isin} non processabile!") + print("Certificati nel pricer devono avere le seguenti caratteristiche : ") + print("- Categoria: Coupon,StepUp,Bonus (con Barriera Discreta)") + print("- Status: In Quotazione") + print("- Direction: Long") + print("- Basket Type : Worst") + print("- Currency : EUR") + print("- CedolaVariabile : FALSE") + print("- Darwin : FALSE") + print("- Domino : FALSE") + print("- Magnet : FALSE") + restart_or_exit() + + prezzi_eod = _prompt_with_default( + "Num. Prezzi EOD per calcolo matrice correlazione e volatilita (default 252): ", "252" + ) + num_prezzi_eod = int(prezzi_eod) + + corr_matrix = calc.correl_certificates(isin, num_prezzi_eod, True) + volatility = calc.volatility_certificates(isin, num_prezzi_eod, True) + + is_dividend = _prompt_with_default("Considerare i dividendi ? s/n (default s): ", "s") + + num_sims = int(_prompt_with_default("Inserire # simulazioni montecarlo (default = 10000) : ", "10000")) + t_montecarlo_choice = time.perf_counter() + + details_ul_model = fs_db.get_details_ul(isin) + + nomi_sottostanti = [r.sottostante for r in details_ul_model] + corr_rows = calc.array_to_table(corr_matrix, nomi_sottostanti) + _print_table(f"Matrix Correl {isin}", nomi_sottostanti, corr_rows) + + details_ctf_model = fs_db.get_details_ctf(isin) + details_event_model = fs_db.get_details_event(isin) + details_event_exdate_model = fs_db.get_details_event_exdate(isin) + + ctf = details_ctf_model[0] + tasso_interesse = ctf.tasso_interesse + days_to_maturity = ctf.days_to_maturity + pdi_style = ctf.pdi_style + pdi_strike = ctf.pdi_strike + pdi_barrier = round(ctf.pdi_barrier, 4) + capital_value = ctf.capital_value + nominal_amount = ctf.nominal_amount + bid = ctf.bid + ask = ctf.ask + last_date_price = ctf.last_date_price + coupon_in_memory = ctf.coupon_in_memory + prot_min_val = ctf.prot_min_val + airbag = ctf.air_bag + fattore_airbag = ctf.fattore_airbag + one_star = ctf.one_star + trigger_onestar = round(ctf.trigger_onestar, 4) + twin_win = ctf.twin_win + sigma = ctf.sigma + relief = ctf.relief + domino = ctf.domino + category = ctf.category + cap = ctf.cap + leva = ctf.leva + + prices_ul = [r.spot_price_normalized for r in details_ul_model] + dividends = [r.dividend for r in details_ul_model] + if is_dividend != "s": + dividends = [0.0 for _ in dividends] + num_sottostanti = len(details_ul_model) + + days_to_obs = [r.days_to_obs for r in details_event_model] + days_to_ex_date = [r.days_to_ex_date for r in details_event_exdate_model] + days_to_obs_y_fract = [r.days_to_obs_y_fract for r in details_event_model] + coupon_values = [r.coupon_value for r in details_event_model] + coupon_triggers = [r.coupon_trigger for r in details_event_model] + autocall_values = [r.autocall_value for r in details_event_model] + autocall_triggers = [r.autocall_trigger for r in details_event_model] + memory_flags = [r.memory for r in details_event_model] + num_eventi = len(details_event_model) + + input_ul_rows = [] + for i in range(num_sottostanti): + input_ul_rows.append( + [ + nomi_sottostanti[i], + round(prices_ul[i], 4), + round(dividends[i], 4), + round(volatility[i], 4), + ] + ) + _print_table( + f"Dati Input Sottostanti {isin}", + ["Sottostante", "Price", "Dividend", "Volatility"], + input_ul_rows, + ) + + input_ctf_rows = [ + [ + round(tasso_interesse, 4), + days_to_maturity, + pdi_style, + pdi_barrier, + round(capital_value * nominal_amount, 5), + round(coupon_in_memory, 5), + round(prot_min_val, 3), + ] + ] + _print_table( + f"Dati Input Certificato {isin}", + [ + "TassoInteresse", + "DaysToMaturity", + "PDI Style", + "PDI Barrier", + "Capital Value", + "Coupon In Memoria", + "Prot Min Val %", + ], + input_ctf_rows, + ) + + input_flag_rows = [ + [ + airbag, + round(fattore_airbag, 3), + one_star, + trigger_onestar, + twin_win, + sigma, + relief, + ] + ] + _print_table( + f"Dati Input Flags {isin}", + [ + "AirBag", + "Fattore Airbag", + "OneStar", + "TriggerOnestar", + "TwinWin", + "Sigma", + "Relief", + ], + input_flag_rows, + ) + + input_event_rows = [] + for i in range(num_eventi): + input_event_rows.append( + [ + days_to_obs[i], + round(days_to_obs_y_fract[i], 4), + round(coupon_values[i] * nominal_amount, 6), + round(coupon_triggers[i], 6), + round(autocall_values[i] * nominal_amount, 6), + round(autocall_triggers[i], 6), + memory_flags[i], + ] + ) + _print_table( + f"Dati Input Eventi {isin}", + [ + "DaysToObs.", + "DaysToObsYFract", + "Cpn. Value", + "Cpn. Trigger", + "Autoc. Value", + "Autoc. Trigger", + "Memory", + ], + input_event_rows, + ) + + print("Elaborazione Fair value in corso...") + + context_original = PayoffContext( + days_to_maturity=days_to_maturity, + r=tasso_interesse, + capital_value=capital_value, + prot_min_val=prot_min_val, + pdi_barrier=pdi_barrier, + pdi_style=pdi_style, + coupon_in_memory=coupon_in_memory, + days_to_obs_y_fract=days_to_obs_y_fract, + coupon_triggers=coupon_triggers, + coupon_values=coupon_values, + autocall_triggers=autocall_triggers, + autocall_values=autocall_values, + memory_flags=memory_flags, + caso=get_caso_string(airbag, sigma, relief, twin_win, one_star), + pdi_strike=pdi_strike, + fattore_airbag=fattore_airbag, + trigger_one_star=trigger_onestar, + cap=cap, + days_to_obs=days_to_obs, + airbag=airbag, + sigma=sigma, + relief=relief, + twin_win=twin_win, + one_star=one_star, + leva=leva, + volatility=volatility, + prices_ul=prices_ul, + nominal_amount=nominal_amount, + ) + + context_for_compare = clone_context(context_original) + + fvalues = calc.fair_value_array( + prices_ul, + corr_matrix, + num_sottostanti, + num_sims, + tasso_interesse, + days_to_maturity, + dividends, + volatility, + days_to_obs, + days_to_obs_y_fract, + coupon_values, + coupon_triggers, + autocall_values, + autocall_triggers, + memory_flags, + coupon_in_memory, + pdi_style, + pdi_strike, + pdi_barrier, + capital_value, + prot_min_val, + airbag, + sigma, + twin_win, + relief, + fattore_airbag, + one_star, + trigger_onestar, + cap, + leva, + ).fair_value_array + + fv = [int(value * nominal_amount / 100) for value in fvalues] + + t_engine_choice = time.perf_counter() + print(f"Tempo fino alla scelta del motore: {t_engine_choice - t_montecarlo_choice:.2f} sec") + + compare_fair_values( + num_sims, + prices_ul, + corr_matrix, + num_sottostanti, + days_to_maturity, + tasso_interesse, + dividends, + context_for_compare, + nominal_amount, + isin, + ask, + bid, + last_date_price, + category, + ) + + t_expected_done = time.perf_counter() + print(f"Tempo fino al valore atteso: {t_expected_done - t_engine_choice:.2f} sec") + + print("----------------------------------------") + + if len(days_to_ex_date) > len(days_to_obs): + last_obs = days_to_obs[-1] + last_ex = days_to_ex_date[-1] + + if last_obs < last_ex: + print("ATTENZIONE: POSSIBILE SOTTOSTIMA DEL FAIR VALUE") + print("\n Il calcolo del fair value presume che il coupon sia gia stato pagato,") + print(" ma in realta non e ancora maturato (la Ex-Date non e ancora stata raggiunta).") + print(" Il titolo incorpora ancora quel coupon nel suo prezzo, ma il pricer lo ha gia scontato.") + print("\n Inoltre, se erano presenti coupon in memoria, questi sono stati azzerati nel calcolo,") + print(" come se il pagamento fosse gia avvenuto.") + print(" In realta il diritto al pagamento non e ancora stato acquisito.") + print(" Questo comporta una POSSIBILE SOTTOSTIMA SIGNIFICATIVA del FAIR VALUE.") + print("\n SUGGERIMENTO: verificare manualmente l'ultimo evento osservato") + print(" e valutare l'impatto potenziale sul fair value atteso.") + + restart_or_exit() diff --git a/pricer/comparison.py b/pricer/comparison.py new file mode 100644 index 0000000..cf35ca0 --- /dev/null +++ b/pricer/comparison.py @@ -0,0 +1,107 @@ +from typing import List + +from . import calc +from .payoffs import PayoffContext +from .report import generate_report + + +def clone_context(original: PayoffContext) -> PayoffContext: + return PayoffContext( + days_to_maturity=original.days_to_maturity, + r=original.r, + capital_value=original.capital_value, + prot_min_val=original.prot_min_val, + pdi_barrier=original.pdi_barrier, + pdi_style=original.pdi_style, + coupon_in_memory=original.coupon_in_memory, + days_to_obs_y_fract=list(original.days_to_obs_y_fract), + coupon_triggers=list(original.coupon_triggers), + coupon_values=list(original.coupon_values), + autocall_triggers=list(original.autocall_triggers), + autocall_values=list(original.autocall_values), + memory_flags=list(original.memory_flags), + caso=original.caso, + pdi_strike=original.pdi_strike, + fattore_airbag=original.fattore_airbag, + trigger_one_star=original.trigger_one_star, + cap=original.cap, + days_to_obs=list(original.days_to_obs), + airbag=original.airbag, + sigma=original.sigma, + relief=original.relief, + twin_win=original.twin_win, + one_star=original.one_star, + leva=original.leva, + volatility=list(original.volatility), + prices_ul=list(original.prices_ul), + nominal_amount=original.nominal_amount, + ) + + +def compare_fair_values( + num_simulations: int, + prices_ul: List[float], + corr_matrix: List[List[float]], + num_assets: int, + days_to_maturity: int, + rate: float, + dividends: List[float], + context: PayoffContext, + nominal_amount: float, + isin: str, + ask: float, + bid: float, + last_date, + category: str, +) -> None: + print(f"Motore GBM con payoff engine '{context.caso}'") + + results = calc.simulate_payoffs( + num_simulations, + prices_ul, + corr_matrix, + days_to_maturity, + rate, + dividends, + context.volatility, + context.days_to_obs, + context.days_to_obs_y_fract, + context.coupon_values, + context.coupon_triggers, + context.autocall_values, + context.autocall_triggers, + context.memory_flags, + context.coupon_in_memory, + context.pdi_style, + context.pdi_strike, + context.pdi_barrier, + context.capital_value, + context.prot_min_val, + context.airbag, + context.sigma, + context.twin_win, + context.relief, + context.fattore_airbag, + context.one_star, + context.trigger_one_star, + context.cap, + ) + results = [float(val) * 100.0 for val in results] + + mean = sum(results) / num_simulations + variance = sum((val - mean) ** 2 for val in results) / num_simulations + stddev = variance ** 0.5 + + fair_value_scaled = mean * nominal_amount / 100.0 + fair_values = [int(val * nominal_amount / 100) for val in results] + + generate_report( + isin=isin, + category=category, + fair_value=fair_value_scaled, + fair_values=fair_values, + ask=ask, + bid=bid, + num_sims=num_simulations, + last_date_price=last_date, + ) diff --git a/pricer/config.py b/pricer/config.py new file mode 100644 index 0000000..9a85e4c --- /dev/null +++ b/pricer/config.py @@ -0,0 +1,17 @@ +import json +from pathlib import Path + + +def get_connection_string(name="FirstSolutionDB", settings_path=None): + """Load connection string from appsettings.json in the parent project.""" + if settings_path is None: + local_settings = Path(__file__).resolve().parents[1] / "appsettings.json" + settings_path = local_settings if local_settings.exists() else Path(__file__).resolve().parents[2] / "appsettings.json" + else: + settings_path = Path(settings_path) + + data = json.loads(settings_path.read_text(encoding="utf-8")) + conn_strings = data.get("ConnectionStrings", {}) + if name not in conn_strings: + raise KeyError(f"Connection string '{name}' not found in {settings_path}") + return conn_strings[name] diff --git a/pricer/db.py b/pricer/db.py new file mode 100644 index 0000000..71ceb94 --- /dev/null +++ b/pricer/db.py @@ -0,0 +1,202 @@ +from typing import Any, Dict, Iterable, List, Tuple +import pyodbc +from decimal import Decimal + +from .config import get_connection_string +from . import models + + +def _rows_to_dicts(cursor, rows): + columns = [col[0] for col in cursor.description] + return [dict(zip(columns, row)) for row in rows] + + +def _normalize_keys(row: Dict[str, Any]) -> Dict[str, Any]: + normalized = {} + for k, v in row.items(): + if isinstance(v, Decimal): + normalized[k.lower()] = float(v) + else: + normalized[k.lower()] = v + return normalized + + +class SqlDataAccess: + def load_data(self, stored_proc: str, params: Dict[str, Any], connection_string: str): + placeholders = ", ".join([f"@{k}=?" for k in params.keys()]) + sql = f"EXEC {stored_proc} {placeholders}" if placeholders else f"EXEC {stored_proc}" + values = list(params.values()) + + with pyodbc.connect(connection_string) as conn: + cur = conn.cursor() + cur.execute(sql, values) + rows = cur.fetchall() + return _rows_to_dicts(cur, rows) + + +class SqlQuery: + def __init__(self, connection_string: str): + self._connection_string = connection_string + self._db = SqlDataAccess() + + def get_hist_price_ul(self, isin: str, num_prezzi_eod: int): + rows = self._db.load_data( + "pricer_ULPrices1", + {"Isin": isin, "numPrezzi": num_prezzi_eod}, + self._connection_string, + ) + return [ + models.HistPriceULModel( + id_underlyings=r["idunderlyings"], + sottostante=r["sottostante"], + px_close=r["px_close"], + px_date=r["px_date"], + ) + for r in map(_normalize_keys, rows) + ] + + def get_details_ul(self, isin: str): + rows = self._db.load_data( + "pricer_ULDetails", + {"Isin": isin}, + self._connection_string, + ) + return [ + models.DetailsULModel( + id_underlyings=r["idunderlyings"], + sottostante=r["sottostante"], + maturity_date=r.get("maturitydate"), + last_price=r["lastprice"], + strike=r["strike"], + spot_price_normalized=r["spotpricenormalized"], + dividend=r["dividend"], + volatility=r["volatility"], + days_to_maturity=r.get("daystomaturity", 0), + tasso_interesse=r.get("tassointeresse", 0.0), + ) + for r in map(_normalize_keys, rows) + ] + + def get_details_event(self, isin: str): + rows = self._db.load_data( + "pricer_EventDetails", + {"Isin": isin}, + self._connection_string, + ) + return [ + models.DetailsEventModel( + days_to_obs=r["daystoobs"], + days_to_ex_date=r.get("daystoexdate", 0), + days_to_obs_y_fract=r["daystoobsyfract"], + coupon_value=r["couponvalue"], + coupon_trigger=r["coupontrigger"], + autocall_value=r["autocallvalue"], + autocall_trigger=r["autocalltrigger"], + memory=r["memory"], + ) + for r in map(_normalize_keys, rows) + ] + + def get_details_event_exdate(self, isin: str): + rows = self._db.load_data( + "pricer_EventDetails_ExDate", + {"Isin": isin}, + self._connection_string, + ) + return [ + models.DetailsEventModel( + days_to_obs=r.get("daystoobs", 0), + days_to_ex_date=r["daystoexdate"], + days_to_obs_y_fract=r.get("daystoobsyfract", 0.0), + coupon_value=r.get("couponvalue", 0.0), + coupon_trigger=r.get("coupontrigger", 0.0), + autocall_value=r.get("autocallvalue", 0.0), + autocall_trigger=r.get("autocalltrigger", 0.0), + memory=r.get("memory", 0), + ) + for r in map(_normalize_keys, rows) + ] + + def get_details_ctf(self, isin: str): + rows = self._db.load_data( + "pricer_CTFDetails", + {"Isin": isin}, + self._connection_string, + ) + return [ + models.DetailsCTFModel( + tasso_interesse=r["tassointeresse"], + days_to_maturity=r["daystomaturity"], + pdi_style=r["pdi_style"], + pdi_strike=r["pdi_strike"], + pdi_barrier=r["pdi_barrier"], + capital_value=r["capitalvalue"], + nominal_amount=r["nominalamount"], + bid=r["bid"], + ask=r["ask"], + last_date_price=r["lastdateprice"], + coupon_in_memory=r["couponinmemory"], + prot_min_val=r["protminval"], + air_bag=r["airbag"], + fattore_airbag=r["fattoreairbag"], + one_star=r["onestar"], + trigger_onestar=r["triggeronestar"], + twin_win=r["twinwin"], + sigma=r["sigma"], + relief=r["relief"], + domino=r["domino"], + category=r["category"], + cap=r["cap"], + leva=r["leva"], + ) + for r in map(_normalize_keys, rows) + ] + + def get_isin_universe(self): + rows = self._db.load_data( + "pricer_LoadISINUniverse", + {}, + self._connection_string, + ) + values = [] + for row in rows: + if isinstance(row, dict): + if len(row) == 1: + values.append(next(iter(row.values()))) + else: + values.append(row) + else: + values.append(row) + return values + + def check_isin(self, isin: str): + rows = self._db.load_data( + "pricer_CheckISIN1", + {"Isin": isin}, + self._connection_string, + ) + values = [] + for row in rows: + if isinstance(row, dict): + if len(row) == 1: + values.append(next(iter(row.values()))) + else: + values.append(row) + else: + values.append(row) + return values + + def bulk_update_certificates(self, table_name: str, list_fair_values: List[models.FairValues]) -> None: + if not list_fair_values: + return + + sql = f"UPDATE {table_name} SET FairValue = ? WHERE ISIN = ?" + data = [(fv.fair_value, fv.isin) for fv in list_fair_values] + with pyodbc.connect(self._connection_string) as conn: + cur = conn.cursor() + cur.executemany(sql, data) + conn.commit() + + +def default_sql_query(): + return SqlQuery(get_connection_string("FirstSolutionDB")) diff --git a/pricer/models.py b/pricer/models.py new file mode 100644 index 0000000..1855b65 --- /dev/null +++ b/pricer/models.py @@ -0,0 +1,93 @@ +from dataclasses import dataclass +from datetime import datetime +from typing import List, Optional + + +@dataclass +class HistPriceULModel: + id_underlyings: int + sottostante: str + px_close: float + px_date: datetime + + +@dataclass +class DetailsULModel: + id_underlyings: int + sottostante: str + maturity_date: Optional[datetime] + last_price: float + strike: float + spot_price_normalized: float + dividend: float + volatility: float + days_to_maturity: int + tasso_interesse: float + + +@dataclass +class DetailsEventModel: + days_to_obs: int + days_to_ex_date: int + days_to_obs_y_fract: float + coupon_value: float + coupon_trigger: float + autocall_value: float + autocall_trigger: float + memory: int + + +@dataclass +class DetailsCTFModel: + tasso_interesse: float + days_to_maturity: int + pdi_style: str + pdi_strike: float + pdi_barrier: float + capital_value: float + nominal_amount: float + bid: float + ask: float + last_date_price: datetime + coupon_in_memory: float + prot_min_val: float + air_bag: int + fattore_airbag: float + one_star: int + trigger_onestar: float + twin_win: int + sigma: int + relief: int + domino: int + category: str + cap: float + leva: float + + +@dataclass +class FairValues: + isin: str + fair_value: float + + +@dataclass +class GarchParams: + omega: float + alpha: float + beta: float + sigma0: float + + +@dataclass +class UnderlyingStats: + nome: str + prezzi: List[float] + log_returns: List[float] + volatility: float + + +@dataclass +class PrezziSottostanti: + id_underlyings: int + sottostante: str + prezzi_close: List[float] diff --git a/pricer/payoffs.py b/pricer/payoffs.py new file mode 100644 index 0000000..7365f6c --- /dev/null +++ b/pricer/payoffs.py @@ -0,0 +1,560 @@ +import math +from dataclasses import dataclass +from typing import List + +import numpy as np + + +class PayoffEvaluator: + def evaluate(self, path: List[List[float]], context: "PayoffContext") -> float: + raise NotImplementedError + + +@dataclass +class PayoffContext: + days_to_maturity: int + r: float + capital_value: float + prot_min_val: float + pdi_barrier: float + pdi_style: str + coupon_in_memory: float + days_to_obs_y_fract: List[float] + coupon_triggers: List[float] + coupon_values: List[float] + autocall_triggers: List[float] + autocall_values: List[float] + memory_flags: List[int] + caso: str + pdi_strike: float + fattore_airbag: float + trigger_one_star: float + cap: float + days_to_obs: List[int] + volatility: List[float] + airbag: int + sigma: int + relief: int + twin_win: int + one_star: int + leva: float + nominal_amount: float + prices_ul: List[float] + + +class PayoffFactory: + @staticmethod + def get_evaluator(caso: str) -> PayoffEvaluator: + mapping = { + "Standard": PayoffStandard(), + "Airbag": PayoffAirbag(), + "Sigma": PayoffSigma(), + "Relief": PayoffRelief(), + "TwinWin": PayoffTwinWin(), + "OneStar": PayoffOneStar(), + "Airbag + OneStar": PayoffAirbagOneStar(), + "Sigma + OneStar": PayoffSigmaOneStar(), + "Relief + OneStar": PayoffReliefOneStar(), + "TwinWin + OneStar": PayoffTwinWinOneStar(), + "Airbag + TwinWin": PayoffAirbagTwinWin(), + } + if caso not in mapping: + raise ValueError(f"Payoff '{caso}' non gestito.") + return mapping[caso] + + +def _row_min(path, index: int) -> float: + if isinstance(path, np.ndarray): + return float(path[index].min()) + return min(path[index]) + + +def _row_max(path, index: int) -> float: + if isinstance(path, np.ndarray): + return float(path[index].max()) + return max(path[index]) + + +def _overall_min(path) -> float: + if isinstance(path, np.ndarray): + return float(path.min()) + return _overall_min(path) + +class PayoffStandard(PayoffEvaluator): + def __init__(self): + self.last_label = "" + + def evaluate(self, path: List[List[float]], c: PayoffContext) -> float: + memory = c.coupon_in_memory + coupons = 0.0 + payoff = 0.0 + + for k in range(len(c.days_to_obs)): + min_val = _row_min(path, c.days_to_obs[k]) + + if min_val >= c.autocall_triggers[k]: + payoff = (c.autocall_values[k] + memory) * math.exp(-c.r * c.days_to_obs_y_fract[k]) + coupons + self.last_label = ( + f"Autocall ? Trigger={c.autocall_triggers[k]:.2f}, Min={min_val:.2f} ? Payoff={payoff:.2f}" + ) + return payoff + + if min_val >= c.coupon_triggers[k]: + coupons += (c.coupon_values[k] + memory) * math.exp(-c.r * c.days_to_obs_y_fract[k]) + memory = 0.0 + else: + memory += c.memory_flags[k] * c.coupon_values[k] + + if k == len(c.days_to_obs) - 1: + min_mat = _row_min(path, c.days_to_maturity) + min_total = _overall_min(path) + barrier_check = min_mat if c.pdi_style == "European" else min_total + + if barrier_check >= c.pdi_barrier: + payoff = (c.capital_value + memory) * math.exp(-c.r * c.days_to_obs_y_fract[k]) + coupons + self.last_label = ( + f"RIMBORSO standard ? minMat={min_mat:.4f}, minTotal={min_total:.4f} ? Payoff={payoff:.2f}" + ) + else: + payoff = max(c.prot_min_val, min_mat / 100.0) * math.exp(-c.r * c.days_to_obs_y_fract[k]) + coupons + self.last_label = ( + f"PERDITA standard ? minMat={min_mat:.4f}, minTotal={min_total:.4f} ? Payoff={payoff:.2f}" + ) + + return payoff + + self.last_label = "UNKNOWN" + return 0.0 + + +class PayoffAirbag(PayoffEvaluator): + def evaluate(self, path: List[List[float]], c: PayoffContext) -> float: + memory = c.coupon_in_memory + coupons = 0.0 + + for k in range(len(c.days_to_obs)): + min_val = _row_min(path, c.days_to_obs[k]) + + if min_val >= c.autocall_triggers[k]: + return (c.autocall_values[k] + memory) * math.exp(-c.r * c.days_to_obs_y_fract[k]) + coupons + + if min_val >= c.coupon_triggers[k]: + coupons += (c.coupon_values[k] + memory) * math.exp(-c.r * c.days_to_obs_y_fract[k]) + memory = 0.0 + else: + memory += c.memory_flags[k] * c.coupon_values[k] + + if k == len(c.days_to_obs) - 1: + min_mat = _row_min(path, c.days_to_maturity) + min_total = _overall_min(path) + + sopra_barriera = ( + (c.pdi_style == "European" and min_mat >= c.pdi_barrier) + or (c.pdi_style == "American" and min_total >= c.pdi_barrier) + ) + + if sopra_barriera: + payoff = c.capital_value + memory + else: + payoff = max(c.prot_min_val, (min_mat * c.fattore_airbag / 100.0)) + + return payoff * math.exp(-c.r * c.days_to_obs_y_fract[k]) + coupons + + return 0.0 + + +class PayoffTwinWin(PayoffEvaluator): + def evaluate(self, path: List[List[float]], c: PayoffContext) -> float: + memory = c.coupon_in_memory + coupons = 0.0 + + for k in range(len(c.days_to_obs)): + min_val = _row_min(path, c.days_to_obs[k]) + + if min_val >= c.autocall_triggers[k]: + return (c.autocall_values[k] + memory) * math.exp(-c.r * c.days_to_obs_y_fract[k]) + coupons + + if min_val >= c.coupon_triggers[k]: + coupons += (c.coupon_values[k] + memory) * math.exp(-c.r * c.days_to_obs_y_fract[k]) + memory = 0.0 + else: + memory += c.memory_flags[k] * c.coupon_values[k] + + if k == len(c.days_to_obs) - 1: + min_mat = _row_min(path, c.days_to_maturity) + min_total = _overall_min(path) + + sopra_strike = min_mat >= c.pdi_strike and c.autocall_triggers[k] == 999 + + sopra_barriera = ( + (c.pdi_style == "European" and min_mat >= c.pdi_barrier) + or (c.pdi_style == "American" and min_total >= c.pdi_barrier) + ) + + if sopra_strike: + payoff = memory + min(min_mat / 100.0, c.cap) + elif sopra_barriera: + payoff = (200.0 - min_mat) * c.capital_value / 100.0 + memory + else: + payoff = max(c.prot_min_val, min_mat / 100.0) + memory + + return payoff * math.exp(-c.r * c.days_to_obs_y_fract[k]) + coupons + + return 0.0 + + +class PayoffOneStar(PayoffEvaluator): + def evaluate(self, path: List[List[float]], c: PayoffContext) -> float: + memory = c.coupon_in_memory + coupons = 0.0 + + for k in range(len(c.days_to_obs)): + min_val = _row_min(path, c.days_to_obs[k]) + + if min_val >= c.autocall_triggers[k]: + return (c.autocall_values[k] + memory) * math.exp(-c.r * c.days_to_obs_y_fract[k]) + coupons + + if min_val >= c.coupon_triggers[k]: + coupons += (c.coupon_values[k] + memory) * math.exp(-c.r * c.days_to_obs_y_fract[k]) + memory = 0.0 + else: + memory += c.memory_flags[k] * c.coupon_values[k] + + if k == len(c.days_to_obs) - 1: + max_mat = _row_max(path, c.days_to_obs[k]) + min_mat = _row_min(path, c.days_to_maturity) + min_total = _overall_min(path) + + sopra_trigger = max_mat >= c.trigger_one_star + + sopra_barriera = ( + (c.pdi_style == "European" and min_mat >= c.pdi_barrier) + or (c.pdi_style == "American" and min_total >= c.pdi_barrier) + ) + + capitale = c.capital_value if (sopra_trigger or sopra_barriera) else max(c.prot_min_val, min_mat / 100.0) + + cedola_finale = 0.0 + if min_mat >= c.coupon_triggers[k]: + cedola_finale = memory + c.coupon_values[k] + + return ( + capitale * math.exp(-c.r * c.days_to_obs_y_fract[k]) + + cedola_finale * math.exp(-c.r * c.days_to_obs_y_fract[k]) + + coupons + ) + + return 0.0 + + +class PayoffSigma(PayoffEvaluator): + def evaluate(self, path: List[List[float]], c: PayoffContext) -> float: + memory = c.coupon_in_memory + coupons = 0.0 + + for k in range(len(c.days_to_obs)): + min_val = _row_min(path, c.days_to_obs[k]) + + if min_val >= c.autocall_triggers[k]: + return (c.autocall_values[k] + memory) * math.exp(-c.r * c.days_to_obs_y_fract[k]) + coupons + + if min_val >= c.coupon_triggers[k]: + coupons += (c.coupon_values[k] + memory) * math.exp(-c.r * c.days_to_obs_y_fract[k]) + memory = 0.0 + else: + memory += c.memory_flags[k] * c.coupon_values[k] + + if k == len(c.days_to_obs) - 1: + min_mat = _row_min(path, c.days_to_maturity) + min_total = _overall_min(path) + + sopra_barriera = ( + (c.pdi_style == "European" and min_mat >= c.pdi_barrier) + or (c.pdi_style == "American" and min_total >= c.pdi_barrier) + ) + + if sopra_barriera: + payoff = c.capital_value + memory + else: + payoff = max(c.prot_min_val, (min_mat + c.pdi_strike - c.pdi_barrier) / 100.0) + + return payoff * math.exp(-c.r * c.days_to_obs_y_fract[k]) + coupons + + return 0.0 + + +class PayoffRelief(PayoffEvaluator): + def evaluate(self, path: List[List[float]], c: PayoffContext) -> float: + memory = c.coupon_in_memory + coupons = 0.0 + + for k in range(len(c.days_to_obs)): + min_val = _row_min(path, c.days_to_obs[k]) + + if min_val >= c.autocall_triggers[k]: + return (c.autocall_values[k] + memory) * math.exp(-c.r * c.days_to_obs_y_fract[k]) + coupons + + if min_val >= c.coupon_triggers[k]: + coupons += (c.coupon_values[k] + memory) * math.exp(-c.r * c.days_to_obs_y_fract[k]) + memory = 0.0 + else: + memory += c.memory_flags[k] * c.coupon_values[k] + + if k == len(c.days_to_obs) - 1: + prices_at_mat = path[c.days_to_maturity] + sorted_prices = sorted(prices_at_mat) + second_min = sorted_prices[1] if len(sorted_prices) >= 2 else sorted_prices[0] + min_mat = min(prices_at_mat) + min_total = _overall_min(path) + + sopra_barriera = ( + (c.pdi_style == "European" and min_mat >= c.pdi_barrier) + or (c.pdi_style == "American" and min_total >= c.pdi_barrier) + ) + + if sopra_barriera: + payoff = c.capital_value + memory + else: + payoff = max(c.prot_min_val, second_min / 100.0) + + return payoff * math.exp(-c.r * c.days_to_obs_y_fract[k]) + coupons + + return 0.0 + + +class PayoffAirbagOneStar(PayoffEvaluator): + def evaluate(self, path: List[List[float]], c: PayoffContext) -> float: + memory = c.coupon_in_memory + coupons = 0.0 + + for k in range(len(c.days_to_obs)): + min_val = _row_min(path, c.days_to_obs[k]) + + if min_val >= c.autocall_triggers[k]: + return (c.autocall_values[k] + memory) * math.exp(-c.r * c.days_to_obs_y_fract[k]) + coupons + + if min_val >= c.coupon_triggers[k]: + coupons += (c.coupon_values[k] + memory) * math.exp(-c.r * c.days_to_obs_y_fract[k]) + memory = 0.0 + else: + memory += c.memory_flags[k] * c.coupon_values[k] + + if k == len(c.days_to_obs) - 1: + max_mat = _row_max(path, c.days_to_obs[k]) + min_mat = _row_min(path, c.days_to_maturity) + min_total = _overall_min(path) + + sopra_trigger = max_mat >= c.trigger_one_star + + sopra_barriera = ( + (c.pdi_style == "European" and min_mat >= c.pdi_barrier) + or (c.pdi_style == "American" and min_total >= c.pdi_barrier) + ) + + if sopra_trigger or sopra_barriera: + capitale = c.capital_value + else: + perc = max(c.prot_min_val, min_mat / 100.0) * c.fattore_airbag + capitale = min(c.capital_value, perc) + + cedola_finale = 0.0 + if min_mat >= c.coupon_triggers[k]: + cedola_finale = memory + c.coupon_values[k] + + return ( + capitale * math.exp(-c.r * c.days_to_obs_y_fract[k]) + + cedola_finale * math.exp(-c.r * c.days_to_obs_y_fract[k]) + + coupons + ) + + return 0.0 + + +class PayoffSigmaOneStar(PayoffEvaluator): + def evaluate(self, path: List[List[float]], c: PayoffContext) -> float: + memory = c.coupon_in_memory + coupons = 0.0 + + for k in range(len(c.days_to_obs)): + min_val = _row_min(path, c.days_to_obs[k]) + + if min_val >= c.autocall_triggers[k]: + return (c.autocall_values[k] + memory) * math.exp(-c.r * c.days_to_obs_y_fract[k]) + coupons + + if min_val >= c.coupon_triggers[k]: + coupons += (c.coupon_values[k] + memory) * math.exp(-c.r * c.days_to_obs_y_fract[k]) + memory = 0.0 + else: + memory += c.memory_flags[k] * c.coupon_values[k] + + if k == len(c.days_to_obs) - 1: + max_mat = _row_max(path, c.days_to_obs[k]) + min_mat = _row_min(path, c.days_to_maturity) + min_total = _overall_min(path) + + sopra_trigger = max_mat >= c.trigger_one_star + sopra_barriera = ( + (c.pdi_style == "European" and min_mat >= c.pdi_barrier) + or (c.pdi_style == "American" and min_total >= c.pdi_barrier) + ) + + if sopra_trigger or sopra_barriera: + capitale = c.capital_value + else: + capitale = max(c.prot_min_val, (min_mat + c.pdi_strike - c.pdi_barrier) / 100.0) + + cedola_finale = 0.0 + if min_mat >= c.coupon_triggers[k]: + cedola_finale = memory + c.coupon_values[k] + + return ( + capitale * math.exp(-c.r * c.days_to_obs_y_fract[k]) + + cedola_finale * math.exp(-c.r * c.days_to_obs_y_fract[k]) + + coupons + ) + + return 0.0 + + +class PayoffReliefOneStar(PayoffEvaluator): + def evaluate(self, path: List[List[float]], c: PayoffContext) -> float: + memory = c.coupon_in_memory + coupons = 0.0 + + for k in range(len(c.days_to_obs)): + min_val = _row_min(path, c.days_to_obs[k]) + + if min_val >= c.autocall_triggers[k]: + return (c.autocall_values[k] + memory) * math.exp(-c.r * c.days_to_obs_y_fract[k]) + coupons + + if min_val >= c.coupon_triggers[k]: + coupons += (c.coupon_values[k] + memory) * math.exp(-c.r * c.days_to_obs_y_fract[k]) + memory = 0.0 + else: + memory += c.memory_flags[k] * c.coupon_values[k] + + if k == len(c.days_to_obs) - 1: + prices_at_mat = path[c.days_to_maturity] + sorted_prices = sorted(prices_at_mat) + second_min = sorted_prices[1] if len(sorted_prices) >= 2 else sorted_prices[0] + min_mat = min(prices_at_mat) + max_mat = _row_max(path, c.days_to_obs[k]) + min_total = _overall_min(path) + + sopra_trigger = max_mat >= c.trigger_one_star + sopra_barriera = ( + (c.pdi_style == "European" and min_mat >= c.pdi_barrier) + or (c.pdi_style == "American" and min_total >= c.pdi_barrier) + ) + + if sopra_trigger or sopra_barriera: + capitale = c.capital_value + else: + capitale = max(c.prot_min_val, second_min / 100.0) + + cedola_finale = 0.0 + if min_mat >= c.coupon_triggers[k]: + cedola_finale = memory + c.coupon_values[k] + + return ( + capitale * math.exp(-c.r * c.days_to_obs_y_fract[k]) + + cedola_finale * math.exp(-c.r * c.days_to_obs_y_fract[k]) + + coupons + ) + + return 0.0 + + +class PayoffTwinWinOneStar(PayoffEvaluator): + def evaluate(self, path: List[List[float]], c: PayoffContext) -> float: + memory = c.coupon_in_memory + coupons = 0.0 + + for k in range(len(c.days_to_obs)): + min_val = _row_min(path, c.days_to_obs[k]) + + if min_val >= c.autocall_triggers[k]: + return (c.autocall_values[k] + memory) * math.exp(-c.r * c.days_to_obs_y_fract[k]) + coupons + + if min_val >= c.coupon_triggers[k]: + coupons += (c.coupon_values[k] + memory) * math.exp(-c.r * c.days_to_obs_y_fract[k]) + memory = 0.0 + else: + memory += c.memory_flags[k] * c.coupon_values[k] + + if k == len(c.days_to_obs) - 1: + max_mat = _row_max(path, c.days_to_obs[k]) + min_mat = _row_min(path, c.days_to_maturity) + min_total = _overall_min(path) + + sopra_strike = min_mat >= c.pdi_strike + sopra_barriera = ( + (c.pdi_style == "European" and min_mat >= c.pdi_barrier) + or (c.pdi_style == "American" and min_total >= c.pdi_barrier) + ) + + if sopra_strike: + capitale = min(min_mat / 100.0, c.cap) + elif sopra_barriera: + capitale = (2 * c.capital_value) - (min_mat / 100.0) + else: + if max_mat >= c.trigger_one_star: + capitale = c.capital_value + else: + capitale = max(c.prot_min_val, min_mat / 100.0) + + cedola_finale = 0.0 + if min_mat >= c.coupon_triggers[k]: + cedola_finale = memory + c.coupon_values[k] + + return ( + capitale * math.exp(-c.r * c.days_to_obs_y_fract[k]) + + cedola_finale * math.exp(-c.r * c.days_to_obs_y_fract[k]) + + coupons + ) + + return 0.0 + + +class PayoffAirbagTwinWin(PayoffEvaluator): + def evaluate(self, path: List[List[float]], c: PayoffContext) -> float: + memory = c.coupon_in_memory + coupons = 0.0 + + for k in range(len(c.days_to_obs)): + min_val = _row_min(path, c.days_to_obs[k]) + + if min_val >= c.autocall_triggers[k]: + return (c.autocall_values[k] + memory) * math.exp(-c.r * c.days_to_obs_y_fract[k]) + coupons + + if min_val >= c.coupon_triggers[k]: + coupons += (c.coupon_values[k] + memory) * math.exp(-c.r * c.days_to_obs_y_fract[k]) + memory = 0.0 + else: + memory += c.memory_flags[k] * c.coupon_values[k] + + if k == len(c.days_to_obs) - 1: + min_mat = _row_min(path, c.days_to_maturity) + + if min_mat >= c.pdi_barrier: + if c.autocall_triggers[k] == 999 and min_mat >= c.pdi_strike: + return ( + math.exp(-c.r * c.days_to_obs_y_fract[k]) + * (memory + min(min_mat / 100.0, c.cap)) + + coupons + ) + return ( + math.exp(-c.r * c.days_to_obs_y_fract[k]) + * ((2 * c.capital_value) + memory - (min_mat / 100.0)) + + coupons + ) + + return ( + max(c.prot_min_val, min_mat / 100.0) + * math.exp(-c.r * c.days_to_obs_y_fract[k]) + * c.fattore_airbag + + coupons + ) + + return 0.0 + diff --git a/pricer/report.py b/pricer/report.py new file mode 100644 index 0000000..a24494e --- /dev/null +++ b/pricer/report.py @@ -0,0 +1,71 @@ +from typing import List + +from .utils import round_to_multiple + + +def generate_report( + isin: str, + category: str, + fair_value: float, + fair_values: List[int], + ask: float, + bid: float, + num_sims: int, + last_date_price, +) -> None: + rif_prezzo = ask + riferimento = "Ask" + + print() + + if ask == 0 and bid > 0: + rif_prezzo = bid + riferimento = "Bid" + print(f"Ask = 0, preso come valore di riferimento il Bid: {bid:.2f}") + + casi_over_barriera = [] + casi_under_barriera = [] + casi_over_ask = [] + casi_under_ask = [] + + for value in fair_values: + if value < 100: + casi_under_barriera.append(value) + else: + casi_over_barriera.append(value) + + if value >= rif_prezzo: + casi_over_ask.append(value) + else: + casi_under_ask.append(value) + + perc_over_barriera = round_to_multiple(100 * len(casi_over_barriera) / len(fair_values), 0.01) + perc_over_ask = round_to_multiple(100 * len(casi_over_ask) / len(fair_values), 0.01) + perc_under_ask = 100 - perc_over_ask + + print(f"Caso calcolo Fair value {isin} = {category}") + print( + f"Fair value {isin} ({num_sims} iter.) = {fair_value:.2f} (Bid = {bid}, Ask = {ask}, Last updated on {last_date_price})" + ) + print( + f"Sopra {riferimento} nel {perc_over_ask:.2f}% dei casi, sotto {riferimento} nel {perc_under_ask:.2f}% dei casi" + ) + + media_over_ask = round_to_multiple(sum(casi_over_ask) / len(casi_over_ask) if casi_over_ask else 0.0, 0.01) + media_under_ask = round_to_multiple(sum(casi_under_ask) / len(casi_under_ask) if casi_under_ask else 0.0, 0.01) + print(f"Valore medio casi sopra {riferimento}: {media_over_ask:.2f}") + print(f"Valore medio casi sotto {riferimento}: {media_under_ask:.2f}") + + gain_medio = round_to_multiple(media_over_ask - rif_prezzo, 0.01) + loss_medio = round_to_multiple(rif_prezzo - media_under_ask, 0.01) + print(f"Gain medio: {media_over_ask:.2f} - {rif_prezzo:.2f} = {gain_medio:.2f}") + print(f"Loss medio: {rif_prezzo:.2f} - {media_under_ask:.2f} = {loss_medio:.2f}") + + perc_media_gain = round_to_multiple(100 * gain_medio / rif_prezzo, 0.01) + perc_media_loss = round_to_multiple(100 * loss_medio / rif_prezzo, 0.01) + print(f"Perc media Gain: {gain_medio:.2f} / {rif_prezzo:.2f} = {perc_media_gain:.2f}%") + print(f"Perc media Loss: {loss_medio:.2f} / {rif_prezzo:.2f} = {perc_media_loss:.2f}%") + + valore_atteso = round_to_multiple((perc_over_ask / 100) * gain_medio - (perc_under_ask / 100) * loss_medio, 0.01) + perc_valore_atteso = round_to_multiple(100 * valore_atteso / rif_prezzo, 0.01) + print(f"Valore atteso: {valore_atteso:.2f} ({perc_valore_atteso:.2f}% su {riferimento})") diff --git a/pricer/utils.py b/pricer/utils.py new file mode 100644 index 0000000..91642ed --- /dev/null +++ b/pricer/utils.py @@ -0,0 +1,28 @@ +import math +from typing import Iterable, List + + +def round_to_multiple(value: float, multiple: float) -> float: + if multiple == 0: + return value + return round(value / multiple) * multiple + + +def cumulative_sums(values: List[float]) -> List[float]: + if not values: + return [] + results = [0.0] * len(values) + results[0] = values[0] + for i in range(1, len(values)): + results[i] = results[i - 1] + values[i] + return results + + +def standard_deviation(values: Iterable[float]) -> float: + vals = list(values) + n = len(vals) + if n <= 1: + return 0.0 + avg = sum(vals) / n + sum_sq = sum((v - avg) ** 2 for v in vals) + return math.sqrt(sum_sq / (n - 1)) diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..b50c68a --- /dev/null +++ b/requirements.txt @@ -0,0 +1,4 @@ +numpy +pyodbc +tabulate +numba