zT3#bDQ$*kBk
zWZ&(rdD-0A#IweHA5Y}`WA`?Efl$z#meXrcPqxbniaJIyvHhNeIK0ETRXW;!7CY4H
zwSQ6q+<_BKZ=>1`{+MUl=Fw)k=nyHZ1#i3`6f%$Tn^Io^^a)^qIXp&YnW{sdF$L;s
zH5?DVR9bBRTxFf(j*>Db{5I2jQGs{0hFZZYKI|Hx(Oz_sC&$NPf~k=KNWn+gVZ2xWdCO2;bVMig2s=$uz6=?5ESehzcAw7EP`8
z4a5@q1PvyMei9-o!^D7~j@-w&$C7&G{^f{KF^mTQT%}S1KR#@8mCHz+Y}Wzi?7+}&
zTC{lJWRZ6Qh=~JPs_9L`m0IsmPvU8aC
zlalM45`m6=+VYu@Sfz6Xmf@f@E>5F7`c5v90DMQUw^_^O|xQ?AoZcZeJ?9-4E7k$9jl
z_}W@wpY)FPZv7mN9-l0RhWmoF2X3DxIbvR+U#B%PQGUXG-xLZ3*G!^t{yqcGh3
zbf$wruS106Hu5BQx+f~1yR&>z0BAzR2;%Hon6v?P<6lr^$U3j-p@uCiIqQyJ(57Eh
zAB~a!TxQAay6C3k-=dr0E^Z}(cqw`IEYhQ`YmX!ajZdvp`wJk2VwmjU?+ZMjC~+==
zYIZqx5ugIDdkkYOh$=V95w6X-hsgStT>y7Rz0)H6)VV-U3Vb!>lQbL?A&^?Phne1*Tuxa_oSHNzL|*SNjUmn?4mJ@T~CPv(T@dI*OV!*>K8
z4E5r4sJ(*tH)hT+hpWr22pU8^GaE}BYhyY*zJod)ZnBXcP#xSApj#O$?
zXF?WW@h1Hotw5W*h%02}MfKn_w&U3(cjp-Zee>C;5xldDef5sSGMVPF;W(5ytPV@+`9I0O#cd^F*udlua3@S;oAMs}>cRQ@U+|
z<_ZRogGSSuQ~f%P)UeAPwfN?XHoyjT6b>$?Mo_@Zow~}r
zkEui8F9hgN6r>$CDL}0BCNE9>(ipd5^fgm|bde==xp66}bPw`s3}&~30O5a-l*VU!1yDM
zH@J*OL7KuTeJeBS92;}WBQ&|#0ds4$xAA$OY2W@ODRo{D5h=p
zI72$4&fMZ@lL`Do%$dH{G5N@fH0@vGz9Oub3*xvRDIlSgU*aWj|8RR;Z}+`rrE8H{
zpWzu_(u?pu_i+vis;LizI1v)lm)Bp;qb@A-3_Al4&JftWO-L%8*QolR@}ErrN$%sY
z)^!^%9w&U;_AwcL>SESmC}es2nb%0>Ip6qLm(@M>36!N^g$DY)7TK(_VHy(F5FQ>C
zO)i-)S6zn$mOfSbX(JhoicV@8<2p`H0CkZrE=Cl7~q^^9`4q$e+Als{@Fp
z%fa~jV`pKnTG;l?rvOnbEWl#+P;#%oXve)$c2K4q_%?CJWs+u*icdJaxE<>3*%wGU
zM9kgC;1z)9m3877Ik8^vHHVCfF|8%r%k-w?=Bfu*d@i7{9V#nZElt4qxl_6Paz`M(AB#kefFlK7`=?&8VY$;
zFVz1PWgap2=1KU3D|b{6oxDrn1L4*rcT7%&k}Ur^Ha(rH*@uO|R2k$J0_#%-14F#^
zu5V=BZc}f!E8rblD$IeT_P2Hz$&EC6{a|fVEX-m$9M^_X46QEK8_A2b$96PZ=1~$l
zDK?wGJkHZmY5j`Okr)kWWy;m|Orlp7Q9x93{?!OP0rk
z-*#fe)53Gwk2sYil;;5c4V_V0kDWdEmhR%Poi`{Ew}o0SXC=k2r&e0&KnqB{zR#EW
z9I=>UDf}At&+B9t)}$RoSfk`hwf~0Zg*fCuBA0yO!Y9t+9aqYEKUg@J2hCX
z=*9lhHQV-bJjg)-3#vx!cRC&`_?^MwY1L&F5pl08s^Z+EA3N*GM64p$Ula60$szY<
zaZeNv?f&8_N%D&i?aiDbnG*hAZ^To(z#Rx(5+Jj1*OzR?D@+e1nLJ$H9py2T@AKt=
zijeBUkh_^LVK-&O-EPXOP_`hGi2)-t@IbTf^-FAD(*W6A?Q4nFp8yXg%XFdu3GW02
zOo}(*dq%k2r|k)z{;f7+jfnQ<4rGktDH@M~ztw7hM@+BZVv|X-MO%R~`&xHF9$&iMS@XtYMU5B$h(>!fYH&lR=27~puN=`yBFEN8#B6Kp6;6^q-J^GDV6=0>zWPov2zSaQnKyYQPb=Lg-LD>0$bv~&80*!ex*vbvIG=cz$B
zRII@C17V{I*@~K%ekI(ShpaG4lB6CPB5B4FK>E0M2qX3XbyV18*@lc6@K5Dy-iLon
zj>}cTKU*?3`{mLJQeV&Doq1J^>BNta>?Bbh>+V#Wr7VCJAJ`t$Uiv$1t|VgLtAs6q
zdSjXRiMn`VPb#rd?TD
zDKOg$kU^}HncFHFT1})-aG&nB-Ay2Low`%A@<(|&5C@HoIJRT|%t&ZM8W%SPZuCaD
zO;oir1zyf(99m}RW`z+8t^6TeKK{BWC#6h(1`x!PhQ-?`QJPL_c9uq0;EPD?Be2i6
zEQ!fmhhRviVEtIT)aEV+3fORAy?W*Y;R<6axv0S}WrOrwjip{;ZR&x{gSbCR(mmAt
ze$Rg{45YLC5iW3v-w6WB$|bf*r_f9yezv
zPg;6hb|V~o)JQNksS)W=n}RE~HWxl)Pf6RM$hARKkfA9M^3uH`
zlBEy)K@3Y-(WK5#^>o{M+B8`w-BY<_E;=kKNQiVZ>1E?P$3oWqF><3&Ch37HH^TGZ
zJ0a{KvgHXY93tH82hB~uLl+9VgCAa8@dm2vj;8TuHv)A4!@_hxHc;Fcg9ZqSivn@d
zXeGI^sWp$#q};xKQ#_DmQbOkz_|u6q1*O1s*2i+Q7g$t
zY|L$5SIDs}ETn9|h;U3E>v)>AoFV>_xm@1@tW%nlVlLb
z8#){4a5;L8J04ua`U}N7cN4qO_;XgV8S`W72Mf*x8X@yoh+R78sfCkorE`y+)GpnG
zCqNwf%jeRp2cL)X>1yv|4l^4asau8O^!Y;ti$_Qil_>m4x{#OP*&`$#RN!v*v-|Dz
zq~b5nAU+{nENbg3;|CEPTo#ib#%_a=KQby_hK>Gu)Rybbb`X_UB$XI=HK9
z|ukW1xus)Y#P}%i7;Q^DCE~7bNh)l`8`*==>!i>98%=LIYGs55U
zH@Oz)hxY*2Ky~MT5LO_w_1TmwD=mE4E-pG9)BZJ#vG!5BlsKM|nR7d7feBj5qXOUl7cF96p?PGT5AuAhZTXbsw>pQWqhTl9BQmcX#qnGeo#X?HSUmj)v
zdaW->d*POR*Dsq
z0iZJzaai(VEFNVX3(%jI}>bVpFR)`0ky>mm*}@g><1uTIF*z%Ou_f8u$?VLJkPC
z_7bv*Z0^hDzV_6NhEq2%_Q`=WPOO4HPt>_z4|V49$qHjz;ZHj{qlx%j@?G_4V9f=K8WTvEZnJYF1(?`RNzbn^%;KGVr_%hj_CS@UH;fV=iAch
z|2U6QcSU-4D2%_h$JcSL>$1rAUnL#816x>^y4tf_6NaSzyBrvxz`SM{d2)K$p4&pe
ziC(qEZiFx-$GOnOyzXJKCdgWNR4K)pj|b4n{-H+#c)O&mY>H(SYMf2!=^@78OFRWC
zwu?{x{+!W_tP>xsSIiRGp5X(4`(IKWPzKTaq}&>2R93qsLn`LbkP?X1@u?J{o8{}x
z&w%eq_u~P~p8$mIpH@@Jd?&5#D|MlcY7b%2-z1at{*}KB
zfZ~_F28@VGzvy6Jgf0R}-|5-f!ssH^aGuru}T5hsXHU#Uf
zwVJJupR(7tEK9LBtcK*+{_QMfAkYXuIQ5Nb=n?Ej=^nD&NK1{oF{Pg8moreLR(5=-
zhhAiGb{9@}gvEAg%FDJ)Gb^gg{;wA~Y00fSuyPrv%>IZd9vIGc2=2B<64UJ53a80+
zRkE!reEAs0v{n3WGNwTC1@nL3nbgJ)`2230nk~88;D7@~zx)r&tgoKY{&&LvP<8%k
z9sUn*=l^Z+I_tw(LzHgpnisDdT7b~$zPz_2D^UivQ5ic-unC9=djqx$!MA|
zCm@plk4hu~l3r8!hti+~JQg7b^vpUk|D{{JX8KDSDFkNnCjJF;lM(>6%bx`N0p-wN
zRB%Z4FYRI%&;T5>zbNM>!(X7)1z05PA1;Rzpms9q{JQ`ajl8^n;k%>+C|dZ!;iZkp!}%1m
zlS>#5m5HJNW$b)nVq!{kO)g|$*ivp{naL-T()06kn;lpz9S`{1kb;Zf6>k<)bvhZqvHK#|-WKhj
z+T2|p>XONlRJX~F8#|@|J#Lw*@&Y7bmx9h
zd?hpvUc&^s1?W`yc7Zmp-~#o^)=0sVIw)jRuM@N{T(%y$k#gqbNz`8K!1
zW$?F1BA7g0=}xn;)Fetd(9THnP*wUD{`HmSE(bafN;DTpo=TTl&ix*0>rozJRwp77
z2Bv`)MxcIMiD;5E_&<9T44jv@Z=&GY&UTULin}}x+l8+zHrjb-;1j#h;gKt7y0tx6
z)9+%b`f+<&n46np)9+Tizp8t!-tSVjjjm5fp`X!(pU9~C(VPCeHh%bTaZyaXeG7)9
zG+4bAoSinVvyCVEy9o+jf!lHM^^1SE8iN6;)B4W-&Q7HHTse@`tA~SWxm+oWUl!!1
z4q!`-dtco<05B5?*B_N%%EuUJ#Q}6R>n)x{9O>`e1b`ka307{f|9!hh<9GchKbA`1
zF=KU218bCQp`u7JV>Y*$g!zdJF{v%)Q#JFklHAiW(&uS|por4`fPwP0-rk|vrlkPuV}
zY(9m-;B-)mjv$v918M4{2q&6NQ3-XZAv)btj7J{SPSCZAks3R^4lRX%GVW}3B-*#PAU{W`7dmp`ClVWRE8*lEzfTfw@^$VPper=;1m?r%_Y(muS#Sh>P>g)-+pln0
z@}knx{X1u!6=;;kg+CwFx($}$+8>bgPsQc4Z_-+ujn}QdY3ZtKaNx}ShwnX+xSi-N-7qRYjmRjb;h
zIq_TmvE~a|XVqYnW0gZES9?=41dhM%IMYQ~G}^x6EjiC>gNt*P%wj|$cf5ViayHSe
zU>_;segFmk4N9vHP4OWE{nHeiek<*hzMM3!im9A8s%PSCq$v8P`~TD1S;fWCZhN|s
zAi)|5t|7q*7Tkj+xaGs$-Q696h2ZY)!8H&X3GNWw8z<1XPLaL$IcH{W=4!YDeho!+
z@m9TS{hw!X#dIVK#j@_m31Zgdd2&xW^qXrXi|k{<2N^FN(%Uljwu{{P<+j@?As=zv
zE3H8N5g49)_%68?IzRrYn`9zjbC#t7bI>fY6kk{3J-zH*mh}zmLUM`CAN!0AWs&y7
z`Xk$j#MSgWI7P~Zlgx*Gie
zhb!F*+mn^H$890oGt*Zh>=#x3?!+`_A!{Q%l_YU_w0l!9DeldeW)I*hnA2jlml!Np;XTB#r{>{2w{P@*CO%M
zDX7eXMCdAuB6tkomw@tv@NtK!xeWB4gwEBU&(S*@yL7rr%u01dnm;rCtv=Rzi0QvC
z3{l|1NZ*y@53;@I_*J)O`VfpAn0}>w#%`1>aVPv0Yn_Aa&S0)e$06T#AT<;uq&iC_
z{WS8?P|2HT`A@9Mt=W9>k?k2p#;3e{#u6QK6$)xpG3zTLL6chG8~T=;rNEsw#0eAu
zS{FL+Q(EB$zG{9ZU#Au!YQ}Tkq3*5^+&!YmPW@vPb
z#~|HQcYtr+z1ALaj+{^Q8~j4M+)qN66&%Q(}KG!339aAE8lyTaI%Vy@__Uon!=
z#2#?r3+Mh5$7;0-i*j4F85ZF&jQ9}qC+^n9-A|hO^mMiV2E+~CM_21S>d62KpJVuqpbo2qPE`q!3}6)hr?AU&gE#>
zVat+jw^t(Lm%q>oD|hiKIu&|vniyn&WCJK#g7nR3i|vGKf`K2mgIhnMj5~K}+!ZLr
zY}ey4-YTe4I=ni~MNNL|s%sNUKP_y(bC7|w%lAn!%t@=}0*IBjWME>X67OYnxml$q62!(Ho=;bBIcI7-Ik1jwP+n?
zvj4gxLU|1VQb?$@i^~2nnQ0yj8EdmEa)2KTfaKsk9Q1rPLL@)hMn(uFKYdwaGN9>
z3WAvX<^HCT*81R&7`|*UjK(j2^z;RbOPnqCi3pruzrXcLQgEg9m&|TTPyMnDX?);G
zoMCmBFDo6Mh&6yAW^_h(y|$X9Mkk@TFDlhl$yV-{C*5dgG41H?&_04$GC-T#W+soQ
zd3_dc;TT*Fmj&*_zmJn_le&fRc^V2s&8l~E(xO`-2&`LFPWjiUG9`1<#Vx}?v}Oj#
zoA6>_fxOx7am#d%`N2CQl44&
z5@D{QcUNY5VL6`1^)V@1wQY&9#Tw$4dR{|dE`{CfF}nG);rSU_o-dnHQj0wF<(pRQ
zvBLYe=M!zV_(xay=bN2^?-9}LrZBu3*$!vFiEL9Db+k^}ug$+ROp
zIw`tejW$$tr3AOFrWC8UIjGh(ZK
zqr0T&8@I6H>!cEi8tqVINe8SMyD1+OO=!-d5DO?8-?hHk*%ZfQiae%_vK>5fqm)t7L=4e@n7qfD6dE|wuSa8lCh&r(}
zGVDT-!bjH5shn&W98%1hW4szsn1E1DuZKTTLI63r$O2Hobn<*;D7F+?GfE0cLA7dg
zT4`q%Eb63{g8FAG`5mvMJri
zx&Yw}BJO&NaCt5Isw-w6u!>p(nvs=t>3XaSKrX}%Jrevb+E8@hUk_AVH|hnYX3H@>
z)|X5no9ffCjroG}zPwPI7>V?FDZSw%i5u3PAs=1<&|Piyqtby|3MgQj=!E}kUj#*i
zfN-2)HU@7psRkKwAopQYl&!U6Iqe<5gUyRz{mEMe$yuVj_942<43Q}R4LrEaM1+s3
zt8yTG7|)kqR3{sIrOb@6dJA603w^8*p$hLoDOt#@Z+`uXFQsev!Xf|r
zR56jm4#@!Ver0TU!|nCS0CneF@(e6gMOkwO_4r>Npf~4~xwPR^YG$l8ROC6640p;6
z7hNAlNgA6Yq<^)^we&AnX&YOs^et6M5{pI2G{x?)vl00LR-gF-vH7`Bg>Gv4@Yu(h+TO|CKe~J-D7rXOy!hc*;L>%*?lv;POB&F!e7&r`(uJZ;
z{ChtYK$sI~JD@iqM~XYI7qYkWNW5J06hkOxkdrWQ*Hsqd(Fp
zE2pqI>17KL-#*WQk$gCb%YG
zDMM)~eW+0SWp!4QVKkL@72;qq5BJxnUA0FUYTy1jN$cv+2obT~DPK9$KNq>kd=!8t
zN~Q>8|A}M?X9h$=R@VXZVi{p!IFo&=5*DAYso-~$B`ECEhi`psE-RQ<9+CT#BncUS
z`mn~|!ktH2#gpCn`*qW(l~+^hwVAd9OEMwp+&;Qu6h2;%&YW}s-(rK;9u*E8+#MlZ
zyK>ZcK`lMvPvJecpV5iti?8kIkeoWW
za%3S>4umU_YX~3lyl4wYxb&lvhjQNQcEUqtEs8;(>VJHjy!kXFlGjcF5?~bx+h|f2
z)Fv0d;a2AL%aKhmOYjJ<>RwdO9^y%6iLwX4mk6dioPz4>;O-}US(aYuXR?Q)aA5B4?%--NK2
zBe}o2C@)!|>%U~Ln)y{>N}oI8AH&{RtM3wD6GLMh0UHcdU7*sV?>uSkjKx{omDzdaFsfYx>q3Avx|9Gg%eB#w*HD+YR-Ybt<7QFj-JTPgVgTxqJ`n
z8z0G&Nnx!!=8Bg}I)?z@mCC_Rh$KTqP{3vcBYzIF)|^1k%Wu7%o?`Bgow0z=7blo}
zo)i}G%+vcQSYEqTiJU?@7L$n0LVZite*e{x&qaJ~3e%+Gm5wBP1t~p7!{eJ6S*7j;lH|c@4^RSQX$-iQRJoU*N-;{l(}O;-R>2itTC7%?4pB`)-ZVJ$Nz1e`5!`?}#_jeYdVNJGXK)J0$q@&}r?
zJwigs_>f83r4cNWH33Sd)QOD29^SNVuf-_OUE&nnyIL*{D@*>--%%26;K)q}U(?$V
z%fFBO|0%c?A_JY|jnsvqt5H1t#z=
zAIXe9(@^_8PZbSiC9L+dxZc`4OBg02JjPSW(UFxPME
z0re9}q&Iq@seHQvzOx|Oe^)M5Q$?7}Or%1?$in`?gRf;q#&@^{QoZ=e7$jXI=De_<{U%sEU$7rN28kKJohnx<7vp^F23a8)VB}aT`8;)=m`KCcL$ToD&f{d9EW~7MeiB=1FF(@TSgnPU$p!YFE
zj&&sM8q~ib2S>Oe-tt)czn@PAa1biaJ+O44A&RaTNv9s$b>VuZfoNE-gkFSmEUsmf
z4}jj)2_!^6h&c2nYG{*-3^tAU_igxN-gMR$3da6>1^ZXE87R+2^qK({N}v?-pUeOM
zrQGcr;}|^GT34-m0(bz5rY5_D)lUmD^sA|q6w4i-uY
z7`=&LNd2ExdVZ-F@U`!kFB{uJkCdL-vndxXnxnCgbNNooo^Na+pTY4}y&9~DskRZ1
zm2C|%j#_zSsk6`R{K5NE5XI;U$bH^Sc)0JIG3Qs!HI
z8VXpG0p4=jhz6jxX^TR716k_SgiMv}0^=W)6;xeV{CoT#*Y`NzbU7xmy}}
zW&oc>IdtK=;eQ%dgO#8-In
z2E}PlsU9FMwKf5|?dBc9hkfga@Z-FGvXkx{Q!VlBs&4J?RY}c9whzmG#0F`LmUnv`
z2VM*#IGj=Yf^jAhI?^uH)P(oKTZ=AQ%nVSJeM)mpS(D0Ro62H3o8(2D8OtvuC$76`Ftb>OkUBN7_Ivbv`RGF%+xG!ijy~F><4makWWfg15EB=MGul!A8#Y*?;suemZdnH%p~)i-0n
zC^p{@;uNScI+WkZ6jY|`-r?D(6_{i5O`_T(UB0e)J^yuhHiXi?_>xq3fTD;_P?HdWCGhk2l-_Il(q_3bH>%&@NIm{3?l
zBkc(B1s+*BJ9906M$$m?S0q5LfYs8I_hfabtd$>%AcWewP-I>mM#aV~0F)EQBYb*p
z(mF=tp1XxWXUW)qzUUJ7{S2Q16DG4;)~{;o!S}wTgL1iWhFR-BROpd{Q-K~tfNs7j
zLK0=NtyT0U+3YSYP$&{rqVPrOD()Xl5Q{xrh>da3%**N*N@PQ+weWOC!2E+Ps;O{1
z@iNl8_v6`@!B4R1b&YpHjVe>l>H9#;p1us~cAUtuAm@L9JNRq?;idE^U5|@}W2JX3
z0cgQ|%}Rd3KSUQDajK<29}#F_(bH?r?C>tcGk}q#zFl^1-QmO6S
zuW)RE`6{KH`%C(7YQaNd9-Nkfwr>oCG+uhz@hM@va5CIq4qmFX
z=q%$eLdJS)Pd#nIu#D#WLtWe4Q5Ls3}O4%s!d^z;tM6~v=AJZP^T7PDz=M|P
z62388q@4}vi4G7qDJFKBWaYMww(BrQ>t5HsT^d2Do_@aUpP6+!i0JTa{(DNvvJYRs
z`=7}hZg>UbJ4|2+^$F>ZgkJ=vEE4PN(tiv;+bKAhDArDvTGBS;l?Wn4c(dcrwzStc
zg4aZ#phiq(Hel1hN#akXB>4U9rO!b~wC9*RP8~Y{>i)YWTRR!>>;||sBF8W6C;BAu
zWe`x}u~wi^I%-nylYEjWdjsYOQ`JctSY>S*Hi-z|@&`ErVucAbCy4VRAvL}6^ZOqm
zo~I9B>lUKJhHWe|v4R^OlkAhB#q<*-iJCo^bcylDceX
z^!&(H6k7o1nHp8UK4WgWO!v-|IznO(0dR8AOI>KL(7r)c*4CRit*Y7O$g*_aSHjlt
z9EL*@6x?SGn0%LjR!pKG`@y#S$n4znH)?BC!3SwTlwt$QwBrSFci{z0{fK5g&tewU
z^t?#Xih6@jGnc=-!%hqq{bv)TN`pF;^5s46b#f?z64ck)cdk&DKXh
zD9P1DZ`u$=XtfP$&H;Y~id}DB@)dG5i#pNt0?`n=_g?ojl|#s18v7fnD0HmE!x>5$
zsKObA*7@m;J!$rtgr!S5e3
zs`~4Dw(jucV4ZW{L@GEk$G}g;R8tjkF5|XR?v?z}Z~mdRlnQ;@%8>{|Ba^X-v`NP{
z^+ItPivo`YAt&vs!`HA(F;Dyeuzta*^Av6`-6M@QCcNjTkchw!RX{|=>wzXs(BKW+
zye%_8w|__JTEf6PVq9sW#pB%;SLIdRdw#rl?y|@2wwGvaT54MU6n^iuQJlu%fYUvz
zgv0_$jV&+g%1W|%0
z0d$$P4&zZs2XG|jBZ-Q;q8v)w|07)jB+jmIWI1WvZ-YSAb40KX_yFKVdWt>bK2krM
z5_HvMsB&;Wd;Z-Em?0R_3!8f`3LGVEksg`W@=PzeCb+6df7#J7*4)Z3D3E!twxN>7
zm`e>eqk2|r2=%%l7W+n+hUiT-3*Zi2<;6P{PiaZ?JzsNap8x1QYmtg=^Ge&WPYXf|
z$FCyAepNbJ@JlbQuV4e!$9-rUCX$$+iKEkcVlp%J~g+l@w?5|l-0
z+ZG|SZ0NiOzDWQV>O|w4&pT?`N$}gPGg;7AIFU`->5Wf?i!@5Jz&E=0Zz=J&95t-7
z4II>)$S)MAf0g46EzZqfXsVI4ke*B-Rj9zfz=_Z)(=dJE2geEPs
z>sM9{v;sKtal&b0LqF<7HgOrbl6>BS6-yw__UfCz`q!b#MRu=^j&HLi#ZhmPdWdgU
zk3BP)3q7t1OKSd-`DDtJNy<&Frm=pSGL^A6y74GKzv!(F%{{_8NP$v##fqlqB#EZ<
zJ+_XQ>ws
zoz2L2{*R9nR?9;#2!EC*v0nfWE}rOyTm@Qr!fww5eU?saM^mh>@KC8#$FFXoyv>Ey
zi(O25&6mQZfVp+@yd?bHZ1btkInVZ_O$&he>m|P};|^tr1}g!~Dq#9>Ekvx13gyOT
z?X|ePrb1LDQNW^3dcPWZ<_-1Y{dTFiKsS;#uX>Ph?GFSaoq_xeEPfHEAqDi3WmGrO
zAVPPt7v~Pw=MkwxlU@^2=+07LHu}%`%fO;;JiYOuTXNm1jvgXYuK_yhmllX0k?D4<
z_=G4}kc!U<;!Y|IyzbKfU?ofu&tL)mjFe^P;eetvD1Dj;rKHWSIM@|{55mSPM6zb`rfz9=7e70U7QW`T*xaR@pHx8zaxU4j2?*gKA^+h2colqo)k2q!HWZ~j$>NYYwn@DaC&W!_w
zl}`w-p*gMWYTi}vW?mj}!vqcx4IiSsd(}vNiaHWE9oJ>`%`{f{>Y{@*LZ&22x7|3T
z-4tkg{5_k7>GRKGo}SlFfJLj-BDx%#vhvehz8i8H%TB#`%-FaQUVn%LCk2ZBRQ?ay
ziElrnz}1gT;i8z!mqI})T7?xB#UO6
zEkBCBqo$?cS4WrNEYparaNSyTK~Fj20FA*{wd;~fCh&&xkw*yrDML6m9N)wX6aM-*
zg2*9!KiuL?V`HZdBlK{CEBT8rI)G*W5cRG!gLEWwUR5SC`GQ#D6_9NchJ&z5m4`K4
zCQ9NA*+#SrtHdfHssnbGY5OlE>j&sE=dnO6w=0rD4JoSdfUT0=7YdyfhyR}P!d38=
zd)B-DF-ob={2#;qOkkEAL}9cT;J
z6I8s)bVCiliReP6bR9=z03KK^mqk2iGm{2FB$Z1OK5PU3S9cgSG<1LlhSUO7>sznT
zmDndL1c>vJ_%BK>Iw@xnDDlZ3c#sMCFbo?%Qh!pF{?9QC$BpaBMC*xUkJ^$mCIx&{sLe7tPKgJ5~im6PNE=;
z{}w__p`jiYH7F>#;_p*Teq#+7OC-83IFSkA4^4L2?tt?njSE4UZM}TEc2*q^I;0lh
z5m~#;eO{IVF(7HNld4m3TiC@9s7KU-itRkta-g17s>Xmb7Q|$taF>{qa+fC*u|Qf*
zFPzwyc#OkWj*urcCz^9gcfO`8-q$Nx_JR8u^8E#qP`|-j-8_9DD+(MX8{IO_g#gW&
z*?z6plBY4XRD-6QVMpzI!Lklu7s)H(H5y#3xqPwEVrw;hus365>kuN*upd;+z^r5x
z7dwa3!rb_*@_w4N|Q)d^iLj35vuTYe_4ojxE
zS|+(z@7A#G4rEeb&l5+>pxcdT*sRnv)IjIeEjOrPAL$s=CINUb{sBgi6o0E@QGTBA
z5sNwuPsWHTzsdhX+->kjXcIF$L>uLCiZbcLk8;w8AdfgzbPUh6lG->e^->I5O8qZW
z*FG_*B%?k))sPO=K66Lh5#1+WfCZo{c_ly@O0hr*4wyd!{6*4DkQdsdGq$BBK)v92
zmw>$5Q~iL>pU6La&8BMEunnJ0etEXa&fVw5_0L;_-3ee_|A)87kbM2aM?h^CT;;js
zz?2w}Ql*Lsr%uuI){-ExVN6>JUF73l{3#wy!%@k>S$NvVejI#6*B~~5h!xKIev62-
zC;_F@mo(tJHEy|w#)48l*NvQK+XZ{b1CYBYtu5yOK$JFBBlzzk{mF@NSaOf!(^6X^
zHye{Af@v*`{G~ztz>aQ6vy_H_?&A|ZATh>KcPcN3Gw`SJ|0d`gj4kT-yVFm2+eh4k
z+QQ2f*3q65deQMms6Y6`TubdBgVKur%R8P-Kd{qur?QOQ+LoL5i-5_BMxNxiXGZ9>
z#GlLtY&|v?WUZ`8X*S!KC*+nq4~2d7T&C3l@~Y?d7WCg70`o
z4DaS`BJPvpm>49xkqiOo#ORvOWxoJW60mv1@kvvf?*BOz+#mXly^ZwAzh>)DM)kzv
zNfk&XZ9bqi5J0_21oc@v#mtYgexWxLY+MMKfn`3uoXYsrBLLn(P|PyuT}Cu|C!H;_
z=3H!8bqdMTy8gXi@6$&PX0)q?v(d*BuE&N)*UTsPO2=G(mRba?i-EjYo!9hJd%iGQ)3LDv8qmmcN!_HNo2xI`M|j_n=E%>7kk*YbE7
z4GV)u_j?4`?YTPJvG>Ol^r)m?7^~^-8oBj56;cDv9*#)#CfPy^5w_AVZK%E9u{HYw
zLW=4l8^Rnd%MK0y>blI6
z?Tdt#8Xyi;bUzapUozR9W_B2{-
z5xh7&(37+%d)nzxgdNm)(+HOx7i#2VR2%Dzq)m-)BXQH|z`777V3+EQK1wi$KL=tf
zLGDij=ohwm8nf(9`R33QjEgO*FBsi+B2bS49(0T>DKMQc#Zbc!2YRd3icY`;0&s53)F3uqYf&(%JxIbJM&Grs8m
zZhWyB=ng1h661u{$;*C(JZENr{x6#4?-=VUH`wEiwrp8HkJBsrDt~S1it6eAV!yeL{to2(z
zW2d=K{6U*>bt02K)v`JU4mp{Lp9`eu`$*)3G1qXkhC?2sTXR7$=
z@y7d(XP}-~R29@^r_@C3!C6&xPyZ1Wv^v_
z_p6N9PY)M<6VsIN8Pxq(j%mup)44`oQDf3J3*2E{J2aiV25e1SvOGbxz_cwyo>^tx_Xk)$!@e0y1vopI4R8J+tl6DXoaQ5$c`q
z=o+pDBp;(zI;d$cVJf*iSMP8s{sE@qYzyqJ)h_qZ7G6%U(X6F{XWv~p0-?Jq>;TyO
z7*}H3cj|uXM!A^8fC;=R+y#q$x4_r_m{o~&Yw~s^RI66E+Zk@EVy#I2#WsCQECbx8
z*BdltkBaE0eI)ec7&_C6oOxDfR5M1pJu_{6D!ek+Fwt!G@kSs&w0^mHC$;!p&D(N|
zp;i8%bTqS%JZ3o;7{`+=I(GG>s?jn{8TvwL`ID10hC!(@I{#~Ot>PP@{%h`QUn-oC
zltC;At6Ep)d=zCADC%(m6;Z!vf-IBxhk9NA)pm;^V5p|H06$RdYGC8q1-*hKoeaa!
z^RWrnXaE4cdZ&HJLot><78_j~8d5_Ls{nbtw#{$h>?s03QPSTu*eQO*
zS06e>Q*|T?c4`28E3djg1QIv2Gb5nn(A)eBT53bGndeuz$hyn}1`wEB{GKjujwS@^
zJyp>#g$x17{zfA@i)^ou!Hnw?&F>Fbqx`;S;m?7_WVErxGwNb7Ku}XMUF&xC4O55a
zAzHNbRRE=DKPCE5Yu{?|0@$1v?byIQ2*7)PiiBL7=D*u;r0lYIB6`Y&wR~IlT5z)b
zxp3T$h+-&Aq#?n)bj#RpJI^2Fe@s7gXb?}~3q
zh*izxI9-CEZ9m->`P%q;>YtvFzq)Gc+dSK>bxjmQ{oGtV6vwz&YE
zRnp^(eNn#L{v+mcq(ya?*UPWD$Pzr%5(JyA_b`oAd{wn;pP!isIV?JoXQU^Ef)iN
zGxTcsmecJ5=d-8}_A)9mVm#x**!|T1kV7eWT0aApmoL>X1|c3m5S^hRdotG!+FKT^
z#}<6cbwUA5Gzz=7AEm?U2MIXn5{~w`j#td_;EzwotyNPcMrTn^FZ+)Y^hAOIrcoFm
zXIGF>a^IcrrXp43b=;Kekk(~&jRrF>cNDjUtG7IC1;+*9M4K1Ebv#Lkw16688jk
zt6S|p(<_%A|2$%{I-{=h!6S~GREg=zwQ>Pz#sl7lW@}g*lMG-k%G?(gS8NFN^9Az0
z1ZJ|+3enl734pJmeGn6JO+NrpKrNX)!!or1$ue<8OHHb5x}8RP4`~3mW3Z>NcXE|K
zYuEtqF*$sM3`#J*J#i?#gA>;foPRx`&SzlJnoEx*=k!Mk_ApJwrPxSsM8#a;0@K|C
z0Czw0VqA})bmvWosC8EHJELnnN&fL3q{>B(UbJwUa5zuhdZIk#(YF9aVn0TgNs2BINhl6Abw
zvKOg-^}!Z0&~dL_M$A=X4idoTwN9(S1g5Ph<
zn^KpT0g*@tp_~Z{h$0jib;9d+dWpRR3ohi$(Zlz%N19K)^jG}c>T1M`FBr&=Rk`h9
zUgS3M7?8in^E43QQ>J5!5t>eaaOX%ItXpjdouLAk|C~cG$;a?uREb6boxSFCRx;vS
zmEn!0__}r*iOl9r;hrAI67Iqwf=)S4|D=h;CZGx$ndb?=a#&V!P0z5j99zf8xO%wf
zgCav%L%KAcsNk#SP)jti)iEep(?znm<6_woQahG)MT|hO`*wsSWn4|d!U%DyO28DM
z5)<48z^vTxwH<{>>`rGizWTknd+(z6o<7{4Dw3x`j34mxSv~^*cj+u|@>w(ix5oLr
z{z{6|(#Zb&FEP?|&ONwLc_)MzH?sqrv_Sn%Em{cZP`!tZC?PcMwm)
z+i-&wWk=VU50puDc}7(BKTmn21Wr*gwC*Q}Sl7`E8BsnuMEzd8>IrO>_=)UUV}CT9
z)pLZLG|9WoG40vGm`!_cM2O?m1&+0f${n)X>GM1Y_)~8vy)u%eCg|D+Ke?4G*53
zG`pK$Y@a(?5;>$Ag}tb?+mUo229X_nThB1?FHeoRu`*A8a-l;@wv0*n0iddLd^30a
z5AuHT8M1!bK5~CdK$<`4$G%)U>+Q}=a|jT>NU?rCnu=6c_d2HKb
z(@s>-4sOUzd4{ffckT5O@6$gg_7uRVBQ>HFpxm>5O|j#(<7H4qI0>k*6EMOd!7eC0
z-j9OXbhz&N^;s7!T
zBt*WfVm33|+ewnJvxy|&vMs4b5gKXHbPvz@T~gLgXa|@z2Ct2cKXcmjKqYUn8{8M^
z8a%JuSHk{?GmUmz`)S-|h*Z$=3N<GD9@XvVL?NG8odFw==WpxD~K_@?NqY=aKqpz043JB
z{HT=OOWR4hG3^x)YXHgpzRo5O61N8=2V*BbSf(*{qd8B+8nBn4gH1`W!#4jKTG(hY
zY(!fm0tk~o-Ru}U%UVlyYS4;c9dTv9ft;Qqsu1P{)x3F;r6`_Zm&(IkklO*w^4n2A
z_k^n&4KF+!xzS@i8zKKtV5EMfX0(UJgbRlvc|$686E1~5D;@MFOHnGo?DyC2AhxY_
zV#5~9Iw<(V&Qj9+P;
zXTwK7y*}t{+A?#1doK1e{HTLiJn6j@yi$_~x~B5xvyM|?!*Z~WMw9KAKn~=iY5=9_
zAW)VYNu8E*q9MP${Q8SAM*LNYJ_5jW2`G?OEeLk1gT=`I8SMvxOglbKdy?5DNMnts
z@gYSu-vn$Qfe}UPyz=UZ&gW+eGdUVc?ILuu@Ij%&k?ZNaYgA4fKEX`1ygrvjb|@dL
z1qe_hQ{e+;!$J0I7X8&wNSx8>J_Ut7M27I4IQ5|yREBtlV)Dv
z$`GlIx%ITo(6l*M+$fz+%4b=3LJntM;)7WJU;0ssm%V%T>A>ku!wJ_Wemai6Y_Q8Y9{V2
z3GZvA7KV8dYshzF-6u5eg=gu^S^@r2-akY=k)812QQEViMuZEFOo%UWqnCcBedIm`
zL|7XulnH19H#QMwSt-@yDP4sdA(!3U0LrXI-w>NbF%rC
zn^io5T)5p6
zoKrpz#!y@asv(vmd8e2^;pD>htSVZQr$6S;o62R5(s8$!gc23J6q6eIaXq3kV=w9In_WJXfCfB2J>|PmvoXL~YMVJ6Xmn(iKl^j^ij&!B``XCRB
z$Wu`_+hUAe6;5Q>fIS1*A0C>>zT;?@em~M5cPHy5AFaM`K}}A&3yjXgQY5M|B);42
z{eVRtsv@OABFSRc|8ZAAR3Jh=n)~@uA|u90qUG9ey+}Y?A%nt`?MKD~=9PS&*~t`}8Xn)t_wRpgrhHG7
zrVMYnmagC6B$fxFLi9n{Kxe_WsJR8<LOTX_D3<6R=^hl@9CBhutHP1v#&(`$s)B^f^45oRKnR
zH&W9mYCP7Uq(fs4?26VoCWpgly`!zVJd8OoO!Q;)%7Gz+8?1nV`W>!cuT|;s*`6qj
zsd`;YR|6Q=4UqOPuz*;=s{&v((dX9hA%F~%XNlBqd}s3?7JPi?s|Y&TByHUln=#oC
zV{qD7ooRyYd+5=JguzP(&N}@iPoCRg&m*lzM|a_FZGFi)PmN4G;cCygJyGuD{gjUQ
zzo%AvQLfW3%HMD!9U3sA{YQ8G%(@>Q-m{6q?bxq}tf|ain4;i<8T}Ayl>4+Lz}o4n
znJw1+=DK1ww|%0|(NbmE&&L??+l=CQXj=bjN6-HzaVlgLM&*74Dz;~AJH7_ygmWu%
zomeIb$$$ODasOu6|D*T@nqPli1phrP;IGHvzhw9S?sES}jQ;=hax+vzidKB{vL5lj
z{Jg4M16esRtdc1&DSP9fz!$LzcLBrOGYtdBTCn
zFA!~@+j8dm8y9)48+Z9TQQ<$?m;bMyu!~jzTs21Y8z2FM6EPaOtGk5<
zyx|GnB23*Mfndwu;DPJWLMCv&sR}(W_LtLBQc%EJAB90;7W~?OC(eK2Iu_lUX{IG=
zqKhjzi+nsQ`6LYbF;l7KhVcNh&KWy+9xTHIOy(jNzsmdUvOj%u_5?@3NZy1y{{|BT
Pe0-9S7q9xDANaojyAl%a
literal 0
HcmV?d00001
diff --git a/inference/nlp/realtime/huggingface/sentence-transformers-triton-ensemble/studio-image/README.md b/inference/nlp/realtime/huggingface/sentence-transformers-triton-ensemble/studio-image/README.md
new file mode 100644
index 0000000000..76083a1c26
--- /dev/null
+++ b/inference/nlp/realtime/huggingface/sentence-transformers-triton-ensemble/studio-image/README.md
@@ -0,0 +1,67 @@
+## build_image.sh
+
+This script allows you to create a custom docker image and push on ECR
+
+Parameters:
+* IMAGE_NAME: *Mandatory* - Name of the image you want to build
+* REGISTRY_NAME: *Mandatory* - Name of the ECR repository you want to use for pushing the image
+* IMAGE_TAG: *Mandatory* - Tag to apply to the ECR image
+* DOCKER_FILE: *Mandatory* - Dockerfile to build
+* PLATFORM: *Optional* - Target architecture chip where the image is executed
+```
+./build_image.sh
+```
+
+Examples:
+
+```
+./build_image.sh image_tensorrt nvidia-tensorrt-21.08 latest Dockerfile linux/amd64
+```
+
+## create_studio_image.sh
+
+This script allows you to create the Amazon SageMaker Studio Image
+
+Parameters:
+* IMAGE_NAME: *Mandatory* - Name of the folder for the image
+* REGISTRY_NAME: *Mandatory* - Name of the ECR repository where image is stored
+* SM_IMAGE_NAME: *Mandatory* - Name of the image you want to create
+* ROLE_ARN: *Mandatory* - Used to get ECR image information when and Image version is created
+
+```
+./create_studio_image.sh
+```
+
+Examples:
+
+```
+./create_studio_image.sh image_tensorrt nvidia-tensorrt-21.08 nvidia-tensorrt-21-08 arn:aws:iam:::role/mlops-sagemaker-execution-role
+```
+
+## update_studio_image.sh
+
+This script allows you to create the Amazon SageMaker Studio Image
+
+Parameters:
+* IMAGE_NAME: *Mandatory* - Name of the folder for the image
+* REGISTRY_NAME: *Mandatory* - Name of the ECR repository where image is stored
+* SM_IMAGE_NAME: *Mandatory* - Name of the image you want to create
+* ROLE_ARN: *Mandatory* - Used to get ECR image information when and Image version is created
+
+```
+./update_studio_image.sh
+```
+
+Examples:
+
+```
+./update_studio_image.sh image_tensorrt nvidia-tensorrt-21.08 nvidia-tensorrt-21-08 arn:aws:iam:::role/mlops-sagemaker-execution-role
+```
+
+## update_studio_domain.sh
+
+This script allows you to create the Amazon SageMaker Studio Image
+
+```
+./update_studio_domain.sh
+```
\ No newline at end of file
diff --git a/inference/nlp/realtime/huggingface/sentence-transformers-triton-ensemble/studio-image/build_image.sh b/inference/nlp/realtime/huggingface/sentence-transformers-triton-ensemble/studio-image/build_image.sh
new file mode 100755
index 0000000000..e532b7bc21
--- /dev/null
+++ b/inference/nlp/realtime/huggingface/sentence-transformers-triton-ensemble/studio-image/build_image.sh
@@ -0,0 +1,48 @@
+#!/bin/sh
+
+# The name of our algorithm
+repo=$1
+registry_name=$2
+image_tag=$3
+docker_file=$4
+platforms=$5
+
+echo "[INFO]: registry_name=${registry_name}"
+echo "[INFO]: image_tag=${image_tag}"
+echo "[INFO]: docker_file=${docker_file}"
+echo "[INFO]: platforms=${platforms}"
+
+cd $repo
+
+account=$(aws sts get-caller-identity --query Account --output text)
+
+# Get the region defined in the current configuration (default to us-west-2 if none defined)
+region=$(aws configure get region)
+
+echo "[INFO]: Region ${region}"
+
+fullname="${account}.dkr.ecr.${region}.amazonaws.com/${registry_name}:${image_tag}"
+
+echo "[INFO]: Image name: ${fullname}"
+
+# If the repository doesn't exist in ECR, create it.
+
+aws ecr describe-repositories --repository-names "${registry_name}" > /dev/null 2>&1
+
+aws ecr create-repository --repository-name "${registry_name}" > /dev/null
+
+## If you are extending Amazon SageMaker Images, you need to login to the account
+# Get the login command from ECR and execute it directly
+password=$(aws ecr --region ${region} get-login-password)
+
+docker login -u AWS -p ${password} "${account}.dkr.ecr.${region}.amazonaws.com"
+
+if [ -z ${platforms} ]
+then
+ docker build -t ${fullname} -f ${docker_file} .
+else
+ echo "Provided platform = ${platforms}"
+ docker build -t ${fullname} -f ${docker_file} . --platform=${platforms}
+fi
+
+docker push ${fullname}
\ No newline at end of file
diff --git a/inference/nlp/realtime/huggingface/sentence-transformers-triton-ensemble/studio-image/create_studio_image.sh b/inference/nlp/realtime/huggingface/sentence-transformers-triton-ensemble/studio-image/create_studio_image.sh
new file mode 100755
index 0000000000..80b868b37e
--- /dev/null
+++ b/inference/nlp/realtime/huggingface/sentence-transformers-triton-ensemble/studio-image/create_studio_image.sh
@@ -0,0 +1,54 @@
+#!/bin/sh
+
+IMAGE_NAME=$1
+REGISTRY_NAME=$2
+SM_IMAGE_NAME=$3
+ROLE_ARN=$4
+
+if [ -z ${IMAGE_NAME} ]
+then
+ echo "[INFO]: IMAGE_NAME not passed"
+ exit 1
+fi
+
+if [ -z ${REGISTRY_NAME} ]
+then
+ echo "[INFO]: REGISTRY_NAME not passed"
+ exit 1
+fi
+
+if [ -z ${SM_IMAGE_NAME} ]
+then
+ echo "[INFO]: SM_IMAGE_NAME not passed"
+ exit 1
+fi
+
+if [ -z ${ROLE_ARN} ]
+then
+ echo "[INFO]: ROLE_ARN not passed"
+ exit 1
+fi
+
+echo "[INFO]: IMAGE_NAME=${IMAGE_NAME}"
+echo "[INFO]: REGISTRY_NAME=${REGISTRY_NAME}"
+echo "[INFO]: SM_IMAGE_NAME=${SM_IMAGE_NAME}"
+echo "[INFO]: ROLE_ARN=${ROLE_ARN}"
+
+aws sagemaker create-image \
+ --image-name ${SM_IMAGE_NAME} \
+ --role-arn ${ROLE_ARN} \
+ || exit 1
+
+account=$(aws sts get-caller-identity --query Account --output text)
+region=$(aws configure get region)
+
+aws sagemaker create-image-version \
+ --image-name ${SM_IMAGE_NAME} \
+ --base-image "${account}.dkr.ecr.${region}.amazonaws.com/${REGISTRY_NAME}:latest" \
+ || exit 1
+
+aws sagemaker delete-app-image-config --app-image-config-name ${SM_IMAGE_NAME}-config
+
+aws sagemaker describe-image-version --image-name ${SM_IMAGE_NAME}
+
+aws sagemaker create-app-image-config --cli-input-json file://${IMAGE_NAME}/app-image-config.json
\ No newline at end of file
diff --git a/inference/nlp/realtime/huggingface/sentence-transformers-triton-ensemble/studio-image/image_tensorrt/Dockerfile b/inference/nlp/realtime/huggingface/sentence-transformers-triton-ensemble/studio-image/image_tensorrt/Dockerfile
new file mode 100644
index 0000000000..eed1a58ccc
--- /dev/null
+++ b/inference/nlp/realtime/huggingface/sentence-transformers-triton-ensemble/studio-image/image_tensorrt/Dockerfile
@@ -0,0 +1,5 @@
+FROM nvcr.io/nvidia/pytorch:21.08-py3
+
+RUN pip install sagemaker transformers==4.9.1 tritonclient[all]
+
+RUN pip install ipykernel && python -m ipykernel install --sys-prefix
\ No newline at end of file
diff --git a/inference/nlp/realtime/huggingface/sentence-transformers-triton-ensemble/studio-image/image_tensorrt/app-image-config.json b/inference/nlp/realtime/huggingface/sentence-transformers-triton-ensemble/studio-image/image_tensorrt/app-image-config.json
new file mode 100644
index 0000000000..afe58441a9
--- /dev/null
+++ b/inference/nlp/realtime/huggingface/sentence-transformers-triton-ensemble/studio-image/image_tensorrt/app-image-config.json
@@ -0,0 +1,16 @@
+{
+ "AppImageConfigName": "nvidia-tensorrt-21-08-config",
+ "KernelGatewayImageConfig": {
+ "KernelSpecs": [
+ {
+ "Name": "python3",
+ "DisplayName": "Python3"
+ }
+ ],
+ "FileSystemConfig": {
+ "MountPath": "/root",
+ "DefaultUid": 0,
+ "DefaultGid": 0
+ }
+ }
+}
\ No newline at end of file
diff --git a/inference/nlp/realtime/huggingface/sentence-transformers-triton-ensemble/studio-image/studio-domain-config.json b/inference/nlp/realtime/huggingface/sentence-transformers-triton-ensemble/studio-image/studio-domain-config.json
new file mode 100644
index 0000000000..73df5f3928
--- /dev/null
+++ b/inference/nlp/realtime/huggingface/sentence-transformers-triton-ensemble/studio-image/studio-domain-config.json
@@ -0,0 +1,13 @@
+{
+ "DomainId": "$DOMAIN_ID",
+ "DefaultUserSettings": {
+ "KernelGatewayAppSettings": {
+ "CustomImages": [
+ {
+ "ImageName": "nvidia-tensorrt-21-08",
+ "AppImageConfigName": "nvidia-tensorrt-21-08-config"
+ }
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/inference/nlp/realtime/huggingface/sentence-transformers-triton-ensemble/studio-image/update_studio_domain.sh b/inference/nlp/realtime/huggingface/sentence-transformers-triton-ensemble/studio-image/update_studio_domain.sh
new file mode 100755
index 0000000000..dde7dbe5a2
--- /dev/null
+++ b/inference/nlp/realtime/huggingface/sentence-transformers-triton-ensemble/studio-image/update_studio_domain.sh
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+echo "studio-domain-config.json"
+
+aws sagemaker update-domain --cli-input-json file://studio-domain-config.json
\ No newline at end of file
diff --git a/inference/nlp/realtime/huggingface/sentence-transformers-triton-ensemble/studio-image/update_studio_image.sh b/inference/nlp/realtime/huggingface/sentence-transformers-triton-ensemble/studio-image/update_studio_image.sh
new file mode 100755
index 0000000000..36d860b07c
--- /dev/null
+++ b/inference/nlp/realtime/huggingface/sentence-transformers-triton-ensemble/studio-image/update_studio_image.sh
@@ -0,0 +1,49 @@
+#!/bin/sh
+
+IMAGE_NAME=$1
+REGISTRY_NAME=$2
+SM_IMAGE_NAME=$3
+ROLE_ARN=$4
+
+if [ -z ${IMAGE_NAME} ]
+then
+ echo "[INFO]: IMAGE_NAME not passed"
+ exit 1
+fi
+
+if [ -z ${REGISTRY_NAME} ]
+then
+ echo "[INFO]: REGISTRY_NAME not passed"
+ exit 1
+fi
+
+if [ -z ${SM_IMAGE_NAME} ]
+then
+ echo "[INFO]: SM_IMAGE_NAME not passed"
+ exit 1
+fi
+
+if [ -z ${ROLE_ARN} ]
+then
+ echo "[INFO]: ROLE_ARN not passed"
+ exit 1
+fi
+
+echo "[INFO]: IMAGE_NAME=${IMAGE_NAME}"
+echo "[INFO]: REGISTRY_NAME=${REGISTRY_NAME}"
+echo "[INFO]: SM_IMAGE_NAME=${SM_IMAGE_NAME}"
+echo "[INFO]: ROLE_ARN=${ROLE_ARN}"
+
+account=$(aws sts get-caller-identity --query Account --output text)
+region=$(aws configure get region)
+
+aws sagemaker create-image-version \
+ --image-name ${SM_IMAGE_NAME} \
+ --base-image "${account}.dkr.ecr.${region}.amazonaws.com/${REGISTRY_NAME}:latest" \
+ || exit 1
+
+aws sagemaker delete-app-image-config --app-image-config-name ${SM_IMAGE_NAME}-config
+
+aws sagemaker describe-image-version --image-name ${SM_IMAGE_NAME}
+
+aws sagemaker create-app-image-config --cli-input-json file://${IMAGE_NAME}/app-image-config.json
\ No newline at end of file