From 16b600af88738629ceae9323e09ab702014ef90b Mon Sep 17 00:00:00 2001 From: Oliver Date: Wed, 26 Nov 2025 21:27:13 +1100 Subject: [PATCH 1/4] Docs updates (#10912) - Small tweaks / additions --- docs/docs/faq.md | 4 ++-- docs/docs/start/index.md | 7 +++++-- docs/docs/troubleshooting.md | 6 ++++++ 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/docs/docs/faq.md b/docs/docs/faq.md index 47617dadc6..3f3bbe01f3 100644 --- a/docs/docs/faq.md +++ b/docs/docs/faq.md @@ -98,7 +98,7 @@ Sometimes, users may encounter unexpected error messages when updating their Inv The most common problem here is that the correct sequence of steps has not been followed: -1. Ensure that the InvenTree web server and background worker processes are *halted* +1. Ensure that the InvenTree [web server](./start/processes.md#web-server) and [background worker](./start/processes.md#background-worker) processes are *halted* 1. Update the InvenTree software (e.g. using git or docker, depending on installation method) 1. Run the `invoke update` command 1. Restart the web server and background worker processes @@ -150,7 +150,7 @@ or ### Background Worker "Not Running" -The background worker process must be started separately to the web-server application. +The [background worker process](./start/processes.md#background-worker) must be started separately to the web-server application. From the top-level source directory, run the following command from a separate terminal, while the server is already running: diff --git a/docs/docs/start/index.md b/docs/docs/start/index.md index 9a5b6b8937..c88c642976 100644 --- a/docs/docs/start/index.md +++ b/docs/docs/start/index.md @@ -123,11 +123,14 @@ By default, a production InvenTree installation is configured to run with [DEBUG Running in DEBUG mode provides many handy development features, however it is strongly recommended *NOT* to run in DEBUG mode in a production environment. This recommendation is made because DEBUG mode leaks a lot of information about your installation and may pose a security risk. -So, for a production setup, you should set `INVENTREE_DEBUG=false` in the [configuration options](./config.md). +So, for a production setup, you should ensure that `INVENTREE_DEBUG=false` in the [configuration options](./config.md). + +!!! warning "Security Risk" + Running InvenTree in DEBUG mode in a production environment is a significant security risk, and should be avoided at all costs. ### Turning Debug Mode off -When running in DEBUG mode, the InvenTree web server natively manages *static* and *media* files, which means that when DEBUG mode is *disabled*, the proxy setup has to be configured to handle this. +When running in DEBUG mode, the InvenTree web server natively manages *static* and *media* files, which means that when DEBUG mode is *disabled* (which is the default for a production setup), the proxy setup has to be configured to handle this. !!! info "Read More" Refer to the [proxy server documentation](./processes.md#proxy-server) for more details diff --git a/docs/docs/troubleshooting.md b/docs/docs/troubleshooting.md index c2b5b7f71e..1c34fd02f7 100644 --- a/docs/docs/troubleshooting.md +++ b/docs/docs/troubleshooting.md @@ -9,6 +9,12 @@ If you are struggling with an issue which is not covered in the FAQ above, pleas Even if you cannot immediately resolve the issue, the information below will be very useful when reporting the issue on GitHub. +## Error Codes + +InvenTree uses a system of error codes to help identify specific issues. Each error code is prefixed with `INVE-`, followed by a letter indicating the error type, and a number. + +Refer to the [error code documentation](./settings/error_codes.md) for more information on specific error codes. + ## Recent Update If you have recently updated your InvenTree instance, please ensure that you have followed all update instructions carefully. In particular, make sure that you have run any required database migrations using the `invoke update` command. From 5713cff1cbc2b66b875ae70eecfc979326043d56 Mon Sep 17 00:00:00 2001 From: Oliver Date: Wed, 26 Nov 2025 22:32:57 +1100 Subject: [PATCH 2/4] [bug] Stock adjust (#10914) * Extra checks on backend * Bug fix for adjustment forms - Set default quantity of zero * Additional unit testing (to ensure no regression) --- src/backend/InvenTree/stock/serializers.py | 8 ++++++++ src/frontend/src/forms/StockForms.tsx | 22 +++++++++++++++++++--- src/frontend/tests/pages/pui_stock.spec.ts | 10 ++++++++++ 3 files changed, 37 insertions(+), 3 deletions(-) diff --git a/src/backend/InvenTree/stock/serializers.py b/src/backend/InvenTree/stock/serializers.py index 421d943cf2..490ee2dc87 100644 --- a/src/backend/InvenTree/stock/serializers.py +++ b/src/backend/InvenTree/stock/serializers.py @@ -1678,6 +1678,10 @@ class StockAddSerializer(StockAdjustmentSerializer): stock_item = item['pk'] quantity = item['quantity'] + if quantity is None or quantity <= 0: + # Ignore in this case - no stock to add + continue + # Optional fields extra = {} @@ -1703,6 +1707,10 @@ class StockRemoveSerializer(StockAdjustmentSerializer): stock_item = item['pk'] quantity = item['quantity'] + # Ignore in this case - no stock to remove + if quantity is None or quantity <= 0: + continue + # Optional fields extra = {} diff --git a/src/frontend/src/forms/StockForms.tsx b/src/frontend/src/forms/StockForms.tsx index 508d7415c3..70476d591e 100644 --- a/src/frontend/src/forms/StockForms.tsx +++ b/src/frontend/src/forms/StockForms.tsx @@ -862,10 +862,17 @@ function stockRemoveFields(items: any[]): ApiFormFieldSet { const records = Object.fromEntries(items.map((item) => [item.pk, item])); + const initialValue = mapAdjustmentItems(items).map((elem) => { + return { + ...elem, + quantity: 0 + }; + }); + const fields: ApiFormFieldSet = { items: { field_type: 'table', - value: mapAdjustmentItems(items), + value: initialValue, modelRenderer: (row: TableFieldRowProps) => { const record = records[row.item.pk]; @@ -902,10 +909,17 @@ function stockAddFields(items: any[]): ApiFormFieldSet { const records = Object.fromEntries(items.map((item) => [item.pk, item])); + const initialValue = mapAdjustmentItems(items).map((elem) => { + return { + ...elem, + quantity: 0 + }; + }); + const fields: ApiFormFieldSet = { items: { field_type: 'table', - value: mapAdjustmentItems(items), + value: initialValue, modelRenderer: (row: TableFieldRowProps) => { const record = records[row.item.pk]; @@ -941,10 +955,12 @@ function stockCountFields(items: any[]): ApiFormFieldSet { const records = Object.fromEntries(items.map((item) => [item.pk, item])); + const initialValue = mapAdjustmentItems(items); + const fields: ApiFormFieldSet = { items: { field_type: 'table', - value: mapAdjustmentItems(items), + value: initialValue, modelRenderer: (row: TableFieldRowProps) => { return ( { await page.getByRole('button', { name: 'Scan', exact: true }).click(); await page.getByText('Scanned stock item into location').waitFor(); + // Add "zero" stock - ensure the quantity stays the same + await launchStockAction('add'); + await page.getByRole('button', { name: 'Submit' }).click(); + await page.getByText('Quantity: 123').first().waitFor(); + // Add stock, and change status await launchStockAction('add'); await page.getByLabel('number-field-quantity').fill('12'); @@ -342,6 +347,11 @@ test('Stock - Stock Actions', async ({ browser }) => { await page.getByText('Unavailable').first().waitFor(); await page.getByText('135').first().waitFor(); + // Remove "zero" stock - ensure the quantity stays the same + await launchStockAction('remove'); + await page.getByRole('button', { name: 'Submit' }).click(); + await page.getByText('Quantity: 135').first().waitFor(); + // Remove stock, and change status await launchStockAction('remove'); await page.getByLabel('number-field-quantity').fill('99'); From e47965e04e592bf83a4a3ad58841dd0e0d29759c Mon Sep 17 00:00:00 2001 From: Oliver Walters Date: Wed, 26 Nov 2025 12:35:25 +0000 Subject: [PATCH 3/4] Docs updates --- .../images/concepts/attachments-tab.png | Bin 0 -> 35775 bytes .../assets/images/concepts/parameter-tab.png | Bin 0 -> 50478 bytes .../images/concepts/parameter-template.png | Bin 0 -> 23510 bytes .../images/concepts/parametric-parts.png | Bin 0 -> 45460 bytes docs/docs/concepts/attachments.md | 18 ++++++++++ .../parameter.md => concepts/parameters.md} | 31 +++++++++++------- docs/mkdocs.yml | 3 +- 7 files changed, 39 insertions(+), 13 deletions(-) create mode 100644 docs/docs/assets/images/concepts/attachments-tab.png create mode 100644 docs/docs/assets/images/concepts/parameter-tab.png create mode 100644 docs/docs/assets/images/concepts/parameter-template.png create mode 100644 docs/docs/assets/images/concepts/parametric-parts.png create mode 100644 docs/docs/concepts/attachments.md rename docs/docs/{part/parameter.md => concepts/parameters.md} (79%) diff --git a/docs/docs/assets/images/concepts/attachments-tab.png b/docs/docs/assets/images/concepts/attachments-tab.png new file mode 100644 index 0000000000000000000000000000000000000000..1eff956ca9e35d82deb86708270a23892c0a0418 GIT binary patch literal 35775 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 OL|Rm3?(h?D* z6Od|X5gSDyv``a}8X%BBLI@-zIXjkl-}(P@zH`>M-g8*X|cKdujt*(PY3_~1V3+bR1DW9KMj8Q#qEgM5izmX zu@b9S*Mi^IUq5*XE+!`RUi9y$2EQC+i-K7w`fl0O z|LzIWvGK28f4RBwr=L#!a;NyV!qJ^O^HrL&emQpzzy3k!)~&ZU`Qz0auPNXDvm~?s zR9~XlRg0s27sv;MjwF36WL{MsH!vv3jI>DQ8)*7sEwl65T2}K^`L#Y~4I9CBL_dGY zKBkJcFS^wKk6!*UfsYiI?kW0qb1|{PtJn{!;I(y3JN&7mAkN_naDI&&_Fu zPaJO*LWWPBZqU4rB^EDwQeUsD!r#y2^*iWXlT|P`7=NTCm6T~19gt|G`&6s>OQ%-k zNCt0tZDo>vxnO%y7rDrMBCn)+#|D(~&sxXH<5v#LL65&nCnp9W!v23-K(3_)62sfS+;qVNhSyK8x{OrXVzHvZZz2OZKIEmY7*gT z&SoFo+|1{hhH7^TRQ)G2Hnco#k3dfLB~Kk_%XY(Rc7Avo*6({bhXt*@dnNFqeFCg2 z=?l6ER@W_|w8k+@MsNbDG^#4M-u1(tYtk+$)T*D}L{y%4{&E7U(Q5lVMN@8gbM5bL zC0Jyv{g*RR$kY77Pl=cKOH%q{Ew8z@I})iotj5o`d5|0VF0as16boWU-AA}RGYPIY5} z@tt@{1RcO-Y*H7AQMjotJ${hvn?tW%qbW#!Q|rleGp3!^G@Nqg_wNEwZ+B zyH4W1B4g>G!V^&k@56%}g)8_?BTkE)bQDI;|F;xlQbr{ClhTX9lNcJREAMo91d1-3 zXnvs1Amr9UYe?N0*aXL7JV5u(?<0*FKYd#)`m+wPRmezRxgbWZSbv(ozWxvMH%Ib# zA!Vr_&bG!LzWnG^RBGI)U%1Cjm(TtA5?b#X-pX8qD)gPYz3V*+7iSz5 zy90V{@!lpn+Qd{&E1IaO^kG#Lz?D5rBcSm0}j8#Om+&)O1J4}DFXAD(B zvrc53&`OE07&lZIR$AHL#4$zp9y%1XJYN*MgB|5Rrnmzpz%PtBPR;Ihick2=oydP& zbi7WPU(U|?$ued(WHdSjQ<3w^%zT$xXZE5u{7P@PW1Zog9;33XY0vmE?o-Ty(>k+$ z-?zT;4?3L>mi$qBSo-0a4rQ67>{KQ>-8f204&prCp055@K|gSLYLm*RNAeRDapu1o zx<1+vBdf!Vf^q9vL>OmzEEY+9>E~BT`H&vD&QHhHoBGCotRaRbuZPM%=+x~+YWbsA z8vZI;LFaO^0W|KbPF`#|F{|&}f-t;0dirueJmY!9@M1{u`lv_S7r?U}t#@a*GlQCJ zvI%X9PmG`EC#Rmoc51N`88HJW8;Xal{+-m5A&@%{c3Q>%IsFlF(YeaHx)Cz*lq#iU z(9#Nzij~#(?7mKo$E$l=)zfsx3>#wPjRHQ*JMy{7I$k|B0xr#uz^|wY9lhT`gs?u3 zeR?E&(0QsN&DMhKdh3BN|A0-*3#OgN%vn^iMoPCD+C+*m629%LH3daOJ$Pr&pDOiZ zQo4p4F6>v(Qhj=JsZP}~L*N;Hba#-CM_2aZ8D1-oYxR(X+5J>(TPE1!QCo@5#ZgFl z;aZO{f1_R5kdP0LcL}<-UdYohdsUS-_9<3DKaBkRAb~&+5w22UHbp2eQeHy7yv8t+ zV=s&6(W_$&xH-TEV`L9{rYxk3rf zV!b9$rbI|j80HePdkmta<_eWQ7y2+0ntSsJ%!oV6z0Y)!rqT%Cod4n$# z!QG8ZA(Sns;hwwQpkZrS`4SzfvHsrz_ z-?c{EN5^&cc3a^DLH(1}0xoQyFz5;S+_y^a#>=sT68#l-6>Hk1VlUqxRgs#;n3PBTrM+Bj#0yvg{ksholP{QQwfQWQMxcF1_6oL|+E zJ9xjkl}VUzMRSGmV5?uv0+&`)$1GXpuzMZDJyw`hh0oSFyA=jn7{0=skU`Pj`BV&r z&EL4G{?e)D)(rk?EG$i`S+J>-AUnRGt>7G%;ozat*S*=WBhQgt1$97M7W1k7J zCKAVS`+T@h6`AC-T@P8eEB?*?!j77Qh;}6Ml_cBQPX#*ShN>=MjE<&Wjf=u zh2h*5{ddJTBMlm&l^6n}GXIQ*990!3vdLmzmdw{6_gCC}<{fM8&)NIS2IIH2JQG^V z9F6ljodSIo1<~vN+chxlJp;iliwC7CWdv=+rh)FNEScWT0nPBJ4f5JK!W$sQNGcw< z@^;eJlru&{&%POpwIsIiX^z6GfQe?A53JA62+QwIe@^_2#)dCVH$2;ai8=p17Fspl z?}kB5fc*!ZADSQ<@d~{8v~UKWhZWX1btptB1V0ZSuTL9GRol0$)R7>}I}kFP(-9^a zz5KDD&d;uI*IW>(Zo2GFHm4&69`e?lkI^q0ODYPU?e2G!#?$qk=CbQL7czS>%ccz! zw}Qe-N!ft@O-Lof?Du}LRXz<1H&u3@Zku@={7zABrtT_1foBxx+7Rg&JdjE(EHd#T zM>G#`(mK)yYJDxoB+MPEnIB_5IzGz5BE&hhJPCzP`k?_U6HcF=tVsJzZEtEv`pzfM ztl}Akg8dE84I)B!k9t?C4*$fjZ9Kj^z|1#FINtH6W-X_UCw!u+DaBjJNMGM%hVAS+ zi!po&?`(4ugcW^u1b@oR*Sk1nhM@lxE?JEapP7k@y~ui3a5nx({~w!=Ryz-VRgEjJ z1s93t!NOPF`d@n@m`AG)ZBOob@Lf0J(%ZlMf#>t2X9yE-_f^Uty8gukRx{+0owiyp zu2chJ7h1?0wkdMpH)|BtEY0L=SQmtj024w?<^m1jLF}Mc7ctw{a5RzQBWjq?)qXeZ zCBdkKCSkGjq4|9EnMvW8k}y=r=LoO!m6nFW8T+_Cx?vw0L6SYE)J^ehxi}rO{gAdj zCOkTkdRLj!TbHzmEM6GxHNZi#is*far5Y)3LPbeB=6A=y(ZDWO{DnGr8T6%g=3~vcAhOsFOcL&7&TjNE))i@^R>64OlY7< z!%Gdrxl%J(F zi_HjJLFc3HiQXxqs7Ue~ULDQU%Q)&L`_wGGDM_#Puoo5<)>#5mQa5v$N-qO$ zE$&@6@hru!V#3v2?#;yH8r|VlC#99CI1|MM0S_HcO$!-93mJ?$9wuz&U2}p);y&Ao z!0ApNgTNU27&2^wr{3hLOAnzLk(}Ym@ey$)^lS$egPeRdp_xb3s^QM$Gad28!@SSo z!$JYa1R;HKyP;>9r%IHRlF_wHhhr)@eH`OAy_U4sr(rtGKAT?aI67JOHTIlYaQiq) z6IGaz4&gkt@LQfujd3HwFFRv+i#CQBu4ltfhSSII+Jzs*HW25QxrFbpp_>l(A{?G;%xyk#KBDzC*Qo++@TV@Z_TmKIUI9xv zqQv?{EGkr{lyXk3n2Fkk8zsfazN5~V>dDqS4;ODghg7Oo6~9yZg?@Q}cR1 zy;Dv>$UC*Bmxhby-o@|NJd7Khfd@{IKYcWQEE)PLTh}#O z3&qHQQfkjn#!}{P_*X0ap$SEj9uz{6nL~CK0T|x9G_9ja8QQXC{mDLGb57n;Tc?W4 zPuU6-*&T_&+=FQ)({q2C-1$`M6XuU;wN zgaXN^Qo!vc)UnzOL4N(T*#ffgc8xRy1dUh-v;Dm^^t!P2A;Uf*WCBw?{?S;P%$a%; zg+c3m#NPiqGOuY7a%p$u0$&h`Gpc~agIH|}U8*rzyDxy%| zZW~?gY`Xi-Bi{~$uMYW98~pwBOr;F&(7X1x2h%1$77V#vsoiO%q}v??eGu+;fJi#! zKbIY5+^XL(Ot;&9xzwOePANYjXKcG;GWQ+r_D9sWlo9H_x_q`yw)Z8=4whfo1Sh4U zA#}R6*%dxAA3-y$+_7gqp@U_Gq1~w%5=XVh_w0RJ(iHL+S~FnN1G}+-m)S#4iYDJ^ zU=N7D(ukB$a`cf>)kd1ex?p(sEj8nlI2)yRGK_3oL$lCjSuBc z4gD~ZXAw(1g{^+yOrracHRSrTQ1Hdl72^d()nmyZy}0=-1a*<}OyjA(bshwioL@=5 zYKm!m@0!Y4!t@C_#{B(L`PPN2y#yg2B!$9@uSZ+;hV5#@*q}01M6WKGx-1w=L*^Te zrJ<`|)^I2`xny{vC&!A8m=}aAg$GW{jk5KI!f1t{I3zW}hr@W0prjcd<`<>9fc&3v zH+DPd^BU7tPHd1h@Gf>RHb&(#$$q49yvz)Qqr>T!=yc%U?LwivbzbsUTIz}-YR4vu zLgXQM>?-G#gn{{R`1^d$j8@Hi zRE|AdImQY<5i!&A^f6WNrMOO=n9w_;QpI#EKh?5A=Bg8oGzIu7bs}4daOFG#r~M7q z^KmCz1WUep+_6uYh~&QZY?qCvhBf&GzTMFVXFIcY8jJ)T>RB%6fyMmhoG;#8-CbZ> z*`BUOs3tI)5sd3P-`b z&t&g-DicqvwT|{f&sLJI+#1-N)Q?rtghq4;I$PqZY<~oYC&Zzu@|CZpe_rzCyJ17O z!rtBzF0U2t+K_Hv0wPEc6up=!LpNCLKOU8O-T4%zvfXdYOqb&B~IbLO> z*u{B~mZo-~=1WDI)1gZro8T02&F5WGeYx0XxK;Q}z5-1D(0tRd8kz8T=>uLNwt5by zc>=<>{$m^;n@ZX>r`MqG&ytp!%ZI+K9**ILGxIMY6$4r1cH`}5^ctx6;j~SSaM)`r zwD3}u=T|^~@mlLR9;Q{&_8ihH;cP#$UHd6D4<{V4tDKG+v4)d!h@WQ0YNqMF=I+YG zLfpQ`)I9bUWnwK`gLF)1OZE`M`n4*zR=*-@AY7dF961 zX)XY#g~uoNWJ7H3;8P+ZGJwm!ETKrkD(V}09fi`p{9yKso+Dzy#X}UWOI$uH!XaEy zgCbmIG4le5Mj`x_7*H4hFXb`pS8woSI-fyS+nr+fCkX49%^E^(B5VDyNQa61<&s$B zct)i722ij*F1s2Tby%q_p*PwRfqM{0ij?UdK2bdA5{(rNwv)9GR5>cm214sLqVvPV}4NuI9O;_er`1j#)M^D12Lst7E( zvDE&7wJr5t7g2AFX_t*4p1QtW`n}IiV$f1vA{B>#zoNX~w%WslR3;E@uNzx2#wzO} zy=Ux6UJ4z$Y1AF3UWa=!9_6yg*PwnQG1;jN9&OzIvB?)WM3ulTC}F^2y7}HC8iXUK;P`yUJrgU8Mr#XvA0_lWmg>nQ zZ-jM5N2KDogYKQ4O4;G{0vasL{1}D@i(=c4PT~#2&{JoO!t2rFw~!bOGmfOXs1p#B zeuX|?gm{fI(sS=wBG*~F<#r%&o(3eHpZm{Z@}=bt-)p`o7d~{0&GLx{0BeqCOaXA! z{Y{0h(9&jZ1?o5L%bOeFUV_miW0yB(P`@L|i94fQ*R65kS+@|Pg6Crwhm8#vs1`9s z9L$1akU(+Z!8V~$nLPoX*dhyKZ>JP>;EDc+M&f0L(s>7;u*lv*#Q_V=ROQXMl_7e% zKcPuAX=m5bF%c9cSoR?-KSFzQN^#sxW#{%4TLmvlU#qa*+vzER zhzzA?$@$cDtW!!9q9XXQ`u+3<-R+ zWq`VCJ|2`|z&(wY`kcVk@@LK3%t^>~#|iNMz4ld$g_XmC&yE5vfI|rUCBxAVn=LLD zF``5&^PoqDrBxg!v@R;|Sol1~#Ra@48{d+}jlxcI*nS4Bv4PT<*)vNlI}%$5OEo>+ z2)7vWGTu7fEMer_ms?8UKBc>u+$Q2cyOs_KY3f%v-4>9{eTvggpqg67+Pzt92MJb3 zc=GZ+Gfe&=J7s%OwdLdTy@z|)3SXl{C|qxV=3iv5!Fv|nhV-8HdvDTHJw=?^VUn{F z?mo2Xk&|lK*~4BD+b;SAlsd7}C3PH+Ui(&FEpv0urAKJtK2G9Y!}3SF+f7`IJRO7N zHHU&sW`&B$gWa11wav0clkYrOb}Ld-jN|(O9CFl(Qy2Bo#{0ssP_!_BEBJ zQ0YjvXOdRLY!C3#Q0gB^#k~`n)2K(|5YDQlT3yNV*{z52Dpu*n&h4&V&ecmM;mu`^ zXrX1gzsI57DWE5_19(*|Odu-Di@IXyizYJ_U9rtMtQIpfz!=S74tK~0&U-81BW@JLR zC`^N@E%gAWyw`d46#$xMni`}H7avO(@f>H0)uGlx(nI$Tnz123qj3nFaIZc4CK;D2 z2V(BsL~7j*5H(@3&p@Wy6A$S{&L2IB@e)jwZRYe{pYB)ikE2VIP4=f2H{6v@n;yq^ zb~}{&o@#+>oWN)Zt>WlrYR6&Jul^er572liQ9T7lRFlQ$5V)bygYiAd5WQ=4zpA}c z4UydBl^=ag`qT^##d}DND(_ z3XWs)sfQm?b-U$tmsH-?{~K0gh+@@Yhgky}ethIg3gffH^j+0I^pK_&6o`$gvyKUY zd3%)5V(YvyN&bi_=&zQ?N)ojRUi~xlggIqSUk8F)Ka7QbGAa^0FAj8RS4eX4CYkvp zDDWe@E6!}Y)Z0}_v$*N4T!|S}L`>CFG2!$Ts$=M4hl!GHRp7@5TQv!*ObH@P zIGN%H<&aB1gRtF8Ft|#e0SIitW%jaDEbih0R|?xV0=oJfdAnqJyE~0?DDO43_fD+N zEZ61NDWp*I+@=NBo=KhXGpdaR4w^(Ym6*WCSJI0FkO8cDA#^mjJ{S4SvHhU%>AePK zvabQ2Sdt9kyj#-)YY#2ECEQC%BkPOLb~EHYWo*S6zK#uhMn84JJ>RZa$c+W1Iw6f> zVss${%_zd&S7_jHRP1$_v@!0n6IBuxq@>w>p!X6cJ^@xG5D!43&VWV^Q|dP>juPRP zFM5l^#*bdZ(A3g(nsUuAl%M^5M;zGT?6sh`U;I~>*{@$oPU1WB;(WgtzagE}s~PCC z=3JF{Frgv??&z1F(lQfEJMl*`iEIrEI-=ESn-A$7rjQR>VNzJ{w;kIZ@O50^oIo0A z=_rDvFBfgyx8+z*^v+iRR9W@ks*~5dp4cgAq-7(S*XzG8|F~fOR+EO}VY?-^%D|PH zeB1G!UIuLTiN4`VLy=FbW(n?NubGX;UNem071lnI*2apd%KmM9?kP)bDkY)|#n&A= zrYkuR@HPzD8@~oQCMQ#~+WD}krpC@li}M;_akdq+A3^fP2TX_>XmTmBj=eNPP23kg z{VLJ=jWvPalM%ZgAuK{CX;EupS8axm@WmVVbW`D^hi1^aH~^@if+B|X2$a_|gB=LE zkKmOYpX0$Gd;09)R&u|`G4 z16n98Xll3!Xa!h{rKA5qyhHVD~xY(LHWF?Uey`$S%$FMxEm+VGG7ZwftC^(bD8Id$g3#Z#uvwtuGa}%JZ9@T+vjl zf&U66D(A3;4(tAJ3?tN2;jw`zzX8V+T6&aXC?l;B zy&C_yhc?(NJnarT(8$kdo=?qvpx6r-jeUoRTQzDR9GOyXo1rsu>ogZZ_o8D>@>}8j z*eO#>3;X4G-U_+O;>vPHGn^P=UGguGr1ldV#Z1w{nR<))s5u{ z+@l;3MiM0xEI`rn#Whza-^{o@XcgDYS<1f@mX8HcEnUX}6V8ym39(7#^|P%oJQGZn zNP{mVABiS$@~6DAnmCqdw|#a7u4ljuBudq>T)>5I5up?#FhpR}X+|weKo}BI#iQ&h zy2)jW6P#}G$Ao2CcI(0b=u=O%T{STquveWG)J6rt?w)z#7j>*EMY1n~1tRV>3I2UbtFv8}B)LSWD(77` z6a|AgeYy!sDS&6?{V5H5Gqq%^6frLVYP$*sLz?>>1pwy&lQ&yN4GXscXSeVPMDjNa zC*+#a$8Uh1muMEGm+0g>v%$BbU)AF~@rQYp-Mu#XcxgoEttMu!L~YiDFmvsnTkt0; zByf&dzuPVdV6f*4Dr&^EMK*7#dNHmP#VZ&pc5P+q4JXDCk;1ro$Ewd{iXZ6cG9e+$ z_x8xFo>Dynnehty!v3zT2%np?FQYtx%+&vUB$rDWaHnCaQ_9+}IDgGoewzBG zJueQC$JxuagwR=Crt%0Q{m$k1hZm?iO6l`=Ij_k=etq_ZYqr%^AFI`8*s<95^O|2< zhWG2F6(LvNg1N#|p_J_5>u)DhIE>1Ekj7M1n2sLiTWBAu`KcE|So?Yz)egdal@Q*n zmSd;@55{cPcq-12Q8TvCpoCobC<8{R6poNv2?V=1DnT3$5!Qln(o>|1rv4Y#6z@aV zKMMlpLC3k*tV)CLml;VzbiYB8A zbeMS^x2dqMgao>^CO4OatWsJ2&v(7&lRz2R9xpYh?wemQccb=himjIS_hIw=jh{O2HkaLOGYNbpGQOKB ze)>6t_}XR(SW6J>^Fdz9)c}c< z>Wlbn1{EySA-QMLxYLI8H*=KA;V|a?1}uWP02-rxp7vW6QE;r9J5E`# z_xqFi$?VYrBV;w|Zb?nMvBv~^#ZHf?Fa`BE;=8NO4M;&zCt?{$$K}{3t2`Q1y?!Oq z6%26fkat5qw^m#)p$PcBG~S4$Uf-8RTo(q#%_Y?E+5o~H)^{}uH<(QXKHMWJMOT&^ z^eFBbW_kmCW&xGgu_MKInuEm~a>{rIL4ERqQ#JXDwa{w zLeO)ex9ic<7sjx1FzA*?&t5e(yYQJ-jlIf_ae{%c3%dgfeZ1__kC1%P0p;EXW4**j z!kN*1b@OiQsE(Mb)z|IX1VB8PWs&VQt4vfa1kFJis&i1!D5LQ^fi7qLaBBKQGeNlf zWJ7=#tTyHQtiu(0TCaNt($yEts)2EFgjZquY|(I|TG&6PRV`&btSl0LAj{5;=9f{~ zR>i3zt~3wf-RMdUnSU9d%Qb{)#8=$XVb9ofpP zuWSvg!lg@9={*nJCX)feHx`R#J&YfUSpN0W4W6UgD|U6s9z;I+aRC66M6Ne|r&_ye<#YyOQE@$nC@9^pd7DUH9?! z5oQ=5f2gdJmMvbHJaqWl@_c%v_-VOGl%SWN;c2^Jis4-Eiy1_>zrD%r{_1UFQ(qm5 z!k-;{hzZls&KdCXGmO3V>&j#_F)C~2TeMN#4r4#J*Sx$sO-}&BQ!Z{8AHLe1!CoiP zgz)tTyH+c+Dj#s0<`xDKTXev#6`vDUKQhomvn01VE+0>^%1+V?YIAe@$vHy>f7br{}rv~2e;Wh{l8+k{2+qA zxbwf@ZrsxTZ)_}Q_`crV^S#@2^y8qf+-5X~70UUzs;)x;zv;)(L$kbP%*DcMnw|h@ z>^)?kZ|{t0gnx|;V(mxQWXUHPXKG|W-VEHfLciDxd^&9@g=0G~z9m2zX-Zr^82Q`Q zW6jr`Pl2*+Thhzp0EhhXtYT-S{==94S;REQg%+%#eQZ`YX-?t2zIRBXp?gM^lX_c! zvO`V6Is$HWOYqficKFx(Mz~5)kj-5aQ}ioyz~rCE59ewnS7x&scG^C z{)oTE)+=!%^yy~`g?DRBxNIq9^I`tXWOC4(ybMpXdgLQa_yC^nt@C?%#rFFW4Kh47FSBsWJX%+jS)N(Y>&*q-tb(9`9%j!&vPV|+m$=Q?>yTG$?uSmSN8SU^e#Ji zx!P7f+u+Zcli!7Jp+YSDynZFHLgwU3%U=f`Z*9JtcOA0bbZhy1&LSy-^=MOrRd_PL zJ-vqCI(F<=`2nl&FoMj=pUaUtw$VQ!cQ78;=hh=gU7rdIty^;y1Xou5f41%Z>1U1a zk^@xO$~w<8+uLOM^9RCAyWO29FKW#Yi;%mNV|Jym&tA`{v|aQ-mh{7_njl`~GV)e= zYQOpw>Q`uy6xQ!=o?0t)t`uGK0f?l5oLzN0N9CK%iy1{j^i0`tdGEgOJ##E7&eeS? z)}Y91^a%WDf*}c3*0MAiYIs7aGJjCsvM5q*-olR3H1~%QtoN*a<$H#{#A3rfEY>T+ zVogJbA)clc^F?W=uTQ=H;%h&4#5u=fa~?lS7q{qPF0oQFTctk{2+cKpBPFz+gbgv@`bull}mvBrTf z^^v7uoPHB@eTToBg4pA7K&94Qd_9l}vB^34gCX7io1~FSy7~7o4oI87{y3;1wp;u^ zc^L(oHn2(V*6;gyp)(ub2VQG`apWJbUHp5|sZ;;q$oPF_QN(S0uV(*4UOTrk?Z*EW zvb!Q;Kl4Xg6Vr}`$RPe!c(MuRA>?m`x2h12EB;6WHzwn#$^dKlw#HwqMtI!c;(LJr z3;s?2ZioCIFK4p|8r}I3amCOtNp6^x_ez56H)$p?Zd{=B;V(C?zP~$tYB#vsw>4iN z?zF)}KvnCwIx3T}okF3+tD1FMp7Z|KrXHkF6+_7W54Y{hyPyt;pu`DwnMap_J#!Q= zs0o0l2D+^Cr(Xh>a45%X3@!R=Vhk~Z6>@0t3B?u9piM`dZAdqLeq30X#$ zQ)bzvD^`Seo>H4e8JQ1VZoN)fEblm}chFc;(J|*n@1(p=_2s{{KX7b>Ne1j#UV^Dh zQSDMEQo=IZJi)$>Q_BD!A8FS?yFZv4^{_R-8)9kTEp*>pd}$! z!p|tnxu$kQ(Cl*k%Lk$-@kJ3C?>!tDq5VFZ_U#Lc2roYUc93*3*@F1(DZ~aWfLKe3 z(CYKKsVMGrmEZMFat@?2KmYV6q5*9$rKlm=E&tX^Zv1`jBS>YiwRgad&COii?Y5$v zjN`LAQVT6SF~gyS)Dx*S**eM8x;!TNN~VU-%36i&x!QEh1$Eo#9idbEQ(6q)FwC%y zw$k5on4~&*OyDlyG39*UT>WrwQ&{8Jv4n)?8U!nFSjV$_chcT5E!UQIWA=yfLIX+m zwewEab5eVlc5WBu&Lgc<%JSjKp2LSd&S3K2gm2wTGK-_;o#b5MtP#x(guKnYY!ymd z#~M=E?<=!XeEKvX-iFw8zWN5}i2bn}_<(134roOyz>_1F`okJC6w`TKSiuF3J(zOf zHZ<=q$xzHwGw_p?mZJKfzhbT03bQ) zBbd%c&b#*0v?I^CnZILg`+cl){zTATt$?65=MCEdfn;ObI;nB`n2%Prm1C43)pqvh z@V_32NF*qX#;Ukx%K$PSJTZZZm)w>*Ky50*u>mW=Vfk`{u+1T4X32Ic*Z3}3G~b>K zgcxRzy<5`@b19NcOfBt^#4=RI41<=0^hdF)BP=9_YuXU+I32oNP`=-=#E+UYBaQ+@ zX5)bjYM^{MO%(>IVIUnZdx5c9NW|4S6&Sv0`P>=;{ELaYTLF7MNue^WVrhN&FPPPx zwgf<)_0xBm;}N=d&1IY5czBDck2ZCEyL?^`u3Ai^g2iith84K{sreuVq}F&qQVoY( zg3|nS&KJ31Pw{aqsL4g$y8Mc1Yuw$Gm;L*vBQPH)ULp^GAV`cekm!1a#&J~M=7nA}h zU?AWt_iHt|%i(&8()7?c7y|8wRWVB81{g5Dn83>@77Mx@=N>OT)z<4w2C8^{UV0YK$RA9(L(;6qSgGe5=d2<6|WLFQf5n%IL#w?KK_ zk4+aDMu2-_9EWR$yUkUM*gH<0H9KB~hSrYtmiG9^0xnKSY8H#kkZi+O|NvfN`+$5xGAN2+nEJzX8a zkY`xm9gGD8v(M{1$Ft&jd*Of+w8!29aM!|zCHF(F@M|f3mGJJjUap0JdmX>jsZ;@o z*nkuzKm}tLGS<<{Dcew);f%zdC%6qm^mWyMFzGKq864%43ZT*`{Mb#+kO<*fx1X@v zhlOpL1wq0@17GNIA-j}_e2E1^hD{6o3S0{Rj+BRlg+0x3(BO2{6+&#zNlqUnl|4(F z#G^7b<|-`HARML&mmFpqRiP}NEK}R9 zR~N>ipW7H0b+gAh;JpUd-PD#O`CH4=40uY#mIOcf;yS=m(95DZFRj-jCIolmxC?6u zDHM|lyb#%L(%rbiD=Y%{N*PP-ngi@&W4B-kAQRhKkfsaY%-@L3v6!aocU+pMLOY0n zQ<}VUKlBZQVsDNy{A}j;(K=&Yp2f6)c$H=vGJJ}^4G&BY*oTc#R6TnBU14@$gz#}t z2zKN0-S0(=j7A_Pf3~d4ywtUo%Mc0}aw57M2+&h6AI2ChU6k!kIkyg&05}e@=|P|j z+9OSfc`fL1P}R_^a$7=jYswv%n5q|wHS^;(z2`RzLIbc=BI9B(s^QP5nT^){;kIcbOG0f7OFpPWb)Fc!=)fY-)X zG$=JbUNvJ`H3@iGmVs7)xNpzd9)nftGBG-BgEZ}pn15$wVrViHBCaN4=?l-=FH8^% z(1Uy0N@cpU1JNPmftkp!b0aaaDT?W1>PwlEqMTu4A5-(ki@O93lQSlrgd~LAdd^dydub`n6aQ9sM2yu&{@#G}havc3# zykT9H-%k9uQ=@+|j6ub#olM1DXW4mZ1>bLkgL$c=(P<7{tLGfHZ%*E*U8HnYgC)0S zUPq0{uZW{!nA4J^(m+j^Da@7goT7UU+sTjQ1==r++ZbHP^qR!S;t}++X0`)=omQcT!x_ozZHntG!Sm6>ny z-9t``s%}X@F`PLY=j)6y^y%DYj^Rbe{7EgS1*xzTm)zfrp1+l>HQWk+m4u+{^L$@` ziGEQ`2nJVd=_a(ba5OOr9SKtrDGW<>2)_jga#}3%E4Prn`qg8Vz8DQ(7}96!v_qKt zFqqpX#)0_ICg{FvZ^<6sJqRD&#z8j$8P1JB&)LXV^6oyQ5FQ5)dUz>RJw(|tvMVT~ zCQ-B~*le{ij7{yx%-uA>RN=KeFQ6)w((VFVLa)}KdcKzgVH%(_Nbi7zOjH6v$t6)A zyrSX&AK!+Yy`PNyWB>}NbY**;tAag9hk_<}2z^#aP6c7hU=AECAqHVz0VU56Gfsj1 zHxQ#6;jj3?6+>P{a}_zMub({#1QX3v4t}N|q(UE9XDw#~U;ZwmZ3=|Ic3{x^)kPxM zagKhtaBRsksM;)2qemsH;|Bl%zeK4g<#}eWaLjNG?9*2 zp#kGFGrM>_@2dpu4#F$V=se~Cv32@l82$3F;i8H-y_?tsC(_>36X6tC>=LjCsb7Jq zu0m`aZiCuoY*_$1T)^rCAHX@haair&}vpMJNb`@#D0_i{}Oa%V4!_=;);{WO(ejmp>HN>Q8xwRQ_$d>+164T8u zh8`XIyXQ#;Ehwi^CDyL^%1zS%vqPaDHknNQf16G}{KPZUR`Gz=Sejtk0)0Mm_u+pu zr4)-%Yr%2@3==Yh0E4o#|M>f#jc^icTlbo6s|}jV(pTI6(XfITc^CSa216YQVt3z~ zn!#PDsty#lT0-EG*MHOMqN>5F=jHWGJ9b#2eX!_=>MKJ~#_C-2_32*3vq*H@3Ot*( z;2KB$)L7y99Zg!gkPNZ;BVSjIR4(8s4SgNOdnk4nku&UORZ!Pg?@((DtN&V(a+gu-Q8q-XwYj`X>xczn;g zsy6ooY|}c$mW`&KDiuix+(0U&RNgfDN2BQO@R~`Ew}7r>rTFG;-&82e;3`*&&b5M* zXfL5>4<%4~P%*lz)0aaqurHIPD2N=nhg9fb9s8w5`7`_9I%{hT?L$FAv!oum7zl&5 ztJk-BE-PTD%9ec=>8q&mZpEjZFhOgd}iM36l!*M>O+$eUkw(2hf6ucjN>AQu6T@IRD;~C`~VXk|TW)mAs1C z-^S>3ByrCh3+Dzmu*i*tK9BzOyr4uzh>979h=q@N;gq1>Ina^#+X9j6U48cp+$$q* zkM9A%OwKwQlo_1zGWLtNYNyV>ZPXo;pF_X5Nu>oGm>p-2etZ~|eG}5l8+3UfS37g_ zx+yKQlysvvRd&dl$7#P8xaQxKdyvTgpa#7fO!7*vidVDHt)40WHE0Zf%G+uuoL#Zj z$#!3ATk_zd6bWJz(ijNfq3^{B;$t%$4f>}G>Iva=yjxqUK5(9((RS10BC?{D-c_1Q zqJ5V1?OVHke5FFNO##G49x)#GtxumJ2qadDyiJGlq;HP?+nYdN_5r!G*Hz=e{eK7u z91m^+Xie2vjA3xUi;R);$)N`?|Lt>Rh)nJJzr9%mEY(Aa3ebq^)woT=9=fkf!;ZsL9H|oQNb8;0;I7>@fHUwp>t?0x`^Maog1 zP_zCYf4JEfoa*VVIgp>OT0NC^`X0dfu8)x)vB-NYvqTCjl>}~F+kXrCN^MJ~==k#2 z*wJh;w1XCsxzJrr5jm@OV$Eav{_5G6dTXM=(=_jYO1i9D3tum)N_NON0qmeERIKkREUAk zw1sKAFVF9yBCjSAj1Z4n^jB~Au-zlO?*}%x#MG3J??xc!sj4k~ez$5a@*B^2k~=f+ zXE@YyuJb&Dy>k=`52Er%Vq0KmvyAHIzqBo=EV{$T-8%!-G{5FV(QE!hSI@~cD!PrAfX(nlrt4k#wpeBFUqk_2@ zT6`vy*&{m`=(>6GH~kmdlqQL9_SZUzKZ*)!#TbQyHkR~tT@wE|=o#0q&5bj&f0bTe z0Iw7||& zRgMi(Jo&kZ$)=!1sNqz{27R@|p&^tbyGUkE7urWE!*S94E{FF~(#UHg8vM zI*J}hmPBh$r4=nd+Tqto%?cK%vi+haHcj}bn=4)$TtmH2qr3&u^wQ_=`qj_e! zO}`{<+mZOsn71ws;C$d)3s4jbO|#U)=d#j*dM;IAojH+ia+hdQyxFc>En04MY#=3a-@`j`_gQ`$Z#pLxPe|^ z5G3Tuny=CBglD@{|>q$om?ok6m1*%~vpr0n|| z&Da?RgR!skTtmyZ`hM@b`}zHz-}8H3&;4(i&*%D_>s;qL=e*zN9MjW{To-EvDq6rX z%)HNnj9s-GfF~T!N=WIvK6!Po?gfjSV?(-)%xSCKwgyBcniMJ~k)e`tnp-)2$Hngp zb#i*j5^WTRQJ))yjejh)@gW|TYuwml+o`RpuH#Eut4^&!yI=gK7Ln{3>WoFi4eCjq zFDF?sL+8~aell$gHXrt|MOn=h?F4zZHAv~RM=_0p7c^htq>k3f@H;qH7sW4jRYs?K zKfjI71pMHD&X>j_u@^$_Jx>4#ONm`?Kc#C)7XHgK=a5IxFi>lwVLt?V(}>#n&hGD_ zo4R--p?o6{)SnVonj>lKuf)Hi)27^Ud;29 zR#saKml8CXE(jziz1#PFwQ;c>%byMhW4-S73ImR%;tPhZHdO`&^W=5hLALVsPxkgf zpiu*3#D3GCZuxsn3ty~=?OCpZ%b-m3jQZxu@HS6YXzY+K@Ml`MfI8!0%cmg-6^49P zPK7a*G5dh4B$rUe+EH}gET&k*w$xDN^=lo42w~i!I6P5$=n3&CIZU44G$5!w@Cbjg zs!Ria-I1^6?FAP9?u#YCtjg`hqgm)V5VHmtzW6Rv)=1QKDNnz5y;``-sFtBCCdz;v z_1D|h>_*JRb(h7ig2E~0z-KiiM->9DTu`E|NF(_Eng-^4hvR{}E~pN=K&-S^{t)t$ zIxvqhQR@vC3URKloQc-%HM}aCQMl!|rn>VYbL6|mQty9T>%*Wk{!SYWQtfwCgECoe zAQ*m#R@^4hwXv;)dc7;}yKGN0Fx+THVex0U1devi4UjJ5ZNqFKsp`#}|hz~yJ zAIevKqxtY;ru9oTrV704+vOWtpZ492?gRm1VN!3_Me$Hk#Ajd!^`&W?9kXZC-8rxi zHE2E+Jm}G3KN6Ve&2R@_@Z(-Wk$}=T8D@bQb@8z7wLm&uNb!PaHEBnPDe=UGq2~NM z_+mHV;~0u?i&w&p^9ROgV;HeUFR&mydIzk_MO<>cin?p#vrSW2{oTBPONtm*79#ZX zozw#yXMa&b)n9$UlaXiSqfD5_L}t<&>kKg;JM`Za)ihJEOeEyQiK-v1v`Kn_rHzqe zfPM7%l3FmB>buAwW*WvU_?%vBA~Y1AF_N4J5%_@Sohy2>c{xF_0#Z!ah^eXdhIo1F z^lq_Eq2SC^&r$y;(pbnF0Y}S>>L51V2i2#8uO}21YSP3dqlF=!qV~X%d)dnX(x+S3 ze6;~EBH!*?zu!M4L;9rld-ld7of|{^>@yC?2TO|$z3cqW{-I^r`d%y#r|rPi*s04b zu3@p>{KPq#&NRy_3@RTXd|eEo-aW+~IYOl31xKLmzKS!pIo{QAtOsnveXtu&Fm{{? zNREP3L;dl_BOvV%CFZ=~55*_13fgtwV*?i2MjXC% z3B4ngF=+gzQ5HJ_xhHNX^2SS36*@Fn5*?fpub(jcQW_HpTxg7e(J*Svex19XsHnpv zW3MH|I##u}*Ksacm)O`gqOTQ0e7+l_aM;QJ@(2kGcj)r~I5{|6k*ha$W-NpwO||S5 zRls!*YF8ev%yrSexjIKZvw6#t+ADnxgElqW!k=Xf&`HOfc0aufJay>g`IR*uJfSje z;h}R%khbgFiO)x9m}fq7QRv#v=s@KeGT0JSSJ!Sw1`bTa4>U{6#;^t=0shgNq@XTo zaSSB4wC6<_wK2ih?bRp8I{=97%A7QIZEGzcAYL9zQy7yL841$|_O{gGU6=IKeud4O zgw)jQuht_Gcos9h08a-NBz0BdFbKkIQ;aVcEl&r=H3{WpxJ>V!y>Kv`!vy{XgV9b= z;YJR<1gbQCLVc1Sh7pDs!pGm_=U-rVw4^M!Zz%-IqyJU_J0IK$uZY#!8-eB4DtLP{ zWdZ~+D68FK{GHcet;0xp9}%~WwTR<_ptVv=Six1aaHuFm?q_rCp>->f_iQMTLiM=} zWV;JyKU>2j{(%$*>A?njfqm!x&w*jfJ5V7FdWWjppKSt(z35D~S3A+2J=sD#ic!g|e7euG9%Un>xc2L<3VXaU+w~=MN zNPS}wS|$n^6TrVS?d(c4j*vO8pn23XN){do7|eeS3njQYTaUhyjT}LGNC<+oI0iS~ zbV`Y7&zlt9OV7;u^eW!HX-yV|JSgqP?5*&FRl{0;zWWbXJuzhPd~mN(6v46d{D~fe z>B3s4ybS~OjrI7))W#2}`)1j~llHf33C##ph<+M{^3?Mm_G83qU?eO2nbNE-aGfD_ z+Pl%k9hI=)KW{N@AHQj>36|MOBUz z?To{-ekb7sgH$B&MoZAAdD@;L=Z(czyA<43l;^vz+w{;MO7Z%jqAz1C`&PaFPCLsf z{(wQeRy2!-XP2CaoCzeJWu?|^hG8rzP`wNl61il*CyOvm3=nRsR%?~~I>D>QxM0~kg z!G`6pzmIj~cB220W%`fULT?*k?Kd`$|F&32bH94)W>zM({%wJBt}a*i{^9M%cUm%C zm2f;xo$o>ZilXL`#+8k|nzrD_#!gWGoLXzGO7gVV^HuC4ZZvJT@Z_XB9+gi^sF69K z`0sW-1uqaDOV+*XHn)VZ8P`y7fVo`E#fP9@S|^j)mLlZsam^*EVVx3l6$^rIC@WO; zhjyV_4IWXOFd87Y^{3~*P`}70V9}k|m6@WPggXKK`g^ji->b!nzTmestkRuIL+w+) z0uqd$b!Bans>zv}gsL8F|8P64ekc>~W43`FbNa~0FQX{oJds@qoKNxbmvk{JZAo*x zDD8%MAL3mQ!uv4VPMRZg)eNGNsN!vJl;3Mofg%Gb7{8!L9aT$PmiTj;!rxyL6-kw=xI z^o@F`rRE=nqQhZOdr^1uS7pLYV0Vm>;d$`iw>eHUBeaU}5Q4?Qn&o;C3rlx*} zs`1-ywkyGjwnLm2K9;dse{)q?eioLb<|IFET24fwirgM+5Yv|tW{%)9 zg2elmFt8$yge8WS^qsUC4jdddS3WTd6-Y9LK}{<(ZrO^R_y_UaCNhuWh4B3zy;Li% znU3~uZa#>vu2{DNtRlh=c%)}I!iAj)vRu1H;tur)X=yQsBDta<8~ z6G3RHXZI5h&}p~2k+%~Ew2#9h z7%2Uhu=6w;(PJzQ8)$A=Oy3@|go$PfUYT(gx~_Zu88?Va&tt+b43rAF*0?HFt_`i< z35By9YfIv%NTYmu!Q34l4^iQPh~as1P&=v2?zGQ8-lwkWFKS;G#;d#ZfsPghYJBE* zy?Xr10qnl9U{zD0jV@A(ETz>l{Y-?&wXZE#)OGisyFO_}Bajqadh}6gm-YzHe8fp> zX(>;9Nxz8oE>C^FyKv6eMJK88&%>ObC=6OdE{CLPR&HZxiO}@s&tAa!M|rvA;UTgX z_sOMkn96w9Lv>VYdu>}ZGSaAWX;a1VdY{_Rv^#=C8vs85kD+*C0L1b-ITfjY`IYCs zD~F$+xTWv^{_5rC6xFsU^nu)feKMRUQP&Uo`%dIdtA%JO&4~9daVhOQ0_T>JJEBrA z;N~Ne?#!8`TnIJKdy8|rA3vW`s}vwTk+?JQ1jUv@Q$Hu)d%Eda){%$GNf!ytsP5fs zTI-=o;$~ScJ1~6~CtvF%zxa^D5zwblAf116j-yom)e?qGaO8TjNbxm)<%h$TyXDjN zMnMXmN+>WjY!sN>q_i^hSOFR5Y;nE97?(>_J4J9NE!oiY(oFYmvb4~A=kn{6X_;&W z1*xEoOWY}SohUq?%vIak55Il9%sR6oOP;EJKE!^JmN{Ruj!XQh?zZqQz!_|tZF>Up z>^*vAnWA$vy-VSa!^frWmoAVER!EGp>GGRWle4pbrkXUik%G3Xz3zEqpCV7L$Kk2z zZ7<32s523vi5AFHNps6>>+y)UY(nj}p*m`K=t4aQ51nBP-vwe?ImeNCtDE+mOE8-G zc=l87EoV7_WmtQh-_4SzNwv}uH|q4PTYKhu2I|~-NM3v|m7k1C{0ZDGUeyR2ErYmW zM9z@U-u26An8z_LT9Q|ogeBg6rd2WVyqMr^J0`c&XQn=N#E0?fUqWWs ztfPe-Iee;rlY_SH!_z#^*2eGa^AHMfMYFY_bRZkJM@|I6oev!oHFcohuqaWz^lsOrezR6 zkI3n3JU=J3Zv*Y8GoheU{Ja~gs1zs1{N+)LW)W3fR@r1KaZzK5{B83}>iAdjfCjx& zI^@@GTbylQALemOfy{|weMat5WtWEFY$UqF(xvZe3=RinbJG<3iB2)Jn{tGE>yl)s?&S)`w3AZu2$-h?;WFWqI{UI8b=Q z@1<8?h(W5iJ!sc4QgUit;~{g;-)G5mfYA(57qdG2`JPEW^HTi)(R^O|VR>gMp%RYj$7 zLZkk%1d+!Tc_$csjnpBPONfP8u(9gxSUGwjN?hekoK+Xn0Tgc5X~Iu=`~!a8|{$mpXk0 zEYq3phkHMesW*LaB{+10F}-Yd#n^gRxi_zZE~Xj^|I%3)=1s2076gt}c#U3P_dadR zOl#AFjJ5ickB;2k(DPih(I)fgrOeMi_|zu(rJ9+c#bdVw$}F{1eGlBT2!>3SCpBl! zlMa?B6M=u;ZFHpYmBcd@vp0znJ03y9hX*juCpY9wnRA?6`!iG%oeI+)n$jM)oseC5 z#ZJSK1E%8klsf+PT1+xAH*3Rs(3OzAQ&m}Mj51ZETAx$nBYwAYMkXrCupsp$Fg1-m zHI%a#kc8I@NK|0B)iLbd3?%#{h4TH(&wYaFpDaztesNqhsyJA#C{7c0uWRm%?eh%gEU`piSH?Jv0Q{ z@XCvHfp&u|9q_SjrOo8F9PDfm5Gj_`N?{V0WXKc+c9z=48Y^vvJCfP8o^C;}**!J5 zEa0_*P0Bysy^h6l&%yKhuz|l&!_NMdVYWZ|7ydShJ2BUBP1H}Nv$wk&i`{isJ%HZ?uNaEN6H;)-yKY>Dx6mnFS+o{U z3EN)mKv09gW50JdDGD)^%sA=xBm;Q!svku=6|7X%ICyd%x@PWGsGk$qU#3PRj|k5} zAu|rN+SxjDVA!Djkd_;^u`-E$u#dm$Pa2B89<>5cVuTg10;`w zf3h&NsQR7+)OFZ3ZYTFYlVbC%)+YtqYY${={wUH-J?6+=)9^=s`k%(`rv(pfvzO0(hcY8dTyRlLR^JOs;}}qvWXA`4WHX&E< zS8e%kpwA2GzU;~xtz zKt;@k7pd<4Q)c9M-4>O`?72T-Z_`mT#rQE+blaQv86?B|F;0kNg>NgSRq5VIlUGY9 z&q^fa5pWtU(U>+gNuL-@sIYCEl**<3XHk0xuhaEGYd=?Fj zMI1G+CEK=d0YS}EC}_1rzxF^fuq%|Jo9agv@umu9hAnCdTgcHe^n}^epy}oBXY}m&?1RGU8DgLc zIG!XlH8%4!=Gv)NoAAnH=n4OI{{{_CfjLS_O#3gTJI^{W?-3War zR`*VH+xw=^8LV@wrw2NzoQ|XstceNMAsb1at65~k-d*juw-JvIW~Wl+aeTdl&ZXjM zAPre^_a-U0Hjhvq-!M|Wz=k5>_20Z)efCxmU8jguY|)}T{tE|BsA^VJba4uf!8Zr1P|J+~yvattm6=Wwn8taf8LuWwX-^_U=WURPhszPIgoLsBr1ot@d5r zN4{oV53Aa*?P2RdE|oy>TB74iT~5h?lCqoDIOB$6=4?RA^(*#@?0=&lIkO{Y55HZx zpD|N&LRqzuk$Orqni+j}?xegovmQzMCKDY8+{*0-LWv^|BH zE-w{tqP!I>)5pfcRC=lILH0LsgPq`ZrGadp+Yd6rxv41l@y(0C2ac7Gxma9SxC&tY zR=RiN-DX*0vvvFcqSF-H^CanS_CTfxl3EhL*L#`1Xb-`yezGBM&c7_4q4;TQ9K~N& zqVHN9TbEuFzoM|OeWvz3CtcdLvj@_;B?@1EPkwG4b5KQ_q!5#N2z|D6=@X9^6=P!3 z>(AfsnjiW+^mI|WV)d*e{Y*o3OrQBe?}H0WS#-aM;IZYB@x#s=qf4qytG9x^i9EY8 zGvojIh%Od@zg^r!2Wcq61>;)rk1BvONc~za!P(fYVVL@V?UEl*R9I;=5Mg@o0(-hsqMf(|!SV#_gz5BTHH|)vF-(YI%+8kW zaXS66(oUssj)#6*^!`d$8RHD3&a!-jY?LM~GL*u-$Ng^*i!B2O3WvUsY zQf;QCX*{Ml;<}UG5 zN__Ly0(kEad;|>GWU}rc&`$Z`Q>QlWf9t)0Ln|F2>PR>psx?3!g26Z?A252F%G&XC zi2vA|U5P;6yZl+|^vIO;sl(qsZ#pwuV5=4;{vY{!9ELv;2>h&J&8gkT+CsUxPj*K4NN*-&7p%4n&gg_huTbSDR#g9mv`(Dk;e6w(2}_%@%4Lv2GaVlya74| zND7w7VOosUWnsE`;lcL(0w=D5T9J5vo+{Y*pSr+#m$1mBs0Y^*ZX(wRwQO<`Z@je# z^P~whp>pclw!zG%;OXs`%J)c`auCo3QfD|>^I(0i8iWYwygyqwpo4zqah>tKUPLO= zR4bc(gn;?bYDaOj>CJwPhwcB1*GD0b6p&

zW7a2(#n;CaY$>+4VjHq55cnXvIyU|}(f>>XmEpeRJ+m&scb_0HeLF7ye+zDI@_(&x z>ACzhNSa6!`Y#y!?=jW?d!g-AXhv=>?9W56@6bH}YEI`4GQ7E|2X2W!BM^|F$A-T^ zygu&#oCo?FRM+f8mdoMoTZD$ zN(7St>XTa`SUiG3z+}Q{T)VY7Te_RLNGv`pSFB@Ij4$()8NW9F&xDA-La8Lk`s?@j z>)e~}YaUOZo%6mp7ZC7p!kKK>MC`8NPn8$#s=+@s+IBeB@UV?`%f>b8?!z=InDtWw@2Z(RfP>_lp`C&0y_&YoQQX(Y|*qT<`AEY zE1jPzO~W&;EcRMt`IxWPKxUlv%cbW1Kewecr47e8nbF z`wx%z&}rK=KiWw-#~4DY7pOKUX7mAxtX}{+#CaXc%VtB!CwFf%j|4Q;>!!Os&K94V zpgf^yJcN|s=)#C3f>vGJQpi*BnGTt414ji+%w;Owgt|vLF)VxrgMOvQ)hN`|flt zVYd-Cfj>`PuL|bTQ$^^w^R(oQ;Va$UJF~|UD_uvWrpEm_USWM`9*$bAuP`M*XBc>B z@+g0#LKBivy~O^C?pGbIO*g$dFG$ zvR3N;=l&yp$jUK3_Uly8wbs-<4T%vVvY(kGS~;zlO5X3(J;KlVywDeV!upys9rD9) zv|oVhToQ4Lh)IGrkkQ)Rw#PsrJxc-@`|8K@okS1($6R)rG?sJXi#-*oLQR=pbG+cg z;{C&yvCjD7^~S|x_uHB`<4bxS%ANJFc5zW#w!rlpbH{&!PL9pI>!v5%Md6IF!9?jA zNBxAPu-tY=?ksExODp4DdzpZ@oHVmCx7H=?ZJmz{t{wM_Nm07i{$Wpw<#~=I5gfA& z4K#jarkD&h=-Q}dFoEBeqvtr@M0an(ujk9e`9yM_S!4sp;L8qZ${u;Pkv@|;a46|( zV4XUv^Cb_h+8&19SQ?daON7p(*OcRAY8s0Xe~sNY^T&UCgbc9tO6LiC{i+Jt5p>5E zocq@eQHwgY4)ldkCoeKAfKzfdw)PMtn>@$ESy`)%PM zXR#C|E4ZT87nr7^n;2+MHG9(T47tcN3a6Vf4ac;MlxAx>W$wuR4VBEF@-sMvV>=c#x>z@` zzo7tO-?x6N4nImCGJIg^fT>4}w(ZvHdyn&&`g1+1oN;Q<88N3{q+$8Y>SVvI3y41q zr{l#}R>;=YBlw{cA%0?k+0%<^J&TC41*WZ~lz6y(s+SlPX<=6tE2)XhvcGMXQM%FT zwtmgxx{)fgn)ppue6iop=?wsjfylFZ!gys!7cl~TGX^U>)XObcd4ZnjV%hhrp#yn_ z2VSPVt`ux)&K@^yL|hd_+RHyq`ZI$)@L-8E@~0PHYij!(V{Pj>n>sQYH@GBboZ}{e z7+l=p{BeT%_#rg}^{nox2M3(g<7RK_zSD-09hx&4)*W(RJJxBI22)IVu zhGgV-KqD=k9x*=v?Nj%dWz6G6#zoU|FsPq5Y_9RK*M+s5a>Zqnl~exAdbgPaAq=xv%%nncc&gdiHGS%}QC1wM z!?9fT==6;V0OIC04A@gNi56J!kk8UyAnu%O$POwNNGjQv>SIxdj|#Eo zKHsQ{Obw57`f$NJuoS1*-aEnk0s2S;-fN3>;`h^k9Drr1!+$87yUVN94iDP+->-kwN1~AM^}6HHWxI9=&{L8##jOb* zeMiq|cJLr;hF~In*05?__$4+ze-+cs3r9Ke#@NI}8-0dg*A=_AO*Ww11GnxHTmaLR z5KTve3S{Y$Q~5gi*?0m*Bko_zovFz;F^MsDDSAr+i{i@A_aZi!;ZcNW-1O(GY zE;q<;bhK=KkaBgpNUT`!j&Z5Bc)Mn%{%%sZJ``@6TX8%@L$23)j+} z&p2s%$PSewxppZkop=Rc)fF=r&`hO@~GjCDEg+IfRpVY!Aeg62bw}_*EfG!^aseHXZ zTclb+VzbRq2u<3D9{faUl~yZi%y{6Af0O86FXDq;2dD=f31%F$XeFYpIxjlV)h zJ+MDW?EHlKG%BUF|MN-PN<~To@@ul$HT#3r0@@>DG8t<2?#KUSM&u_P<&SbR|NRKZ z|Mfdj876#x0Pt1Xwog`rwtxSQH}W@#q#i6(C7Hz0&HeZnP46|MX>!*CDwWIYO_W_B6x}pGFi=oQu?5RLbEI_AjzgtrU z^O|V{`An{DLf4>covP#{$RQ)fGYefu_+!F(^(#ONS$XmGIUtC|FF-t`*=p^o>gx-L zQth{TWk4FXtCNVoUzkzOGF(GP_hHCP$QK8Chw;hh9F!%i+QpJ*mZBcEm28}y`r`X( z6Y5>cC?|^DUAuIDr)yfQ`dfCIMGCi&4dctxy)^AB{~qdnjYXmkSxpr$hTJRNn9s5; zO#+?K*)iHEWolC9nAB5!QA6rm^7lLBrXiPEk`$sY@+^be!3vSa6TLXplkDUQX4)p<+pYhM}dYs@6B`9r|L7aPUEY(vBD#gaua45Du+H1S4m9W&_7sH^0O1tZ~M9j1^j zXXVLKWG4OjikCevDTH=npDbRY$>pKhHZ5p3{sIW3_vD^Z(I!~{OD=ob`<%?Vlzt}e z^3N{$78QZ?y7BZ}gNQZtMK1DLSqNo4cSD_6qpkeWTcvyL8E=s}T88DS6;`ic0@qlk zsDhkW4fh?L%J^Va=I7dHp*Ah1{??n>SeJQQUv8;w)s$BskMDHW_VD*sPjo6$MRyQ= z&ZoUk-~SDe&0(j(4lG(9lAwuG3lvXF9pAHc!sZIs9sf4IZgsz^lwT=nTT;8r4vTdRv2!9C% z>>g@qc}e8$O=vp0%1!8&+|LmF2eq%}=OKJ`T$iYkI0@Pgqpaf2l!76G#=i8P5&Z3^ zu%+$f?Ok|fXzIO+U9%3RR;OK<6>JShk}nk2Xz9MlzEV7KlcKefmpVfzT!vTeHk1Dn zVX!3P?C*!qE@yV*s!H$4YWMTK{Hnd0)oHjdoJk;dw90)ng>;}$JMZ_3Vw;H?!oPsA zgg?_w_b5-ZGuS#+6*Iv-r|+sVnyCM%?b?#psAFcrW}T?fiKs_vs|{(^4Y+!hv4re) zrs-8MI@j>{j0!RZV!VR3B&IhA%vK4)cKGf)R-uQdzlj;bYl*2XnUw9Mpc%87qZQ0> z%6Y$1#B&k;n-$H6PgLZLKu=+rl=Y6U^;|DpNl&I~@Go1`Dk9?u^8yk-oTll$N_px% zk*lA$ki5|&F?C0kx!+B2i70fQ7^nA7>jxcTAZTmPo=W-SJ}Qz4{;bhlMtt`g1ajnL zrjM(}-Ln*DpGfzYVZJ6rQSqAQ5Zo}?^;`o7tT#f6o-!GqpaQwz3|i>vC~|(odHw_T z%@MK2_UIeP?Z&}@H!CW`1-Bb%y<%v%;JMzHQheXozxhbqY4(vj!PC|I+T}**PJGbS z*L$RM&AnR%#$Nof%IXr=|HM1<&ESkoQeL_8Fr%|guPldnKOl|sr;1YXhv3-Zc+>Mm zFOF90KI=Icq2g?!e+jLABwOdx`fJXc+TY(*@s;pe88LAZijx=n1Lhr|Ys!b6?|<#f z{Q&ks1dkf$4nH?L54TIdsTdlh=CrODOK<wmG$>=X@eEklbIJ`Qhx92raNiphZ&&crPmMK3J|w+Vd9>B)gLeOAMqyh z07)BxejxkF&kXcD(sfi~?CgkkfBl^T@h99%(lg?)Ty>EU1*_?{|CwJOI&&ioV$}nZ zBt^iJ@#RLDL|VLSW&}y$Sd;JD{3n!4u&vxqEZ>y#zqHQ3tHRy1)c;=+Z2yi2%>UmC z;D6#Xe@8q2Td4fMv{0FpuLFjM)a99$^OoZGMx>xVeY3(TeyhT%v^(+$q5N(1=WOfrcx>)>CPTa z15DK#+kvk4_2s>m_hb6F70;**d%U~+gG3DYscpRcbeQ~GU&G6qX^pcc@bMy#6qUB| zJ%`SK`)3NwV^;IT(NmI!Q*@{9Y9EJVi{?!)W}0!Xo!j{vwuoK|h!jQ8y#>(dtCQl6 z<9eV0*r;E+B~!z&Zm~`DxPz;Mge@oj5PE0L$5hd#ke>;|+BTgz!&%pZ=)M7&AR`*o z)hKYm>Tzn0b2;l297n+$7*vNa!s8+uV0%CPvZLA3lz+ zht6EOuFCA%xD>YU?TfnxC`0vRuheEt#_2F{j8@#cCU&rdVP)b)Mom z)csHcPG|n2o_tEr&d0fBbA1}^IDV7l)97%>YvRF^?lr2hc z2u-5`l)^JaF^Wq?tlVoUB?(7q=w<^JjYg3OvS8(tB`2EMq;XbK6A zTRkF=otGN~0jcDDLAPgTRxiJI{TI*Y6qZNMGOQ9L3jbysV(VbDNDrm zmaM1vw^=IB9YA|V%1}?sYnOj17k09~25%ZOW20wnkcFi*lxz%1Bn1QLUnHP|vNwNGj_om{xszgX9g)0PlstXo$)PxXqTd*4qfJW#i2F{^c@*qEG-?SQ{nk8P@3qU2b)Z}sXv|J8Ou5P;zvYoY1l`;lkiD?*`qlJ567775zLeOg zx!byDY7_!(aE``lMoBQgUb1?1@*NUwuO$y>M51A7@v>!u`M(N>kDco-t z%r{&d1M?aGm@+0Q+&Vj~3Wq73HhV9{BjL%>AUcZ;z0OOHw2v1vR z-VvUNsHc&rukN2~MJL)@dtF-XFiP~e2LCMDDOOY~`ZBUFLchnoR@7;ztL?s-w`K+D zBC*)wZi~d{lZud5_RoL*H#Lq;qKhG#mS7GQm>>nZqLMs?8$s158qMZ&R^ywNC&fUG zsR@4F;}6=x0I$Uv43>t*@aOYe^@tWTat#{APag#sa^CD8yCrHETuRYHtpf%?Sq>fRfmTO-p{Y;)MuL9!{L5FRvZ*8vf z;{Q*3*pF11##=qf(_ZE;_wdP0xqpED{83pT14AMwQd=IX292}#HvS?l@R+TJc{id( zR2R)|fK<~NQmP3R@OMwbCs}cz4wV~G`;`Cs95}Y)qU<7}mIs0*4NfBs3VZ8+qe7@9B%h>zoOqL8At7OxUg zce|}&R_=DM?hL8Ufr6LYs14GXG8r8$xAl2bwDeiANn8k7o3Bj<0o@j7br-IQ>6>E^ z_n4i(eX1j4xB~fYN`i?Dy|fO1p6WZ#z|bxh@n^sfGb3MWT*+4pdi@c9wCBahzHfgk zp|GhvREyE@BnHo2*aDWZ_PJv)$e>hSv&^9iFHm-{Lk2>wz>(UY?l{zkYoEDnABt48 zs(kth0VlN!+?sV3%Vc=eF%XMFCWo5s5(?L>qXO~Hsx!3TM9&-NF@7u~A|chi9o#3!r2a|0y9FCF_;MRF!IYF#C6nV6g5me>ncSRcu6wAJ zEkk2zy+DaiKAIa98h6ekw>?UP?N`}-6kP<95x|r_l9?~EW9_t7L(DVW{Hs!LAIe!jJfi-35ftEtoWT=_N9VIH`^vExTY@G~OI}(*N*t>-ht$jUAUP zqs$_|ja)2#PO3)&uc+g1OjltClf1l(>~drvX~l#Zj&`$N5DcQn>W7dYo8MCDT)d`(-qEV%@#FU@Y@@r4I-Qa)&mG#NY z%)9^_siK6~+2nMC9hCseZkApM~;Oh*-ZY8fkb;((+7&$dF{z{cY1|nqa1e+WM z*0uDF;auEBk7CSnJJY4+dlSu%7~3RI#kIUn&bzyll}F1&9i7g z%T2hMvUS29!xPL{PgV)+Pz%m94eU>v)fmU~1-0YOu!`HRUbofJld@Mg&toVo`|P$k ziLHvM2>HMjCe}=0N%i~jAziiObG(5>PVK`%zbG6)4WiHAAqC);CCf%k=#E&- zB5bL^&Np{k?|+JaWCWfvSQ)?qMk78={Q5J#JuuZEsWH!vDy*5(Z&!hJ3k_2&tpe!E zy0$bU^2uD|(k_M?gGlqO_r2P>03@$>zuaZ1benm#PAa@g~s)3+-)|nl}i; zT9&RafK6(PK3k7Py16~9FP);K=@5F@#9&(*0_LPxwk0c}f|9{%9wRNjyyRgHvb{gv z%PF^Z{l2Sg+XeTiQonfh&Uz-VV69uCt+Q(bvp_3JiRw`LRhA*-5;e3W8b>Yy7x1RXQ zt1(!SJ9snV+Ta1=nylF@x;b8k#bvq-%;QXE9D9jvanh76akxQs#QspJLR)4v#fuEy z(ktc*n`6sj^B!3_*29ZBc1%4>E8lRwr=PsC(Jj`dW$(+JCO;0>1SEGNXNT%)4_fT$ z>^m)9x`Wv~YnWeNrBJoJ?MN}GedDL_d%GmV)L4=?pc@Hd45~bs1cJU%&14hTt z3Pz!U*`iW3Vm1}e>EmSrI;3W<2V#A+LGPT7^xI&TVmw~vL}SAIyAYR|FhUh9t?=|Q z34BX)WcpVT)(vrGHTtrbTRkqeZ;)@e9UcF;mv42w&#Os*c-3PxPp!@}?nxCVQLlgg zTt8RbAbXGA#896OU&g}GJ76B0d>A7Wy25HK8_V^a3A)e(RsvKACyhz~eZ;|xN0ORh zqwPD^j}9U8dOCnMD+@Vh!UE^aZCD4_7UUCwYasNZK*(D!HXT;E{Kc^nkRdh zq5Nc1mFphwho%K`r=mHnk8-(4k3n0b5_TbTO=$;xg-h+VrslZq&kwxW=$CrkXk>D> zQSPd_c8-`6;3O})5dokdA!ycdzmkcK=S>>ql?7bwp+Z!9(SB^V342FN{lx2yF?CR>W z9bz5GXvfS9&b0ZZ%QjNIv-n~+R24WpJnSHPZPghM1{@eYLwdl?7%k>|MGX-stbc@^ zXV->m)EcNC-_|4_PpoG2_aVwNyYQZrjr44VY%C)a7}eq751+D^$S)6l<}iY=IBFCb zj@7<=hNv3O5_b47O{4A_R4!gMo#xOa&T#R*TJ8e+Ug_e*q?u<$(72MJ@N{=q&uu|mlM8w^y{nN`MV)IO;<{>An0-bV#T>P zOX>RdtEm)V{a@mg#q2viMfx|xtkPSS%w0)K1)iqm5*-1x7DMtzt!2?0@JKQK{&GDh zOUXuUMzPL_Tk8;ouE{CVxNwOy3>+Q_L3`v^q9q!+Mv-Q%DEKOxUxr&pn66atLI3%v zbS)!{2KYtzrcZ8ezWJEQj(IdCmUt9uc}@7XsMCU5@AIUJ$KJaj+3zwoB9m@xhGRlP zVu)C5rrfxb zZ4udn@PRPRu9dr$a$kd>Podd+Y;N$og(KgLv!3k~^KNF7B_uy|(+u-=n*$#1@U*Sh^XU@o)PtF09082HWH= z!iL)`D;n&boi@Emm>KIL8VkQbNb<$%r`Ky2S#tx)h2%8DSM#mJZ3nJT4R*#b=vZqe zVR4&t+Re{0BC$emO&c-mADoMOoJ%Lg+aS+VuS~C7EE!KXWN#?1`0y{guFBhmt@DSL z)=b0WV|H+ts?Fe*DXFM>-eZhCA8uq7E3n`6mvyp^2N0`FX?~`i&gX1y4Ce z#b*Lnli@QPJ16cuA1$d~e|Nku?salS%$(K5Abgcs zF!Au61o5liA13qw%s>ferQ?aJg__v-y7gSr(PnFFys6GKmZ4vZG9|L2hO-9QtYv5h z$Gzy7miN#km_WN>xuM(-HxO$k$jORwLhxk7FS2|;QF@fCFu0c-$s9hb}_N zFK?%gx6*Hs@fH;mBi}(Q6w0*886p_H3pm^gN%B;kTH&g ztgbe7G{G{K$2OJcMW(ITBGTA@ZERrqs2L3G4J8{#=xxN70!W}b=C!`OXx&`P@o2c2 z+}3$?w{gl8OOQNS1cKm60qYPd7#3Z0dn z{*eqN@%5qFIAkQmYU2}+>-}ZIunr!~^8>@G)&>Udx`fewm5jEr6P`dIP_Vc(jn8Ll z7cQ*!5;s5}<$ho5C4Au&uszW;C%dnIeIjNQSzBAn@^DTmtFzF${{tRV=o{p`Fo6Ut zUE$?g-HjY!DYI{TNhW5$A6712-Z^7#N!(cPUz;EA9OSh~*gVY=sCSF#XsEsGQonbx z4$oTdQ)GV~n1n)Vx-sx*7Tf48vpCVEe5^%&OKIPj*)}o}4e)(+IGpKyIVERJG>j&u zsIAb3U@aP<{_T&f8l#u0(KX@T%uZ*Ifdo#{GQVYaGk<@Vv42Ip=HwIE$~&~Qlrn0&>A;HLlK6x zA#2wlY~$(1{_?3APWY8?vSf6|w3k zgh@Uaj%TpsRKZd-4R)pkB$vB_j9<++e3q5frA=kKE8r*7H4|Q@WM@IlE()dQp3ptQ zVM_GUR~TiPH#1wdp5~VRAKhJfP?PBy$6A-M2y86|5007L3Wx!!6{1Lzb*UhSV7HZM zNC=hX7H|z~lyEHTO3G5e<%;5(NOzHyfSfS|OfnD@mtzB1h=ssPI0A%lgdBvB&=>P% zV4dkdJJWWi@1ObJ_serXzwdpYd7sgbW?=4!8n4)i@75e+vfjiGlNqd#$Xm)yQlxMg zm>L+RBIy3FD9R(O;|%Q6L1<8 zkIilBrId zuw0#hnj1)JPcOG;8Wqs(~WmwX{11Np{q=xM5pEAMFv*{7J9QT2)wOwjGE zOg_DMne;zUxnSh zcKvJgUaR0a`yJ7Fc~AQKy>*yT8>e|LqxM+ucdb2-s_+?ea}8MXqsn98T&Z(&O8(#@eFd}U%-)x zRwX09&NPKtTaO=V_JLGxJI%gq0(tmLVysan3S8*}LoD$`QXL?=f&}F||6isym#9SG z>j6}M;<%}7%wgQSu4dL96@4MbXcsF;n=Hm$s=t4#={PF)Nxvc4-~-6>z?OkUXKptY zFIkyd+U=s^IVtXTFSo4hL6e4aOqo%qLA_+9auZ?dh%7V62ms<9O?3pOexD(GDA&-9j^&y$W5AVw=Bu=>&c zyMiS4m9}9;NH4ES(SxfAO-)X$NkZmB2teQV7s$GD5;e)RSgo^*$JCFlGhfAP5szA0 zpZ0C)cYuKb=-Qy)eAH@86C7ugAA8sseH$fQuvM+8z(&i#S;kLI1|Jrdu9>9P;Mlth zWmZ%-0t#GD1=8C1%a|?e>s$Y)4%O^KPW-j%8a@KoG)JH}yKQkfkokYG4dr@e ztgOyP@NUfCbJHvIXqx9< z>|XHNls#{KapYMUZP*wRr56NvF1d?Rv3|%#Kg^qRu^S+sG-6O&DSLtLxtFV_M`*3B z7o4^}!%NvUw!Orb@21%VO(!Pl8bLSf@Ox-9{7_xMj=C5a%k&&1Qc0IJuXE?#Z+2Uo z(2M_wWC7r7oOq9M{-_Y1bErC`BPFr6F>N`+o;*#rC%9TDMM1s9o^Hdq{5a%$Tm$@J zBX&f}-jk9Da!wR9JTQ!pA76z13F`tv{y)?rd`pOGUKjGJt?kleStl#=E;KGWf>)TC z<(%F&%#1IW_l6%SABc+(=tlK20u7zIhOyibqIw1F2j^#1v`1hcJ(Ohe+R>|h`TREP zVoICykM9`&GwS|@gTz|{q}tj${c+4X$-Jm;vTK=AQ-e}T=?iH~73%e+Kda1o(+!%| zO|g^G>sPN|Kjw81bvLARkeIYWZIUO18{apWef}t>ZgoH4qS`|xdMybaQEN;o8^)7m zMn!7Jwc?jCjBKPj>j9}+GJ|3+{#>|

#Vap~KXmqr3*_HW>Tc%w*(O#i8$ z_4AwP(roYmlj(O1@$o72Tns7IB>AQx_w+&!K0p{kv&o17 j{`^-b>>#YKu5bVL7YW?6TJ_=vBYvlY{_yz2@X!ARU=fn8 literal 0 HcmV?d00001 diff --git a/docs/docs/assets/images/concepts/parameter-template.png b/docs/docs/assets/images/concepts/parameter-template.png new file mode 100644 index 0000000000000000000000000000000000000000..a3a2234340a29199942bcd4ef22497ff6fc0529c GIT binary patch literal 23510 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 literal 0 HcmV?d00001 diff --git a/docs/docs/assets/images/concepts/parametric-parts.png b/docs/docs/assets/images/concepts/parametric-parts.png new file mode 100644 index 0000000000000000000000000000000000000000..16d108c23dd3cb5810a9132e61f3de47042842f2 GIT binary patch literal 45460 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 z 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

2; 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 Date: Wed, 26 Nov 2025 12:37:25 +0000 Subject: [PATCH 4/4] Rearrange models --- src/backend/InvenTree/part/models.py | 162 +++++++++++++-------------- 1 file changed, 80 insertions(+), 82 deletions(-) diff --git a/src/backend/InvenTree/part/models.py b/src/backend/InvenTree/part/models.py index 207f094e50..ffdc6e735f 100644 --- a/src/backend/InvenTree/part/models.py +++ b/src/backend/InvenTree/part/models.py @@ -370,6 +370,86 @@ class PartManager(TreeManager): ) +class PartCategoryParameterTemplate(InvenTree.models.InvenTreeMetadataModel): + """A PartCategoryParameterTemplate creates a unique relationship between a PartCategory and a ParameterTemplate. + + Multiple ParameterTemplate instances can be associated to a PartCategory to drive a default list of parameter templates attached to a Part instance upon creation. + + Attributes: + category: Reference to a single PartCategory object + template: Reference to a single ParameterTemplate object + default_value: The default value for the parameter in the context of the selected category + """ + + @staticmethod + def get_api_url(): + """Return the API endpoint URL associated with the PartCategoryParameterTemplate model.""" + return reverse('api-part-category-parameter-list') + + class Meta: + """Metaclass providing extra model definition.""" + + verbose_name = _('Part Category Parameter Template') + + constraints = [ + UniqueConstraint( + fields=['category', 'template'], name='unique_category_parameter_pair' + ) + ] + + def __str__(self): + """String representation of a PartCategoryParameterTemplate (admin interface).""" + if self.default_value: + return f'{self.category.name} | {self.template.name} | {self.default_value}' + return f'{self.category.name} | {self.template.name}' + + def clean(self): + """Validate this PartCategoryParameterTemplate instance. + + Checks the provided 'default_value', and (if not blank), ensure it is valid. + """ + super().clean() + + self.default_value = ( + '' if self.default_value is None else str(self.default_value.strip()) + ) + + if ( + self.default_value + and get_global_setting( + 'PARAMETER_ENFORCE_UNITS', True, cache=False, create=False + ) + and self.template.units + ): + try: + InvenTree.conversion.convert_physical_value( + self.default_value, self.template.units + ) + except ValidationError as e: + raise ValidationError({'default_value': e.message}) + + category = models.ForeignKey( + PartCategory, + on_delete=models.CASCADE, + related_name='parameter_templates', + verbose_name=_('Category'), + help_text=_('Part Category'), + ) + + template = models.ForeignKey( + common.models.ParameterTemplate, + on_delete=models.CASCADE, + related_name='part_categories', + ) + + default_value = models.CharField( + max_length=500, + blank=True, + verbose_name=_('Default Value'), + help_text=_('Default Parameter Value'), + ) + + class PartReportContext(report.mixins.BaseReportContext): """Report context for the Part model. @@ -2420,8 +2500,6 @@ class Part( """ from common.models import Parameter - from .models import PartCategoryParameterTemplate - categories = category.get_ancestors(include_self=True) category_templates = PartCategoryParameterTemplate.objects.filter( @@ -3716,86 +3794,6 @@ class PartTestTemplate(InvenTree.models.InvenTreeMetadataModel): return [x.strip() for x in self.choices.split(',') if x.strip()] -class PartCategoryParameterTemplate(InvenTree.models.InvenTreeMetadataModel): - """A PartCategoryParameterTemplate creates a unique relationship between a PartCategory and a ParameterTemplate. - - Multiple ParameterTemplate instances can be associated to a PartCategory to drive a default list of parameter templates attached to a Part instance upon creation. - - Attributes: - category: Reference to a single PartCategory object - template: Reference to a single ParameterTemplate object - default_value: The default value for the parameter in the context of the selected category - """ - - @staticmethod - def get_api_url(): - """Return the API endpoint URL associated with the PartCategoryParameterTemplate model.""" - return reverse('api-part-category-parameter-list') - - class Meta: - """Metaclass providing extra model definition.""" - - verbose_name = _('Part Category Parameter Template') - - constraints = [ - UniqueConstraint( - fields=['category', 'template'], name='unique_category_parameter_pair' - ) - ] - - def __str__(self): - """String representation of a PartCategoryParameterTemplate (admin interface).""" - if self.default_value: - return f'{self.category.name} | {self.template.name} | {self.default_value}' - return f'{self.category.name} | {self.template.name}' - - def clean(self): - """Validate this PartCategoryParameterTemplate instance. - - Checks the provided 'default_value', and (if not blank), ensure it is valid. - """ - super().clean() - - self.default_value = ( - '' if self.default_value is None else str(self.default_value.strip()) - ) - - if ( - self.default_value - and get_global_setting( - 'PARAMETER_ENFORCE_UNITS', True, cache=False, create=False - ) - and self.template.units - ): - try: - InvenTree.conversion.convert_physical_value( - self.default_value, self.template.units - ) - except ValidationError as e: - raise ValidationError({'default_value': e.message}) - - category = models.ForeignKey( - PartCategory, - on_delete=models.CASCADE, - related_name='parameter_templates', - verbose_name=_('Category'), - help_text=_('Part Category'), - ) - - template = models.ForeignKey( - common.models.ParameterTemplate, - on_delete=models.CASCADE, - related_name='part_categories', - ) - - default_value = models.CharField( - max_length=500, - blank=True, - verbose_name=_('Default Value'), - help_text=_('Default Parameter Value'), - ) - - class BomItem(InvenTree.models.MetadataMixin, InvenTree.models.InvenTreeModel): """A BomItem links a part to its component items.