Files
VoiceVault/backend/__pycache__/api_routes.cpython-311.pyc

138 lines
31 KiB
Plaintext
Raw Normal View History

2026-02-14 21:46:48 -07:00
<EFBFBD>
<00>n<EFBFBD>iUI<00><00><><00>UdZddlZddlZddlZddlZddlmZddlmZddl m
2026-02-14 21:46:48 -07:00
Z
ddl m Z m Z mZddlmZmZddlmZdd lmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*e<08><00>e d
e+d <0B> <0C><00>Z,eej-d d<0E><00><00><00>Z.e.<2E>/dd<0F><10><00>hd<11>Z0ej-dd<13><00>Z1ej-dd<15><00>Z2ej-dd<17><00>Z3ej-dej-dd<1A><00><00><00>Z4da5e
dze6d<de
fd<1D>Z7dVde8d e9fd!<21>Z:d"e8de;fd#<23>Z<d$ede8fd%<25>Z=d&e8d'e8de8fd(<28>Z>e,<2C>?d)<29><00>d*<2A><00><00>Z@e,<2C>Ad+<2B><00>d,<2C><00><00>ZBe,<2C>Ad-<2D><00>d.<2E><00><00>ZCe,<2C>Ad/<2F><00>d0<64><00><00>ZDe,<2C>?d1<64><00>d2e9fd3<64><04><00>ZEe,<2C>?d4<64><00>d5<64><00><00>ZFe,<2C>Ad6<64><00>d7<64><00><00>ZGe,<2C>?d8<64><00>d2e9fd9<64><04><00>ZHe,<2C>Ad:<3A><00>d;<3B><00><00>ZIe,<2C>?d:<3A><00>d<<3C><00><00>ZJe,<2C>?d=<3D><00>d>e9fd?<3F><04><00>ZKe,<2C>Ld=<3D><00>d>e9fd@<40><04><00>ZMe,<2C>?dA<64><00>d>e9fdB<64><04><00>ZNe,<2C>?dC<64><00>d>e9fdD<64><04><00>ZOe,<2C>AdE<64><00>d>e9fdF<64><04><00>ZPe,<2C>?dE<64><00>d>e9fdG<64><04><00>ZQe,<2C>RdH<64><00>d>e9fdI<64><04><00>ZSe,<2C>?dH<64><00>d>e9fdJ<64><04><00>ZTe,<2C>RdK<64><00>d>e9fdL<64><04><00>ZUe,<2C>?dK<64><00>d>e9fdM<64><04><00>ZVe,<2C>AdN<64><00>d>e9fdO<64><04><00>ZWe,<2C>?dN<64><00>d>e9fdP<64><04><00>ZXe,<2C>AdQ<64><00>dR<64><00><00>ZYe,<2C>?dQ<64><00>dS<64><00><00>ZZe,<2C>?dT<64><00>d>e9fdU<64><04><00>Z[dS)Wz}
2026-02-14 21:46:48 -07:00
Flask API routes aligned with TitanForge/schema.sql.
2026-02-14 22:04:39 -07:00
Includes auth, upload+transcription, history, and RAG search workflow.
<EFBFBD>N)<01>Path)<01> load_dotenv)<01> WhisperModel)<03> Blueprint<6E>jsonify<66>request)<02>check_password_hash<73>generate_password_hash)<01>secure_filename)<16>add_archive_file<6C> add_audit_log<6F>add_rag_chunks<6B>create_audio_post<73> create_user<65>get_archive_metadata<74>get_original_audio_url<72>get_archive_rights<74>get_audio_post_by_id<69>get_post_bundle<6C>get_user_by_email<69>get_user_by_id<69>list_archive_files<65>list_audio_posts<74>list_audit_logs<67>list_rag_chunks<6B>list_user_history<72>search_rag_chunks<6B>update_audio_post<73>upload_storage_object<63>upsert_archive_metadata<74>upsert_archive_rights<74>apiz/api)<01>
url_prefix<EFBFBD>BACKEND_UPLOAD_DIR<49>uploadsT)<02>parents<74>exist_ok> <00>m4a<34>mkv<6B>mov<6F>mp3<70>mp4<70>ogg<67>wav<61>flac<61>webm<62> WHISPER_MODEL<45>base<73>WHISPER_DEVICE<43>cpu<70>WHISPER_COMPUTE_TYPE<50>int8<74>SUPABASE_BUCKET<45>SUPABASE_ARCHIVE_BUCKET<45>archives<65>_whisper_model<65>returnc<00>`<00>t<00>!tttt<00><01><00>atS)N)<02>device<63> compute_type)r:rr1r3r5<00><00><00>VC:\Users\Gk230\OneDrive\Desktop\My_DOCS\Calgary_Hacks\TitanForge\backend\api_routes.py<70>_modelrB;s-<00><00><15><1D>%<25> <19>!<21>-<2D>
2026-02-14 22:04:39 -07:00
<EFBFBD>
<EFBFBD>
<EFBFBD><0E>
<1A>r@<00><><00>message<67>statusc<00>(<00>td|i<01><00>|fS)N<>error)r)rDrEs rA<00>_errorrHFs<00><00> <12>G<EFBFBD>W<EFBFBD>%<25> &<26> &<26><06> .<2E>.r@<00>filenamec<00>x<00>d|vrdS|<00>dd<03><00>d<00><00><00>tvS)N<>.F<>)<03>rsplit<69>lower<65>ALLOWED_MEDIA_EXTENSIONS)rIs rA<00> _allowed_filerPJs=<00><00>
<EFBFBD>(<28><1A><1A><14>u<EFBFBD> <13>?<3F>?<3F>3<EFBFBD><01> "<22> "<22>1<EFBFBD> %<25> +<2B> +<2B> -<2D> -<2D>1I<31> I<>Ir@<00>pathc<00>
<00>tj<00><00>}|<00>d<01><00>5} |<02>d<03><00>}|sn|<01>|<03><00><00>. ddd<00><00>n #1swxYwY|<01><00><00>S)N<>rbTi)<06>hashlib<69>sha256<35>open<65>read<61>update<74> hexdigest)rQ<00>h<>f<>chunks rA<00>_sha256r]Ps<><00><00><0F><0E><18><18>A<EFBFBD> <0A><19><19>4<EFBFBD><1F><1F><1C>A<EFBFBD> <1C><15>F<EFBFBD>F<EFBFBD>;<3B>'<27>'<27>E<EFBFBD><18> <16><15> <0A>H<EFBFBD>H<EFBFBD>U<EFBFBD>O<EFBFBD>O<EFBFBD>O<EFBFBD>  <1C><16> <1C><1C><1C><1C><1C><1C><1C><1C><1C><1C><1C><><EFBFBD><EFBFBD><1C><1C><1C><1C> <0A>;<3B>;<3B>=<3D>=<3D>s<00>0A&<03>&A*<07>-A*<07>transcript_text<78>titlec<00><00>d|<01>d|<00>d<03>S)NzaYou are an archive assistant. Use the following transcribed audio as source context. Post title: z.
2026-02-14 22:04:39 -07:00
Transcript:
z4
Answer user questions grounded in this transcript.r?)r^r_s rA<00> _build_promptra[s-<00><00> =<3D><1C> =<3D> =<3D> <1B> =<3D> =<3D> =<3D>r@z/healthc<00>H<00>tdtttd<02><04><00>S)N<>ok)rE<00> whisper_model<65>whisper_device<63>whisper_compute_type)rr1r3r5r?r@rA<00>healthrges*<00><00> <12><16>&<26>(<28> 4<> <06><06> <07> <07>r@z/auth/registerc <00>&<00>tjdd<02><03><00>pi}|<00>d<04><00>pd<05><00><00><00><00><00>}|<00>d<06><00>pd}|r|st dd<08><00>St |<01><00>}|rt d d
<EFBFBD><00>S t|t|<02><00>|<00>d <0B><00>|<00>d <0C><00>|<00>d <0A><00>d<0E><05><00>}t|ddtj d|i<01><00>d<11><03><00>td|d|d|<04>d <0B><00>d<13>i<01><00>dfS#t$r'}t t|<05><00>d<15><00>cYd}~Sd}~wwxYw)NTF<54><02>force<63>silent<6E>email<69><00>password<72>$'email' and 'password' are required.rCz#User already exists for this email.i<><00> display_name<6D>
avatar_url<EFBFBD>bio)rl<00> password_hashrprqrr<00>user_idz user.register<65>rt<00>action<6F>details<6C>user)rtrlrp<00><><00><>)r<00>get_json<6F>get<65>striprNrHrrr
r <00>json<6F>dumpsr<00> Exception<6F>str)<06>payloadrlrn<00>existingrx<00>es rA<00> api_registerr<72>qs<><00><00><15><1E>T<EFBFBD>%<25>8<>8<>8<>><3E>B<EFBFBD>G<EFBFBD> <14>[<5B>[<5B><17> !<21> !<21> '<27>R<EFBFBD> .<2E> .<2E> 0<> 0<> 6<> 6<> 8<> 8<>E<EFBFBD><16>{<7B>{<7B>:<3A>&<26>&<26>,<2C>"<22>H<EFBFBD> <10>C<01><08>C<01><15><<3C>c<EFBFBD>B<>B<>B<> <20><15>'<27>'<27>H<EFBFBD><0F>B<01><15>;<3B>S<EFBFBD>A<>A<>A<>#<23><1A><1E>!7<><08>!A<>!A<> '<27> <0B> <0B>N<EFBFBD> ;<3B> ;<3B>%<25>k<EFBFBD>k<EFBFBD>,<2C>7<>7<><1E>{<7B>{<7B>5<EFBFBD>)<29>)<29>  <0E> <0E>
2026-02-14 22:04:39 -07:00
<EFBFBD>
<EFBFBD><04> <16>$<24>y<EFBFBD>/<2F>_<EFBFBD>Y]<5D>Yc<59>el<65>ns<6E>dt<64>Yu<59>Yu<59>v<>v<>w<>w<>w<><16> <12><1F> <09>?<3F><1D>g<EFBFBD><1D> $<24><08><08><1E> 8<> 8<><0E><0E>
<EFBFBD> <0B> <0B> <10> <10> <10><> <15>#<23>#<23>#<23><15>c<EFBFBD>!<21>f<EFBFBD>f<EFBFBD>c<EFBFBD>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22><><EFBFBD><EFBFBD><EFBFBD>#<23><><EFBFBD>s<00>!B=E<00>
F<03>)F <03>F<03> Fz /auth/loginc
<00><><00>tjdd<02><03><00>pi}|<00>d<04><00>pd<05><00><00><00><00><00>}|<00>d<06><00>pd}|r|st dd<08><00>St |<01><00>}|st d d
<EFBFBD><00>St|d |<02><00>st d d
<EFBFBD><00>St|d d tj
d|i<01><00>d<0E><03><00>td|d |d|<03>d<10><00>|<03>d<11><00>|<03>d<12><00>d<13>i<01><00>S)NTFrirlrmrnrorCzInvalid credentials.i<>rsrtz
user.loginrurxrprqrr)rtrlrprqrr) rr{r|r}rNrHrr r r~rr)r<>rlrnrxs rA<00> api_loginr<6E><00>s\<00><00><15><1E>T<EFBFBD>%<25>8<>8<>8<>><3E>B<EFBFBD>G<EFBFBD> <14>[<5B>[<5B><17> !<21> !<21> '<27>R<EFBFBD> .<2E> .<2E> 0<> 0<> 6<> 6<> 8<> 8<>E<EFBFBD><16>{<7B>{<7B>:<3A>&<26>&<26>,<2C>"<22>H<EFBFBD> <10>C<01><08>C<01><15><<3C>c<EFBFBD>B<>B<>B<> <1C>U<EFBFBD> #<23> #<23>D<EFBFBD> <0F>3<><15>,<2C>c<EFBFBD>2<>2<>2<> <1E>t<EFBFBD>O<EFBFBD>4<>h<EFBFBD> ?<3F> ?<3F>3<><15>,<2C>c<EFBFBD>2<>2<>2<><11>d<EFBFBD>9<EFBFBD>o<EFBFBD><1C>RV<52>R\<5C>^e<>gl<67>]m<>Rn<52>Rn<52>o<>o<>p<>p<>p<> <12> <12><1F> <09>?<3F><1D>g<EFBFBD><1D> $<24><08><08><1E> 8<> 8<>"<22>h<EFBFBD>h<EFBFBD>|<7C>4<>4<><1B>x<EFBFBD>x<EFBFBD><05><EFBFBD><EFBFBD> <0E><0E>
2026-02-14 22:04:39 -07:00
<EFBFBD>
<06>
<06>
r@z /posts/uploadc <00><> <00>dtjvrtdd<03><00>Stjd}|jstdd<03><00>St |j<00><00>stdd<03><00>Stj<00>d<06><00>}tj<00>d<07><00>pd<08><00><00>}tj<00>d <09><00>}tj<00>d
2026-02-14 22:04:39 -07:00
<EFBFBD><00>pd <0B><00><00><00><00><00>}tj<00>d <0C><00>pd <0A><00><00><00><00><00>}|dvrtdd<03><00>S t|<01><00>}n'#ttf$rtdd<03><00>cYSwxYwt|<06><00>}|stdd<12><00>Sttj<00><00><00><00>}t!|j<00><00>} d|<06>d|<08><00>}
|<06>d|<08>d| <09><00>} t"|<08>d| <09><00>z } |<00>| <0C><00>d} t'||||d||
d<18><07><00>} t| d<00><00>}t)| <0C><00>}| <0C>d<1A><00>5}t-t.| |<10><00><00>|jpdd<1C><1D><00>ddd<00><00>n #1swxYwYt5|dt.<00>d| <0B><00>|j| <0C><00><00>j|d<1F><05><00>t;<00><00><00>t| <0C><00><00><00>\}}g}g}|D]<5D>}|j<00><00><00>}|s<01>|<14> |<16><00>|<13> tC|j"<00><00>tC|j#<00><00>||j$<00>tC|j$<00><00>nddd <20><05><00><00><>d!<21>%|<14><00><00><00><00>}tM||<02><00>}|rtO||<13><00>tQ|tSj*|tW|<17><00>| |d"<22><04><00><00><00>t5|d#|
<EFBFBD>d$<24>d%tW|<17>,d&<26><00><00><00>t[j.|<17>,d&<26><00><00><00><00>/<00><00>d<1F><05><00>ta|d'd(i<01><00>tc||d)tSj*||
d*<2A><02><00>d+<2B><04><00>te||d(t.<00>d| <0B><00>||tW|<13><00>d,<2C><07><00>d-fS#tf$r<>}| r<>| <0A>d<19><00>rmtat| d<00><00>d'd.i<01><00>tct| d<00><00>|d/tSj*d0t|<19><00>i<01><00>d+<2B><04><00>td1|<19><00>d2<64><00>cYd}~Sd}~wwxYw)3N<33>filezMissing 'file' in form-data.rCzFilename is empty.zUnsupported media extension.rtr_zUntitled recording<6E> description<6F>
visibility<EFBFBD>private<74>language<67>en><00>publicr<63>z+'visibility' must be 'private' or 'public'.z-'user_id' is required and must be an integer.<2E>User not found.<2E><>zarchive/<2F>/z
/original/<2F>_<>
processing)rtr_r<>r<>rEr<><00>storage_prefix<69>post_idrSzapplication/octet-streamF)<05>bucket<65> object_path<74>content<6E> content_type<70>upsert<72>original_audio)<05>rolerQr<><00>
size_bytesrU)<05> start_sec<65>end_sec<65>text<78>
confidence<EFBFBD> embedding<6E> )<04>prompt<70>transcript_length_chars<72> source_filer<65><00>transcript_txtz/transcript.txtz
text/plainzutf-8rE<00>readyzpost.upload.transcribed)r<>r<>)r<>rtrvrw)r<>r<>rE<00>
audio_pathr^r<><00>rag_chunk_country<00>failedzpost.upload.failedrGzUpload/transcription failed: rz)4r<00>filesrHrIrP<00>formr|r}rN<00>int<6E> TypeError<6F>
ValueErrorrr<><00>uuid<69>uuid4r <00>
UPLOAD_DIR<EFBFBD>saverr]rVr<00>ARCHIVE_BUCKETrW<00>mimetyper <00>stat<61>st_sizerB<00>
transcriber<EFBFBD><00>append<6E>float<61>start<72>end<6E> avg_logprob<6F>joinrarr r~r<00>len<65>encoderTrUrYrr rr<>)<1A>media<69> user_id_rawr_r<>r<>r<>rtrx<00> post_uuid<69> safe_namer<65><00>storage_object_path<74>
saved_path<EFBFBD> created_postr<74><00> media_sha<68>
media_file<EFBFBD>segments<74>_info<66>rag_rows<77>transcript_parts<74>seg<65> segment_textr^<00> prompt_textr<74>s rA<00>api_upload_postr<74><00>s<><00><00> <0A>W<EFBFBD>]<5D>"<22>"<22><15>4<>c<EFBFBD>:<3A>:<3A>:<3A> <13>M<EFBFBD>&<26> !<21>E<EFBFBD> <10>><3E>1<><15>*<2A>C<EFBFBD>0<>0<>0<> <18><15><1E> (<28> (<28>;<3B><15>4<>c<EFBFBD>:<3A>:<3A>:<3A><19>,<2C>"<22>"<22>9<EFBFBD>-<2D>-<2D>K<EFBFBD> <14>\<5C> <1D> <1D>g<EFBFBD> &<26> &<26> ><3E>*><3E> E<> E<> G<> G<>E<EFBFBD><19>,<2C>"<22>"<22>=<3D>1<>1<>K<EFBFBD><19>,<2C>"<22>"<22><<3C>0<>0<>=<3D>I<EFBFBD>D<>D<>F<>F<>L<>L<>N<>N<>J<EFBFBD><17> <0C> <20> <20><1A>,<2C>,<2C>4<><04>;<3B>;<3B>=<3D>=<3D>C<>C<>E<>E<>H<EFBFBD><11>.<2E>.<2E>.<2E><15>C<>S<EFBFBD>I<>I<>I<>L<01><15>k<EFBFBD>"<22>"<22><07><07><> <15>z<EFBFBD> "<22>L<01>L<01>L<01><15>E<>s<EFBFBD>K<>K<>K<>K<>K<>L<01><><EFBFBD><EFBFBD> <1A>'<27> "<22> "<22>D<EFBFBD> <0F>.<2E><15>'<27><13>-<2D>-<2D>-<2D><13>D<EFBFBD>J<EFBFBD>L<EFBFBD>L<EFBFBD>!<21>!<21>I<EFBFBD><1F><05><0E>/<2F>/<2F>I<EFBFBD>5<><07>5<>5<>)<29>5<>5<>N<EFBFBD>$<24>G<>G<>y<EFBFBD>G<>G<>I<EFBFBD>G<>G<><17><1B><19>8<>8<>Y<EFBFBD>8<>8<>8<>J<EFBFBD> <09>J<EFBFBD>J<EFBFBD>z<EFBFBD><1A><1A><1A><17>L<EFBFBD>r@<01>(<28>"<22><1E>*<2A>(<28>&<26>$<24>"0<> <0E> <0E>
2026-02-14 22:04:39 -07:00

<EFBFBD>

<EFBFBD> <0C><16>l<EFBFBD>9<EFBFBD>-<2D>.<2E>.<2E><07><1B>J<EFBFBD>'<27>'<27> <09> <17>_<EFBFBD>_<EFBFBD>T<EFBFBD> "<22> "<22> <0E>j<EFBFBD> !<21>%<25>/<2F>"<22><0F><0F>)<29>)<29>"<22>^<5E>I<>/I<><1C>  <0E> <0E> <0E> <0E> <0E> <0E> <0E> <0E> <0E> <0E> <0E> <0E> <0E> <0E> <0E><><EFBFBD><EFBFBD> <0E> <0E> <0E> <0E> <19> <13>(<28>)<29>A<>A<>,?<3F>A<>A<> %<25><0E>(<28>o<EFBFBD>o<EFBFBD>/<2F>/<2F>7<>#<23>  <0E> <0E>
2026-02-14 22:04:39 -07:00
<EFBFBD>
<EFBFBD>
<EFBFBD>!<21>(<28>(<28>-<2D>-<2D>c<EFBFBD>*<2A>o<EFBFBD>o<EFBFBD>><3E>><3E><0F><08>%<25><15><08><1D><18><1B> <0E> <0E>C<EFBFBD><1E>8<EFBFBD>><3E>><3E>+<2B>+<2B>L<EFBFBD><1F> <19><18> <1C> #<23> #<23>L<EFBFBD> 1<> 1<> 1<> <14>O<EFBFBD>O<EFBFBD>!&<26>s<EFBFBD>y<EFBFBD>!1<>!1<>$<24>S<EFBFBD>W<EFBFBD>~<7E>~<7E>(<28><?<3F>O<EFBFBD><W<>%<25><03><0F>"8<>"8<>"8<>]a<>!%<25> <12><12> <0E> <0E> <0E> <0E><1E>(<28>(<28>#3<>4<>4<>:<3A>:<3A><<3C><<3C><0F>#<23>O<EFBFBD>U<EFBFBD>;<3B>;<3B> <0B> <13> .<2E> <1A>7<EFBFBD>H<EFBFBD> -<2D> -<2D> -<2D><1F> <13> <10>J<EFBFBD>)<29>/2<>?<3F>/C<>/C<>#,<2C> (<28> <12><12> <0E> <0E>
<EFBFBD>
<EFBFBD>
<EFBFBD> <19> <13>(<28>)<29>:<3A>:<3A>:<3A> ,<2C>!<21>/<2F>"8<>"8<><17>"A<>"A<>B<>B<>!<21>.<2E><1F>)?<3F>)?<3F><07>)H<>)H<>I<>I<>S<>S<>U<>U<>  <0E> <0E>
<EFBFBD>
<EFBFBD>
<EFBFBD> <1A>'<27>H<EFBFBD>g<EFBFBD>#6<>7<>7<>7<><15>"<22>"<22>3<><1F>:<3A>Z<EFBFBD>Sa<53>&b<>&b<>c<>c<>  <0E> <0E>
<EFBFBD>
<EFBFBD>
<EFBFBD><17>"<22>(<28>!<21>!/<2F>G<>G<>2E<32>G<>G<>#2<>%<25>#&<26>x<EFBFBD>=<3D>=<3D> <0E> <0E>
2026-02-14 22:04:39 -07:00

<EFBFBD>

<EFBFBD> <0F>
<0F>
<0F><> <15> @<01> @<01> @<01> <17> <0E>L<EFBFBD>,<2C>,<2C>Y<EFBFBD>7<>7<> <0E> <1D>c<EFBFBD>,<2C>y<EFBFBD>"9<>:<3A>:<3A>X<EFBFBD>x<EFBFBD><P<> Q<> Q<> Q<> <19>"<22><<3C> <09>#:<3A>;<3B>;<3B>&<26>2<>#<23>z<EFBFBD>7<EFBFBD>C<EFBFBD><01>F<EFBFBD>F<EFBFBD>*;<3B><<3C><<3C> <12><12> <0E> <0E> <0E><16>9<>a<EFBFBD>9<>9<>3<EFBFBD>?<3F>?<3F>?<3F>?<3F>?<3F>?<3F>?<3F>?<3F><><EFBFBD><EFBFBD><EFBFBD> @<01><><EFBFBD>sW<00><F <00> !F0<03>/F0<03>AT4<00>3K<03> T4<00>K<07>T4<00>K<07>IT4<00>4
W<03>>BW<03>W<03>Wz/users/<int:user_id>/historyrtc
2026-02-14 22:04:39 -07:00
<00><><00>tj<00>ddt<00><03><00>}tj<00>ddt<00><03><00>} t |||<02><06><00>}t ||t td|<02><00>d<07><00>d<08><03><00>S#t$r'}tt|<04><00>d <09><00>cYd}~Sd}~wwxYw)
N<EFBFBD>pagerL<00><02>default<6C>type<70>limit<69><00>r<>r<><00>d)<03>historyr<79>r<>rz) r<00>argsr|r<>rr<00>min<69>maxr<78>rHr<>)rtr<>r<><00>postsr<73>s rA<00>api_user_historyr<79>Qs<><00><00> <12><<3C> <1B> <1B>F<EFBFBD>A<EFBFBD>C<EFBFBD> <1B> 8<> 8<>D<EFBFBD> <13>L<EFBFBD> <1C> <1C>W<EFBFBD>b<EFBFBD>s<EFBFBD> <1C> ;<3B> ;<3B>E<EFBFBD>#<23>!<21>'<27><04>E<EFBFBD>B<>B<>B<><05><16>5<EFBFBD>$<24><13>S<EFBFBD><11>E<EFBFBD>]<5D>]<5D>TW<54>AX<41>AX<41>Y<>Y<>Z<>Z<>Z<><5A> <14>#<23>#<23>#<23><15>c<EFBFBD>!<21>f<EFBFBD>f<EFBFBD>c<EFBFBD>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22><><EFBFBD><EFBFBD><EFBFBD>#<23><><EFBFBD>s<00>AB<00>
2026-02-14 22:04:39 -07:00
C<03>B=<03>7C<03>=Cz /rag/searchc
<00><><00>tj<00>d<01><00>pd<02><00><00>}tj<00>dt<00><04><00>}tj<00>ddt<00><07><00>}tj<00>dd t<00><07><00>}|st d
d <0B><00>S|st d d <0B><00>S t ||||<03> <0A><00>}t||ttd|<03><00>d<0E><00>d<0F><03><00>S#t$r'}t t|<05><00>d<10><00>cYd}~Sd}~wwxYw)N<>qrmrt<00>r<>r<>rLr<>r<><00>z'user_id' is required.rCz'q' is required.)rt<00>
query_textr<EFBFBD>r<>r<>)<03>resultsr<73>r<>rz) rr<>r|r}r<>rHrrr<>r<>r<>r<>)r<>rtr<>r<><00>rowsr<73>s rA<00>api_rag_searchr<68>]s7<00><00><19>,<2C>"<22>"<22>3<EFBFBD>'<27>'<27>-<2D>2<EFBFBD>4<>4<>6<>6<>J<EFBFBD><15>l<EFBFBD><1E><1E>y<EFBFBD>s<EFBFBD><1E>3<>3<>G<EFBFBD> <12><<3C> <1B> <1B>F<EFBFBD>A<EFBFBD>C<EFBFBD> <1B> 8<> 8<>D<EFBFBD> <13>L<EFBFBD> <1C> <1C>W<EFBFBD>b<EFBFBD>s<EFBFBD> <1C> ;<3B> ;<3B>E<EFBFBD> <12>5<><15>.<2E><03>4<>4<>4<> <15>/<2F><15>(<28>#<23>.<2E>.<2E>.<2E>#<23> <20><17>Z<EFBFBD>d<EFBFBD>Z_<5A>`<60>`<60>`<60><04><16>4<EFBFBD><14><03>C<EFBFBD><01>5<EFBFBD>M<EFBFBD>M<EFBFBD>SV<53>@W<>@W<>X<>X<>Y<>Y<>Y<><59> <14>#<23>#<23>#<23><15>c<EFBFBD>!<21>f<EFBFBD>f<EFBFBD>c<EFBFBD>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22><><EFBFBD><EFBFBD><EFBFBD>#<23><><EFBFBD>s<00> AD<00>
E<03>D;<03>5E<03>;Ez/usersc<00>6<00>tjdd<02><03><00>pi} tt|<00><00><00><00>dfS#t$r'}t t |<01><00>d<05><00>cYd}~Sd}~wt$r'}t t |<01><00>d<06><00>cYd}~Sd}~wwxYw<01>NTFriryrCrz)rr{rrr<>rHr<>r<><00>r<>r<>s rA<00>api_create_userr<72>rs<><00><00><15><1E>T<EFBFBD>%<25>8<>8<>8<>><3E>B<EFBFBD>G<EFBFBD>#<23><16>{<7B>7<EFBFBD>+<2B>+<2B>,<2C>,<2C>c<EFBFBD>1<>1<><31> <15>#<23>#<23>#<23><15>c<EFBFBD>!<21>f<EFBFBD>f<EFBFBD>c<EFBFBD>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22><><EFBFBD><EFBFBD><EFBFBD> <14>#<23>#<23>#<23><15>c<EFBFBD>!<21>f<EFBFBD>f<EFBFBD>c<EFBFBD>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22><><EFBFBD><EFBFBD><EFBFBD>#<23><><EFBFBD><EFBFBD>-<00>8<00>
B<03>A$<03>B<03>$ B<03>1B<03> B<03>Bz/users/<int:user_id>c<00>b<00>t|<00><00>}|stdd<02><00>St|<01><00>S)Nr<4E>r<>)rrHr)rtrxs rA<00> api_get_userr<72>}s4<00><00> <19>'<27> "<22> "<22>D<EFBFBD> <0F>.<2E><15>'<27><13>-<2D>-<2D>-<2D> <12>4<EFBFBD>=<3D>=<3D>r@z/postsc<00>6<00>tjdd<02><03><00>pi} tt|<00><00><00><00>dfS#t$r'}t t |<01><00>d<05><00>cYd}~Sd}~wt$r'}t t |<01><00>d<06><00>cYd}~Sd}~wwxYwr<>)rr{rrr<>rHr<>r<>r<>s rA<00>api_create_postr<74><00>s<><00><00><15><1E>T<EFBFBD>%<25>8<>8<>8<>><3E>B<EFBFBD>G<EFBFBD>#<23><16>(<28><17>1<>1<>2<>2<>C<EFBFBD>7<>7<><37> <15>#<23>#<23>#<23><15>c<EFBFBD>!<21>f<EFBFBD>f<EFBFBD>c<EFBFBD>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22><><EFBFBD><EFBFBD><EFBFBD> <14>#<23>#<23>#<23><15>c<EFBFBD>!<21>f<EFBFBD>f<EFBFBD>c<EFBFBD>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22><><EFBFBD><EFBFBD><EFBFBD>#<23><><EFBFBD>r<EFBFBD>c
2026-02-14 21:46:48 -07:00
<00><00>tj<00>ddt<00><03><00>}tj<00>ddt<00><03><00>}tj<00>d<06><00>}tj<00>dt<00><08><00>} t ||||<03> <09><00>}t ||t td|<01><00>d
<EFBFBD><00>d <0B><03><00>S#t$r'}tt|<05><00>d <0C><00>cYd}~Sd}~wwxYw) Nr<4E>rLr<>r<>r<>r<>rtr<>)r<>r<>r<>rtr<>)r<>r<>r<>rz) rr<>r|r<>rrr<>r<>r<>rHr<>)r<>r<>r<>rtr<>r<>s rA<00>api_list_postsr<73><00>s<><00><00> <12><<3C> <1B> <1B>F<EFBFBD>A<EFBFBD>C<EFBFBD> <1B> 8<> 8<>D<EFBFBD> <13>L<EFBFBD> <1C> <1C>W<EFBFBD>b<EFBFBD>s<EFBFBD> <1C> ;<3B> ;<3B>E<EFBFBD><18><1C>!<21>!<21>,<2C>/<2F>/<2F>J<EFBFBD><15>l<EFBFBD><1E><1E>y<EFBFBD>s<EFBFBD><1E>3<>3<>G<EFBFBD>#<23><1F>T<EFBFBD><15>:<3A>W^<5E>_<>_<>_<><04><16><14>t<EFBFBD>c<EFBFBD>#<23>a<EFBFBD><15>-<2D>-<2D>QT<51>>U<>>U<>V<>V<>W<>W<>W<><57> <14>#<23>#<23>#<23><15>c<EFBFBD>!<21>f<EFBFBD>f<EFBFBD>c<EFBFBD>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22><><EFBFBD><EFBFBD><EFBFBD>#<23><><EFBFBD>s<00>AC<00>
D<03>!D<03>=D<03>Dz/posts/<int:post_id>r<>c<00>b<00>t|<00><00>}|stdd<02><00>St|<01><00>S<00>N<>Post not found.r<>)rrHr<00>r<><00>rows rA<00> api_get_postr<74><00>s4<00><00>
2026-02-14 21:46:48 -07:00
<1E>w<EFBFBD>
'<27>
'<27>C<EFBFBD> <0E>.<2E><15>'<27><13>-<2D>-<2D>-<2D> <12>3<EFBFBD><<3C><<3C>r@c<00><><00>tjdd<02><03><00>pi} t||<01><00>}|stdd<05><00>St |<02><00>S#t
$r'}tt |<03><00>d<06><00>cYd}~Sd}~wwxYw)NTFrir<>r<>rz)rr{rrHrr<>r<>)r<>r<>r<>r<>s rA<00>api_patch_postr<74><00>s<><00><00><15><1E>T<EFBFBD>%<25>8<>8<>8<>><3E>B<EFBFBD>G<EFBFBD>#<23><1F><07><17>1<>1<><03><12> 2<><19>+<2B>S<EFBFBD>1<>1<> 1<><16>s<EFBFBD>|<7C>|<7C><1B><> <14>#<23>#<23>#<23><15>c<EFBFBD>!<21>f<EFBFBD>f<EFBFBD>c<EFBFBD>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22><><EFBFBD><EFBFBD><EFBFBD>#<23><><EFBFBD>s"<00>!A <00>A <00>
A<<03>A7<03>1A<<03>7A<z/posts/<int:post_id>/bundlec<00>b<00>t|<00><00>}|stdd<02><00>St|<01><00>Sr<>)rrHr)r<><00>bundles rA<00>api_post_bundler<00>s4<00><00> <1C>W<EFBFBD> %<25> %<25>F<EFBFBD> <11>.<2E><15>'<27><13>-<2D>-<2D>-<2D> <12>6<EFBFBD>?<3F>?<3F>r@z/posts/<int:post_id>/audio-urlc<00><><00>t|<00><00>}|stdd<02><00>S|<01>d<03><00>}|<01>d<04><00>}tj<00>dt
<00><05><00>}tj<00>ddt
<00><08><00>}t td |<05><00>d
<EFBFBD><00>}|d kr||krtd d <0A><00>S t||<05><0E><00>}t|<06><00>S#t$r'}tt|<07><00>d<02><00>cYd}~Sd}~wt$r'}tt|<07><00>d<10><00>cYd}~Sd}~wwxYw)z<>
Get signed URL for original audio/video so users can play it.
Private posts require owner user_id in query params.
r<>r<>r<>rtr<><00>
expires_inir<><00><i<>Qr<>z,Not authorized to access this private audio.i<>)r<>rNrz) rrHr|rr<>r<>r<>r<>rrr<>r<>r<>)r<>r<>r<><00>owner_id<69> requester_idr<00>resultr<74>s rA<00>api_post_audio_urlr<00>sc<00><00> <1F>w<EFBFBD>
'<27>
'<27>C<EFBFBD> <0E>.<2E><15>'<27><13>-<2D>-<2D>-<2D><14><17><17><1C>&<26>&<26>J<EFBFBD><12>w<EFBFBD>w<EFBFBD>y<EFBFBD>!<21>!<21>H<EFBFBD><1A><<3C>#<23>#<23>I<EFBFBD>C<EFBFBD>#<23>8<>8<>L<EFBFBD><18><1C>!<21>!<21>,<2C><04>3<EFBFBD>!<21>G<>G<>J<EFBFBD><14>S<EFBFBD><12>Z<EFBFBD>(<28>(<28>%<25>0<>0<>J<EFBFBD><11>Y<EFBFBD><1E><1E><<3C>8<EFBFBD>#;<3B>#;<3B><15>D<>c<EFBFBD>J<>J<>J<>#<23>'<27><07>J<EFBFBD>O<>O<>O<><06><16>v<EFBFBD><EFBFBD><EFBFBD><1E><> <15>#<23>#<23>#<23><15>c<EFBFBD>!<21>f<EFBFBD>f<EFBFBD>c<EFBFBD>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22><><EFBFBD><EFBFBD><EFBFBD> <14>#<23>#<23>#<23><15>c<EFBFBD>!<21>f<EFBFBD>f<EFBFBD>c<EFBFBD>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22><><EFBFBD><EFBFBD><EFBFBD>#<23><><EFBFBD>s0<00>C4<00>4
E<03>>D <03>E<03> E<03>-E<03> E<03>Ez/posts/<int:post_id>/filesc<00>8<00>tjdd<02><03><00>pi} tt||<01><00><00><00>dfS#t$r'}t t |<02><00>d<05><00>cYd}~Sd}~wt$r'}t t |<02><00>d<06><00>cYd}~Sd}~wwxYwr<>)rr{rr r<>rHr<>r<><00>r<>r<>r<>s rA<00> api_add_filer
<00>s<><00><00><15><1E>T<EFBFBD>%<25>8<>8<>8<>><3E>B<EFBFBD>G<EFBFBD>#<23><16>'<27><07><17>9<>9<>:<3A>:<3A>C<EFBFBD>?<3F>?<3F><> <15>#<23>#<23>#<23><15>c<EFBFBD>!<21>f<EFBFBD>f<EFBFBD>c<EFBFBD>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22><><EFBFBD><EFBFBD><EFBFBD> <14>#<23>#<23>#<23><15>c<EFBFBD>!<21>f<EFBFBD>f<EFBFBD>c<EFBFBD>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22><><EFBFBD><EFBFBD><EFBFBD>#<23><><EFBFBD>s-<00>9<00>
B<03>A%<03>B<03>% B<03>2B<03>B<03>Bc<00><><00> tdt|<00><00>i<01><00>S#t$r'}tt |<01><00>d<02><00>cYd}~Sd}~wwxYw)Nr<4E>rz)rrr<>rHr<>)r<>r<>s rA<00>api_list_filesr <00>sg<00><00>#<23><16><07>!3<>G<EFBFBD>!<<3C>!<<3C>=<3D>><3E>><3E>><3E><> <14>#<23>#<23>#<23><15>c<EFBFBD>!<21>f<EFBFBD>f<EFBFBD>c<EFBFBD>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22><><EFBFBD><EFBFBD><EFBFBD>#<23><><EFBFBD>s<00> <00>
A<03>A <03>A<03> Az/posts/<int:post_id>/metadatac<00>$<00>tjdd<02><03><00>pi}|<01>d<04><00>}|<02>tdd<06><00>S t t ||<02><00><00><00>S#t $r'}tt|<03><00>d<07><00>cYd}~Sd}~wwxYw)NTFri<00>metadataz'metadata' is required.rCrz)rr{r|rHrr r<>r<>)r<>r<>rr<>s rA<00>api_put_metadatar<00>s<><00><00><15><1E>T<EFBFBD>%<25>8<>8<>8<>><3E>B<EFBFBD>G<EFBFBD><16>{<7B>{<7B>:<3A>&<26>&<26>H<EFBFBD><0F><17><15>/<2F><13>5<>5<>5<>#<23><16>.<2E>w<EFBFBD><08>A<>A<>B<>B<>B<><42> <14>#<23>#<23>#<23><15>c<EFBFBD>!<21>f<EFBFBD>f<EFBFBD>c<EFBFBD>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22><><EFBFBD><EFBFBD><EFBFBD>#<23><><EFBFBD>s<00>A<00>
2026-02-14 21:46:48 -07:00
B<03>(B
<03>B<03>
Bc<00>b<00>t|<00><00>}|stdd<02><00>St|<01><00>S)NzMetadata not found.r<>)rrHrr<>s rA<00>api_get_metadatar<00>s4<00><00>
2026-02-14 21:46:48 -07:00
<1E>w<EFBFBD>
'<27>
'<27>C<EFBFBD> <0E>2<><15>+<2B>S<EFBFBD>1<>1<>1<> <12>3<EFBFBD><<3C><<3C>r@z/posts/<int:post_id>/rightsc<00><><00>tjdd<02><03><00>pi} tt||<01><00><00><00>S#t$r'}t t |<02><00>d<04><00>cYd}~Sd}~wwxYw)NTFrirz)rr{rr!r<>rHr<>r s rA<00>api_put_rightsr<00>s~<00><00><15><1E>T<EFBFBD>%<25>8<>8<>8<>><3E>B<EFBFBD>G<EFBFBD>#<23><16>,<2C>W<EFBFBD>g<EFBFBD>><3E>><3E>?<3F>?<3F>?<3F><> <14>#<23>#<23>#<23><15>c<EFBFBD>!<21>f<EFBFBD>f<EFBFBD>c<EFBFBD>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22><><EFBFBD><EFBFBD><EFBFBD>#<23><><EFBFBD>s<00>7<00>
A(<03>A#<03>A(<03>#A(c<00>b<00>t|<00><00>}|stdd<02><00>St|<01><00>S)NzRights not found.r<>)rrHrr<>s rA<00>api_get_rightsrs4<00><00>
2026-02-14 21:46:48 -07:00
<1C>W<EFBFBD>
%<25>
%<25>C<EFBFBD> <0E>0<><15>)<29>3<EFBFBD>/<2F>/<2F>/<2F> <12>3<EFBFBD><<3C><<3C>r@z/posts/<int:post_id>/chunksc<00>r<00>tjdd<02><03><00>pi}|<01>d<04><00>}t|t<00><00>st dd<06><00>S t ||<02><00>}tt|<03><00>|d<07><02><00>dfS#t$r'}t t|<04><00>d <09><00>cYd}~Sd}~wwxYw)
NTFri<00>chunksz'chunks' must be a list.rC)<02>insertedrryrz) rr{r|<00>
isinstance<EFBFBD>listrHrrr<>r<>r<>)r<>r<>rr<>r<>s rA<00>api_add_chunksrs<><00><00><15><1E>T<EFBFBD>%<25>8<>8<>8<>><3E>B<EFBFBD>G<EFBFBD> <14>[<5B>[<5B><18> "<22> "<22>F<EFBFBD> <15>f<EFBFBD>d<EFBFBD> #<23> #<23>7<><15>0<>#<23>6<>6<>6<>#<23><1D>g<EFBFBD>v<EFBFBD>.<2E>.<2E><04><16>C<EFBFBD><04>I<EFBFBD>I<EFBFBD><14>><3E>><3E>?<3F>?<3F><13>D<>D<><44> <14>#<23>#<23>#<23><15>c<EFBFBD>!<21>f<EFBFBD>f<EFBFBD>c<EFBFBD>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22><><EFBFBD><EFBFBD><EFBFBD>#<23><><EFBFBD>s<00>0B<00>
B6<03>B1<03>+B6<03>1B6c<00>J<00>tj<00>ddt<00><03><00>}tj<00>ddt<00><03><00>} t dt |||<02><07><00>i<01><00>S#t $r'}tt|<03><00>d<08><00>cYd}~Sd}~wwxYw) Nr<4E>rLr<>r<><00><>rr<>rz) rr<>r|r<>rrr<>rHr<><00>r<>r<>r<>r<>s rA<00>api_get_chunksrs<><00><00> <12><<3C> <1B> <1B>F<EFBFBD>A<EFBFBD>C<EFBFBD> <1B> 8<> 8<>D<EFBFBD> <13>L<EFBFBD> <1C> <1C>W<EFBFBD>c<EFBFBD><03> <1C> <<3C> <<3C>E<EFBFBD>#<23><16><08>/<2F>'<27><04>E<EFBFBD>"R<>"R<>"R<>S<>T<>T<>T<><54> <14>#<23>#<23>#<23><15>c<EFBFBD>!<21>f<EFBFBD>f<EFBFBD>c<EFBFBD>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22><><EFBFBD><EFBFBD><EFBFBD>#<23><><EFBFBD><EFBFBD><00> A1<00>1
B"<03>;B<03>B"<03>B"z/auditc<00>6<00>tjdd<02><03><00>pi} tt|<00><00><00><00>dfS#t$r'}t t |<01><00>d<05><00>cYd}~Sd}~wt$r'}t t |<01><00>d<06><00>cYd}~Sd}~wwxYwr<>)rr{rr r<>rHr<>r<>r<>s rA<00>api_create_auditr")s<><00><00><15><1E>T<EFBFBD>%<25>8<>8<>8<>><3E>B<EFBFBD>G<EFBFBD>#<23><16>}<7D>W<EFBFBD>-<2D>-<2D>.<2E>.<2E><03>3<>3<><33> <15>#<23>#<23>#<23><15>c<EFBFBD>!<21>f<EFBFBD>f<EFBFBD>c<EFBFBD>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22><><EFBFBD><EFBFBD><EFBFBD> <14>#<23>#<23>#<23><15>c<EFBFBD>!<21>f<EFBFBD>f<EFBFBD>c<EFBFBD>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22><><EFBFBD><EFBFBD><EFBFBD>#<23><><EFBFBD>r<EFBFBD>c <00><><00>tj<00>dt<00><02><00>}tj<00>dt<00><02><00>}tj<00>ddt<00><06><00>}tj<00>ddt<00><06><00>} t d t ||||<03>
<EFBFBD><00>i<01><00>S#t $r'}tt|<04><00>d <0B><00>cYd}~Sd}~wwxYw) Nr<4E>r<>rtr<>rLr<>r<>r<><00>logs)r<>rtr<>r<>rz<00> rr<>r|r<>rrr<>rHr<>)r<>rtr<>r<>r<>s rA<00>api_list_auditr&4s<><00><00><15>l<EFBFBD><1E><1E>y<EFBFBD>s<EFBFBD><1E>3<>3<>G<EFBFBD><15>l<EFBFBD><1E><1E>y<EFBFBD>s<EFBFBD><1E>3<>3<>G<EFBFBD> <12><<3C> <1B> <1B>F<EFBFBD>A<EFBFBD>C<EFBFBD> <1B> 8<> 8<>D<EFBFBD> <13>L<EFBFBD> <1C> <1C>W<EFBFBD>c<EFBFBD><03> <1C> <<3C> <<3C>E<EFBFBD>#<23><16><06><0F><07><17>W[<5B>ch<63> i<> i<> i<>j<>k<>k<>k<><6B> <14>#<23>#<23>#<23><15>c<EFBFBD>!<21>f<EFBFBD>f<EFBFBD>c<EFBFBD>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22><><EFBFBD><EFBFBD><EFBFBD>#<23><><EFBFBD>s<00>!B><00>>
C/<03>C*<03>$C/<03>*C/z/posts/<int:post_id>/auditc<00>J<00>tj<00>ddt<00><03><00>}tj<00>ddt<00><03><00>} t dt |||<02><07><00>i<01><00>S#t $r'}tt|<03><00>d<08><00>cYd}~Sd}~wwxYw) Nr<4E>rLr<>r<>r<>r$)r<>r<>r<>rzr%rs rA<00>api_post_auditr(As<><00><00> <12><<3C> <1B> <1B>F<EFBFBD>A<EFBFBD>C<EFBFBD> <1B> 8<> 8<>D<EFBFBD> <13>L<EFBFBD> <1C> <1C>W<EFBFBD>c<EFBFBD><03> <1C> <<3C> <<3C>E<EFBFBD>#<23><16><06><0F><07>d<EFBFBD>RW<52> X<> X<> X<>Y<>Z<>Z<>Z<><5A> <14>#<23>#<23>#<23><15>c<EFBFBD>!<21>f<EFBFBD>f<EFBFBD>c<EFBFBD>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22><><EFBFBD><EFBFBD><EFBFBD>#<23><><EFBFBD>r )rC)\<5C>__doc__rTr~<00>osr<73><00>pathlibr<00>dotenvr<00>faster_whisperr<00>flaskrrr<00>werkzeug.securityr r
2026-02-14 22:04:39 -07:00
<00>werkzeug.utilsr <00>
db_queriesr r rrrrrrrrrrrrrrrrrrr r!<00>__name__r"<00>getenvr<76><00>mkdirrOr1r3r5r<>r:<00>__annotations__rBr<>r<>rH<00>boolrPr]rar|rg<00>postr<74>r<>r<>r<>r<>r<>r<>r<>r<>r<><00>patchr<68>rrr
r <00>putrrrrrrr"r&r(r?r@rA<00><module>r:s<><00><01><04><04><04>
<0F><0E><0E><0E> <0B> <0B> <0B> <0B> <09> <09> <09> <09> <0B> <0B> <0B> <0B><18><18><18><18><18><18><1E><1E><1E><1E><1E><1E>'<27>'<27>'<27>'<27>'<27>'<27>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>-<2D>I<>I<>I<>I<>I<>I<>I<>I<>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A><02><02><02><02><02><02><02><02><02><02><02><02><02><02><02><02><02><02><02><02><02><02><02><02><02><02><02><02><02><02><02><02><02><02><02><02><02><02><02><02><02><02><02><02><02><02><02><02>2 <0C> <0B> <0A> <0A> <0A><0F>i<EFBFBD><05>x<EFBFBD>F<EFBFBD>3<>3<>3<><03> <11>T<EFBFBD>)<29>"<22>)<29>0<>)<29><<3C><<3C> =<3D> =<3D>
2026-02-14 22:04:39 -07:00
<EFBFBD>
<EFBFBD><10><10><14><04><10>-<2D>-<2D>-<2D>\<5C>\<5C>\<5C><18><19><02> <09>/<2F>6<EFBFBD>2<>2<> <0A><1A><12><19>+<2B>U<EFBFBD>3<>3<><0E> <20>r<EFBFBD>y<EFBFBD>!7<><16>@<40>@<40><14><1A><12><19>,<2C>i<EFBFBD>b<EFBFBD>i<EFBFBD>8Q<38>S]<5D>.^<5E>.^<5E>_<>_<><0E>&*<2A><0E> <0C>t<EFBFBD>#<23>*<2A>*<2A>*<2A><1A> <0C><1A><1A><1A><1A>/<2F>/<2F>C<EFBFBD>/<2F><13>/<2F>/<2F>/<2F>/<2F>J<01>C<EFBFBD>J<01>D<EFBFBD>J<01>J<01>J<01>J<01> <19>$<24><19>3<EFBFBD><19><19><19><19><06>3<EFBFBD><06>s<EFBFBD><06>s<EFBFBD><06><06><06><06><05><17><17><19><13><13><07><07><14><13><07><05><18><18>
<1A><1B><1B>#<23>#<23><1C><1B>#<23>D<05><18><18>-<2D><18><18><06><06><19><18><06>@<05><18><18>/<2F><1A><1A>V@<01>V@<01><1B><1A>V@<01>v<05><17><17> '<27>(<28>(<28>#<23>c<EFBFBD>#<23>#<23>#<23>)<29>(<28>#<23><05><17><17><1D><17><17>#<23>#<23><18><17>#<23>(<05><18><18>(<28><13><13>#<23>#<23><14><13>#<23><05><17><17> <1F> <20> <20><19>#<23><19><19><19>!<21> <20><19><05><18><18>(<28><13><13>#<23>#<23><14><13>#<23><05><17><17><18><12><12>
2026-02-14 21:46:48 -07:00
#<23>
#<23><13><12>
#<23><05><17><17> <1F> <20> <20><18>#<23><18><18><18>!<21> <20><18><05><19><19> !<21>"<22>"<22>#<23>C<EFBFBD>#<23>#<23>#<23>#<23>"<22>#<23><05><17><17> &<26>'<27>'<27><1B>S<EFBFBD><1B><1B><1B>(<28>'<27><1B><05><17><17> )<29>*<2A>*<2A>#<23><03>#<23>#<23>#<23>+<2B>*<2A>#<23>6<05><18><18>
2026-02-14 22:04:39 -07:00
&<26>'<27>'<27>#<23>#<23>#<23>#<23>#<23>(<28>'<27>#<23><05><17><17> %<25>&<26>&<26>#<23>C<EFBFBD>#<23>#<23>#<23>'<27>&<26>#<23><05><17><17> (<28>)<29>)<29> #<23>c<EFBFBD> #<23> #<23> #<23>*<2A>)<29> #<23><05><17><17> (<28>)<29>)<29><18>c<EFBFBD><18><18><18>*<2A>)<29><18><05><17><17> &<26>'<27>'<27>#<23>C<EFBFBD>#<23>#<23>#<23>(<28>'<27>#<23><05><17><17> &<26>'<27>'<27><18>C<EFBFBD><18><18><18>(<28>'<27><18><05><18><18>
'<27>(<28>(<28> #<23>C<EFBFBD> #<23> #<23> #<23>)<29>(<28> #<23><05><17><17> &<26>'<27>'<27>#<23>C<EFBFBD>#<23>#<23>#<23>(<28>'<27>#<23><05><18><18>(<28><13><13>#<23>#<23><14><13>#<23><05><17><17><18><12><12> #<23> #<23><13><12> #<23><05><17><17> %<25>&<26>&<26>#<23>C<EFBFBD>#<23>#<23>#<23>'<27>&<26>#<23>#<23>#r@