From 7c189a8b5c906fe382b154949503628b830a1e01 Mon Sep 17 00:00:00 2001 From: ichiroc Date: Sun, 16 Mar 2025 00:37:33 +0900 Subject: [PATCH 1/2] =?UTF-8?q?stretch3=20=E3=81=AE=E7=94=B3=E8=AB=8B?= =?UTF-8?q?=E3=83=95=E3=82=A9=E3=83=BC=E3=83=A0=E3=82=92=E7=99=BB=E9=8C=B2?= =?UTF-8?q?=E3=81=97=E3=81=A6=20ChatGPT2Scratch=20=E3=82=92=E5=88=A9?= =?UTF-8?q?=E7=94=A8=E3=81=A7=E3=81=8D=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/assets/stylesheets/custom.scss | 17 ++++ app/controllers/stretch3s_controller.rb | 21 +++++ app/models/stretch3.rb | 6 ++ app/views/stretch3s/new.html.haml | 74 ++++++++++++++++++ config/routes.rb | 2 + db/migrate/20250315124619_create_stretch3s.rb | 12 +++ db/schema.rb | 11 ++- public/img/stretch3_openai.webp | Bin 0 -> 31666 bytes 8 files changed, 142 insertions(+), 1 deletion(-) create mode 100644 app/controllers/stretch3s_controller.rb create mode 100644 app/models/stretch3.rb create mode 100644 app/views/stretch3s/new.html.haml create mode 100644 db/migrate/20250315124619_create_stretch3s.rb create mode 100644 public/img/stretch3_openai.webp diff --git a/app/assets/stylesheets/custom.scss b/app/assets/stylesheets/custom.scss index 56342d708..f97900d26 100644 --- a/app/assets/stylesheets/custom.scss +++ b/app/assets/stylesheets/custom.scss @@ -1055,3 +1055,20 @@ section { line-height: 1.7em; color: #909090; } + +.stretch3-notes { + margin-top: 100px; + font-size: 11.8px; + line-height: 1.7em; + color: #909090; +} + +.stretch3-eyecatch-container { + height: 35rem; + margin-bottom: 50px; +} + +.stretch3-eyecatch { + border-radius: 10px; + object-fit: cover; +} diff --git a/app/controllers/stretch3s_controller.rb b/app/controllers/stretch3s_controller.rb new file mode 100644 index 000000000..f3fa6897a --- /dev/null +++ b/app/controllers/stretch3s_controller.rb @@ -0,0 +1,21 @@ +class Stretch3sController < ApplicationController + def new + @stretch3 = Stretch3.new + end + + def create + @stretch3 = Stretch3.new(stretch3_params) + if @stretch3.save + # NOTE: coderdojo.jp ドメインから遷移すると Stretch3 側で ChatGPT2Scratch の API キーが不要になる処理が走る + redirect_to 'https://stretch3.github.io', allow_other_host: true + else + render :new + end + end + + private + + def stretch3_params + params.require(:stretch3).permit(:email, :parent_name, :participant_name, :dojo_name) + end +end diff --git a/app/models/stretch3.rb b/app/models/stretch3.rb new file mode 100644 index 000000000..f67a1901e --- /dev/null +++ b/app/models/stretch3.rb @@ -0,0 +1,6 @@ +class Stretch3 < ApplicationRecord + validates :email, presence: true + validates :parent_name, presence: true + validates :participant_name, presence: true + validates :dojo_name, presence: true +end diff --git a/app/views/stretch3s/new.html.haml b/app/views/stretch3s/new.html.haml new file mode 100644 index 000000000..30110f520 --- /dev/null +++ b/app/views/stretch3s/new.html.haml @@ -0,0 +1,74 @@ +- provide(:title, 'Stretch3 x OpenAI Azure for Non-profit プログラム申請') +- provide(:desc, 'Stretch3 から OpenAI の API を呼び出せる拡張機能 ChatGPT2Scratch を API キー不要で利用するための申請フォームです。') +- provide(:url, '/stretch3') +- provide(:meta_image, '/img/stretch3_openai.webp') + +.container + %section.introduction{style: "padding: 50px 0px;"} + %div.text-center + %h1{style: "line-height: 1.4em;"} + Stretch3 x OpenAI + %br + Azure for Non-profit プログラム申請 + .stretch3-eyecatch-container + = lazy_image_tag '/img/stretch3_openai.webp', + alt: 'ポケモン・ワークショップのカバー画像', + min: true, + class: 'stretch3-eyecatch', + style: 'box-shadow: 0 2.5rem 2rem -2rem hsl(200 50% 20% / 40%);' + %p + Stretch3 は自作の拡張機能を使えるように改造した Scratch です。 + %p + この申請フォームは OpenAI の Chat API を呼び出す拡張機能 ChatGPT2Scratch を + %br + API キー不要で利用出来るようにするための申請フォームです。 + %br + これにより本来有料の Chat API を無料で利用できます。 + %p + 利用規約は、 + %b<> 保護者の方が参加者と一緒に + ご確認いただくようお願い致します。 + + = form_with model: @stretch3, url: stretch3_path, class: 'form' do |f| + .field + = f.label :email, "メールアドレス" + = f.email_field :email, required: true, autocomplete: "email", class: "form__field", placeholder: '例: example@gmail.com' + .field + = f.label :parent_name, "保護者の名前" + = f.text_field :parent_name, required: true, autocomplete: "name", class: "form__field", placeholder: '例: 幸田 道場' + .field + = f.label :participant_name, "参加者の名前" + = f.text_field :participant_name, required: true, autocomplete: "name", class: "form__field", placeholder: '例: 幸田 道子' + .field + = f.label :dojo_name, "道場名" + = f.text_field :dojo_name, required: true, class: "form__field", placeholder: '例: CoderDojo 柏' + .form__terms + %h2.form__h2 利用規約 + %ul + %li + %small + = link_to 'https://learn.microsoft.com/ja-jp/azure/ai-services/responsible-use-of-ai-overview', target: '_blank' do + Azure AI サービスにおける AI の責任ある使用 + に従うことy + %li + %small + %b<> 事前に保護者から同意を得ること + %br + (参考: #{link_to '文部科学省 - 生成AIの利活用に関するガイドライン','https://www.mext.go.jp/a_menu/other/mext_02412.html', target: '_blank'}) + %li + %small CoderDojo 以外の用途で使う場合は、一般社団法人 CoderDojo Japan からの書面による許諾を事前に得るようお願いします。 + %p + %small + ※ 本サービスは Azure AI の利用上限に達した場合、または上記事項への違反で使用できなくなった場合などの理由により、予告なく無効化される場合もあります。あらかじめご了承いただけると幸いです。 + .field.text-center + = f.check_box :term_of_use, required: true + = f.label :term_of_use, "上記の利用規約に同意する", style: "display:inline" + + = f.submit "申し込んで利用開始する", class: "form__submit" + .text-center + %small 送信後、Stretch3 のページへ移動します。 + + %p.stretch3-notes + Scratchは、Scratch財団がMITメディアラボのライフロング・キンダーガーテン・グループの協力により開発しているプロジェクトです。 + %a{href: "https://scratch.mit.edu", rel: "noopener", target: "_blank"}<> scratch.mit.edu + \ から自由に入手できます。 diff --git a/config/routes.rb b/config/routes.rb index 0160dcc0a..118856d59 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -69,6 +69,8 @@ get "/podcast", to: redirect('/podcasts') get "/podcasts/feed" => "podcasts#feed" get "/stats" => "stats#show" + get "/stretch3" => "stretch3s#new" + post "/stretch3" => "stretch3s#create" get "/pokemon" => "pokemons#new" #post "/pokemon" => "pokemons#create" #get "/pokemon/download" => "pokemons#show" diff --git a/db/migrate/20250315124619_create_stretch3s.rb b/db/migrate/20250315124619_create_stretch3s.rb new file mode 100644 index 000000000..d27bc8e25 --- /dev/null +++ b/db/migrate/20250315124619_create_stretch3s.rb @@ -0,0 +1,12 @@ +class CreateStretch3s < ActiveRecord::Migration[7.0] + def change + create_table :stretch3s do |t| + t.string :email, null: false + t.string :parent_name, null: false + t.string :participant_name, null: false + t.string :dojo_name, null: false + + t.timestamps + end + end +end diff --git a/db/schema.rb b/db/schema.rb index efd76ca78..c21a54294 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema[7.0].define(version: 2024_06_18_025325) do +ActiveRecord::Schema[7.0].define(version: 2025_03_15_124619) do # These are extensions that must be enabled in order to support this database enable_extension "pg_stat_statements" enable_extension "plpgsql" @@ -91,6 +91,15 @@ t.index ["region"], name: "index_prefectures_on_region" end + create_table "stretch3s", force: :cascade do |t| + t.string "email", null: false + t.string "parent_name", null: false + t.string "participant_name", null: false + t.string "dojo_name", null: false + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + end + create_table "upcoming_events", force: :cascade do |t| t.integer "dojo_event_service_id", null: false t.string "event_id", null: false diff --git a/public/img/stretch3_openai.webp b/public/img/stretch3_openai.webp new file mode 100644 index 0000000000000000000000000000000000000000..aa8b89d30a1353bc2d99fa74b70e167066c7f7c9 GIT binary patch literal 31666 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[bux*Yn$KT{gBQ%)aopprzMs3Dh}X=WqAGW#9Q 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ഷNSy-e22-R5Vb2Vk?g`&?R=ilpWA zlPcn{g|{C4A!Kq#CKw#Dlg^42)r`F`KJNRiTN+@f#1io`sGRcl7WW{Pw7FSU&&dLk zr!YTzE&bI5P}~kbvr~a8mma%M^-{ikTQd2=dJQc#VfR^~7XfX`wQm--EOMTUJqob1 ztXm!|sH-NaUs-}2Q$3)NYRN-Ju%Z{dL#foZvy^5xx}Qm!!?yeV;l|A*! zddHAz{Ttg58eZ`$A3PL4g2vz`e=u9v6d=;xWAWCQhRf+}zePzio4(%Ow*r9W>q#{U!2VTnsaFv=V4QLG10}uspWg;k05Mid2Zr3~9(ld2xYSCrqlX zs&l)_)KgpOV7-uf`{TyN{G8 zl3eQ4IDEFYNI(oTGb5%NXd&oWRI8E!AzWcphIgnC;9KTAQa|6 z)E5#}%B9yLB&yN}#@)mjN%i*V$mY3Z>FR-%R657P$#03|7VO&JFa2QsYZN@VTI zm81pYuAM*n48$FMup<{q?57?q7ZS3IL600VX~&WrS0ooj=7Pw4%Cvq-AgvdLVjdAv zAeOJX-B3{vl{!9fF>EvU)z`@4(J8z%Suk2YxgK|kEDpF>N0sn#4k1Xl`Q3dj*G$52H zofKb}G3_nfmgTzqjZS0!7LC~}h>pF(^gI6|yM6ez|B5i~;pg6pKd&lgh zv%!1`!+_2@ub13hxyXlxkjGVT`Nqi1J)y*cxo41(vm{^NDwY3A`YxV*_Z(y^H;rY4 ziUf;}>gaV1~{$xaapbDwD@jC??ep5%P^iiV*jhGB6Y2M z9Wf_-me)&K%N8$?TRHtQhmxjjPtWeono~ICf^}JQ;9TUu85j>27cJa^`PQ0-bYrf) zaHG+>`?}z1DonJi_+X0x(H%r_bo7wn@Y|s{Wr{>M$W2Xbxhh$wtegPFY2T|Tu&M7v z?;4X_oYuF4JUSYjSK4WPTIc+vd5cGHKN5TIdZJPiVV_HFL_Kox+0BCa*+WDf)Y*7& zC@6G0y;J8Lj0kfxYi?XjiF?ohwATn=H-^tvfh3IJ_2@|3$ ziM;8H8B?;VPBNbv>&&wx)($v=AZgjL3Jm~+nbXVamc-l_mN#1o@A^0DDVX-u)jLA% zzRTTiq_hVxj@@4{c6JVVZ;XFdjQsl7K(11cZRa^Ej#{Wn}AckT~_AaWkpUK%7g*i28y=o$Ga zmxlmGvD+xPn6m?vulP<-8CB)F{02OK88Z;*ga+M6E=k0|In_9%F>RS~!+le?3!kqs z8hzbgGAs8)^S^#|^7oB*vtm5>S}2YJN#r=Q8sOzhLy!3dLhqc;apx+?+Na_jYov zPDa5j#@(geohdmFxVOUSJJ-6?M4n6*GD~$vDEGget23x5$bpWtiuPpC-qcPmV!(&Apb` z8=W9FS}solSAC9jBXHz&l+bYUT{WxqKWaif)t2VX1&WB0Hg(Q7%~YnoAaRs0?95Fz zKO(&5e=(=WAQy)IS>FC^t|V%VQt{{nTrv|CL}z7NQdY`=b`HQJpWWA@OE}fjy6nv1 zs#xDr0kQPyu<8!2!J)>v^Bm{}_I7H^?eg_$F-!sSI_jyJu^;LA+y)BrSxsIJW?VXC z?_0J|(y2S0Fovu^!RU$1*#ghl4kNK{*ZR;4+@_f-QkMX|I%Ut}ku`fgeqQLDy2-hD zAINeei($&eT(a0y*$D4~bb(KGj`{=5nI~$EMCoWBRA1S|x!`!^?zzN%R*OgW?bNDc z$1;pGMdY$w?fFW&R6HIJ(TVba?uq{@6%lX>; zEYwcPO%Ce)Y=}1o03%~R_F>O*{c_{!Xd_Ncp9?MUIk`|sI-1X#eI^5qprPAIk1|_#)rIm@&PrfP-{qMDiGxJ&N=%SoHyBJbV+ zYzC+7Y!w&j&C2;BtzT>X&`&0C_pQltxA41l)^Kg=-zv+js^)I>(_LliF;^VIH{C#x z@T2aQd7m^*v^h&*+mMPJNK=IQ`zkx_x>fc;>bKy57v=hH)SA2ox-&>jgi=gA6xkaq zS`DP5!BQ|4s&19Ij2OW+s;7@QK!C%ZC#&9_48TTN53OeVh zV$d2|B+t2?pwgCM+K(Mam)I)$`IbAItA*fCfP6z_{C>b7Yqa1$F)ja8dBrb1bN<8Y zh`G79`tvmiI<4wdvs&Xz>-6Z54LR)sCuWKd@aTdw92Im3iwy{|#W>k=8qVYKw~X!! zx+$rW!wM`AO(Hl&iSH&I>Vw680>IbD(pgx7Zd+drz+W_YQLOD&)M`U3Omvmn#rMV~ z@S@|uus-7u!!tiJcuP}^yWgdXOXEti6B;oO`<#!<#qwsy-O)3{ zmCyY*YfE(vUE@|CdRfU`W3^!M*Wx$JS#H;9s0e_g7iYKNDI~z}&iZyitoI|dJusZV zrEZdYbCmC7hm4P3*A0j0KnLk{3VO%}0XO@Osf6Mt+q%}Q>VHrLP(+)0bQOcjzTQ1n4<@q8>^Mo`(2F8n6?Jr9kXi?COE5 zGyC|kyy>k33a$HwTpRNBRL^m$GD!Y>k1tG}TZd!%_1YG;s9S|xaRLtQI--Y82W|z% zD+bX$n1344AgtHno;<1mPIQN*6I9h>vQ6$4_(%ONO1;GJq>=-~+W7_#S_2p~{GB>V z@*Il`go zQmMv7AIH-z{3^|hqEYSs3e+NajC|0PP3j(zgDd!b!p(p|hS`TRhBE%AO^>}&MQga_ zLuNmmIyZE`Knw=s>8sX>gkc#R=b8MM69H|TWqB^5oS^lzDQmPquU*B9*_cOG?Pr6W-?# z0&Z48o?HMK)7~q`W)nWuwfbjp&N9@(q~XArHt5mOj+2G6>&FR(F=!hVTU*XXMHQQsZ^dv8kQR`bi7PP&*A?!Eu6j z`;N75sJ6*4taudb^0r&>0|`o!tJGvYOy}qtTS0xYKMaY`@!?x+19=-b=|}M*ws1L za)Ry-o$9uKPIgRl@V!k_m9>#I@<3txOiEmiG2Fa_bC=1-WXPM7 z!nYJ#9~V#UR9`G(7EMnT6CiGE@r}Z=$mXnKnF;Mr!=n`~o>??0Jvk;7$1ChI zk~5lfV4A1PlVuJAN5&B(l`8@e4U8@!h;y8BX_Q#TNDJocu8GT9T)dS5imPQ*jG zaISTNGU6nI=|_}xf+md=2McnVF7t`;H0mIkW63KO20T@CCS$_P9Wew$Cs!gAPGGz2 ztEs1&N^hrD@|fH1tyeL(G1zh7ZBRlLyF?caP&aa9+$OoLfQRpppNn*Mdri2JD!Re3^ye77Mh>h!4uEn;>_LAeU?urWJ?pfp1*AB*L$r1m6T=nyu^F`d@L zgOjX=r{S0x_GQyyqd<&>%0JF8Ys{n99)8dzslDnP*-+MTz|v#g(}|Wd-ji|-X*Svrgej3a~Yu@GKl@ipKALFHWuPiES}iu@Op+|_*&;pO|;in?ApmRmA~!bS#66vhyCN+%q8GUmQ813 zI`JrqHF|CIdp4L|@2g-wqdL7;t@I#VT55^R9E$pIwVf2j zczLp+NruO+KBW>&TELyBW}8j%frJl!;;mS`BtI$kjIgga=0xO2d@xR{z5a zhl|l$9~)-|*%+q*OSl8orNhARl1(OKP--cI5%!kJ^huy#M#-5cq(ImTI(Ncm}*Y(!#9O4r-K>8qRJ8c+0|=tP(NH%Ttg4-gux04hI$)}l%Zc^KG0zUnlo5(VvqlIdXT4tD zCOZGgFmJWGe`D_+(0Vn*F|=xOV1~Pnma4o)=7tPxsU>)ZnHQ>6`gG{lAFYCV^FFSyJAhEBjV>jv_S-fzPW1KigYLP( zcn?LeWt&)8`AyaC4ZWr>T8?DTPg^Pi8*PUm@M97h*Y+RiqkK?z*RA7{k+LhQp1fPXmJ-pv0I13-_QX%#sg&=9e^-IPkmxG8Yz zEO?`i>ilzpV+?Mv6GSWx#iU5$2$a`bTaDc$b?mu6KQ`90jb)=#_w8^Vk|R z8@~Cr0Nv-J1)aF)7GcXs&x!@}9ZW!tgW&Q}YCKSnj*4p4{RU-J7^!AK4CG-Ni#;G{ zSJj)DY1Q@0BHFuEmXdbMF5v>y3X>C6sS(1XlxPUW2zbQ$j(|z7io?%M>)EP z7y@J&9Jz_(L#s$6Ux!Lu=2rIk|A)XGb%2BESGh;vrww)B?J*SJhq))jaS<%(gX;L7+U{ zK8rHgIQmfBKydppCN^U;LR?-WEbkVP2hY>!K)Q&n>S}KSw{_>#OA2zux1BYy_dr&B z`IIkykU+L7yWJiWOee9sg{7KN57MprA}ebv?<2yYCRt~;(Ca22`-uVJUoIt(1B&N<@T_-|95Xi=U7n zC_@Hb-jXDwrHs}5b5Lio3AbY{VsKcgNZTaZX^-wUVrDTfkImd!0S1Ou)JqA)1t30X zyB*VTqBX6-TJEl2Kr=??4;AMeacd1PBCHvL3Q5Y-8^j6Uo&^6AXIp?UF8p%}t+z#-U;x%Y z6YQP_ot}Vtn%S(!UQ9;k1)Vc|Lur!K!zN@qu?wgi9nR@CLgaoW_LiDPyg@=9J1=?Y1qb$hHBS$CKG))V z2z<=9I<+V=M#0MCi*m|hUPQs0k*{H9^tn}d zTQDD5AvIK6Qe_uojNh7HLp-EehU9cc1DHEF*$!xwTXD&kn@=jb?3{-5Ho8SH<{0@iqe2T#0rDbvNvp)pJaqEz2w0vHes!eN zc}W32hh$!5%fye%{Q>o=gU?|=8}fWx6-gfJwS}&45}nUKW?p^}p2|Ut`t({Vdx*Wp z=w2tiK)QW3!%+?1Q;#HeeGKrk3s}R+eDX)WXd&qr*7Uljp;?C25a~ggX%zB#&^VNF zhuVJkpVZm6OJQ4q#MqFCk%B*EWBW*P=$q(sG)CV7Uh?U3l&Jy~8o7TmHfZB~ZD_#e z%YCp9hqtA4L?`FQmcJT(UX#iOoMn!?>Rks0XSIi*Og?*&H%ObV&@(w)Y85Badpox@6Po=s6e;HMi`vIKVDn(3E zPqVM2Qi8lMPV&_$-0tN=gM;-b6LB-_2l^UbZNBq%p2m z4EUpS4V)P8ve(x>Ej=C)VFFhog{eoSxnOY^YD5akQN*Qkki-K{LaGBC3Vf2SYR$bn^8ab>oMJQqx-|T?ZQHhOd)mgdZQHhO+qP|E z+U}mVwexSX*{i+Zx~x=El~gJ@?>Xmv3LJkj@~cL6PWOtK24khjCq_Z)!dJzhqLuVi zF!sr4c(g%H^Y)I0y zrIl}w^w=U5X065JH9ptaB%iNbLvokg*C18RVSy7-RaBzpKKVm*pd--~st$r;*PbMF zeuTgnlKN{iyxa#!@v#Ip0VUyyw>W~W2_-^_Cy1KaFTZi;dQwq-1DFx+GwtwvFdx`5 zs_%K1-Rx@p^z0PR>{cGQ3u*Z?hOC^RA{Mrbin<`F7G4~`6j#w{;E7a{mQnD=>=_Bg zrsUnhMx1ETIROt!YJww8Y#^xd2%WH z28hDi58v=X|80)2gm`MMhw|cf(-Yr%OD*yZEB#L>@wD?09Ge}+MU$JzMD7G7Dz%M-Rrq^bW)Wl5i$Jrghy5?Aoq>w0~&|nDrIQ~*32?OyXipI zQ=4sOWRSc1Rd%Vf943U`(tSH}-!0ekW40V$j`f}|1p&r;3SGjU%4ya{k%giT!sNs> z*Q*q625Z+R5PysFuOi}1(2ElisVb_<9M<-XKM9H=hw-QQ_ff)W!Z;khTjCd3`!+Tw zGV!c@*O1&`?w69y_uC@v+UX-9^^bK-kozsBNS3XNMPLwjc#^s6Vb+*yN{<(ITnr1xPb|I45G`dA??4sWgZ>L#&6EyyQsxYBuz- z6r?LiR-$D^e4oGB=caFae?|1(wHK=`>!ZPCQOWkRC6^hB!V+K0;oJuu$iy7#t9#|k z11uj<(e~lFIKd7jW}pX5p*^DShj!*+Whj#``@Lf9h zlQRSIs+;t4pbuGF#}VAkfXN@->QLjd(L!C}cRgo8Ynvqz@Hqp0v1#|u*`s3ibyuT+ zLw`wqOxMsnWn=Hse=)u5X(=$g$Y{ccE9$Y9MIGTL=xUcELOkESFr@>@QHIIkGA|uw z1wnogo@w0LRdP5`BgyrJ5G~b<=e*LMAM^`LOfYc! zPWyYSX$_JMY=xV%bdGVwY$joQpKW)z=%t`>8%>A^P8ux-S^6QuH)y3ALKdkti+g#o zEFH2ACrC+0;qT4DRTwKX`Jd=H;D0|Gj>i{YGNaC=Si{>-zua>)?iWj~u2j`>@ zX`%byDZBuC-wJ1K3^!W4hgc3xacARX@#~Oxjl*TrU9oitd`K&+hR+)8UUkwpXFWVxzT}WfO ze>@aKx3QmVcbriL?ff{b=#8>2rb2t$PFPExp<@RwhBLI;(rPQ4xqjG|piP~gzG|gR zHxSO zjTd^AdPYscN=7Lw>uxKHopsJMuV1TEj*?BwEjB;4gi2>-bt_|`*|Mo*_W3_;PBT+W zA`mAzY$PpJwCww_i8Z-hWeAV~L_Io8MQMvbwqJft>uZG{08qWQV2Vif-*TeYiQD4` z`w*Ar%7p|`$*vg+YJw6sm0JQrD0wapivS?YG*syjQKM8@S31JZ=_Gg$r z5ZrQ&>N2j5F&vs`*b4*y%IbQhH#Rl7mOA(T#kqU2)sl8)?km_>e6A|(#C4?wcG$}G z8{X*+vtjG~udlElaC-a_NuDqXLbM`NT0=Lef#WB&t~PS6>Ms7X-HL(TzG;iz z%m4IIKxIUdMj3n@9u1l_L@j)isv7NlS>(l!NXaCc#UF3MSU6GYci^jUkDE1IaL4}I z{>d2of|=3?k|QfziBP^@D_6MDFKZtC_*0cM>x-6h$VC|WQ>LuGOf{UmC>+hScp>H) zXJtX`oR_Q_-2@^rv#QdJg*rCx9nu*70VX7MGGdZ*)7!S)Hg&JVJRR!*c`3zfH&eehdq(YQ5s;$gHcaA)FrZG^WYL)^y`hdZZwCF7iuoA@~P z*T36kJGhE&h(qgi*BN1{4Zl#rt(9B$a>kG@cwg}HdsA;N3QX2$Wi3jUq`iv#1W7|* z;b}m<6h|}hmyx)8%KrMT_J_q}2X+YPB6;N67csojade44xP3#0@t5E7*4P&%QrWxkss-WlEEw(t;dy^8;dnLWM$seGX*W6v# zx@po}b|d!)gADCXyNLKj092+-3~dfp7f75|Y#8!ggDPiz zG#uLLtG>-zmj)V23s57_a#8kusd4jfiaQLZZ)2g9LSgc{h4E8?8LC2@5mDne$FrHn z4$9_NrrJj(6n8>q(Ce(!0A$L3N_eJj-DOe9oF(b!4&32UNH3J`()$D2czDEsWHoIU zwdk}@yg~td_~@`Y0qCgne)DGCM`Y0*oa4-?W7DkO6&et^j6McmPPSs)zi6h=YwUpn zH{0qbQ5Eoa1uJyip}h*0Bd(i>9n%3rC|fr;k>i^C@&F(%h#_bh`u zfrrSWAZFLvb57d0Dk5ANsi}Sc?Z7nlQS|BCZH~1|Go#$K($pk*Z*mTp_T|?8jLEV! zwbt6hM7>FBZ&&X6evUb09Hd zdn^h1Gl;@L33Gp+LQ7@&+0AXCOL6HnW|^ncL62ke3fALh=Si|1R7uIZo0N{F z3`O&rQCoLcx20O?aW!S!9LSzHcMxus8zlEC?lH|G*_me?&7yCEI1g+boBu5!@#(pd z$DdB?DFpP@KN*NM;|8`VK87P-ZRZB?68^S4F|LX#JQf)eJ>6xQS{;cmjT;x6W-8f| z76qOvBp6C&S-F8BS2v>p1M!}(Y0Q`|&K= zH_71=1?Io)4!j=Gg<7dK)Gs{^U7;vbf&>Y*u~J-%JqrBV+}Me)fA{ zTj^9QGJs1Ywg=vXrgmVwM&eM-nw@4Uu9*y zp$ze4&Gh4u9+j!hlWvMJ zJ5kWp63)e)>}gWAi8is0haV+LN;fX)FCatvEDvtbclTG9T~i0Fole_UiEdP{0+!0- zJWb!a6l_y>5z`N>Sfd`s1)0+m?AAqySsuAQXFf!7ul_^>FtG zNh=oHTrVVbE3UDuIR;l6w5JOPUP87WGO8`-{l6>Vdop^ox1?idFDPyq z5p_bOny!8NyMHpYEzx*u&EVF+TENqTd$6oj%1xqt=D<~q=-XCLNWKxM(fsq=;Il}M zP8fNFfBR1+PAvQ!B_#jx*~Do-N>|Lec>5fqwJM#HiG+L6shD@d#!CpkAD0P3T8*Fd zHJa({mS}PbWiqb(6X`(WCNbecsg#D*#L*Qsnb~9~TQy<-#kNP=2qc8wp*liZv@gBJ zrWE((CS%UqinIS6JMBVquoiwQRKwg5ine`(8a4-gj1#`uB(c+Zf9hr*8(pvkH`x&m z>cEJbz+yPw6Xy4sb0B=tfdxDREYXgnha$?j%*F!EY@5@QQD@bYQ;1D&+o?@0qp1nJ zSojyGRN(kaV5@`$;-x#&Ok}|R6m_fFrvak#w)AFriFv)o`NZuvNr8M~x|t*eG!e6R z!*Tw^hCDmI;P203**3G7fri?>7WT6%TCD&vf!Of6ebRXfMEZ%C$ugw)v60T?dV69z z@mWE_I#MCIWwd^WT`|Vwj@FewZS!E@K4&EEGY9CGPVlwd+)oB64hV80!p()Z_VfFf zV3!@r{N;)ms@3xG7*Vazk8|{p#%10dzib<>MJqQUI(nOP_^}A3`C?+w28rfNLGOI) z^&cg6#?o=j-zr?{dE}T5^4F9f(NFghZ?fm~`!)@iinRc|K{iJm& z5{Yp0FdV{bZg71abNHr6>1P-SPDJ1BW$AYbwttTD?6NbLMUSyHLKlOxIbTI5B8*5X zsn2kee_T>NU&h%h)ZA}h+LlTdkm?j!&Xt7fVjuJFmpl6!sAx@ z>sPMzTtv!M(ZUZOAc}vC$(23m7U&B4f#0Z*T=QpguNq{C(IQgEYQd7F1G2hDGJh*+ zcFx(B8!HAw$8-FjI!SHpkt0e=TsO-J#o5fV;KoBJueWPy_wQ7CO0ua7G2fhLn`A}6 z1!1fwZ^Ae=Mc#7dex9qyO>iIZZ+>L|m~_vL8N-<_QrE05)7{NV2x*>ECQji82k9R; zz+EJgpgq#PGdIx$UQGtXQh1xF(5`C$`3`w&N%R*)K2cUiW9}yEK#@znevvqrn;3-8 z)>)2@UUh>d4IJpd*)=>yT8SvChYv_nI!a=M@`!YydFXxOw9)SDZvV;efWV&3wG&Mk zz%wA()q6hMwqWDPgLny80qSB1=WsGcsy9Q%$Sj=tfVHj@TJ2(N$jJJX+DSqVVH zZj=7?O;1$U$AL2L#9dTrzj;0YY;syF6lXE=Vwye|tDc`7;#b8fK?zUxmV)o^$l2MK zaRBUkyqMcK06K(Bqp~*PaZd26LBu}7jqB$cbY9ilATNLqS{>b8uJGmH%C;s;vmTKp z+RVlnE7zwmd}UqC`pGDA8LAN0n})e+i>?n&Gb{%-e_a{LRQQ$3{c6^M<~Z@jAl}w7 zb?$=Jk9Kf5XOCe%xzNQ+;p)Hf$cnQt2MKt&4*DHM1 zhWg2Cic7##vRQ<;+9Vd94VuU9QUzm&Ok?5lbQ6x~Ad2;?zNK87^lhkWB`crKUeb9= zn|6n&eyR~fvTnbD3RfR%BZ$Re0~AXebU`&KIiR)7THa|e?D)Lqa8WkpjdZC@uXph*!REcD>>1_w_q2I%x z-UgiMfW{2%TQVut!D$i&n0zntlXuXC`Pdn}LSJB+M8>Moj)PE|Uw!W@X06ic z#TZ%vO+)bt6@CZ<2E(YddpDpOIH}LgUS!ZB;*zNw9}Pl(FUK=1Qk}Q&l)Tt;_&_|f zn{d(H^-z_qjLg*wb@j$L;drrM3>;^q#Uzq#{aQCwBb2I_t-Ww%jDAZj@Lh-GZ=(lk z82|ewPyW5CSUyLL(E)R<8`8}~;Y%WabKs^4w;4_{8#wFLC_9`uIg8FMvd#-x6K7AO*JHbSuy`tU5ksozl#ziPqF3Jw6lCgGyoLZjT@y znXH&5+c44LPN@IogQWP}x0NWjexqNKD{sp#AhQZ1M^7Hw2pm;hj4#1!Qa)qLJwc7R zTXl5~*xI*98W-3l6aPF!rS72z-EE;GQhHX4`{i zx92h8j%7#8ifIqO8pIL`Zs2{JYw;VHkML27VZhp8f+DiNgo;V)^10S@y(7jd($wRN z%8FIvD;AdU2?>I^phWSItgX|2k*}c(0|)WfsGG5mk2XcdgO-iqahU2@-Ea9KfKJR+ z8h^8LSULSajWx_m{4`P=%ELFpCDwYr*|R2e5@mh;eZG|U&<}{eB_kH_x$-@M!y`n~ zQyV;Kr#N5BKy}!}hs{4dvLY7+Zhtf&M{7hKPb{H4q!40PC-Y0!?f&!@`Rr6-9-G6} zqJ`gr>!(U2a9wYr^l_XhG$ROUyY_c#ytfv+g8q~&54YT`5Lyp)GDN;5G;5vftXH8m zAkHRG>>X3;*MaTz2am@+*}bqc{$KUqNdrE%|rJNs-7L;m!F+~M@3S+`Ahl-r25l+Hjy z-lxfngnA#qfA|iLSs0BN?4HiXJR89IC+r^M3ci}Sva8ivVV*1$y~!UKK(mA7XecGF zFUv8Cn!jk$;V4GzE?$j%cKsQ$%}L*LsvFC;S8kEFn65<8KKtPSLwv)vYy-kV+Ie!N zQA()xJ&lITWC1{%t2>k8HD8MccE*Y~Gwm&^W}HyEcIva7x)zz<3M$bO+#0jFUzmp4|3H8h$FxQz|HOcMN!$gBXf zpXY>LE2slgNj~6=Sv+%7{O$>>#L61~_9%2!+ACd0TqrP0 zQ<~d1QlAkoW*O2gZL3(DBGr>yDK5in|uIj-klVz+a9rHPSB0Sp)BqaXN*> z>qZ6STGrGVGjLhsmU1^jx&t@hKh*RowuHA#q%Uo%O$Limt0rs3yd65ZVY7Qs_=icf%xb@7_zdd zgNn&Rv$%{7gQf@Yjg6*X;lz&Sxo%lG2Y*s_S>)Nz31bmm$c(GA!U`^} zy(t3ivtv-4Vhc18oF1!TrpW@Q-7?ErJ~{dJfegAZEt9R`V&L&Ku?u{8AU}M7*z`9# zR^ATeBSmbq8UhZRS+hhgg#$Dm8>{vdE!6u_jGEkTy={+`5Uy9?D!Tf%UuvS9P#!qK z8!@U-)E{t^a20?x*-a_j1ir-9p<`EhQO|$!i5G^4HZJqG#t<#yW!=TAEB>;eG@H<1 z>_y9BP7Gk_TCurmzkDMs&)Tp1IF8Pqa*RZJD3CHgE%D3~-h(gKV1I+-ZVMSjVm6Hm z#+Z1|Pg?y{@KWdMiNr0eL!GM9A+o6VPzhE^0xf;;XRcmefQ%Q4w*wK{et+Djan8|R z#EDH8NeT{sBD`uM{n*7}%A-hncuvi28r??LFFC)lFE07=z+XM?=P>EQaDtGP!F{t4 z8Kxe{ve$O=0BMJc^@hwJDJTB;1*@y<+l@}hxHL=LWmnzEp&~@Ha&Ht4ABM>LF<*3y zuP3e4AxHG9BhP3+OPLuXrvE4-ylf>{xwxI)REGxV2(~#U^MKq*h@^|3`#++6s~HKw zP#gyyAS3-E?*(ATa*(Uf?KKB|nn;-CD_rI`dw6y`Vdp2bL+7t6xp+AOqvem;piu!> z{fp{Y7oz?Y`dK-_=+UJQ#O!osRCA|5GREe{r8F%K@r-VS4#9T-@B3J8>AC!%YPn%U z*ZkQ$K6AYESRL5?-B)C}RvT_tjRA0W*u$r_|22$$hE=K`!dbAbx8GW({bD~z0p)CR z6ytUPqAbr4_w=B4IpDSRjfH}%1ze9;Co@qW$V*wpzjBB>h@VRxXRxfzo>pOx9;FHQ zSce2|jtnA|Po#c|Y0#-4noQWBU?F{FW-^)PDIC z+W2Kzugdz?^wL@A!c3Rfaho^S1Dv#FZd(Akxq|Gt5xb;JZ|&|N07t{=B5;|3)YC2w zR4Rbm2ue4r!iL8@Cd{eyxq}Mjt=(6xIIgIOJ~bpn8C!qFojQeTeX^~6*b%fH$j_)p=l=dqy!d&+(Q z03rYwIfr_;dm|*oKT-Y<$i{#rcMsXwAU>-&SmOKzv&WJoImR!s2&Q@W_RQ^t!Q`=u zUCowFnXm zuYBE|?!OD}Zfx!c#X389wjIERrtPafMCT%y^MYdpL;eljk7QA!irqmheCb9Oud(1@ zn7snEuAS-X)|T@9B-M|xWLCFhV9JN^I_(V?#~2D=*0Lv(M2X__lYh!387OG%yoXNx zifHzfTqv-r_0CU8M%q&qs00Crg5gP2IPY%oYYaw_ErLLOD|d-JD3j>ku}7ZQi@;LE ze~Z4g%TpdZxk~d%(q@@LOx>B1}z%#{cmBtMJ($aSl{dKX@ znvyXhC}2-)>9X?}pUV@bbs7f_l}qj=q)l9el;%&_>J zW4rEjejAGL;2-*MejbX7Oo!`*R`L1buT-?~n=V(8} z*8Zc_V9BW>D7sAG*1#c<6eGR3c7^!v&3PPUV! z6FXox3!Lm#a+t!-HlhW1Cw5)GNXmoui$d1L+cem4r{-sTqI|o6$gz{{ZV_urN)EQ? z-$VOi%@*{~;zNBP#FSp}L@S1Udb%JLkG1p-;1Fh|D_5OWYrb7JXzcWRUe|g;r}p?__h+OM>GBdm zPN=mq7AGh9rTZBve6<^9%q?X)%^aN8VevGwdxS-Z70iYxZ7Fa|Z&9j*=Ck&&GhgMQ z+8?eJsjes48Ac!6mxYgczs#E1Ds!c$d9lWy+>%#n7SvmrdTQVx0h{N-hvFbDvg#u< zm>N)ZU+m}@P+D!yLkqMsn}4CE5LW9dw$;qk#|-OD>zhgGTpew zTkr>lBhD7&S$1hFgMX3-`cu?c9U;oDBJQeL*JkxzmtxKwA+x=54T~s`p{{Mm(@7B8 z%q&>vmNyA{6t)&yzUK9hCJU6e-+Pvii^b0(fZ%Z`lyrMdlCz5OauXC`TPkz%t9)6( zp(u7lZe-spwMx+`Ct{&uj=)P1&!xbiooOL!p<|Gmy^`( zl6l6IVu!Ew<7zd)U{#P@)At%E)@Cq;)qJt-CSXe(Sz-)E4_0?f#`Q<8T;k6iYca|K zN`^V$BD5hsc56%q`eOxOQQp3~yclggB3-3RJ5#~}}E07eG;+Y#)gAO_SauQCOmw; zH97#Z7qi%fKiy6e2)!4ADw`!_hv&0p#W1XzS%sANN*Pf~zy8a89{1cKHI~W0X`6Xy z?jRRL@a1CN9S#~EJ}xe0!g-Q}t4_=C1H2?302A_5L2<4|Yx7*MF*ve>?W=~#g?<~L z!^mj7bkz(?|$*X`M!8d#bCvT zNCQ3afhIiryWaHHs%noo;FdLS?{;kgv=YvW!`yp5WbG5IMZBmO*z4O%dhabBslppS z*6rnB-m?x*_YRh9!6`9p%hpW~9wvYgH+69)0StvFn4h=G`1gq>9g#{%ibe^Emydtz0dG5Z60S>W@(cempvRu%p1%lsn z{)PeMv_uv4u;F-}=eE`v+!L__uB*hyqNnL@Kr*EfaDNMd{GZ6?xCgzfO`)5XE&A#Q;`*Ya_Y>&Rg}mdw@r9ZPiinv z`4XqbK#E4%6y!uu0}+2;EEzo5wtDHo=uFnvFLXVV_76D7WC8uO-t`cNW%GZC*j|GBeHbVyUiZO z;`Lb$k3vK2tBDBG-@NHrYeg`$ui)1x0ra5!miQ>C4fVOB9dJwJi$*Mar&VKwj^XL} z*w}rX>v(#As0fiYgFQg{no8$ZcXpR>kO@B8hU?MrWF;JwX9M;MAzvcVyMu~|T+#h) zVZFAt5&R)-f%-2$mR{oeH^d^9NV>!=LcBMFg#~gfDeoXs4c(OD{ld3O3X6%<7HF%o)|7`MB#K5g&%?-W z>=dD>ZrSFJ9|G85-E4xK1Hq;h3hxlYh`alSI*qjsb}*P7XF`5hKP+2O{<#^grs!nu zz))|BXsn>`z2HDg?gb@#&}`ilq4W}I5q++UB@YACmC?P`*7Ckhy8}|B$Ig67Sj^2T zm^I%QQ2Q2A_1km4rI*rde#|4)0DZ*x{5hXWdR=nm14-->yN@Or_0LcQBEm@-ye0g+%F(vNmuX}Y$&Elud8uV`2ff0*Z@Lw^FsL|lK z8e8+3urAKEld^$f1|e8^ME`%vY^~ZGAC71wy*Fq@gzBs}cyk%Ha7E+@P&{wyy427kjEpG4L`CF`5_|HJ}*-Vy!ZI{)e zMP3%XQ*;)Qi&l4au{=0_{c2e7No}s3XT^Q?qu2~wELYk1K+hrjwAr~D`R&UkJ((9{ z=FzBG#o-T!3J@w*Mg#zf+)K(a&My-lKm82YRUPira6Z!Y`iIZzjPp90F`P({y;Q3D+^&IH>GmfQe%X}fVN~(5$1@W{Q zwjce(OFCJ0PcpEEIv{sTDwN0b1!#kupgA~+ri*{-kO_si>EgfFn!Zibv-*B(o{_=8 zuYH3~g%Ae{N{+|~{$n*Vs|~IcL?74P&}`=sB=!=GmNb9Zi`cSE&?ciKP~S>+L2c6K zou=10-;jdQy8AxYs)q7PCktQ#K#=|eB!DH03+n&z*+I(fd)GxMoSf4j`B82G^iJI{ z6IJ_%KRCWbLHLp#Bk;7If)xL4Yzj@|)2o6;gJa%%cBY!so(;v&}~G$*Ck>1emLlIM`lfKp^3;b1rD z(ZYko=`<_X%LbX#K?eX`?X`Os4wL$FnR6}gXC0#x;c6X-5z}Z9JJI27h;RJNpK7n} zmoOiS(Yc$aIiay^1VAeHU7-FqT+$x6@I%|tiX}I=68lP1*;#Eqf|3a8)E`6QC_d8{ z%Ck$S#63oVVY?rwe5Q#Se>^h+jYa&JszLSXj%)}d&HGO1!*20L#~QN@m&P!UQSgHb zdbBnOhp(%e2$i&S6f&TiL`YT!cFQKD2|23YNoXD850iE%Tc zK2mg03TM5CXp4BcVgvrV=!&bJ5(y}I)~(|3l9?jJ)j0VmO*H^B>hd2J6it)u2Gw1f z>ZHgW*Xq!AD#}k-s1=}|oZzb#67STu&wLR(;$+$CJNE%(^@%WrkqoRE)7xe==f$dd zy-}tCt>zicJdEcs_NT~Xe_bRu;tV+kGzP|}mJV#l7P4&7ZlU1J^~1BA6GC1SpH?Mq z<3cvh*H^i^=6JR$s9~9-i4LjJ%@qxV6*uj@^o#2$%MMPVfWe`z=;m3moe&s~v{0KE z03ew484HC})T{(Em1f|6V3xqD&>Mi?ujpD&3=~CgCme=<`4%TvkyQ6f@FjkP8=MKR zqh$bAu)u~^p;OU0wnCldFDN~YBYNvqAE(^ISH|%9>_I1w<)hZast^YE($hE zA}fQgFgl(;zm7TcEG1qWE@OZVM)WgCuRNpk%tP2iI)*wJF z{4dIB+4(v2w*UeqI^i9GN^3=BHgh-LNN|)+r)5Thm247YG?ciy%Bj7IQdP)Neq~*$ zbq@WAPK3#Eabtlk;7=cvof?mg=$f*mpD!tXp(1?~6w;}`d@Ea|o>%nHsU@y2iFS~uj6nC2jfPT)@uvD&Y~pDn4*f{tjj#!QK|czx=S$q?~1cvJ)f zvh%tgjPPG0MY@q2N*{7m_bNl3sw}RCh_iNZ_gWwvZ2kCBArOT-`3=lOs}G&V6Te>3 zI8|0N@DJPYDFK;MoE6k5f&hSqUT;Q{BfJ4lOAhrMO8>J84l-2q!MblbQO^p*S<3IL zbZ8YY>ro$j4CaL+AiVNvCyC1Ru7=a_JuTJ3`i9#pI}_ zG$vZhr&vm&rY6*=T{cMuvYjo5rnDje=cL^%Fb|2|6I^j9e-q~$ni>I0>O&y5&;&y8 z$U9+w0HzE9MBqmcNq5sp^2Bnh_J{`<_S5edDwTXwEZ+C@M$ z$&`zXzB85y@HE(4{Bj8x| z^i}r>NQ2e-g$q6_jo02^yxX3(WpZ@sTirOmKb12CKQ@5t`<`y;=PRBB$1$;y7T%uP z%rli@biXQ)t#byQ9N*{O#ukoJla+tc;^>z`9(xgnTj6!Wctyuv4Sx4Fr9IofdQfT9 zhD6!N4!ILjnTO{>y_{W?HAq<}me6PTQAM()m$RXnhI8*V&Xsw^N{_FT9>b{m^iutl zAc7et8kvk0$ZAc1&I#HF-EnMqqMi>puM%;SPT?>~lnUIhHA9}}vI(LY)RsM*i$7rm z6m`oSQY+B5|M$A%ak0K`#XSytY8;$AqJ8tWiu$3hALBsqVtdeyCl2$^XtAY7mieq& zD|?xQp)*BwcUTqL#7S4=J$k^*Zh+<~i6@`u+p$ok;+@@OrUR4!GraOJ!t{a^C~ADb za8gQdez5iRDs}8>M<;hyH{8UGEa(n?*6;9yOA+JXAUpHwmEHFXzhl=Ma^wWu5w0v| zE2p^#I3*4K8fd%Br&jfI@Cjjya+%B1fL@x=Wgj?DMtNu0-BO3|zr%7KRi`TnQs*Ip z?SXB>`ZXXuTTxSCW{HzcS0VCIGKF1mKHu9PYiP2R055hy0FX~#uM|}N(0%Q~#Dz@3 zlvi&!%!r;xPai8ps$pKVNG>HErI4bDG|{&>SiCc@mgtJ#-*5G2f>(qS36Lg&AbC~j zmhnkKtTOu!_s^>ch^DTuZ}G0zA|ur4ek5z$^-=ExdNy1uYthsRlr^V_0jGAy&Y_ab z%~v{lpB6!U?2v#l+p0YC#O6EBl?doHaok&fU2mi!P4G_PE1hnvcGS;xUDsD*#rF)m z1(a_rxtmPCxm*~4%jfe<;#N7UhDZCDz3+BBi;y6Sh1)I1JV(UJ>w>hs5;#V8aO@2N z_oeA4^*jOx)1ftjtji78-lqQvg!T7G(GnFuQ|`ykwl*PCV6yI0u#;l`zXYI2WSE5L zzsEDD@yZMMH^7kDHI0VS+<&yTU0-ZjaER1$JaYNAqPu2UB(!3qcPe&Nt(^NXbW*_{ zAHyYyN?+B!JZ+KnS~~jgP$B;Yp=CBx!focPsI|%5h5QSS4FCXC$$kI;K+$j;;v8RJ?hbKO`j}<31kmUWf#g?^s+!F9S4g|`J4G2 zereFG4`zeB>S=AlL{{(>NR?wy8;Sc&og92rPUR=MH>mkG<7V(#s`AU_UQ-#7AD}9C zn>sAti8c|?kfbVb$dG@{OYU{slW5te>z%4HjNp%^>`m5yQXArEU~Rmj@H%zIqX3or z$zYsW_y7G6aRvS!uxk*n)B6Ia4lCm~TCHGemhdi|Mjs=zyFbI_!IZsON Date: Sun, 16 Mar 2025 17:28:53 +0900 Subject: [PATCH 2/2] add except --- app/controllers/stretch3s_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/stretch3s_controller.rb b/app/controllers/stretch3s_controller.rb index f3fa6897a..84babde4f 100644 --- a/app/controllers/stretch3s_controller.rb +++ b/app/controllers/stretch3s_controller.rb @@ -16,6 +16,6 @@ def create private def stretch3_params - params.require(:stretch3).permit(:email, :parent_name, :participant_name, :dojo_name) + params.require(:stretch3).except(:term_of_use).permit(:email, :parent_name, :participant_name, :dojo_name) end end