From 4b5bf543b0d55dcc4f5c286a8703e6b3d0c08cc4 Mon Sep 17 00:00:00 2001 From: Landon Curt Noll Date: Mon, 22 May 2023 00:26:59 -0700 Subject: [PATCH] update and improve files under tmp Made significant changes to `README.md` to: 0. explain the purpose of the tmp directory and its eventual fate 1. define terms 2. list files under `tmp` and explain their format Renamed the following `tmp` files: winners.csv -> author.csv winners.numbers -> author.numbers winner-handles.csv -> author_handle.txt example.author_handle.json -> example.author.json winning_handles.txt -> winner_id.txt year-auth-prize.csv -> year-prize.csv Make minor changes to `winners.numbers` and exported a new `winners.csv` file. --- tmp/README.md | 262 +++++++++++++++++- tmp/{winners.txt => author-names.txt} | 0 tmp/{winners.csv => author.csv} | 0 tmp/{winners.numbers => author.numbers} | Bin 317094 -> 317050 bytes tmp/{winner-handles.csv => author_handle.txt} | 0 ...author_handle.json => example.author.json} | 0 tmp/{winning_handles.txt => winner_id.txt} | 0 tmp/{year-auth-prize.csv => year-prize.csv} | 0 8 files changed, 250 insertions(+), 12 deletions(-) rename tmp/{winners.txt => author-names.txt} (100%) rename tmp/{winners.csv => author.csv} (100%) rename tmp/{winners.numbers => author.numbers} (88%) rename tmp/{winner-handles.csv => author_handle.txt} (100%) rename tmp/{example.author_handle.json => example.author.json} (100%) rename tmp/{winning_handles.txt => winner_id.txt} (100%) rename tmp/{year-auth-prize.csv => year-prize.csv} (100%) diff --git a/tmp/README.md b/tmp/README.md index ce9e0f913..0a8513d4d 100644 --- a/tmp/README.md +++ b/tmp/README.md @@ -1,19 +1,257 @@ -This tmp directory will go away. +# tmp -The purpose of this directory is to hold temporary files. +The purpose of the `tmp` directory is to hold temporary files. +The files in the `tmp` directory will go away leaving behind +an empty `tmp` directory. -For example: CVS text files, that will later be used to generate JSON files. +This documentation is here to help define terms, file under `tmp` +and the format of those files. -The files currently available (as of 08 April 2023, added 07 April): +*NOTE*: The `terms` section may be moved to another file +later on, after the contents -On 07 April 2023 the following files were added: +## terms -- [year-auth-prize.csv](year-auth-prize.csv) - list of winning entries by author, year and prize -- [winners.csv](winners.csv) - list of winning authors +* author -On 12 April 2023 the following files were added: +An individual who was an `author` of at least one IOCCC entry. -- [example.author_handle.json](example.author_handle.json) - fictitious author -for individual author json files -- [example.dot_winner.json](example.dot_winner.json) - fictitious winning entry -json file +Some authors have submitted more than one IOCCC entry that won. +Some winning IOCCC entries have more than one author. + +* author_handle + +An `author_handle` is string that refers to a given author and is unique +to the IOCCC. Each author has one, and only one `author_handle`. + +For each `author_handle`, there will be a JSON file of the form: + +``` +author/author_handle.json +``` + +Because the `author_handle` is used to form a JSON filename, the +string must be lower case POSIX safe string. Furthermore, the +author_handle must of an ASCII string that matches this regexp: + +```re +^[0-9a-z][0-9a-z_]*$ +``` + +Default `author_handle`'s do not have multiple consecutive +_ (underscore) characters. Nevertheless, multiple consecutive +_ (underscore) characters are allowed. Users who wish to +override the + +The `author_handle` is derived from the name of the author. +While there is a algorithm that maps the name of the author +(which can contain any UTF-8 characters) into a default +`author_handle` string, those who submit an entry to the IOCCC +are free to choose a different `author_handle` string. + +An `author` who has won a previous IOCCC is encouraged to +reuse their author_handle so that new winners an be associated +with the same author. + +For an anonymous `author`, their handle is one of these forms: + +``` +Anonymous_year +``` + +or: + +``` +Anonymous_year.digits +``` + +The latter form is in case there are more than one +anonymous author in a given year. + +Anonymous author_handle's match this regexp: + +```re +Anonymous_[0-9][0-9][0-9][0-9][.0-9]*$ +``` + +* winner + +An IOCCC entry that won an award for given IOCCC. + +A `winner` has one more more `author`s. + +Each `winner` is contained under its own directory. The parent of the winner directory +is a year directory. + +While in most cases a `winner` consists of files under a `winner` directory, +there are a few cases where a `winner` directory contains sub-directories. + +Use of sub-directories under a `winner` directory is discouraged and +may be limited to previous `winner`s that used them. + +* year + +A `year` is a 4 character string. Most years are 4-digit strings that +represent the year. Some special `year` strings are possible, such as "_mock_". +Non-numeric `year` strings are lower case. + +A `year` string matches this regexp: + +```re +[0-9a-z][0-9a-z][0-9a-z][0-9a-z] +``` + +The `year` directories reside directly below the top level directory. + +* .year + +Each `year` will have a file directory under it named: + +``` +.year +``` + +The contents of "_.year_" file is the year string of the directory. + +* dir + +A `dir` is a POSIX safe string that holds an winner. + +A `dir` is a string that matches this regexp: + +```re +^[a-z][0-9a-z.-]*$ +``` + +Each `winner` is under its own individual directory. This directory +is directly under a `year` directory. + +* winner_id + +A string that identifies the winning entry. The string is of the form: + +``` +year_dir +``` + +* .id + +Each `winner` directory will have a file directory under it named: + +``` +.id +``` + +The contents of "_.id_" file is the `winner_id` string for that `winner`. + +* sort_word + +A string that is used to determine the position within the `winners.html` file, +a `author` and the `winners` they submitted are to be listed. + +A `sort_word` match this regexp: + +```re +^[a-z][0-9a-z]* +``` + +## files + +- [author-names.txt](author-names.txt) + +A text file of full names of each `author`: one full name per line. + +- [author-wins.csv](author-wins.csv) + +A CSV file: one line per `author`. + +The 1st field is a `author_handle`. + +The 2nd and later fields are the `winner_id`'s of all `winner`s won by the `author`. + +- [author.csv](author.csv) + +The [author.csv](author.csv) is a CSV file that was exported from the +[author.numbers](author.numbers) file. + +In case of conflict, the data in [author.numbers](author.numbers) file is considered +authoritative over the [author.csv](author.csv) file. + +The [author.csv](author.csv) is generated from the [author.numbers](author.numbers) file, +via the macOS numbers spreadsheet app, as follows: + +0. open [author.csv](author.csv) in numbers: modify if/as needed +1. File -> Export To -> CSV... +1a. [ ] Include table names (unset) +1b. Text Encoding: Unicode (UTF-8) +1c. Click ((Save..)) +2. Save As: author.csv +2a. Select the `tmp` directory +3. Click ((Export)) +3a. If needed click ((Replace)) +4. open a terminal window +5. cd to the `tmp` directory +6. tr -d '\015' < author.csv > tmp.csv +7. echo >> tmp.csv +8. mv -f tmp.csv author.csv + +- [author.numbers](author.numbers) + +A macOS numbers spreadsheet contain information about `author`s: one line per `author`. + +The 1st field is `sort_word` string. + +The 2nd field is the full name of the `author`. + +The 3rd field is the `author_handle` of the `author`. + +The 4th field is the primary URL of `author` or the string "_null_" if none was given. + +The 5th field is the email address of `author` or the string "_null_" if none was given. + +The 6th field is the location ISO 3166 code of `author` or the string "_null_" is unknown. +An `author` who does not wish to specify a location ISO 3166 code is encouraged to +use the code "_XX_". The location ISO 3166 code consists of two UPPER CASE ASCII letters. + +The 7th field is the twitter handle of the `author` or the string "_null_" if none was given. +This field is kept for purely historic record purposes and is otherwise not used. + +The 8th field is the mastodon handle of the `author` or the string "_null_" if none was given. + +The 9th field is the alternate URL of `author` or the string "_null_" if none was given. + +- [author_handle.txt](author_handle.txt) + +A text file containing `author_handle`s for each `author`: one `author_handle` per line. + +- [example.author.json](example.author.json) + +This is a JSON file containing an example `author/author_handle.json` for a fictitious `author`. + +An `author/author_handle.json` file will be derived from the contents of the +[author.csv](author.csv) file and the [author-wins.csv](author-wins.csv) file. + +- [example.dot_winner.json](example.dot_winner.json) + +This is a JSON file containing an example `year/dir/.winner.json` for a fictitious `winner`. + +An `year/dir/.winner.json` file will be derived from the contents the `year/dir/.id` file, +the [author-wins.csv](author-wins.csv) file, the `year/dir/.year` file, and the +contents of the `year/dir` directory. + +- [sql/winners.sql](sql/winners.sql) + +This is a historic SQL command the that was used in the past to generate data +for the old winners directory tree. + +- [winner_id.txt](winner_id.txt) + +A text file containing `winner_id` strings: one `winner_id` per line. + +- [year-prize.csv](year-prize.csv) + +A CSV file: one line per `winner`. + +The 1st field is a `winner_id`. + +The 2nd field is the name of the award for given `winner`. diff --git a/tmp/winners.txt b/tmp/author-names.txt similarity index 100% rename from tmp/winners.txt rename to tmp/author-names.txt diff --git a/tmp/winners.csv b/tmp/author.csv similarity index 100% rename from tmp/winners.csv rename to tmp/author.csv diff --git a/tmp/winners.numbers b/tmp/author.numbers similarity index 88% rename from tmp/winners.numbers rename to tmp/author.numbers index c9beffecc7a410169ecbee250f6106a676b6eb52..7f23afc02a7cacb7184c47c2948e7c446f9545b1 100755 GIT binary patch delta 18500 zcmbun2V7Lg*FQY>va1(_>tzL85fD_=m}n4}3$}#luDq zGl)wxWZ*7#2@{N8)n0~=tc^sK`WG+jt=lVC0X_x+Pd3J6uvn@Z8j5?@RoWT02a^`^ zJHf&A+p2AG9!mAy`@=&910fkUK~3Ji{n_=OUcPke`j6-Dncus<|JIM@5Qsw6?x_+` zGbp1TW65EN$%bMQ9b|QbXE%neqgeZi<&WewC(S3Yy*fz_hRF_wDGr9I4u)wChUpH5 z84iY-4u)9{hS?5=)eeR%104dfHmt45J^x=@+sOXc-i>7rhUE^16%K}#4u(|@+-n+I zFBUo&7C9IeI~bNY7?#Q#G88c8WyU$VJBCOv$H6ey!7$IkFyFzjK*uGrvO_kV7UQi@DAi zS~iR^2x#3RhAeU9f@ANmx}*E<2$eB^N97Q$0#M0ZM^rf&uKo+%{})1q%r8+9d@TlO zmB6DE0$d>=2Lf`zp9jciu2U><;MQushZS?RwRS0dj4;GvP#F7T?pZB0i_&xZ6<$(M zAx2mH99rVX^7c?3{^6+|MPt1?SSrN4q_4T#EiU~An@yzR|O=7S0yBdSJmon{O|w$@PXp9peU59YalBr?~ju5pO=IR z{w@U^vRH+>yE@E(M9*tg{72l9KjN1DBkopg{|)TFhLnuC_2jZMcXANg$=#^E*Fu|v z+Ir+Be}0>I#xr2ON$|G)!N}8c+Z7ZT3OK$F$cgsuwc;CC^9^kH2DW?yJHEkvzJWd8 zz=3bj5@F!PH*n?~IPwjwA`Bkz4OkL6^;TR#gILdEQ?rE=5jfjw)YV^J`$1TT3v*B3 zgT7`0LNN#(FJwUQIqo_gof`_^U-;x0qU6Cb|A`h-A;95L^sx`3)`4qA7RCU_6ogSs za4cTYLKl=^yvS4jOg7R+dl2M{L&)@%eTc0=$boa|k`{Vt524Q>pat-xuin76S}JTBqKwEAv^ZM$*z(*yowqDbGgy>r?#_N}ubcnkV_ zh(b_pMBxhS2n^f^-Z->cj!Eb#66@j1I%xZbJ;dq)f`82g_Bt5KkQ4R{QJB0UOMwXc zdP(C5Ax|MT+OFA&wktgcWBWRJa9HSfBBW;I^x7#Z5vt&+d&>NqQ>QS3VDHdbTit-e z|HTbDD#-JI3d57XUj-x95d`?v%sU)nst!K}Cglkai+3U6w3hPepLFkQD zj5@ABDKN0hJ6QzO9aF~%w7OodXT2Qulz>!kQ}DDn@)3ndqXNX%nKhbVz!3WE_^2FT z|5P`W#AdE`WALxvja?r_%6zTkxrm>9Di;wcNwDMj}B)ofIqjo$7@ zRQD)@rO;H*_*UTxwq6ki19n=92sM_x`2?FSuU&`J@y*04L;e&)9;uRw z3W_ij3Dwtgt#)ee4&HD={h-3j3j2ti^&oz63Twki9eFm^gQ+X9DbhwB;io1xBxLWr zNxZ1ogsBqbD~5_2iN^=jeleuJ*((8yN0% zAR&E!Elh9;&U(MdVV2x=hqTsxVtyMlM+q+;s$i}s7@yx_*=^*m8WzcsmlYF=j(TiV zAntzk4OxGLU{VQJPj@n~HSX*0X;GT)@;YeUmJNsjWF*MfxnIA>!AiNw?;Vu8QtZMV zfA6H>xIAJ)eOFJ){crxwPp&$xga2Tsb==R-iZHu`4et+N*yr4tbK9{@uG;xe@EI=m zm-9d1Py7<5&+ld8--ah>eK3I&7ESH~`HL}p+F8{tm z`^qB*$^ynh+3?VxWn_H?e5MDppv=ob>D=xgG`UwTUcwcb2`&~#aBhgVDmU6&0XxOz zf2Xsx>B=kvHOtaJgvZAhnCP^t9!hst_*jo?{;ekWq_q?NbYnuDwHmQ$#}%l-i;%hg zP9_xd^%V~CbXHB+=v=f{N!9??{`TtMbP)QD+nuzB{gV#rGoKt&CUSxeK;F&m|6|r@ zNYF{Hz%ZISmh$QT$@fm&ymjaLm*0GOU409&1IGU*qdT{+YhSqa^^do-IoEIf^0oQx z+v;p$Cj_y$=BYZHjXpDHZaMO^IzjA`iHkR{sFTEQqxD>$RP9qXOjX8JBY72qAol7i zQ70kNi_CY=8bOqoC|sQ|2PN&!-EVHIs}TFJKDP07C|cWSiyGRms)nwrs_7BL%alI% zX{r{c%iWrG2)9z>zMu9jZmy9~khT-UD!7B`y1II5geeqFoxFP5{O7BhY+@tvfqcoH zJGbxNyMF67wBw2ushyyoaTmiJxRT5RSQNJ<^IfcfyDLkGi4)4R=5Wj)Avf0=S3nzC z>y?qV+InT~y9IZ#a|w9`p%|9V{i5i|Npy$&c@vUin+WA|-(Y8$Myl#4R8yUKQb`?3 z48veLx~Y}DiBKUTFlD4fwrxUJw>NGgl!!=7jaql}`qy8xQn*<04u-mh3gW&{yc0|0 zo+);e6OtTmTk&?Rj{B@wM*|~?4MZNsR%G1#=0|c=3FTu-)JCJ*_ilC{;~p*9t{5wi zZJ?MpzxnyA?lat*C42Bbg6mnb58K1dE!nc?j6ABrl*S$t+Gn-N0Yyb1ZLOvnarNv~ zrW!#Kb(k7jj~SMI$Hhut)cahSU=ht2$=G00bQqmhQb7;5sGzIRVH=1ROod>4Y0hdU zQ7dSjiUqdm3sjSc4VXaHJEsx2sRnPuN$X51gkim^)W@$x&E zFE_4yJC??6EDur8Rv|VKzSu_fU%3COcn!1RW>g$M^PLJ3U@SzbH7YQ)-__iLgn+AC zwm>~a*cM{_*XCr03i+Y}62mM?s*kClcU3ndiRNbP1iA&^f$UOjGevxDe&;T0KliQ5 zU6={?cI9h()@vxMp}75ONa-a)k%$NKGrzv|)mNn9W|V-DNV#YmaqpXN$#`x<<%igB z+?T7gF@5gYsuwVf`%BecjKdYfa|^e&N(YnUPFLOCyK6J!_6^-1Q9Y(i9%Zu(*~EKa zeWknwHS7m5a#eK;K@pAE79>v|<+@d~F*R;z^={0ZTU)&ibL37|@5AJ|S~YKD-*a!) z=xW($0nIjO%YSU8VdZ^>mx3$7-4MI58MN_ zUfYb+&?-i<72f*h+gsY_ls2I?RbVmsO^PI8$skW~pVaOHQOT;ifql&VrS254d0yQL z=FiQl-@Tfs?YG>J?tGJ|t5-}x0(daAEiyPN) zUU{7^#LU1*75UTVx3$lc8@Q^C+ciAY(Rt{G9O#B)%>6*$T<8Pl-5+m#PBwARH@*u! z&To8;Wu@^vuu>Ly@0&ZHldasz#*d**?=_iYKHRvb&6q2Z zd>8epliT*FDUb^5-o9u4)vZtEjkM2VS8$rdaJB^nstggP{{qt6qM)oGe^DlOzPfc= z$qPGAnPM75IEz+R{sq0gf6Iq#1w{qMTX)R0hAjx}iUI2l@?5CBmd%xOnh1yys_%}B zH5F79l+NF~bL-3N_io<#=KC8rw`6NygW32Y2-c0;Z`$uv+bh@LW1v8)Ge|vKhW5+Y zmX|0tQYBiBzl2bu(o2j+pEtnOD)Tley@Z-hfumXGs|Q~_eFwuQo=foUL)eMW%@F#W zzK!GR7e6sWIV0F)tTw338pP_wKP33j5Vl=jK~4cvkf}O*@#kYp3y%Q^rT$ zc*A(#!BcM>+IQ#;<2Uyi>K#6{&*;#RlLrpJsb_rh&?|HYj_WE6GeFR(A14}nX+=4F zw}t*;y?y%I<#1Tj!vlL$yMm#_?teF z5cxmT=)XuLgg62KAHV~I0D=KQfIvV1z#rfT@CDESAAmQ23-APZ0Neq8j02$m9|Pgv z#sOo5{;vFQw)~47|2y6PH!S%VORuWdGeW$T>tQZYfvT$jf9lKl)#7i4l`-o-8TC&F z{a<&4j7R_KjK7%t*()Rp2BfQM{aXk97wkp)-nI= zl>gotUJ(AgLoC4Y?>+K=cgSBoDicco6jCw)WdrzAI5AdzzWeyN zfGko0ajydMNCiZ`3dkfC5c?`1mQ;YcDj=FvU?haYG@%0RR)MKP1q8JUWTpbb`j5;6 zs-J;SP=Rr&0y6Ut2G4_c2p|^_49Ecl0kQ!yx@G|aR4r6MsQ%IJ40!ti(g89CrGaTv z!R-S`0eAzF0bYP4fULEN08c;yK-TJbfIA=#AZvXrK-T&gfD0fRAQQ&Ukar}woh;xH z0T2QTRaK~FAFzax@yhDa%BcS$8%VSh`0L2?@IKW&&nYDqo2Y-8; z-AdQM{z@^P@szbuHk0B!s>oP9U6tIYO6VOtxND=T-dS|bm!Ymr z6oZ1WL1~}jgN(Tws0&4{7@ivB%>e6d7SCrL!e@Khoqju9n- z-x1^Bfm6RDR4akU5pXF!I7$>tED$Js7B1yWfoXe5wme$LKci!=cx5XwXZI;*C3bAB zA=+L1A(d0}sIky4PFik$g)tgpLQ-PC^xAy*V7`kz4(by8Dk{asLZUq zp;_b;)+~OP%93)WkMnv14?&L6Ax05qnZo6;u(lGh4@U7)8Z7(DyyN}_VS~(j*V6Bg z%-4-CNK-M&Gv!&yia62h%_|y20S~)p(rFVsJTkQ?D#R$;qG_kz9(~gc-)OOwh-ZGE`*b+ErhmCn6aX2mS%rH(9%vvTqb8>#EH$EkrTC#s=NhjT zqY@IAGUPhgbI$oyDqV*Q#gHq40RVZ)}@{5rc1?`qy1 zDp|bLl{XwxXaZUKF^`&*hY#k9B0Kp*7)525^$y3-!W2s^mf^_LA?WN6akZmci3Vn@ z*;M#c`N+(Ks12j&j=;=5%chl=uBa1s%zLJjl^&Dy+KTip734TqVDI1)c?&{fm>TrA z9|CJ>5T&{&OiJ5|(<4hCi(N5_AGP4T8a*qKV(ze8;BF>(RFpF4-XaoVly6?g1E<=Y z{?DLxnam24+@RbbdBnoeOmI6ikV~qe30M7e*}OT^P{5 z1g3`ZaK&KlLL4o5i+bSJwBjThl;#~k-MUPZyuqIF<#N6x9iuGV+WVf>5Abs%v2yf~ zS#H*oG7&2%&J{Lclz)ngcX@C??rzAhP}j`#*}Pv{QpBk6V=6JGh+gUoDES$*Q@oHuk5Tve=<^WN!#qM)e}Hd3(!e}oT4(DS+?-=Al%pI&tRvkUid*+X zi8V|YPU*v(;wkrK;kT4!&B$1G$$XR_){7jNy=Ju42e^s_L|bNRa#klp5^LJ0_@7X2 zecs)pzM_I5>?rEL{)t)YitBvjgGxyOM#T;k%=fukA-05_Z$h2FP=%P z(}nzUAgH?N@p5-#6@L~uE5V^VB&>B-1&A}P`+;%yqLaszaFu_M;!Z^Pxi@BZ==7t< z%t+2t`;NeXz8?PXlOX ziiy)~L6yMMmp6$~;q8n4xlh6#rCGfNTX9+@Q>`JL5As6<(-;+Lms9K(A}nsk22r-| zaeAXEt_IQ|7wTE;@hG?3hR^H7sGOUh9{F9N4Wbo{vg=zJv>o^I41u5tW({Xa>R!0E5GdV4#pU(Qwk9|| zE`br%$o#;>-_5@>eyx<}i&6FsSr%2DE`2Qx5M~czO6s;Kc`(t;%fKj~5UaLWk<+{! zkgHDjs%b_+XRK9bG@nhyIJ=579@%Hhc%z+ZXco6p71Ks@AW_xxr&CGAUw`XarSOfzuw%4n?-8F`<1c^eKM~xH4 zTr#9q{elCOjaznK)|1u{J05IumYX`)q&ygONtK#Yp;pC`a39yScY(4Ux;mWL%EBg# zm|4D*#wf`^@RDnFW*+P#Rh@jxR20)QQ7Y<`{)IsHz2=~`8< zP?NIfPj^~7+qG9=QLt_6ZszUXEu6`Z69rx{Znr^NN=i*Vb)-qL!HV%&a3VANpq4^U5$v z)EXBmnP_%oL53^L%O+X(vwGZHorEw!1V|+b3Auf4YnUe*(0$#^E_D9kOsNZh9HShb zwH0+b`wgv!4Cg^+`tkx7t$Re`uPI4D_n3buw?6TbkumJUnVPhBG(VV(nGxgxo7yC% z70pyMJ7Y1(Mt6s)O>3P`gO5o1J(XEh5;D^6U-miV7s$M97L*X}5H`ydL}8S(u)%Ji zBg57Nf*$DZpkKa-s~)|FLZR_(;WKVF%hsYIj0$ye9Ij3eaE`?)kuURAj^vrJ%Y&Zb z@1|^GLY~AsI`;4}P1MHxp6&!+J#fw$YFFLnpTfUM|`@K_n_s{?MZDo7D7ggi@W(9uDGb}A>tEphA5nAXzH^RY9HPv5NlGtHr4d%v-{l7ffpimy-fO(3o}#tMZ6S@a!na) zoJgKudW1!zC(LN}7#%Z|-_%F8E9&{=_+|9A+W5W(&3&lLFm+rQpX{@BmcB?imQ*MA zWJGiKK_x0-JljqeL^y|dO5!XqDmBKrMbbO7_5q}_hN^p2Ip-x6h@_Vw)x*vbarmei z)S^UJ&ZIAM)MmAOmDh|>5fNee_DQ*UxzOG;=4FoHSxjNbgD8U`&RBO57&E z-}nd4N_mT|^-8>G2I^N&=m6rGdkoPzS+Vb#9T{sfw(tvP52Nbe^ycV zK)O>^xz4YsQ+KCnzi)V)RhUGIQ? zRlzj$Iftvfh7B_A^T^N*oWT+o@k~so6j~(c^z#S`@XlZkA}NSnv0qe*D0oTI1>#}K zxg>OK(bp8n`j|OL$Gi{YNar`upkC#~H?LL3mp>AIM}<`72aQ)3OqYSQ7ePqEY^#H} zN0=09_n^YzL8p(yBi$54>#nD-y^pIL!%UG4)6{IHFNK@nFA(K}2A0E1?uqGYy9O0q zg!yNB(S0x?#YGI0YpQ+H!{F)MIyGosweC)udLJkn%QWN&{Ki^i?g#PTqMTQjeAfb7 z(nmm;2Z7}C3>sU@n9mc3!wBcD@p5zh+^$3Yhgg)d$x_1og1Ol_A@GG;TypM0VOS4W zcO1qjzcaL5l2b3(O?efB`Y&<2r{3YK!}oDlue@NNYT*}@pZ!3WtCROcu8zfaRHy4} z;?&cdDH#eCgLaxxBx%U2x0#Oso+yWDw&#Iwu48P92xc|cPKltaSJ0Y=#UeZ4gx*s7 zPV0a;sWS$0!pGWUc(r*~o|zq+Gi_Vn-sOI@awXe7Ii$r!fZan};1PT4`5qD9k`Ma7 zTa;7olaex94Io3W?u1FnRD5nhRHZZvqhe;p2d&oTVwYgfErGuC>=`azY-$&qQCUTO zZf>FeA{s_VCi8n^+P`&nKI)N_q+ak}3oag+ed>Pw8Cqagnzhsj6Bp}7g%V(;rQX1q z&cS&d=t%+dGX4I0z%Z9#3>`HK8eJM`4t3+h5Qy;eZk&h_Rh@_WbTeZ(5xtg<{FDqn z3?V_c%lNQ6cd2g=a${=wKynKmf7Gb!Zz70snXXI>l!D;)Y!8`Osg(@00=dJ1-0og^ z%ltSikrzfqcaJ-_hz1k5m^T_@dUKw5PsYs$mkQQX@o6oYrD3@e5vIw=&n0b06Q9b| zCp{6hQX62Dp!S&g#OcymmT}h$1ZQ8qK;U+Z6kEuzUpTRf1 z>cV1xo_(1!DS2ueRh`AZPVpD=9P&KM`=^bvk%wKRXbD9z!N2f%WAD*1b~T^tc(%anFna{~4H#Ty+CD?Q7K&L4H}V0*Ec? z3v$hGdAbZeA%;GG7UO9<;6KIFrkp?~JM_=^&cc{V1{JI_xGFCtB18g*8vMq>{psLE zA0MDm5mQV1;benky2MB9PX4rs{ZP@Zre2Tc{jWLxDdSxT@-L_Aq8!7vxiD>(z zf+Yt*Fwvf>IF)U56m)84|N+M2;tzB1)B(pBv;=5ML2M;iDm@Jkf9EH5cK>8-9JI*aTlnQ~h9Q;x&>qfJpSbQZA zu`y=$9fC~HwI*=_MtKhm*3HjUJvs`Nbpgp&5Pv@-haMBc(W)5nsztgm=b`17(8Lg3 zrs;Bj#=^*4y7Xnr+O9c37{Sf_4a&*}UUeS!OLJ+O5HDd=R7Sa5Nav_c2TcD%%xKP3 zpLNIh;3NJ;>V8MXT-MNI+LRpJi1MuRjUOzRw%T?LOJAenpFNTE&wEF+ZV{*kl;Q_A zzEe*}6GR)qj*#fs!mpf9P8iVHj_91XVG7e3L&+yka_pKqt0YU+Vpw-LJ1530^hP?f z);6Ol-7(YH`kabq1uMKSDgQdhl7P(o+K-@p^}5^5Y(ni9x;-4lbD)gOxYx|O(T}%7 z^Oj*OR#aIQ1ebeBj#6F$tM(PySr24poE#qMB5#sqmG5Pn{D@xz)~4jhK&IG$C1(Y0!yPtv{qzl zR)0UVWT;}ASC3IHd4ihuXOp&XLmIxWw`pnP$V@lgCAvs?Bt5ep&k@Dq5Yi08FtQ=I zE4{)|{EY<_A5>=V6EN0CLXZdZJ7c>-|H#Kd)?#xiE}+vZJz=JuoK!?lbums*v;V{P z@eyTRr^OBiMc1nQfT&xs&GO28?c}40v_%;Mt!tigHwGu2BjPqZkoZLpA zRJNo<4(Z&btKP!5SZE?^nD+b%!k@%7&G2E`@?Nrz;m*u}=-EoF!OC)MuGnRG<)QE< z#q}$HoU=M?C4|M>obEB>XR&>5?qhZWH7atgFx9gpm~zh> z^Pf$y61f=FAm@{2CgnBmv3cXsLf|Fwn5S=Q+gNu1%nGZlVg-{PL1TDK(;B}Nqk>yA z!)EGIBRa7UKnPWF;_^EtM#@v9U{CT(i^y3R=$j{PH^GVDDvq_Facv^LUSjbZ<(Uv2 zH~H{!+Xp(eOixZ*TW506+_FfXiZ7}J^{l~R4k+IY^yT+?j!6P@rEpF#rDVQ-G10%& z9N5+yRD-8JqPfcMCjywGlbsWjdTL6W`=U@k$iXb%=@3D4C+WFC&t2M9Y~|Q4(FI;g zVR{%>j284eT6C2N&rw`w-mG1H&!o;c%z_@*60$uUlX%_yez1eB&8|c{x+HuF7U~Kf zsjqn=CCN<=f>|*vVARnizIq(iX^tQ?o~(vdap`&?P~!el*?7OGCQY8KXMuUZG3cq_ z>9DgT40N1;lo)^ad>htJipUql_OwT>cgX!|-cici*?KB=t)R&q2w_pn)Zlc8LsBaO zqhUICo{CxPOOHvoKnhftm)K1U+z>ym3&~_@*ot%Vxuw>Xthd$C#K~PIwP{7kJtc{J zuv7bF1q99ww+6<*)RCZT#;Hs1PcM5^A^MII@iu(hjhXw|f_2>43QNcATPMp$NKa&r3&XEx8C`X*n%Wux{2c}K0 zi49LHu!Mu@ny{|Y@9u`01Tly53G-;_=_+bv zLhZbm7tQhtcp~R=4+$68JYgWVY~0@ZRp7o>-Pbw8$?Y?R4;qAEDd9zVBnal{=IdFg zo;hG_StzY6cg+xh1vKlvZB|rm5KCplbIYKETeMYu@~qHeH}0*WhufgJ+soZ zAgbIWG}l%1GL`Q5C_g&tsgQz-hrv8oTRL0m%Ac1eVN{lzOIVS^!rF@v^ zd0-smT1`m;S_+(QUW*~CG>Mv?Bd5BxE?H?IgH!KmDjp+>f`fIoG4u_0ozX;RSvuQ@ z<3yEgm*f@LCDEAsT6PG-g2mEuKcs#B-p_D0`sVfPd;Jd`f_;mbc!wC1bVwhMKHi~oIy9IVIV5JqFQ7v{Q(K;O{ zjH$(T8L`c9D&~>HTQ!{fB5VrN`-I|Ykc1zYq-Qpaw!Bz2E`(G8d5z1Cp7Vp3$oLH) zHCpo1V#eA%NPSW}qo~!DS3T_9hJ8S9-H2;jXwXp|DK-2dF{!ypqhUqDkFu2ZnIB{L z`ID)Nrrja@TyfV^;SMUjVSFT}%y#g1U@c!5WJ3><8KWsG?)EYytjl4(j{ zgT1Uh)i<4Am@1OilfP_Lx$iSpHOpst!0taR0HoQgmMhgA;(GqHNjjC`#DoHUAbhEDx!-h{QPE)pQUU0Y8%)B!5CLk=PM1$?qI#X zfqq#T-)z8&+kyN+xr?@%Dk-n76TU^oyR?Tj^z)rqZ*E1d5K#sr-7!GaqaibR?=!~5{hEsz_sTh1a+#%)y4V~#Gs6*407 zX+swN3N}iA!@{+2sV?ot!nf{bXV|qYhK)6ouTvT}dG7fIWf8nSbw;0$l?OXBCuOx} z$eH|UiymFi!tY>1^vO;5wyh@qVbRSQ{8}Mc#G{LP?fBf3YI*W9o2h9+TW-Qtwvx+g zAeaK$r*gZZQhD2{tcQthlRh3%<=8zsb`$>Q1`WHa=#t=`z>Yo*dTkSa2EVY2eoqBg z$ExTrRPb-~OycuA%EXIp!Wb9?0n+k^)>Vz~k$dEUg5l%c&is&g2~K5()wRUg3%IOk zC0aohzk=sY(Vwg0FQ^%}=PXNyT|L1<9MtYTl$KeN$Fko*i&b&`tsbZws+QS2ku7nb z6Q88GMf`$@N1b^Roh$UTDn7BBhZKfu>qIDo^%&wEXwpAm!pl&v#^l?1a4+c_AjYgq$h|jZ1G5-nMPT)87cw(5` zrHts`HskuZ37d}HjBnelo#=5txOz59FhCyMp)xev%j?c(?WXAd&G>D$iFb5zcCUAV z6y`T!MpaJFN)!Dr^1LqnH5)(7=D60@HMz(5@?b%j5jM;Z7UVCJr}iK^142!Vy`984 zkDjDTz-aBrcdg{b6|xQ}!MzzxcBMnoB0pVB8t>8bs&Mv~G*#%`K|^e*MB= zI?s^uUTb#Bs4H~%k#yckAK!w%gX=J8=PfWWI8$EHUXivx zTW|+GPFiQ;P?T4$0F=x!|1>_g`pG8pj0y;ZR{M}1pANC$1Ip4qCjHS^TkU70$5#3m zb^L3#$?W1pb4F*c)Ec7#okep=X|B&y$lxtLTk-cTI61wE0ZY6B5iH=-y<2+1Mc$#T zNgWixyvz>B8y}p=k0k3iYdDoXUElO=iey-_o|9olY%8=wWDy_t(ES4uJpli2+ z1RAEtx8euihx=y^%pi13&yZ$7%R!YSYxLxC}J9 zpf;!Wp`kJI2J88hZ(W%>*yBGU1}n8=L`qC}j$k{8tJ9a{J~Jx)$?Rj0QgPy|MRk&cQfk=SP% z_CH2oBdFc)iF4Pa2kdo<0ur7!7B>5`2J~q$q{4N6rI)qv_cn97SDr3E=#ubnQKErj zE8iBL^d8xuLz{2If7jCa3C)8Bl~_o}7TH7#%b|jCF2ltMoxbD*+#Yzg4c8*IQ4=CspPnPor(CSO=3KKMmym-h3|D_raU*-8&(3PR)}MS` zRoixf-?i!_Ogd}@I@gKrIP0Xaac|*fDy(C2$!Azo9EDj+W0m_cIIq& zaw6>o%QkI#lMdd+=J@2f&_%t4d{C0oY-}1knnev{9n@{ZcKrQ!IQE0(yx^2pA#6s* zhAsvb2%5;>lvL=k?Km6%#(-YG1K)F;^T@TQPmmTW-9>qH zSPA@UALMK%-`%6T)A)&KE;rmS8TNQxJ9;t%YgSp^spuK=4m+Fwbg;j(ie&B4qi^rP zJuS4k;zvV*s5X%e>8h=gJ>ea@+D7(kqgLkkCS!>{m6mpee9&=|YMzvehw~dPjTBM8 z*p<`iRS{B^nkDv!4yp>Nn17fX!?Gn%i|&UeHT(xQ{uPcAE7;c?bLh(sXsI|xF75+k ztFZN1s;Ht~01BM6Dk(3qsG~w~kMc>ej0(!M>LXv=2WELgc7JK_)Pvu8_%7WvserlE=F$V7Txegyv!*ox{#n_|7__jGYWjl*B8 z@Qkg^0<}FbPc&^U_9+a;`slB9@gs`tjv7J0Oj;%Bw_A^n)5Tr!^V?{nT`-?9XtQ1T zwk@2x#84|i*kb`GbuLK-weg`oi{yoEsE6k6!W%bhmln=h2P}*VJ;{ZADm88${E}?e ztOou2Zu}sqWAVH3Lz@f^!P-?zW9X3}CDbOGM}Dcvrk5aGQN!Qa%GtMdt)2DtPWs3m z{K95VZ^@)r)>1M^fk3}*kH;;wogb68_tT<1I8Tw?;*;qXSk^*5+o?gHeF6UfH&UV_ zUXbZMoiowaos(T+95&2s7G1nL>PfxrD5dKKTpm+o7i85hb&d!~rP( z^GF(;OO9!4(A*dCNbDMY;w7BT@+B3NwE3-*bcA&UubH&ae~G^J5+2FsEKGPmOIdrs z2Q!?1j<{ADD=H#Gzy`E$A3lN0Z=<#L<6rDDPWG~Mb!e&*Z2`U8IWnlerJOZrfNVkR zE!+2W7RFbSychK7=>2$%BD+yIp6uS@L4N(J27T*gyi3h^t>8&<-2EUh%qP|Oy7lHi zD`nLmr?2YahMU=L!NWzvO(A5)3)-%3@x_u5yVwQu>692f98Rz+?x%AO;P=mPx?HSR zi#%#Xupba7E%vZ!;fmlY4a(Bp&F-uXY^(|JBK=;{5Z6sVoJfqFW(}&L@{@U{X)FEx zzFB3kK;w!VhLf_Y0)K~vL}rSoKJJX|<~+6I^$bMNym+uwq^x)*FXugFEy%+-y3FoP zc1ZK8swH3AuSXjn!uM?E*xJ>{(d7YxbyQS|xG!w7!&j5+)T3<=fhue)&dx6PcW&i_ zdbrd(KGZ4BW_|DiU2_O`IA9#vGUQ*+&6R#h@vHo%r+ZstS)aaw@=nHaJX^$bwt>UE zgOux7WT5NAhYvp?^ipgNcb<;JfVhY#ytK&Xyn7@~4XJwp0t z;E^k--v%cDAtvj+%cxSeB0Y2l9{J!p{1guTG1O^gBQU@2zRghAy0QhG)If*!YF&mk zY^@=2j^Hl`W60oeG~CcOibkb^E;s_HfBa(%g6L&Wgbp8u#}gwxR4R$bklv|yjD3j6 zmR)@N`WqG5;Y4+orjm{sLr?#3IXVHQB{HAirdEE_{HssD|4KJfwuC>6qyEj^A(gnBj5QHzLcqIgK6#r+y|gg2P7_q z_ak_hz`GsZ#qe%}cM-g0nHMnA83H~Q2v_nI5g(8PpaDM6hHNGaOc_u1VAQY=oW9g& zoFb}~s6Brk#RNsGjdeucWNm)1uQ8@i0;;N{D0ZrIbRjM?ZwB@C@r`|En;O$Ym!uk$ zWrMqDbs;K?Rk{g1p}&0tHm>0OMK3Ht7TROHx+Pu`a_sCiJF5qNxlv(XL5F{_TVd;k z^KYI!cm1>PKfP{b`St^ickkXff9sd)ETel!oykPUv4m4!uS4v2r;Zq#-!nJ4b@$#r zL)n2+xX~hqj_D+vI)Tnat%FWI9tBs#w|`6!ER|nJE4I{`{=POUNAo_y6IqU=j{lLP za!Lq?Za>F>n=-!WAfBy$Krs9 zr-$R~6VnbA{HWR3X8Oi{ma&V#y@JKu>C=+>(!~vvk>ZTkSw9`jn{TtXw@a~~&FddN zxYI)%xL5aLZ05HQ@H+)^A#e;=P z64SHk-gzW1tcKB5yZ%F;y>c(pSJ@0@Iz^3f4hyE!)fi`B24n1^-S;y{c*t#}{Wat$ zy5yMLi*){exx?5A`r<*xG1^L7ZWq027lTFT?3ZKFF|WyOr@!37cnM^AXSAFu?WiJm zC`DPFF@Bej(J}RjdUwitSH`Ez{dUU>r94vj4!cn>Qt>GG*WY?FoVpGTdG5Q?@%go5 zt@|(OVP&scpB zD*qwY<+tRodUqZ^b?SxHl(uX}hr;tjvfntNbIKS;lx0`Z{_VF%Xrdf$e93-q_pdm>FF9;~{`IfN6Z+$F#({0JNdJE6_^$}EH;0ZcXS}E_i}d%!Ubx(= z{m(ckDv3T&$~wT88rT_*OKYg2FBZ%8O>>AT*T7o;6}y^dt@E`_x(RJ z_<@suOL82?|NM;`I;N4q{x9*hv5BFEHPXA97^m<@*XY|#jJM=KO3|+7_zt?giJ@rv ze+!_0=Is9o{!elA&qn+;;u@K7ixHsw&vdAke!ZEYtu2cr8&e;@f{+Xw|1Hu0m$qnT QXevBbMCg7Q{8kV8KVF?B9smFU delta 18521 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 b>_6YW^?PPGs)xU~;lED_twZ6ZH1Pf(9F;6_ diff --git a/tmp/winner-handles.csv b/tmp/author_handle.txt similarity index 100% rename from tmp/winner-handles.csv rename to tmp/author_handle.txt diff --git a/tmp/example.author_handle.json b/tmp/example.author.json similarity index 100% rename from tmp/example.author_handle.json rename to tmp/example.author.json diff --git a/tmp/winning_handles.txt b/tmp/winner_id.txt similarity index 100% rename from tmp/winning_handles.txt rename to tmp/winner_id.txt diff --git a/tmp/year-auth-prize.csv b/tmp/year-prize.csv similarity index 100% rename from tmp/year-auth-prize.csv rename to tmp/year-prize.csv