Created
July 26, 2023 06:55
-
-
Save splch/e5366de831d50e73fabdfa072841d7ad to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
first_key_down | next_key_down | freq | mean | std | |
---|---|---|---|---|---|
A | A | 75865 | 415.7420473683694 | 211.15077174990657 | |
A | B | 1004970 | 165.28457375000784 | 85.53598674842621 | |
A | C | 2195967 | 167.4397778601112 | 61.035602729802285 | |
A | D | 1441567 | 162.8665241188316 | 31.321963905203503 | |
A | E | 3605848 | 405.72196709898844 | 208.6443786776474 | |
A | F | 651427 | 402.95098691571224 | 203.15117061387028 | |
A | G | 638791 | 395.8929611390238 | 198.9873950522662 | |
A | H | 5849734 | 197.66910352690073 | 90.16204233255728 | |
A | I | 601633 | 249.09574362732477 | 202.01115726544845 | |
A | J | 145136 | 182.78835755322746 | 70.01346006674824 | |
A | K | 188008 | 231.07415453689623 | 40.259920296178336 | |
A | L | 1923458 | 131.40171904074572 | 44.36320607895959 | |
A | M | 2050469 | 171.86272721603842 | 80.38711713853482 | |
A | N | 1031845 | 400.52160925750104 | 207.84166146006515 | |
A | O | 207409 | 412.38261893660524 | 221.95685277173533 | |
A | P | 1049739 | 248.7620485213996 | 182.94352397819813 | |
A | Q | 4423 | 428.98331569214247 | 257.52181598842435 | |
A | R | 1851473 | 411.17181244066546 | 211.6090484460147 | |
A | S | 1142245 | 246.295802541093 | 46.71313823222049 | |
A | T | 1826112 | 161.57161751091127 | 48.895739916968935 | |
A | U | 386426 | 413.78505554004033 | 216.2129431677142 | |
A | V | 244282 | 404.6055688537622 | 204.15124416513382 | |
A | W | 2821952 | 195.24282698672576 | 101.21384311059043 | |
A | X | 76339 | 423.8292662462772 | 211.6690486988025 | |
A | Y | 159859 | 400.81787012186453 | 210.68225662632662 | |
A | Z | 57955 | 443.55629688821216 | 215.84946514136533 | |
B | A | 1042890 | 265.04115251709425 | 146.01040941657976 | |
B | B | 73655 | 397.2560443815612 | 186.99389950312263 | |
B | C | 1061 | 480.42650818040545 | 291.7829183627931 | |
B | D | 19709 | 482.5245015895784 | 265.6008203195539 | |
B | E | 153460 | 467.05009153573644 | 257.8176037027003 | |
B | F | 755 | 437.73020213902896 | 235.83822101709046 | |
B | G | 4856 | 441.23352666260666 | 261.8227674764496 | |
B | H | 20767 | 491.61345705101166 | 275.16075763974 | |
B | I | 217666 | 230.08715158131758 | 69.36765151301839 | |
B | J | 414 | 435.09461045798275 | 238.31550646095772 | |
B | K | 6472 | 489.5040067490531 | 255.31434736304755 | |
B | L | 39301 | 447.45233391671627 | 244.51693202191586 | |
B | M | 287335 | 451.9613836384752 | 238.6965914758822 | |
B | N | 516502 | 477.5265096899989 | 299.8057147669267 | |
B | O | 369872 | 451.163962273822 | 241.4632627330085 | |
B | P | 5431 | 471.4353934993927 | 254.34181072631617 | |
B | Q | 116 | 510.12822113950347 | 272.3508358413191 | |
B | R | 73287 | 514.9395177292571 | 290.99307299588673 | |
B | S | 30225 | 495.00353434574436 | 271.1557286921917 | |
B | T | 27952 | 472.1254744734632 | 245.59067661290626 | |
B | U | 213544 | 452.5880666155165 | 242.91825893122473 | |
B | V | 684 | 366.9549328538587 | 224.45384179464094 | |
B | W | 9002 | 445.8977938066206 | 240.32352629079577 | |
B | X | 2755 | 391.36664902547585 | 201.68079023910113 | |
B | Y | 133964 | 462.11523979501635 | 246.59394594862354 | |
B | Z | 1629 | 425.0333156921425 | 254.40810714962385 | |
C | A | 1606339 | 430.5827682630645 | 219.60272211376062 | |
C | B | 8755 | 463.08384062652567 | 249.0007519070735 | |
C | C | 159642 | 401.4272286448303 | 187.50507064860543 | |
C | D | 9925 | 466.4080201838683 | 253.74362028022614 | |
C | E | 1311265 | 443.7156272370444 | 217.436842773317 | |
C | F | 3218 | 427.9876167674113 | 231.92075503218297 | |
C | G | 1613 | 610.80920565978 | 485.4520724399388 | |
C | H | 4514 | 399.0390051165066 | 214.80755055319403 | |
C | I | 1889601 | 215.62307069070286 | 52.87317148576393 | |
C | J | 933 | 426.3286231355082 | 244.09682878050364 | |
C | K | 2460 | 125.70674486803519 | 29.657181424230572 | |
C | L | 34589 | 436.93224495885244 | 234.52084971046506 | |
C | M | 19795 | 491.5640219798255 | 263.9464211143647 | |
C | N | 935646 | 425.22058488584156 | 231.39037329383524 | |
C | O | 393142 | 432.93659937809684 | 236.5159193133647 | |
C | P | 8672 | 455.21085192402654 | 251.4173489770244 | |
C | Q | 100 | 455.2639358471813 | 218.93769563844722 | |
C | R | 246047 | 477.96744185354925 | 236.9339127579937 | |
C | S | 507952 | 450.15348653970176 | 231.20980098254915 | |
C | T | 283540 | 456.299122047303 | 224.3588265326724 | |
C | U | 678690 | 414.73110026813345 | 223.7095658276743 | |
C | V | 769 | 406.77471061967873 | 264.7470642597932 | |
C | W | 2721 | 484.3835923173154 | 248.71896512781672 | |
C | X | 104346 | 461.25679086944746 | 240.376300362458 | |
C | Y | 31192 | 485.5911771764675 | 267.7035213837771 | |
C | Z | 428 | 418.4717214892439 | 238.12681848301452 | |
D | A | 1766848 | 423.1953800381293 | 216.44181895005315 | |
D | B | 5600 | 454.55529693481543 | 256.8568038659023 | |
D | C | 10104 | 432.6922225747336 | 236.20207719243518 | |
D | D | 219914 | 401.6621606795786 | 186.8424508057322 | |
D | E | 3854844 | 417.53057144149346 | 196.80381112195948 | |
D | F | 768 | 399.1880118247392 | 252.31147564964965 | |
D | G | 7850 | 482.3045922878872 | 263.2995950907008 | |
D | H | 36521 | 431.98353015292685 | 230.91909672568488 | |
D | I | 1427104 | 405.3098833130057 | 215.7483468039293 | |
D | J | 818 | 398.249345416134 | 213.27625690904176 | |
D | K | 5214 | 437.9136283019072 | 237.2113615007442 | |
D | L | 1260394 | 391.86315477224093 | 205.52615513761296 | |
D | M | 3219 | 415.2075916559868 | 221.443272651761 | |
D | N | 5951524 | 395.99943204499385 | 210.7473322599934 | |
D | O | 1011922 | 411.95585716553103 | 222.48449776858274 | |
D | P | 24448 | 449.6892880004707 | 250.19633184787295 | |
D | Q | 139 | 426.48123235880917 | 216.0222382107776 | |
D | R | 752741 | 442.48719142982566 | 217.7088909235004 | |
D | S | 56285 | 461.3220196459573 | 247.77142790874416 | |
D | T | 8923 | 472.5890963512457 | 240.94513554239154 | |
D | U | 278084 | 432.2549908444231 | 237.4834703088236 | |
D | V | 2683 | 449.42093037104155 | 240.9385570182298 | |
D | W | 18352 | 459.44807638676343 | 240.2895381924268 | |
D | X | 155 | 465.5859046889062 | 273.0518103734882 | |
D | Y | 25542 | 464.5134199927569 | 260.5646308369986 | |
D | Z | 440 | 486.58233529998563 | 298.39852197203214 | |
E | A | 48036 | 456.95626862573374 | 238.61641641521078 | |
E | B | 2775984 | 303.5007558252443 | 205.71389119849243 | |
E | C | 1701636 | 405.9664204001624 | 205.72507551981317 | |
E | D | 2216598 | 174.44479936892927 | 33.50520995673231 | |
E | E | 2292952 | 402.7108439042232 | 186.3088656604345 | |
E | F | 1038208 | 179.47882910985925 | 33.900947057681165 | |
E | G | 1590249 | 391.2983707422509 | 29.92429705798867 | |
E | H | 11538487 | 169.05385681207048 | 77.93644696494532 | |
E | I | 1350236 | 402.49726909019284 | 211.5911098598291 | |
E | J | 169151 | 155.83557079158078 | 44.266266136738174 | |
E | K | 1998297 | 390.92329141670916 | 200.25313481265587 | |
E | L | 3365891 | 172.591152223506 | 77.69750099401261 | |
E | M | 4368660 | 384.33971178058334 | 196.5547623492714 | |
E | N | 3124824 | 153.4302399028873 | 57.6584517403808 | |
E | O | 279732 | 477.48653588022717 | 50.93212236617125 | |
E | P | 1762269 | 194.2566123055106 | 40.50073830601131 | |
E | Q | 363 | 449.8957544176327 | 237.65273225679044 | |
E | R | 7022985 | 158.53590015847357 | 82.68278277444125 | |
E | S | 3344529 | 188.13551970456342 | 68.0228303706487 | |
E | T | 4099095 | 214.93730091327683 | 132.27143335997567 | |
E | U | 479256 | 405.39047460262213 | 213.5940037232013 | |
E | V | 4148230 | 185.01551586692727 | 29.562915034011546 | |
E | W | 2402427 | 178.3430251582369 | 85.52707044225332 | |
E | X | 46772 | 440.3580000419198 | 208.71698585616667 | |
E | Y | 726042 | 173.06175124610138 | 48.20605599551516 | |
E | Z | 171236 | 443.2769912873806 | 217.12129970038774 | |
F | A | 351192 | 158.27115653326643 | 64.69689872764656 | |
F | B | 4034 | 463.8782692113988 | 248.9940151940864 | |
F | C | 1567 | 460.60325931441173 | 240.64637508068418 | |
F | D | 12169 | 453.54321695995355 | 261.62601381780075 | |
F | E | 478679 | 444.0852734874947 | 230.00647945981578 | |
F | F | 595496 | 398.96821934016987 | 184.2060551752099 | |
F | G | 5968 | 483.81700363540494 | 308.78290506977197 | |
F | H | 7432 | 451.979394123515 | 274.07186850606746 | |
F | I | 917532 | 193.00650887573966 | 115.50766609965962 | |
F | J | 613 | 395.7552455167039 | 223.42729671086352 | |
F | K | 19095 | 480.3506870352986 | 259.3271774720737 | |
F | L | 290315 | 423.4920017591619 | 230.7208147666683 | |
F | M | 23079 | 471.25537158036605 | 265.3793019277522 | |
F | N | 156210 | 442.4072695714686 | 246.43631294612837 | |
F | O | 2797687 | 393.1445102256333 | 207.594874451686 | |
F | P | 6406 | 424.0316983955814 | 235.28951716202675 | |
F | Q | 48 | 399.0499823588092 | 246.15416083009052 | |
F | R | 110214 | 482.79565002141544 | 255.00671878084606 | |
F | S | 31284 | 508.72545963764753 | 274.47968913221877 | |
F | T | 26501 | 525.7246129006811 | 288.0835864067295 | |
F | U | 131117 | 435.4411029320774 | 234.17337200313625 | |
F | V | 137 | 415.24475847821213 | 244.72262170968986 | |
F | W | 9437 | 465.27522507725575 | 248.06626906162197 | |
F | X | 1502 | 441.8428395016663 | 202.58465474307656 | |
F | Y | 18716 | 504.212988139156 | 297.7346006616151 | |
F | Z | 208 | 432.61664902547585 | 254.3849536592149 | |
G | A | 756554 | 431.79822159860794 | 231.16204684380162 | |
G | B | 1390 | 399.4884438972707 | 216.49520014897706 | |
G | C | 1489 | 446.97407326790005 | 242.02759141145555 | |
G | D | 72819 | 447.8236765658367 | 233.35611260460405 | |
G | E | 294166 | 458.9758174094703 | 243.5554879091617 | |
G | F | 3437 | 419.71591757302025 | 265.41802085765784 | |
G | G | 163066 | 397.58819123517407 | 185.32000335188195 | |
G | H | 1543 | 370.2509274267359 | 213.54266846822975 | |
G | I | 1206059 | 423.173578590384 | 229.27508488180655 | |
G | J | 268 | 401.775379184206 | 218.60128282774707 | |
G | K | 8248 | 441.72229005111683 | 255.71054553981315 | |
G | L | 16169 | 492.63521912761144 | 283.41294838296716 | |
G | M | 8947 | 430.81105047026426 | 239.85418084640673 | |
G | N | 5851764 | 387.5795966210225 | 203.19405973656495 | |
G | O | 393343 | 462.6569442670932 | 257.8664594924874 | |
G | P | 4657 | 516.3169774327008 | 275.41544705780916 | |
G | Q | 27 | 421.0369388805483 | 227.37619269101822 | |
G | R | 258412 | 459.62978346478735 | 232.4388735760263 | |
G | S | 16495 | 521.2963995199228 | 291.90617665783384 | |
G | T | 6509 | 420.72157326790006 | 224.54216064988736 | |
G | U | 758084 | 418.95214703197513 | 228.34425680261566 | |
G | V | 438 | 391.0144984878414 | 237.74845276147096 | |
G | W | 1305 | 461.46753961071755 | 250.09608049245932 | |
G | X | 256 | 431.44998235880917 | 207.86044530853954 | |
G | Y | 7607 | 454.74727965610646 | 258.4475718708253 | |
G | Z | 869 | 447.39229005111685 | 259.41471186878493 | |
H | A | 366733 | 418.0754372096181 | 233.91697005847485 | |
H | B | 4240 | 410.89045854928537 | 248.99165207106603 | |
H | C | 2244002 | 227.61392522123828 | 160.7413285516987 | |
H | D | 14915 | 441.7005597260147 | 248.11594289684177 | |
H | E | 172171 | 425.74720697154584 | 246.40647955394417 | |
H | F | 932 | 395.8582176529268 | 205.72124787461524 | |
H | G | 1455476 | 381.9241739921649 | 192.48822401102166 | |
H | H | 66284 | 398.9982404970159 | 223.62546931967026 | |
H | I | 10361 | 430.88109515214757 | 227.6680065998575 | |
H | J | 1048 | 420.15035456724587 | 274.70785018811796 | |
H | K | 10995 | 845.1528125474885 | 891.9076182455382 | |
H | L | 4787 | 455.497760136587 | 258.3488214376973 | |
H | M | 2302 | 453.37808693397255 | 235.81560322591702 | |
H | N | 24744 | 463.4646763190848 | 253.69640689586296 | |
H | O | 192659 | 455.62113543233266 | 251.0254568473352 | |
H | P | 240215 | 454.3665636976035 | 241.31681901788 | |
H | Q | 80 | 418.569663209873 | 227.76145361724537 | |
H | R | 49147 | 428.02883634750674 | 237.34722433092855 | |
H | S | 1748967 | 231.66629944352536 | 120.25089325620044 | |
H | T | 14385499 | 149.41004041607118 | 73.1216577961689 | |
H | U | 32677 | 451.39998235880915 | 233.84641350032604 | |
H | V | 447 | 397.16821152547584 | 203.28209139259732 | |
H | W | 2123381 | 181.3736504711805 | 79.026326994863 | |
H | X | 10404 | 414.6482072108802 | 218.9051454557545 | |
H | Y | 9532 | 103.32557811618726 | 42.71715323501023 | |
H | Z | 5335 | 524.9231624354375 | 316.35884961049464 | |
I | A | 1309871 | 180.27101552311456 | 36.41564424066992 | |
I | B | 488056 | 225.56042453716265 | 44.25194097010775 | |
I | C | 621184 | 404.4216851147147 | 209.32307093361035 | |
I | D | 1499879 | 380.41211280433413 | 245.42809188400054 | |
I | E | 617304 | 413.60929550860334 | 221.5925139070238 | |
I | F | 994662 | 127.62686912678264 | 29.87510344274783 | |
I | G | 606971 | 210.7669289028003 | 50.11775800410445 | |
I | H | 3906841 | 174.02180874390297 | 61.81500616928431 | |
I | I | 21346 | 93.65093212237093 | 46.317194318858725 | |
I | J | 34374 | 205.4039590172088 | 45.88867798463007 | |
I | K | 961421 | 190.84216295849478 | 18.775303287892854 | |
I | L | 3183893 | 410.11366843317643 | 200.8333285427803 | |
I | M | 1150368 | 177.63065303531812 | 40.495364092395256 | |
I | N | 1321585 | 154.31423499879213 | 31.822185335999784 | |
I | O | 603686 | 401.5037780710078 | 209.12272040389013 | |
I | P | 655400 | 169.3598309914513 | 43.85570952818377 | |
I | Q | 9700 | 427.89971497913 | 235.39023029747955 | |
I | R | 2509847 | 349.48564011694185 | 125.8716879128125 | |
I | S | 1679218 | 187.5333184573782 | 65.06076953993389 | |
I | T | 3448133 | 391.3405895870197 | 205.90440615636044 | |
I | U | 330992 | 403.9450335107679 | 211.85811213449483 | |
I | V | 852865 | 402.74752382421843 | 207.42695471832542 | |
I | W | 1786880 | 164.36061840262624 | 64.64017508407986 | |
I | X | 72417 | 428.30363240060353 | 226.71439908219122 | |
I | Y | 265550 | 221.0046031865324 | 46.214019070237676 | |
I | Z | 81202 | 415.2701878382612 | 216.8882691532264 | |
J | A | 33995 | 462.18798152396846 | 267.4412233673478 | |
J | B | 25141 | 446.74685735880917 | 258.78416876703744 | |
J | C | 580 | 426.3675460981859 | 217.64617902116095 | |
J | D | 7107 | 498.5157718324934 | 316.77875248239326 | |
J | E | 18723 | 459.6675446130687 | 277.67032934616435 | |
J | F | 639 | 395.296136204963 | 220.7440104199698 | |
J | G | 598 | 414.09014140453485 | 217.82952551533305 | |
J | H | 834 | 341.9980923244449 | 184.90449933677343 | |
J | I | 7426 | 514.8893377447295 | 306.4812631727148 | |
J | J | 874 | 393.1923681456112 | 208.94994600107682 | |
J | K | 1449 | 376.3865817824403 | 228.4706588702069 | |
J | L | 1295 | 451.9955798430859 | 241.617371463991 | |
J | M | 473 | 434.6980592818861 | 230.16696330150964 | |
J | N | 61119 | 479.8173544928479 | 253.46901908573292 | |
J | O | 25799 | 484.5532098178255 | 270.0591966063756 | |
J | P | 663 | 488.25542168935306 | 262.89853231687243 | |
J | Q | 37 | 477.82498235880917 | 261.71054424218346 | |
J | R | 2809 | 461.42876219965797 | 257.39086427445176 | |
J | S | 1118 | 440.3029769141631 | 237.3264102582799 | |
J | T | 1160 | 238.8118376841561 | 46.29656644475151 | |
J | U | 3701 | 409.1634116154039 | 232.63075562841738 | |
J | V | 160 | 478.1383881559106 | 291.8141344230618 | |
J | W | 399 | 441.39100348556974 | 240.92166217744412 | |
J | X | 179 | 699.557125215952 | 698.4914312682777 | |
J | Y | 1077 | 424.1177038777965 | 209.97221857544523 | |
J | Z | 52 | 535.3388712476981 | 349.7965512853268 | |
K | A | 814988 | 397.36227475926967 | 207.96997645290895 | |
K | B | 939 | 443.1430913331682 | 231.1014779253318 | |
K | C | 1183956 | 391.6217486304788 | 204.3935572451903 | |
K | D | 4708 | 414.52792912687 | 229.31801625724626 | |
K | E | 240673 | 395.5423021255992 | 208.31491661004088 | |
K | F | 773 | 419.3027601365869 | 238.83620031328059 | |
K | G | 3785 | 422.6849823588092 | 237.9275489911163 | |
K | H | 2392 | 443.9515798028986 | 246.90202011335737 | |
K | I | 693535 | 414.0787892380639 | 191.75197485470113 | |
K | J | 2326 | 389.1347649675048 | 236.3421392034867 | |
K | K | 10659 | 398.9661779764656 | 189.95296680767729 | |
K | L | 277319 | 398.0682323107661 | 210.22239017826104 | |
K | M | 1523 | 428.36694142313667 | 226.7665783892856 | |
K | N | 1061778 | 400.6692872510834 | 208.95248988771908 | |
K | O | 672965 | 240.4962300145349 | 112.05617674766427 | |
K | P | 3782 | 436.6856511486181 | 223.8316361152732 | |
K | Q | 37 | 390.6583156921425 | 204.52574895892252 | |
K | R | 470146 | 405.6263223336364 | 218.99655700795984 | |
K | S | 239948 | 419.6476259728638 | 227.9607806933063 | |
K | T | 3698 | 456.68016035233666 | 255.53336959191031 | |
K | U | 24073 | 443.47510342418445 | 211.07822708714477 | |
K | V | 186 | 459.8846346369866 | 255.01962760665515 | |
K | W | 9677 | 471.92044369302755 | 260.65791581234885 | |
K | X | 258 | 402.7457570066965 | 215.044420012536 | |
K | Y | 10213 | 450.94089144971826 | 234.14999061558754 | |
K | Z | 1271 | 445.80414902547585 | 247.0136145788392 | |
L | A | 4103784 | 395.1126417890554 | 204.3139012665817 | |
L | B | 935837 | 414.57536092622126 | 213.38664870257378 | |
L | C | 500067 | 250.77008942289962 | 36.6467782463027 | |
L | D | 145566 | 407.2137698800735 | 215.44342453898466 | |
L | E | 2369067 | 406.0486067812974 | 212.522533296876 | |
L | F | 215679 | 398.21064329332364 | 207.27466657892845 | |
L | G | 211394 | 409.20468548292644 | 214.77654776937638 | |
L | H | 44421 | 454.99377134009814 | 237.27244717978488 | |
L | I | 1879989 | 416.48242216197406 | 199.141924456478 | |
L | J | 717 | 404.97300867459865 | 227.02512691044456 | |
L | K | 58155 | 425.22520108310437 | 215.12864908972284 | |
L | L | 3953206 | 394.2782831122343 | 183.0231524572147 | |
L | M | 19604 | 460.06810818371014 | 239.1493923574214 | |
L | N | 316534 | 419.64598404625644 | 208.55804308937243 | |
L | O | 1296864 | 421.18359792771076 | 194.28556815309494 | |
L | P | 1148276 | 185.91938200267776 | 60.558932036971584 | |
L | Q | 418 | 397.2106206566815 | 208.8939030943501 | |
L | R | 771273 | 430.81097770080476 | 235.2866335015116 | |
L | S | 301743 | 401.76174742124095 | 212.51030909962623 | |
L | T | 467275 | 424.73468921121554 | 232.18391410872954 | |
L | U | 1335540 | 418.763628302666 | 201.80663602676805 | |
L | V | 3253 | 411.5416631737497 | 212.84664396413845 | |
L | W | 51494 | 436.3278906488476 | 235.68524301699605 | |
L | X | 974 | 439.24258012417226 | 238.1712654136595 | |
L | Y | 55403 | 438.8853583052786 | 227.35462993304446 | |
L | Z | 7510 | 384.98259105446135 | 204.36627245601642 | |
M | A | 1503589 | 263.25933956533476 | 94.93863487945612 | |
M | B | 7144 | 446.2111507436889 | 250.8475311196411 | |
M | C | 2946 | 446.9570875151226 | 241.79259969234556 | |
M | D | 57014 | 461.7001476371379 | 253.8300692098091 | |
M | E | 1193069 | 262.2955305799611 | 140.90912007519177 | |
M | F | 1871 | 448.9467334959112 | 249.96580530946417 | |
M | G | 14273 | 457.7899823588092 | 250.71755232237464 | |
M | H | 62395 | 487.46143167464277 | 250.15753539024223 | |
M | I | 1334011 | 143.95963444838458 | 84.41614555148132 | |
M | J | 348 | 407.16454928794303 | 236.17965142031545 | |
M | K | 8689 | 426.8945636395973 | 241.1170978302257 | |
M | L | 116500 | 442.29473688832405 | 225.10808922502503 | |
M | M | 372910 | 397.0810613389087 | 185.326293768286 | |
M | N | 48057 | 427.8167761753119 | 241.1843052869853 | |
M | O | 2652612 | 406.3840917938321 | 210.05559789193424 | |
M | P | 34686 | 453.8300299589678 | 230.20344674446113 | |
M | Q | 99 | 402.64229005111685 | 227.80136608104732 | |
M | R | 333769 | 414.621106421485 | 220.9440085080625 | |
M | S | 214650 | 435.98897295752266 | 238.47740885375714 | |
M | T | 85665 | 453.6672641749409 | 243.0816244096834 | |
M | U | 443265 | 431.31024976180294 | 200.7296870495594 | |
M | V | 2474 | 431.6642680730949 | 236.56127797709075 | |
M | W | 2953 | 467.9338688426957 | 257.39570395509094 | |
M | X | 1872 | 438.5499823588092 | 225.36423831355413 | |
M | Y | 73599 | 462.0715435122729 | 235.58453624863495 | |
M | Z | 1460 | 430.74805928188607 | 247.98090080240797 | |
N | A | 8463704 | 136.69563338794615 | 53.96386570262702 | |
N | B | 3765 | 377.45604541458925 | 233.86893204899877 | |
N | C | 4277 | 419.48523334583683 | 224.07316041834505 | |
N | D | 304058 | 438.9236951356905 | 257.52113588306463 | |
N | E | 5047364 | 396.26913022758526 | 202.90278645403302 | |
N | F | 1268 | 426.5994288532741 | 226.91623641902333 | |
N | G | 144004 | 407.766275829402 | 215.54131849172398 | |
N | H | 69645 | 424.3023926988185 | 206.7439786328746 | |
N | I | 11063479 | 187.93250231487536 | 88.4528774577583 | |
N | J | 749 | 407.61487597583044 | 229.89790774086035 | |
N | K | 526077 | 394.2471618240213 | 200.66577557106024 | |
N | L | 11743 | 450.9367734824442 | 232.91260696225166 | |
N | M | 65880 | 273.933734939759 | 70.77793271895156 | |
N | N | 526143 | 395.77054387268805 | 184.84311597863692 | |
N | O | 6038567 | 178.89920623184577 | 65.29431297585415 | |
N | P | 3299 | 436.2598049464336 | 222.89085529959428 | |
N | Q | 395 | 396.5667224469149 | 216.53931028781074 | |
N | R | 554703 | 420.4004118107573 | 227.6185702008642 | |
N | S | 260619 | 423.0715532030881 | 237.12397949952094 | |
N | T | 38096 | 438.8284816134058 | 246.021122701307 | |
N | U | 1653723 | 97.28718758977305 | 31.22428761077815 | |
N | V | 2127 | 435.0964987522518 | 235.2895303364654 | |
N | W | 387861 | 400.987922563845 | 204.8823234785706 | |
N | X | 672 | 420.5716039804308 | 222.91782869569704 | |
N | Y | 39366 | 451.3702310746783 | 225.93362021090013 | |
N | Z | 2109 | 88.94318181818181 | 46.72066604117046 | |
O | A | 32674 | 227.60971085651937 | 64.18267576692024 | |
O | B | 1218279 | 199.22302756212622 | 52.61795015784362 | |
O | C | 2376050 | 163.14687486414027 | 58.55587754996981 | |
O | D | 1684346 | 158.32276310131527 | 43.20945406040401 | |
O | E | 487522 | 427.78729118233855 | 236.31643606806912 | |
O | F | 1994144 | 254.22008755020596 | 63.08488973045783 | |
O | G | 1626693 | 237.22291491964864 | 31.47529008031755 | |
O | H | 2840220 | 225.44753078801736 | 152.23608768465968 | |
O | I | 1418727 | 387.23264007984375 | 199.36079689034358 | |
O | J | 314958 | 163.16563128744917 | 62.27190647715685 | |
O | K | 69134 | 427.1568478348046 | 216.5455015044819 | |
O | L | 1980723 | 196.8812011890966 | 31.7202808911741 | |
O | M | 1611554 | 161.96073342792374 | 67.18650953070177 | |
O | N | 2580495 | 142.8042034319622 | 63.710659639600316 | |
O | O | 1956943 | 395.9490959012778 | 184.06261623627438 | |
O | P | 1001535 | 1488.2100855876608 | 1341.3108846130883 | |
O | Q | 571 | 402.2091064464004 | 218.6794243921379 | |
O | R | 2401141 | 260.41036007297 | 34.31974731330516 | |
O | S | 2674751 | 157.68599249961358 | 51.02475761842812 | |
O | T | 5787881 | 170.12721343115254 | 25.657592912373747 | |
O | U | 40312 | 413.40380807613116 | 217.23856406998985 | |
O | V | 210034 | 398.9825357130709 | 207.53035545680527 | |
O | W | 1363401 | 284.6103205083093 | 143.7948495870791 | |
O | X | 8096 | 424.69195356589665 | 230.07304453837642 | |
O | Y | 1939087 | 179.9115193656698 | 84.48480922832167 | |
O | Z | 27084 | 457.37939412351506 | 238.5330800067839 | |
P | A | 733603 | 255.39699222064218 | 57.25211825694203 | |
P | B | 2503 | 461.181180574233 | 244.28396402489292 | |
P | C | 1599 | 424.92131865271307 | 228.0961229070279 | |
P | D | 10524 | 429.26492897802626 | 235.04501441687137 | |
P | E | 600334 | 421.80117665237634 | 228.31909633366 | |
P | F | 416 | 170.61466011466013 | 49.66962884040188 | |
P | G | 2918 | 432.3004786367248 | 240.19161233449785 | |
P | H | 5424 | 452.82383556981836 | 232.208433459388 | |
P | I | 287599 | 433.5268956023749 | 222.1678899510138 | |
P | J | 1536 | 423.0809837305513 | 224.05809701622252 | |
P | K | 5312 | 421.49164902547585 | 235.1246502382111 | |
P | L | 107367 | 411.53102870834743 | 204.50650985000323 | |
P | M | 608915 | 428.58596422912643 | 217.88558355446486 | |
P | N | 15324 | 462.33988821654975 | 250.72870495787907 | |
P | O | 955772 | 407.7574437333209 | 205.91214457643437 | |
P | P | 612401 | 397.21205348414844 | 184.6761248118067 | |
P | Q | 63 | 451.3944268032536 | 243.2022886293874 | |
P | R | 103994 | 453.7750447082195 | 249.93375947351853 | |
P | S | 1106444 | 201.13403878914954 | 63.47768124859534 | |
P | T | 27619 | 476.29810562108906 | 275.5448115917163 | |
P | U | 902516 | 420.17732340533297 | 217.67273744524428 | |
P | V | 346 | 439.626948650944 | 243.57205334228502 | |
P | W | 1940 | 420.26521614463115 | 223.99904766958556 | |
P | X | 157029 | 432.6082374492438 | 239.12379983074004 | |
P | Y | 67815 | 451.0546378872492 | 247.14122203785476 | |
P | Z | 307 | 333.47169811320754 | 65.49549279425031 | |
Q | A | 34131 | 528.316626743836 | 308.916265995497 | |
Q | B | 1245 | 410.60276013658694 | 204.91989267182652 | |
Q | C | 5727 | 436.86069664452344 | 224.5850643606419 | |
Q | D | 1322 | 465.37127865510547 | 247.34672984687768 | |
Q | E | 57001 | 501.93917154799834 | 273.4518225430268 | |
Q | F | 33 | 457.33748235880915 | 228.8369881753751 | |
Q | G | 91 | 452.268164176991 | 236.3625440717218 | |
Q | H | 968 | 401.9462229603129 | 206.72041687584255 | |
Q | I | 19053 | 537.89525599065 | 308.5584760947173 | |
Q | J | 45 | 434.01248235880917 | 216.90182329102106 | |
Q | K | 94 | 432.44998235880917 | 249.2906892337653 | |
Q | L | 266 | 449.1136187224455 | 250.46624642769123 | |
Q | M | 157 | 423.6117470646915 | 226.5688950243126 | |
Q | N | 8356 | 534.1380724096443 | 309.88698713219264 | |
Q | O | 2137 | 459.24475847821213 | 263.1597202644854 | |
Q | P | 180 | 424.97039052207447 | 216.81586352279476 | |
Q | Q | 108 | 397.17539219487475 | 213.54239902721966 | |
Q | R | 2848 | 471.43956569214254 | 250.84858014303867 | |
Q | S | 30192 | 453.97978368331246 | 236.4281982300255 | |
Q | T | 96 | 459.55319336798345 | 253.21478648872892 | |
Q | U | 1275 | 393.60407040912366 | 218.3269469887536 | |
Q | V | 25 | 433.19998235880917 | 207.00094341792857 | |
Q | W | 97 | 388.2856466944735 | 226.00204986412814 | |
Q | X | 471 | 492.44998235880917 | 170.44590500551087 | |
Q | Y | 268 | 461.8292927036367 | 269.4465715978691 | |
Q | Z | 110 | 453.31664902547584 | 221.81757899895678 | |
R | A | 3938622 | 242.20532323155422 | 133.13671669389615 | |
R | B | 472191 | 272.3301684682053 | 111.16681782178786 | |
R | C | 551660 | 246.23398021640122 | 36.618848238096724 | |
R | D | 447996 | 236.5585691188359 | 60.280644568465334 | |
R | E | 7637920 | 388.26875901247814 | 200.88775321665128 | |
R | F | 987509 | 189.4080666164771 | 28.378738497075066 | |
R | G | 624616 | 424.31124523442634 | 205.04689441669635 | |
R | H | 340260 | 425.153910509273 | 227.0991928267453 | |
R | I | 1175281 | 81.88196006154783 | 40.53006588611704 | |
R | J | 2854 | 429.0264234615661 | 230.0817342248872 | |
R | K | 18700 | 413.72835809266434 | 226.21376193967214 | |
R | L | 73368 | 438.37800671073376 | 239.45930440822121 | |
R | M | 40121 | 435.18115459194604 | 235.3179243095559 | |
R | N | 20538 | 331.30901412083307 | 68.65638306880427 | |
R | O | 4834743 | 394.11641560838694 | 205.29377396096268 | |
R | P | 1067897 | 198.19217624583644 | 56.59382357113111 | |
R | Q | 151 | 448.14522045404726 | 268.37864419877394 | |
R | R | 537312 | 400.0143864261206 | 186.0346987612685 | |
R | S | 17389 | 143.39449305198147 | 74.18271152485222 | |
R | T | 1168164 | 198.79799290276793 | 43.19500176022868 | |
R | U | 2383810 | 406.8571153977708 | 216.9389635508948 | |
R | V | 5251 | 447.41070803664013 | 231.0188946457379 | |
R | W | 209116 | 439.88256780649215 | 227.84977283672887 | |
R | X | 346 | 471.87218515601194 | 231.65774609490532 | |
R | Y | 30932 | 447.4565647706048 | 258.91554384969015 | |
R | Z | 831 | 465.5464735868793 | 249.9777555488398 | |
S | A | 3790310 | 206.92504315472198 | 62.290232484139146 | |
S | B | 618842 | 453.0471790217953 | 240.46658992007917 | |
S | C | 69641 | 430.86604252377765 | 223.62824894724216 | |
S | D | 556272 | 412.59659166089267 | 216.8426758966844 | |
S | E | 4119699 | 322.562071935992 | 38.09926134655335 | |
S | F | 16247 | 433.14212543432126 | 222.8213632248529 | |
S | G | 370501 | 418.92068653368824 | 220.86159112777827 | |
S | H | 68376 | 413.92712259864925 | 217.45775595995508 | |
S | I | 4219012 | 185.6283875079038 | 48.256013462368074 | |
S | J | 3168 | 405.5421514509783 | 199.85221277438728 | |
S | K | 361995 | 401.4862311826153 | 208.80384527814573 | |
S | L | 537457 | 181.22366584616947 | 32.44999798309307 | |
S | M | 264076 | 403.9980422715347 | 207.5465569205196 | |
S | N | 1137327 | 416.9389568312128 | 224.88210659670875 | |
S | O | 1112966 | 400.69409964705665 | 212.73795635702217 | |
S | P | 213827 | 429.0847546334928 | 230.17188994759852 | |
S | Q | 487 | 411.544100005868 | 222.62103397559568 | |
S | R | 1418508 | 432.05359236810335 | 217.85271280192148 | |
S | S | 1348118 | 402.7140231614195 | 186.09000711384382 | |
S | T | 1073695 | 421.5912347689022 | 215.62411494441602 | |
S | U | 2294700 | 165.6145392509522 | 88.87012000562828 | |
S | V | 8308 | 453.2518289497183 | 229.63013331097102 | |
S | W | 170183 | 144.1765793121658 | 45.82363194458772 | |
S | X | 1563 | 478.6639975103243 | 282.82237183019697 | |
S | Y | 600225 | 404.8791692024039 | 210.42612536117676 | |
S | Z | 934 | 586.2975864436481 | 332.4931567897809 | |
T | A | 5868813 | 173.29506478249402 | 42.81935213716738 | |
T | B | 38101 | 454.22951630004525 | 237.96996673499683 | |
T | C | 951220 | 436.3775583480391 | 205.71367565341774 | |
T | D | 11418 | 464.52223985826174 | 244.9004798902467 | |
T | E | 2209516 | 411.7878820870229 | 210.49157742198383 | |
T | F | 419104 | 428.15101845207545 | 200.87214225934244 | |
T | G | 33561 | 268.8040920931014 | 61.260539574771194 | |
T | H | 960318 | 386.6444579720182 | 198.0686893483076 | |
T | I | 5188483 | 166.42369783623047 | 69.51672042890456 | |
T | J | 273 | 396.9561425230802 | 214.81757311987812 | |
T | K | 9258 | 442.20089587890664 | 250.79786609806186 | |
T | L | 293846 | 437.8244210462012 | 240.02535750534847 | |
T | M | 12106 | 433.17441026065643 | 234.0888258360846 | |
T | N | 3203919 | 409.062071199793 | 216.72749275078746 | |
T | O | 2356791 | 404.2221813717697 | 214.86411409610218 | |
T | P | 250950 | 444.37093706709277 | 239.9627685092184 | |
T | Q | 456 | 392.9077288376824 | 208.2985424077042 | |
T | R | 1241688 | 422.3052756405649 | 202.69558042868024 | |
T | S | 4691965 | 239.32595173741765 | 42.884882721655394 | |
T | T | 1040999 | 398.3254983467335 | 185.4488479707166 | |
T | U | 2730481 | 401.29778820773856 | 208.63292772173327 | |
T | V | 1006 | 459.5691127935918 | 221.55540534870354 | |
T | W | 9156 | 440.24110939104946 | 227.2170798407344 | |
T | X | 171447 | 431.9357520871404 | 213.29719549816193 | |
T | Y | 182393 | 419.1861397415384 | 222.02459471637107 | |
T | Z | 990 | 315.2443181818182 | 81.32150679689194 | |
U | A | 633260 | 427.07437945648985 | 229.207859606842 | |
U | B | 1363407 | 210.88638128103753 | 57.984464127403285 | |
U | C | 412839 | 416.3606791115807 | 221.03185318177015 | |
U | D | 316696 | 411.8861801559638 | 216.87193917434328 | |
U | E | 51030 | 475.3179953305073 | 264.40018332704153 | |
U | F | 561566 | 401.60144156568487 | 209.72404028000733 | |
U | G | 452092 | 404.0890327614708 | 210.90131279585705 | |
U | H | 336453 | 414.1732016586968 | 207.186230945863 | |
U | I | 28134 | 415.99252678086447 | 233.90039132769715 | |
U | J | 707948 | 206.7122919635879 | 50.43777643749226 | |
U | K | 35539 | 458.40867411508157 | 233.06868509186359 | |
U | L | 367225 | 280.81672866914676 | 44.29935993097907 | |
U | M | 492127 | 217.0507529558183 | 28.761067733447714 | |
U | N | 235949 | 321.05233201154545 | 37.476530012029365 | |
U | O | 5838220 | 188.70760006581708 | 56.14331380907968 | |
U | P | 368486 | 305.69516125210305 | 169.11363244588551 | |
U | Q | 390858 | 411.8996840418511 | 216.04510782331744 | |
U | R | 475543 | 579.9806651126066 | 50.16337388832529 | |
U | S | 927756 | 211.77759941269207 | 53.2080839942403 | |
U | T | 894432 | 416.5960186339954 | 220.6591615057091 | |
U | U | 14006 | 407.78957626743863 | 226.74702306058447 | |
U | V | 5715 | 425.5770806801521 | 221.94890866146338 | |
U | W | 9976 | 414.2638107839052 | 216.5854324538242 | |
U | X | 19836 | 469.9882259848715 | 260.09746505967064 | |
U | Y | 29333 | 414.65479136290196 | 235.79118315105478 | |
U | Z | 5667 | 429.38998235880916 | 235.23185821554966 | |
V | A | 1357717 | 252.21581246540725 | 110.51876081293727 | |
V | B | 19895 | 508.8035130402769 | 319.7977773890922 | |
V | C | 455 | 412.9615735073866 | 264.82016204902703 | |
V | D | 45674 | 474.6216675375665 | 240.38788433839716 | |
V | E | 1256602 | 311.6040646633407 | 210.6139132042646 | |
V | F | 139 | 419.9364076981757 | 234.69031104316758 | |
V | G | 403 | 428.3319566077362 | 235.54070231255906 | |
V | H | 3100 | 226.50784958013872 | 87.53788165021896 | |
V | I | 753447 | 429.0146394073771 | 232.96589354712398 | |
V | J | 140 | 379.0499823588092 | 201.64814851459207 | |
V | K | 679 | 473.76306647095873 | 267.0454861699365 | |
V | L | 86124 | 448.59190242389616 | 256.5991114592386 | |
V | M | 718 | 505.08696246730824 | 283.4016995703795 | |
V | N | 130084 | 462.56662715272336 | 259.29544532442935 | |
V | O | 864256 | 431.9239285094618 | 241.7661913152204 | |
V | P | 488 | 443.6518172211945 | 240.47792976594545 | |
V | Q | 65 | 452.14510431002867 | 242.23836317052547 | |
V | R | 151566 | 466.97787186549317 | 231.7830384809562 | |
V | S | 3380 | 495.48086121866663 | 279.460791528181 | |
V | T | 10867 | 498.8102844084316 | 259.93779539591276 | |
V | U | 12563 | 489.5674557944644 | 264.66747955120564 | |
V | V | 2526 | 390.40186915126196 | 208.80962541437927 | |
V | W | 99 | 467.8433033235587 | 240.25142089182793 | |
V | X | 367 | 571.0842416180684 | 301.13989673600815 | |
V | Y | 1985 | 487.6660149675048 | 273.462096949972 | |
V | Z | 499 | 396.94998235880917 | 228.31619607299467 | |
W | A | 341887 | 433.4998290805309 | 227.1154528310607 | |
W | B | 4951 | 289.1471354166667 | 49.25033541681886 | |
W | C | 966 | 426.5377166007172 | 210.20229117646466 | |
W | D | 28781 | 482.00068716242214 | 255.2605972418325 | |
W | E | 588102 | 409.90105290389147 | 220.39590058802884 | |
W | F | 3627 | 454.37169054386254 | 237.59529832679578 | |
W | G | 5727 | 447.6004248366853 | 252.6981472203085 | |
W | H | 14644 | 418.7768920810314 | 223.3892905319932 | |
W | I | 6403 | 178.3898793198025 | 135.0163645050997 | |
W | J | 194 | 431.5868871207139 | 243.83042520360996 | |
W | K | 11938 | 442.0331148889296 | 246.03429389405358 | |
W | L | 112455 | 434.71258279708525 | 237.48698812813444 | |
W | M | 3930 | 433.5964841999454 | 236.6609494763503 | |
W | N | 17779 | 448.80380912628493 | 248.35777555488664 | |
W | O | 2125258 | 393.74412333153714 | 207.6366522267055 | |
W | P | 3655 | 426.02841373135817 | 232.07881428516285 | |
W | Q | 349 | 393.1553395016663 | 238.3419505973957 | |
W | R | 59558 | 470.58403061618185 | 247.5145003278086 | |
W | S | 152064 | 454.9666729178917 | 229.0992840608539 | |
W | T | 238362 | 466.9519403413852 | 69.14282595909785 | |
W | U | 3259 | 434.14279673006666 | 237.3155337898548 | |
W | V | 245 | 425.31382164452344 | 216.5320395264415 | |
W | W | 58491 | 413.971000374251 | 212.58031283211318 | |
W | X | 524 | 456.0649823588092 | 227.94155071020748 | |
W | Y | 128868 | 456.01603384011077 | 263.50979475355285 | |
W | Z | 618 | 518.0690299778568 | 282.9305367348429 | |
X | A | 48640 | 493.1207239750006 | 255.07402447807573 | |
X | B | 256 | 450.73123235880917 | 221.3747673866548 | |
X | C | 270 | 391.2302292723894 | 256.6512074973925 | |
X | D | 726 | 372.71354825028203 | 216.16416410613056 | |
X | E | 641625 | 244.28852763786506 | 70.82444466380923 | |
X | F | 319 | 491.294809945016 | 234.65583863493 | |
X | G | 225 | 449.38748235880917 | 255.88756547480418 | |
X | H | 3122 | 748.7833156921424 | 941.8753501843223 | |
X | I | 69847 | 476.7652931218208 | 272.5582784808189 | |
X | J | 75 | 465.94998235880917 | 191.3065537649974 | |
X | K | 588 | 438.49346061967873 | 241.68965576783603 | |
X | L | 2611 | 489.0289297272302 | 275.89618386323923 | |
X | M | 565 | 522.1743413331682 | 288.85855395941866 | |
X | N | 10478 | 522.7433358331294 | 288.1404577697983 | |
X | O | 58921 | 501.20978990877217 | 288.51851579800586 | |
X | P | 1593 | 391.7543301848961 | 227.52412919607747 | |
X | Q | 51 | 640.8999647176183 | 340.89181001102173 | |
X | R | 2467 | 517.8961848904547 | 269.0111918803456 | |
X | S | 482 | 454.52004605307667 | 278.14325940271647 | |
X | T | 973 | 527.0095600360339 | 282.5710767681801 | |
X | U | 12955 | 470.62879030582906 | 263.94953216841157 | |
X | V | 204 | 509.0499823588092 | 269.5102275439505 | |
X | W | 173 | 520.1158914497182 | 258.18632003028154 | |
X | X | 20008 | 396.4173026202471 | 208.79120037707798 | |
X | Y | 959 | 477.3710349903881 | 257.8363270926949 | |
X | Z | 1616 | 415.2833156921425 | 269.55912589735533 | |
Y | A | 2294727 | 403.0160015535715 | 211.32409724122573 | |
Y | B | 427370 | 410.59675990143586 | 207.80904068196173 | |
Y | C | 75144 | 424.22720452910545 | 221.81331291454683 | |
Y | D | 293887 | 420.3395715091881 | 221.37972569985826 | |
Y | E | 852790 | 399.9224372951316 | 208.87545317318845 | |
Y | F | 26381 | 432.121563754158 | 225.25774532212984 | |
Y | G | 65983 | 413.0105845204149 | 209.51462103713897 | |
Y | H | 237111 | 419.57334193886163 | 209.7187430612506 | |
Y | I | 11730 | 448.35154911630235 | 234.46399028441374 | |
Y | J | 438 | 440.57739548622226 | 213.89763988416055 | |
Y | K | 77807 | 451.22560097096624 | 227.2848322097678 | |
Y | L | 2135765 | 238.4555624297673 | 72.50201976498028 | |
Y | M | 1614450 | 229.3899636047748 | 53.68149172328384 | |
Y | N | 703320 | 430.3682810293007 | 210.3956813588236 | |
Y | O | 199117 | 449.1091318192878 | 241.401633145236 | |
Y | P | 122978 | 441.59387692578065 | 236.94579836390224 | |
Y | Q | 64 | 447.092328567679 | 240.90646415486617 | |
Y | R | 1154054 | 407.31018350299894 | 213.17226627546384 | |
Y | S | 147526 | 426.62285925626793 | 224.01877704299451 | |
Y | T | 618280 | 402.7301411122571 | 204.36841647095116 | |
Y | U | 171445 | 410.3027010526378 | 213.77484139539015 | |
Y | V | 17855 | 432.3016406140363 | 227.3615121803134 | |
Y | W | 8851 | 466.0187572371816 | 256.1699476053431 | |
Y | X | 10635 | 431.8901629457166 | 221.58492159338252 | |
Y | Y | 9317 | 398.54908145790824 | 212.89159649375387 | |
Y | Z | 52966 | 416.35387004779403 | 221.79711926484646 | |
Z | A | 127153 | 522.3320786969758 | 283.4015700193414 | |
Z | B | 1110 | 469.19998235880917 | 277.07686908255556 | |
Z | C | 2201 | 443.0499823588092 | 222.01143260257552 | |
Z | D | 2029 | 478.546136204963 | 256.70424007999793 | |
Z | E | 33777 | 525.3954369042638 | 291.9528070560677 | |
Z | F | 229 | 481.6722045810314 | 262.7549003271151 | |
Z | G | 1344 | 526.7356966445234 | 298.6984062740345 | |
Z | H | 4979 | 405.68682446407234 | 214.17795448219567 | |
Z | I | 202232 | 508.3257405683887 | 310.47587905077836 | |
Z | J | 188 | 483.94998235880917 | 259.8701746418909 | |
Z | K | 1379 | 438.30712521595206 | 228.04037044256125 | |
Z | L | 6250 | 447.35787709565125 | 232.19335916815524 | |
Z | M | 1347 | 451.4646882411621 | 254.60781874868508 | |
Z | N | 15053 | 494.7813549078288 | 270.51647322417494 | |
Z | O | 36822 | 482.1383665732544 | 285.4233667445951 | |
Z | P | 1018 | 470.64998235880915 | 254.71324743423588 | |
Z | Q | 31 | 437.19998235880917 | 209.69590500551087 | |
Z | R | 5599 | 488.4976014064282 | 253.96484117218327 | |
Z | S | 1176 | 448.97081569214254 | 293.3029085338902 | |
Z | T | 15541 | 486.5733589821858 | 259.3453869786468 | |
Z | U | 53280 | 449.39735077986177 | 264.1360641158861 | |
Z | V | 365 | 458.0653669741938 | 289.05144934442023 | |
Z | W | 921 | 456.78331569214254 | 229.29855139399626 | |
Z | X | 691 | 380.9331284262249 | 238.804692833034 | |
Z | Y | 7835 | 476.78331569214254 | 293.5083971959707 | |
Z | Z | 54151 | 405.64103926937827 | 208.1697906224169 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"cells": [ | |
{ | |
"cell_type": "code", | |
"execution_count": 1, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"import pandas as pd\n", | |
"import numpy as np\n", | |
"import random\n", | |
"import copy\n", | |
"import matplotlib.pyplot as plt" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 2, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"# Load data\n", | |
"data_path = 'alphabet_pairs.csv'\n", | |
"df = pd.read_csv(data_path)\n", | |
"\n", | |
"# Create a list of unique keys\n", | |
"keys = sorted(set(df['first_key_down'].unique().tolist() + df['next_key_down'].unique().tolist()))\n", | |
"\n", | |
"# Create a mapping for keys to indices\n", | |
"key_to_index = {key: index for index, key in enumerate(keys)}\n", | |
"\n", | |
"# Initialize a matrix with zeros\n", | |
"matrix = np.zeros((len(keys), len(keys)))\n", | |
"\n", | |
"# Fill the matrix with costs\n", | |
"for index, row in df.iterrows():\n", | |
" i = key_to_index[row['first_key_down']]\n", | |
" j = key_to_index[row['next_key_down']]\n", | |
" if row['freq'] != 0: # To avoid division by zero\n", | |
" matrix[i, j] = row['mean'] / row['freq']" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 3, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"def print_keyboard(layout):\n", | |
" # The layout should be a list of 26 characters (A-Z)\n", | |
" assert len(layout) == 26, \"The layout should be a list of 26 characters (A-Z)\"\n", | |
" \n", | |
" # Get the three rows\n", | |
" first_row = layout[:10]\n", | |
" second_row = layout[10:19]\n", | |
" third_row = layout[19:]\n", | |
" \n", | |
" # Add the necessary spaces to align the keys\n", | |
" first_row_str = \" \" + \" \".join(first_row)\n", | |
" second_row_str = \" \".join(second_row)\n", | |
" third_row_str = \" \" + \" \".join(third_row)\n", | |
" \n", | |
" # Print the keyboard\n", | |
" print(first_row_str)\n", | |
" print(second_row_str)\n", | |
" print(third_row_str)\n", | |
"\n", | |
"def calculate_total_cost(layout, cost_matrix, key_to_index):\n", | |
" total_cost = 0\n", | |
" for i in range(len(layout) - 1):\n", | |
" total_cost += cost_matrix[key_to_index[layout[i]], key_to_index[layout[i+1]]]\n", | |
" return total_cost\n", | |
"\n", | |
"def simulated_annealing(keys, cost_matrix, key_to_index, num_iterations=10000, start_temperature=10, end_temperature=0.01):\n", | |
" # Create a random initial layout\n", | |
" current_layout = random.sample(keys, len(keys))\n", | |
" current_cost = calculate_total_cost(current_layout, cost_matrix, key_to_index)\n", | |
" \n", | |
" # Store the best solution found\n", | |
" best_layout = copy.deepcopy(current_layout)\n", | |
" best_cost = current_cost\n", | |
" \n", | |
" # Store the cost over time\n", | |
" costs_over_time = [current_cost]\n", | |
" \n", | |
" for iteration in range(num_iterations):\n", | |
" # Calculate the current temperature (decreases over time)\n", | |
" temperature = start_temperature * ((end_temperature / start_temperature) ** (iteration / num_iterations))\n", | |
" \n", | |
" # Choose two keys randomly and swap them\n", | |
" new_layout = copy.deepcopy(current_layout)\n", | |
" i, j = random.sample(range(len(new_layout)), 2)\n", | |
" new_layout[i], new_layout[j] = new_layout[j], new_layout[i]\n", | |
" \n", | |
" # Calculate the new cost\n", | |
" new_cost = calculate_total_cost(new_layout, cost_matrix, key_to_index)\n", | |
" \n", | |
" # If the new layout is better, accept it\n", | |
" if new_cost < current_cost or random.random() < np.exp((current_cost - new_cost) / temperature):\n", | |
" current_layout = new_layout\n", | |
" current_cost = new_cost\n", | |
" \n", | |
" # Update the best solution found\n", | |
" if new_cost < best_cost:\n", | |
" best_layout = copy.deepcopy(new_layout)\n", | |
" best_cost = new_cost\n", | |
" \n", | |
" costs_over_time.append(current_cost)\n", | |
" \n", | |
" return best_layout, costs_over_time" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 4, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA0oAAAIhCAYAAABwnkrAAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABaNElEQVR4nO3dd3RUZeLG8WeSkAAhhJ4QiRARkI6AICCCUhSQFV3X+lPUXRvoyqLLiliCiyCoLK4IiroUFVFXxVUU6QFpJkDonQABUgik98zc3x/IyEwCpMzMnSTfzzlzTubWZ2KEPLz3vtdiGIYhAAAAAICdj9kBAAAAAMDbUJQAAAAAwAlFCQAAAACcUJQAAAAAwAlFCQAAAACcUJQAAAAAwAlFCQAAAACcUJQAAAAAwAlFCQAAAACcUJQAoJrbsWOHHnnkEUVERKhmzZqqU6eOunbtqmnTpuns2bNuOefkyZO1ePFitxzbTAsXLtSMGTNKXGexWBQZGenRPACA8rMYhmGYHQIAYI4PP/xQo0aNUps2bTRq1Ci1a9dOhYWFiomJ0YcffqjOnTvr22+/dfl569Spo7vuukvz5s1z+bHNdNttt2nXrl06evRosXWbNm1Ss2bN1KxZM88HAwCUmZ/ZAQAA5ti4caOeeuopDRo0SIsXL1ZAQIB93aBBg/Tcc89p6dKlJib0Trm5uapVq1aZ97v++uvdkAYA4C5cegcA1dTkyZNlsVg0Z84ch5J0nr+/v/7whz/Y39tsNk2bNk3XXHONAgIC1KRJEz300EM6ceKEw37btm3TbbfdpiZNmiggIEBhYWEaNmyYfTuLxaLs7GzNnz9fFotFFotF/fv3v2TWs2fPatSoUbriiivk7++vq666ShMmTFB+fr59m2uvvVZ9+/Yttq/VatUVV1yhO++8076soKBAkyZNsn+Wxo0b65FHHtHp06cd9m3RooVuu+02ffPNN7r22mtVs2ZNTZw4scSM/fv315IlS3Ts2DH757JYLPb1zpfezZs3TxaLRatWrdJjjz2mhg0bqm7dunrooYeUnZ2txMRE3X333apXr56aNm2q559/XoWFhQ7nLO3nAACUHSNKAFANWa1WrVq1St26dVN4eHip9nnqqac0Z84cPf3007rtttt09OhRvfzyy1qzZo22bt2qRo0aKTs7W4MGDVJERITee+89hYSEKDExUatXr1ZmZqakcyNZN998s2666Sa9/PLLkqS6dete9Lx5eXm66aabdPjwYU2cOFGdOnXSunXrNGXKFMXGxmrJkiWSpEceeUTPPvusDh48qFatWtn3X7ZsmU6dOqVHHnlE0rnCd/vtt2vdunUaN26cevfurWPHjunVV19V//79FRMT4zBitHXrVu3du1cvvfSSIiIiFBgYWGLOWbNm6fHHH9fhw4fLdLniX/7yF915551atGiRtm3bphdffFFFRUXav3+/7rzzTj3++ONasWKFpk6dqrCwMI0dO7ZcnwMAUEYGAKDaSUxMNCQZ9957b6m237t3ryHJGDVqlMPyzZs3G5KMF1980TAMw4iJiTEkGYsXL77k8QIDA42RI0eW6tzvv/++Icn48ssvHZZPnTrVkGQsW7bMMAzDSElJMfz9/e1Zzrv77ruNkJAQo7Cw0DAMw/j8888NScbXX3/tsF10dLQhyZg1a5Z9WfPmzQ1fX19j//79pco6bNgwo3nz5iWuk2S8+uqr9vdz5841JBnPPPOMw3YjRowwJBnTp093WN6lSxeja9eu9vdl+RwAgLLj0jsAwGWtXr1akvTwww87LO/Ro4fatm2rlStXSpKuvvpq1a9fX//4xz/0/vvva8+ePRU+96pVqxQYGKi77rrLYfn5LOfP3bBhQw0fPlzz58+XzWaTJKWmpuq7777TQw89JD+/cxdR/PDDD6pXr56GDx+uoqIi+6tLly4KDQ3VmjVrHM7TqVMntW7dusKf42Juu+02h/dt27aVJA0bNqzY8mPHjtnfl/VzAADKhqIEANVQo0aNVLt2bcXFxZVq+zNnzkiSmjZtWmxdWFiYfX1wcLCioqLUpUsXvfjii2rfvr3CwsL06quvFru/prTOnDmj0NBQh/t9JKlJkyby8/Ozn1uSHn30UZ08eVLLly+XJH3++efKz893KHhJSUlKS0uTv7+/atSo4fBKTExUSkqKw3lK+syu1KBBA4f3/v7+F12el5dnf1/WzwEAKBvuUQKAasjX11cDBgzQTz/9pBMnTlx2yuqGDRtKkhISEopte+rUKTVq1Mj+vmPHjlq0aJEMw9COHTs0b948vfbaa6pVq5ZeeOGFMmdt2LChNm/eLMMwHMpScnKyioqKHM59yy23KCwsTHPnztUtt9yiuXPnqmfPnmrXrp19m0aNGqlhw4YXndEvKCjI4b1zQfMWZf0cAICyYUQJAKqp8ePHyzAMPfbYYyooKCi2vrCwUN9//70k6eabb5Ykffrppw7bREdHa+/evRowYECx/S0Wizp37qx//etfqlevnrZu3WpfFxAQoNzc3FLlHDBggLKysoo9oHbBggX29ef5+vrqwQcf1OLFi7Vu3TrFxMTo0Ucfddjvtttu05kzZ2S1WtW9e/dirzZt2pQqV0nK8rkqyp2fAwDAiBIAVFu9evXS7NmzNWrUKHXr1k1PPfWU2rdvr8LCQm3btk1z5sxRhw4dNHz4cLVp00aPP/643n33Xfn4+GjIkCH2We/Cw8P1t7/9TdK5+2ZmzZqlESNG6KqrrpJhGPrmm2+UlpamQYMG2c/dsWNHrVmzRt9//72aNm2qoKCgi/5i/9BDD+m9997TyJEjdfToUXXs2FG//PKLJk+erKFDh2rgwIEO2z/66KOaOnWq7r//ftWqVUv33HOPw/p7771Xn332mYYOHapnn31WPXr0UI0aNXTixAmtXr1at99+u+64445yfU87duyob775RrNnz1a3bt3k4+Oj7t27l+tYl+POzwEAELPeAUB1Fxsba4wcOdK48sorDX9/fyMwMNC49tprjVdeecVITk62b2e1Wo2pU6carVu3NmrUqGE0atTI+L//+z8jPj7evs2+ffuM++67z2jZsqVRq1YtIzg42OjRo4cxb968Yufs06ePUbt2bUOS0a9fv0tmPHPmjPHkk08aTZs2Nfz8/IzmzZsb48ePN/Ly8krcvnfv3oYk44EHHihxfWFhofHWW28ZnTt3NmrWrGnUqVPHuOaaa4wnnnjCOHjwoH275s2bG8OGDbvct9Du7Nmzxl133WXUq1fPsFgsxoV/zeois95FR0c7HOPVV181JBmnT592WD5y5EgjMDCwXJ8DAFB2FsMwDDOLGgAAAAB4G+5RAgAAAAAnFCUAAAAAcEJRAgAAAAAnFCUAAAAAcEJRAgAAAAAnFCUAAAAAcFLlHzhrs9l06tQpBQUFyWKxmB0HAAAAgEkMw1BmZqbCwsLk43PpMaMqX5ROnTql8PBws2MAAAAA8BLx8fFq1qzZJbep8kUpKChI0rlvRt26dU1OAwAAAMAsGRkZCg8Pt3eES6nyRen85XZ169alKAEAAAAo1S05TOYAAAAAAE4oSgAAAADghKIEAAAAAE4oSgAAAADghKIEAAAAAE4oSgAAAADghKIEAAAAAE4oSgAAAADghKIEAAAAAE4oSgAAAADghKIEAAAAAE4oSgAAAADghKIEAAAAAE4oSgAAAADghKIEAAAAAE4oSgAAAADghKIEt0vPKdTuU+lmxwAAAABKjaIEt7th2ioN+/cv+jXurNlRAAAAgFKhKMHtMvOKJEmr9iWbnAQAAAAoHYoSAAAAADihKAEAAACAE4oSUE28t/qQvt12wuwYAAAAlYKf2QEAuN/uU+l68+f9kqQ7rm1mchoAAADvx4gSUA2kZheaHQEAAKBSoSgBAAAAgBNTi1JkZKQsFovDKzQ01L7eMAxFRkYqLCxMtWrVUv/+/bV7924TEwMAAACoDkwfUWrfvr0SEhLsr507d9rXTZs2TdOnT9fMmTMVHR2t0NBQDRo0SJmZmSYmBgAAAFDVmV6U/Pz8FBoaan81btxY0rnRpBkzZmjChAm688471aFDB82fP185OTlauHChyanhKckZeZr8414dTck2OwoAAACqEdOL0sGDBxUWFqaIiAjde++9OnLkiCQpLi5OiYmJGjx4sH3bgIAA9evXTxs2bLjo8fLz85WRkeHwQuX19MJtmrP2iO6cffH/5gAAAICrmVqUevbsqQULFujnn3/Whx9+qMTERPXu3VtnzpxRYmKiJCkkJMRhn5CQEPu6kkyZMkXBwcH2V3h4uFs/A9wr5thZSdLZ7AKTkwAAAKA6MbUoDRkyRH/84x/VsWNHDRw4UEuWLJEkzZ8/376NxWJx2McwjGLLLjR+/Hilp6fbX/Hx8e4JDwAAAKDKMv3SuwsFBgaqY8eOOnjwoH32O+fRo+Tk5GKjTBcKCAhQ3bp1HV4AAAAAUBZeVZTy8/O1d+9eNW3aVBEREQoNDdXy5cvt6wsKChQVFaXevXubmBLlZcgwOwIAAABQKqYWpeeff15RUVGKi4vT5s2bdddddykjI0MjR46UxWLRmDFjNHnyZH377bfatWuXHn74YdWuXVv333+/mbFRTh9EHdHsNYfNjgEAAABclp+ZJz9x4oTuu+8+paSkqHHjxrr++uu1adMmNW/eXJI0btw45ebmatSoUUpNTVXPnj21bNkyBQUFmRkbFTB16T491b+l2TGqHUbzAAAAysbUorRo0aJLrrdYLIqMjFRkZKRnAlVzW46lasOhFD3Vv6X8fL3qqkyX23TkjFbvT9Zzg9rI369qf1YAAACUnalFCd7lj789qyi4dg091KuFuWHc7N45myRJjQID9NiNV7nsuMfOZCsjt0gdmwW77Jiu8PqSvWZHAAAAqFQoSijmUHKW2RE85tjZbJcer9+bayRJG8ffrKbBtVx67IrYl5hpdgQAAIBKhWuOADc4nOzaAgYAAADPoigBAAAAgBOKEgAAAAA4oSgBAAAAgBOKEvCb7PwiZeQVmh2jzAqtNiVn5JkdAwAAoEqhKAGSbDZD7V/9WZ0ilymv0Gp2nDK5a/YG9Zi8UjtPpJsdBQAAoMqgKKHS2HA4RSlZ+W45dpHNsH99Ki3XLedwl+2/FaSvt54wOQkAAEDVQVFCpXH/h5t1w9RVZscAAABANUBRQqWSV2gzOwIAAACqAYoSAAAAADihKFVyX8bE67PNx8yO4ZXScwv1n1/iKu2McLtPpeuTTcdku+D+KQAAAHiGn9kBUH55hVaN++8OSdKQDk3VINDf5ETe5YWvd+inXYn6bPMxrXyuf4WOVWS1yc/Xs/+uMOzfv0iSAv19dWfXZh49NwAAQHXHiFIlZr1gpCG3kk1p7Qkr9yVLkg6fzq7Qcf75wx51iPxZx8/kuCJWme05lWHKeQEAAKozihK8xsm0XP1x9gb9tDOhzPum5RSo0OqeiR4+/iVOeYU2zVx90C3HL6t3Vx7UrDWHzI4BAABQpVGUUGbuKiQTvt2pLcdS9dRnW8u036m0XHV5bbkG/2utW3KVhyH33Fd0NrtAby8/oGlL9ys7v8gt5wAAAABFCWV05HSW2rz0kyL/t9vlx07PLSzXfqt+u8QuLqVil9hVBgVFv5dUq8EkDwAAAO5CUYIkKafg99EJwzh3X8wLX+9QktOMce+tPiybIc3bcNTDCT2H+gEAAABmvYMk6e1lBxzeD/33OknSsTM5+vzx682I5FEWi9kJAAAA4E0YUYIkaeeJ9BKXH0jK9HASAAAAwHwUJVQp6bmFmvLTXu1NYEptAAAAlB+X3qFK6TxxmSTpg6gj8vdz7b8DbD2e5tLjAQAAwHsxogSU0qHkLI+cZ8mOBLV4YYlHzgUAAICSUZS83Mm0XL32/R7Fn80xO0oxRjmnp9585Ixue3edth5PdXGi8vOmmbZHLyzbc6QAAADgehQlL/fo3Gj9Z32c7v9okyTp81+P6/Ule8pdUlzpyU+3lGu/e+Zs0q6TGbrng40uTlR2MUdTte7gaXWbtNxj5/SG/3YAAAC4NIqSl7HaDO0+lS6b7dwv0/t/m3Uu/myuJGn8Nzv14bo4bTlW8dEYwzCUV2gt9/4/706q0PkLrY6FITu/6CJbus++xEw9+PGvysxzPLdhGNp5It3lmX45mKIury3Xkh0JLj0uAAAAXIui5GUmfr9bw/79i6Yu3XfJ7Zx/sb+QzWYoMT3vouvPe+6r7brm5aX6LvZkmXO6w4Ekz9wDVBrf70jQ8Jm/6I5Z61163P/7eLPScwvdcnkdI1UAAACuQ1HyMgs2HpMkfbD2SJn2u/CX5NELt+r6KSu1fM+lR3y+2XquID27KPai25zJLtB7qw8pOfPyxcssrn5YrGFI3249Icm7yhsAAAA8h6JUiV2sIPy0K1GSNGftYZec582f9+ux+TEuOVZpFVltmrp0n2wMkgAAAMAEFCWUyvYT6R4939dbT2j2mooVPRcPNJUJV8EBAABUbhQleKWTqblmR6gQehIAAEDlRlEywam0XE36wTufjQTPstkMLd2VqKQM770HDAAAoDqiKJng0XnR+uiXON07Z5PZUSps10nPXpJX1XwRE68nP92ifm+uNjsKAAAALkBRMsG+xHPPRjqZVrkvL5N+/ywon6j9pyVJeYW2Ch+Ly/0AAABch6IEVCGp2QV646d9OpRMgQUAAKgIilI1Mn3ZfvWdtkpnswu06cgZh3Wn0iv/6JYnxBw9qyJrxUd/3GX8Nzv1ftRhDf7XWrOjAAAAVGoUpSpi18mMy27z71WHFH82Vx+sPVzs3qITF8wyZ3jwIi6bzVBeodVj56uou97fqDd+2ueWY/9v+6kKHyM2Pk2SeP4UAABABVGUKiunhwQ9+emW0u97mV+icws8N2Lypw826pqXl+pMVr7Hznl5l/4GffRLnFvO+tfPt7nluAAAACg7ilIltmRHgsP7jLxCrT+UUuHj2jz4tNQtx1IlScv3JJV6n5SsfGXlF9nfW0x9tGzJFm4+VqlGys7bejxVd3+wkdkMAQBAtUdRqsT+/t8dDu/vmr1BD3y02aQ0ntN90gp1ePXnMu3j6dLy8+4kzVhx0KPnjD+bo8QKPo/pzlkb9GvcWd1XBaauBwAAqAiKkhc5mpJdof0PJGW5KIkXsLh2lGjj4TOX38jFXDG6Vxarf5tq3BUyLxixAwAAqI4oSl4iOTNP/d9aY3YMeLms/EKzIwAAAFQLFCUvcSDRe0aDFseeNDsCLnB+cC2/yKqB05n2GwAAwBMoSijGg3M5VFhBkU05BVX7MrHz/z2SM4rPDPhlTLyH0wAAAFQPfmYHgPtUh2fp9Jm6SqczvWlqcc8a5zShBwAAAFyDEaUq7PzU286Sq1CxqM4lqTQMw/CyZ1QBAABUDowoeYHx3+zU4m2Xvy/oyU/K8FDZS/h220m1D6vrkmN5s4pMnGdx8ax7vx/XdZc2luY4Ty/cpiU7Ey6/IQAAABxQlLzA578eL9V2S3cnujmJedJyvWc2t8p0j9bllKUkrdxb+of+AgAAVHVcegev8MZP+8yOUO39eX6M2REAAAC8BiNKlZR7LgzzHq7+fIbODRPNWx+nIg/OcpGRV6g6/n7y8anq/8UAAACqFopSNVWey8tu+dda7U/KdH2YEiRn5rn0eFH7T6tnRENFfr/HpceVzj3f6K7ZG9X1ynoOyw8mZ6pT5DL1a91Y8x/t4fLzAgAAwH0oSig1T5UkSdqb4NpzbT2epkKrzaXHPG/5niTtPJmunSfTHZbnFZ47X9SB0yXul1dodUseAAAAVBz3KFVTWflV+yGtzpxLjCtZy3kpX+eJy2R1GtozqtJMEgAAAJUYRama2n3KfcWhOtlwKEXPLoot1775RTal5zjO9vdzFZ7ZEAAAoDKhKMHlqtMDTu//aHOptpvy016l5RRcdrv/brn887QAAADgfhQluNTby/ar26QV+mzzMbOjeJUPoo6oy2vLq9QzmiQpIT233JceAgAAeDOKEips+Z4kHU3JliS9u+qQJOnV73ZX6Jj86u391h08rV5TVumRedHlPkZyRl6pRtoAAAA8jVnvUCHrDp7Wd7GnJElH3xjmsuNuj09z2bHKipJWOvM3HJUkrb3IrH6Xk5lXqB6TV0py7c8OAACAKzCiVElZLKV7gOk/f9ijQqtNz3253WG5qy4B23o81TUHwmVVtcv2jp3JMTsCAADARTGiVMV9/EucGgcF6OutJ8yOUqXsPpWu9mHBZsdwmeQM1z7gtyIMw9DDc6Pl7+ejDx/qbnYcAABQTTGiVEmVbjzpnJOpuW7LcTFFVfwG/9tnrjc7QoXYbIYOJWfJMAzNWx9nvwTOGyRm5CnqwGkt35NU7Z73BQAAvAcjSoCT0lziVtmL4D+X7NHc9Uf17IBWemflQbPjOKhqlxgCAIDKiRElVFmWMo27eT/DhdNMzF1/VJLKVJIMw9AbP+3T/7afclkOAAAAb8WIkskm/bDnousKimweTFL5FFov/f2xVfOhiX2JGS49XtSB03o/6rAk6Q+dw1x6bAAAAG/DiJLJPvol7qLrekxe4ZJzuLMwXHjok2mevRdqb8Kli0C+U9EsuEyxulBVGIuaveawS4+XksXzjgAAQPVBUfJiaTmFLjnOZ5uPF1vmqup04oKJIiL/V7GHzLrbrNWuLQ4AAACourj0rppKycp3+TGznWYoO5CUqbd+3u/y85xX1vkU5v32gNSqIjrurNkRAAAAqiyKUjW140S6289x/4eb3Hq51obDKW457ovf7tTBpMzLbhd/1twHpv5lQYyp5wcAAKjKKEpwG3ff05Jf6J7JLrYcSy3Vdv3eXO3yc+9Pcu0EDAAAACgf7lFCpXW5We/czR2PUoo/6/mHAwMAAKA4rylKU6ZMkcVi0ZgxY+zLDMNQZGSkwsLCVKtWLfXv31+7d3v3hAHwnA/XHTE7QrX17bYTbju2tZI/zBcAAFQNXlGUoqOjNWfOHHXq1Mlh+bRp0zR9+nTNnDlT0dHRCg0N1aBBg5SZefn7R6o6ixfOX51dYPXo+Qqtlf8X6vjUy9/nZLGce4ZRvzfXuD9QKf3ti+1uOe6vcWfVd5rrL2kEAAAoK9OLUlZWlh544AF9+OGHql+/vn25YRiaMWOGJkyYoDvvvFMdOnTQ/PnzlZOTo4ULF5qYGBezPT7N7AiVTkJ6Xqm2G/mfX92cpGJmrTnkkuOMWbTNJccBAACoKNOL0ujRozVs2DANHDjQYXlcXJwSExM1ePBg+7KAgAD169dPGzZsuOjx8vPzlZGR4fAC4F7TlrpvGngAAAAzmDrr3aJFi7R161ZFR0cXW5eYmChJCgkJcVgeEhKiY8eOXfSYU6ZM0cSJE10b1IWmLt1ndgRUMkblv8IQAACg0jFtRCk+Pl7PPvusPv30U9WsWfOi21mcbsYxDKPYsguNHz9e6enp9ld8fLzLMrvC7DWHXXKcM26eehve41Q6M+EBAAB4mmkjSlu2bFFycrK6detmX2a1WrV27VrNnDlT+/efu5QnMTFRTZs2tW+TnJxcbJTpQgEBAQoICHBfcC8x5otYsyPAQ37cmejS4436bItLjwcAAFAVmTaiNGDAAO3cuVOxsbH2V/fu3fXAAw8oNjZWV111lUJDQ7V8+XL7PgUFBYqKilLv3r3Nig1Ueq4rXl449SIAAICLmDaiFBQUpA4dOjgsCwwMVMOGDe3Lx4wZo8mTJ6tVq1Zq1aqVJk+erNq1a+v+++83IzIAAACAasLUyRwuZ9y4ccrNzdWoUaOUmpqqnj17atmyZQoKCjI7GoAyWL4nST/uTNCkER0UGODVf+wAAABI8rKitGbNGof3FotFkZGRioyMNCUPUJl502x5jy2IkSQ1q19Lzw1uY3IaAACAyzP9OUoAKqfcwqIy75Ocke+GJAAAAK5HUQJQLusPnXH5Mb1oEAwAAFRzFCWgirJ507V3AAAAlQxFCaiiftiRYHYEAACASouiBMBrOA+CGYyKAQAAk1CUPCgxPc/sCIDbnEzLVZ83Vun9qMOl2t7C82oBAIAXoyh50MLNx8yOALjNlB/36mRart74aZ/ZUQAAACrMq56jBMD75BVaNWZRrM7mFFxyO+6JAgAAVQlFCcAlfbrpmJbuTjQ7BgAAgEdx6R2AS8rILTQ7AgAAgMdRlAC43OHTWTqVlmt2DAAAgHLj0jtPYpovVCI5BUUqshnKyCsq874D3o6SJB19Y5jD8ov9L2CzGXrm821KzGBmSAAA4B0oSgBK1O6Vnz12rl8OpWjJTiaDAAAA3oNL7wCYLrfQanYEAAAABxQlAAAAAHBCUQIAAAAAJxQlD2IqBwAAAKByoCgBAAAAgBOKEgCPWRQdr7PZBcWWF1ptJqQBAAC4OIoSAI+auepQsWXTlx0wIQkAAMDFUZQAeFSBtfhU4EdSsst1rONncvTuyoNKzymsaCwAAAAHPHDWgyzM5oBqJju/SIEB7vtj5rZ31ykjr0j7kjL13v1d3XYeAABQ/TCiBMBtXlq8yyXH+XFngh78eLNSsvIdlmfkFUmSNh8565LzAAAAnEdRAuA2S3YkXHSdYZT+OKM+26p1B1M05cd9LkgFAABweRQlAG7lyhntUnOKz5gHAADgDtyj5EFLdyWaHQHwuOijxS+Le3nxLu1LzDAhDQAAQOlQlDxoX2Km2REA06VkFmjpbv7RAAAAeDcuvQPgNjbD0NdbTjosK7KV4eakMoo/m6M/vb9ByyhiAACggihKANymyGbo660nPHa+cf/doeijqXr8ky0eOycAAKiaKEoAvFZZx56Y7AEAALgKRQkAAAAAnFCUAHjUjhNpZkcol1lrDun299YrK7/I7CgAAMADKEoAPCo5M9/sCOUybel+bY9P04KNR82OAgAAPICiBMCrrT+UYnYEBwVFrnuALgAA8F4UJQBe7YGPNpsdAQAAVEMUJQAAAABwQlECAAAAACcUJQBea/qyA2ZHAAAA1RRFCYDXmrfhaCm3LOujaQEAAC6NogQAAAAATihKAKqt9NxCWW2MRgEAgOIoSgAqlfdWH9Izn2+TrYIF5/iZHHWeuEx3vb/BRckAAEBV4md2AAAoizd/3i9Jurt7swod53/bT0qSth1Pq2gkAABQBTGiBKBSyiu0mR0BAABUYRQlAJWGYVz8crvV+5K1LzHzout/2pmgyT/urfAlewAAoHrg0jsAVcIj86Ivuf6pz7ZKkq4Nr6chHZs6rCu02nT3BxvV8YpgvXZ7B7dlBAAAlQcjSgCqldNZ+cWWRe0/rW3H07Rg4zETEgEAAG9EUQJQ7VkvcUkfAAConihKACqNrcxQBwAAPISiBKDSSM8tNDsCAACoJihKAAAAAOCEogQAAAAATihKACqlSz1TqSJ+3p2o177fIyvPWwIAoFrjOUoAKqUtx1LdctwnPtkiSWofVld/7NbMLecAAADejxElAJXSB2uP2L92x+BScmbx5y0BAIDqg6IEoEradjxVb/68T3mFVrOjAACASohL7wBUSXfM2iBJ8vXx0dhBre3LC4psZkUCAACVCEUJQJV2KDnT4f2kJXuVnluoAL+KDajHHD2rr7ee0D9uvUb1avtX6FgAAMD7cOkdgGrn3VWHHN5bynGMu97fqM9/jdekJXtdEwoAAHgVihKASu9MdoFp5z6akm3auQEAgPtQlAAAAADACUUJAAAAAJxQlAAAAADACUUJAAAAAJxQlAAAAADACUUJAEpgKc+c4QAAoMqgKAGo8nadTDc7AgAAqGQoSgCqvNve/cXsCAAAoJKhKAFAGRiG2QkAAIAnUJQAAAAAwAlFCUC19M3Wk/avLczcAAAAnJhalGbPnq1OnTqpbt26qlu3rnr16qWffvrJvt4wDEVGRiosLEy1atVS//79tXv3bhMTA6gqjqRkmx0BAAB4MVOLUrNmzfTGG28oJiZGMTExuvnmm3X77bfby9C0adM0ffp0zZw5U9HR0QoNDdWgQYOUmZlpZmwAlYhFjBYBAICyM7UoDR8+XEOHDlXr1q3VunVrvf7666pTp442bdokwzA0Y8YMTZgwQXfeeac6dOig+fPnKycnRwsXLjQzNgAAAIAqzmvuUbJarVq0aJGys7PVq1cvxcXFKTExUYMHD7ZvExAQoH79+mnDhg0XPU5+fr4yMjIcXgAAAABQFqYXpZ07d6pOnToKCAjQk08+qW+//Vbt2rVTYmKiJCkkJMRh+5CQEPu6kkyZMkXBwcH2V3h4uFvzAwAAAKh6TC9Kbdq0UWxsrDZt2qSnnnpKI0eO1J49e+zrnWejMgzjkjNUjR8/Xunp6fZXfHy827IDAAAAqJr8zA7g7++vq6++WpLUvXt3RUdH65133tE//vEPSVJiYqKaNm1q3z45ObnYKNOFAgICFBAQ4N7QAKo8poAAAKB6M31EyZlhGMrPz1dERIRCQ0O1fPly+7qCggJFRUWpd+/eJiYEUJks2ZlgdgQAAFAJmTqi9OKLL2rIkCEKDw9XZmamFi1apDVr1mjp0qWyWCwaM2aMJk+erFatWqlVq1aaPHmyateurfvvv9/M2ACqmY/WHTE7AgAA8DBTi1JSUpIefPBBJSQkKDg4WJ06ddLSpUs1aNAgSdK4ceOUm5urUaNGKTU1VT179tSyZcsUFBRkZmwA1cykJXvNjgAAADzM1KL08ccfX3K9xWJRZGSkIiMjPRMIQLXE/UgAAMCZ192jBACVySUm4QQAAJUYRQkAAAAAnFCUAAAAAMAJRQkAAAAAnFCUAKAMzmTnmx0BAAB4AEUJAMrg003HzY4AAAA8gKIEAAAAAE4oSgBQAqb9BgCgeqMoAUAFWHhcLQAAVRJFCQAAAACcUJQAAAAAwAlFCUC1x/1IAADAGUUJAAAAAJxQlAAAAADACUUJAAAAAJyUqyi99tprysnJKbY8NzdXr732WoVDAQAAAICZylWUJk6cqKysrGLLc3JyNHHixAqHAgAAAAAzlasoGYYhSwnTRG3fvl0NGjSocCgAAAAAMJNfWTauX7++LBaLLBaLWrdu7VCWrFarsrKy9OSTT7o8JAC4U0nTg1vEnOEAAFRnZSpKM2bMkGEYevTRRzVx4kQFBwfb1/n7+6tFixbq1auXy0MCAAAAgCeVqSiNHDlSkhQREaE+ffrIz69MuwMAAABApVCue5SCgoK0d+9e+/vvvvtOI0aM0IsvvqiCggKXhQMAAAAAM5SrKD3xxBM6cOCAJOnIkSO65557VLt2bX311VcaN26cSwMCgLuVdD/S8r1JJiQBAADeolxF6cCBA+rSpYsk6auvvlK/fv20cOFCzZs3T19//bUr8wGAKX6NO2t2BAAAYKJyTw9us9kkSStWrNDQoUMlSeHh4UpJSXFdOgDwdkyOBwBAlVSuotS9e3dNmjRJn3zyiaKiojRs2DBJUlxcnEJCQlwaEADc7YlPtpgdAQAAeJlyFaUZM2Zo69atevrppzVhwgRdffXVkqT//ve/6t27t0sDAoC7FVhtJS4f/dlWDycBAADeolzze3fq1Ek7d+4stvzNN9+Ur69vhUMBgDdYsjNB/WLizY4BAABMUKEHIW3ZskV79+6VxWJR27Zt1bVrV1flAgCvMO6/O8yOAAAATFCuopScnKx77rlHUVFRqlevngzDUHp6um666SYtWrRIjRs3dnVOAAAAAPCYct2j9MwzzygzM1O7d+/W2bNnlZqaql27dikjI0N//etfXZ0RAAAAADyqXCNKS5cu1YoVK9S2bVv7snbt2um9997T4MGDXRYOAAAAAMxQrhElm82mGjVqFFteo0YN+/OVAAAAAKCyKldRuvnmm/Xss8/q1KlT9mUnT57U3/72Nw0YMMBl4QAAAADADOUqSjNnzlRmZqZatGihli1b6uqrr1ZERIQyMzP17rvvujojAHiV+RuOmh0BAAC4WbnuUQoPD9fWrVu1fPly7du3T4ZhqF27dho4cKCr8wGA13n1f7vNjgAAANysTCNKq1atUrt27ZSRkSFJGjRokJ555hn99a9/1XXXXaf27dtr3bp1bgkKAAAAAJ5SpqI0Y8YMPfbYY6pbt26xdcHBwXriiSc0ffp0l4UDgKqgyGrTlB/3KurAabOjAACAUipTUdq+fbtuvfXWi64fPHiwtmzZUuFQAFBZWEqxzZcxJ/TB2iMa+Z9f3Z4HAAC4RpmKUlJSUonTgp/n5+en06f5F1MAuNCptFyzIwAAgDIqU1G64oortHPnzouu37Fjh5o2bVrhUABQWRgV3d+o6BEAAIA7lKkoDR06VK+88ory8vKKrcvNzdWrr76q2267zWXhAMDb/Rp3ttz7vvHTPvV7c43ScwpdmAgAALhCmaYHf+mll/TNN9+odevWevrpp9WmTRtZLBbt3btX7733nqxWqyZMmOCurABQpbwfdViSNH/jUf11QCuT0wAAgAuVqSiFhIRow4YNeuqppzR+/Hj7JSMWi0W33HKLZs2apZCQELcEBYCqysbldwAAeJ0yP3C2efPm+vHHH5WamqpDhw7JMAy1atVK9evXd0c+AKj08ousZkcAAABlVOaidF79+vV13XXXuTILAFRqBUU27TiRpi7h9eTn+/stoB+uizMxFQAAKI8yTeYAALi4F77eobve36gpP+0zOwoAAKggihIAuMCmI2f0zbaTkqSPf2EECQCAyo6iBAAucO+cTQ7vkzKKP0bhQl9Gx7szDgAAqCCKEgC4QUL6pYvSuK93eCgJAAAoD4oSAFTQxsNnzI4AAABcjKIEABW09uBpsyMAAAAXoygBAAAAgJNyP0cJAHBp8Wdz9PPuRLNjAACAcqAoAUAFxZ3OLnH54H+tVW6h1cNpAACAK3DpHQBU0NKLjBpRkgAAqLwoSgAAAADghKIEAG6w6NfjZkcAAAAVQFECADdYFB1f6m0TL/NwWgAA4HkUJQAwWVlKFQAA8AyKEgAAAAA4oSgBAAAAgBOKEgB40MGkTLMjAACAUqAoAYAH3frOOrMjAACAUqAoAYAHWW2G2REAAEApUJQAAAAAwAlFCQAAAACcUJQAAAAAwAlFCQAAAACcUJQAAAAAwImpRWnKlCm67rrrFBQUpCZNmmjEiBHav3+/wzaGYSgyMlJhYWGqVauW+vfvr927d5uUGAAqbuaqg2ZHAAAAl2FqUYqKitLo0aO1adMmLV++XEVFRRo8eLCys7Pt20ybNk3Tp0/XzJkzFR0drdDQUA0aNEiZmTy0EUDl9NayA2ZHAAAAl+Fn5smXLl3q8H7u3Llq0qSJtmzZohtvvFGGYWjGjBmaMGGC7rzzTknS/PnzFRISooULF+qJJ54wIzYAAACAKs6r7lFKT0+XJDVo0ECSFBcXp8TERA0ePNi+TUBAgPr166cNGzaUeIz8/HxlZGQ4vAAAAACgLLymKBmGobFjx+qGG25Qhw4dJEmJiYmSpJCQEIdtQ0JC7OucTZkyRcHBwfZXeHi4e4MDAAAAqHK8pig9/fTT2rFjhz7//PNi6ywWi8N7wzCKLTtv/PjxSk9Pt7/i4+PdkhcAAABA1WXqPUrnPfPMM/rf//6ntWvXqlmzZvbloaGhks6NLDVt2tS+PDk5udgo03kBAQEKCAhwb2AAAAAAVZqpI0qGYejpp5/WN998o1WrVikiIsJhfUREhEJDQ7V8+XL7soKCAkVFRal3796ejgsApkjLKVBugbXEdd9vP6U/z4tWem6hh1MBAFC1mTqiNHr0aC1cuFDfffedgoKC7PcdBQcHq1atWrJYLBozZowmT56sVq1aqVWrVpo8ebJq166t+++/38zoAOB2m4+c0eLYU/r81+MK8PPR/klDim3zzOfbJEnvrjyol25r5+mIAABUWaYWpdmzZ0uS+vfv77B87ty5evjhhyVJ48aNU25urkaNGqXU1FT17NlTy5YtU1BQkIfTAoD7vLPioAa0baIOVwTbl90zZ5P96/wi2yX3P5tT4LZsAABUR6YWJcMwLruNxWJRZGSkIiMj3R8IAEzyrxUH9K8VB3T0jWFmRwEAAPKiWe8AAAAAwFtQlADAi+w8kW52BAAAIIoSAHiVP87eoLzCkme4AwAAnkNRAgAvUmC16ZqXl+rfKw+aHQUAgGqNogQAXmj68gPFlqXn8KwkAAA8haIEAJXEqIVbzI4AAEC1QVECgEpi/aEzZkcAAKDaoCgBAAAAgBOKEgBUIoeSs5SUkWd2DAAAqjw/swMAAEpv4PQoSdLRN4aZnAQAgKqNESUAAAAAcEJRAoBKaPG2k8rMY7pwAADchUvvAKASGvNFrG5q0/j3BYZ5WQAAqIoYUQKASmr1/tNmRwAAoMqiKAEAAACAE4oSAAAAADihKAEAAACAE4oSAAAAADihKAEAAACAE4oSAAAAADihKAEAAACAE4oSAAAAADihKAEAAACAE4oSAAAAADihKAEAAACAE4oSAFQBhTbD7AgAAFQpFCUAqALWHTxtdgQAAKoUihIAVAFpOYVmRwAAoEqhKAFAFVNQZNPSXYlKyykwOwoAAJUWRQkAqph/rzyoJz/donvnbDI7CgAAlRZFCQCqmP9tPyVJ2peYaXISAAAqL4oSAAAAADihKAEAAACAE4oSAAAAADihKAFAFfH2sv06lZZrdgwAAKoEP7MDAABc491Vh7RkZ4KOn80xOwoAAJUeI0oAUIUcOZ1tdgQAAKoEihIAAAAAOKEoAQAAAIATihIAAAAAOKEoAQAAAIATihIAVGGPL4hRboG12PIDSZkaOD1KS3YkmJAKAADvR1ECgCps2Z4kzd94tNjyv36+TYeSszR64VbPhwIAoBKgKAFAFZeeW1hsWU4Jo0wAAOB3FCUAAAAAcEJRAgAAAAAnFCUAAAAAcEJRAgAAAAAnFCUAqOIOJmUpr5DJGwAAKAuKEgBUcSv2Jumal5eqxQtLFHXgtNlxAACoFChKAFCNjPzPr5IkQ4Z9WUpWvllxAADwWhQlAKhmPt10zOH97DWHTUoCAID3oigBQDXz0uJdSsr4fRTp41/iTEwDAIB3oigBQDVUUGQrcXmRteTlAABUNxQlAIAk6diZbLV75WdN/H632VEAADAdRQkAIEl6d9UhFVhtmrv+qNlRAAAwHUUJAAAAAJxQlAAAAADACUUJAAAAAJxQlAAAl7Tx8Jliz14CAKCq8zM7AADAu9334SZJUqsmddTzqoaSpNTsAn277aRu7xKmhnUCzIwHAIBbMKIEACiV+NRc+9ejPtuq137Yo8cWxJiYCAAA96EoAQAkSZYybLvxyBlJ0tbjaW7JAgCA2ShKAAAlZ+bJZpidAgAA78E9SgAA9Xh95WW3MQxDCem5Cq1b0wOJAAAwF0UJAFAqX289ob//d4fu6xFudhQAANyOS+8AAKWy6chZSdLnv8abnAQAAPejKAEAAACAEy69AwCU6PDpLE35ca/ZMQAAMAVFCQBQTHJGnga8HWV2DAAATMOldwCAYiYs3mV2BAAATGVqUVq7dq2GDx+usLAwWSwWLV682GG9YRiKjIxUWFiYatWqpf79+2v37t3mhAWAaiT+bI7ZEQAAMJWpRSk7O1udO3fWzJkzS1w/bdo0TZ8+XTNnzlR0dLRCQ0M1aNAgZWZmejgpAFQv+xIr/udsQZFN2+PTZONJtgCASsjUe5SGDBmiIUOGlLjOMAzNmDFDEyZM0J133ilJmj9/vkJCQrRw4UI98cQTnowKACilxdtO6khKtg4lZ+rHnYkaO6i1/jqgldmxAAAoE6+9RykuLk6JiYkaPHiwfVlAQID69eunDRs2XHS//Px8ZWRkOLwAAJ4z5otY/XvlQf24M1GS9OG6IyYnAgCg7Ly2KCUmnvsLNiQkxGF5SEiIfV1JpkyZouDgYPsrPJwnyAMAAAAoG68tSudZLBaH94ZhFFt2ofHjxys9Pd3+io/nCfIAAAAAysZrn6MUGhoq6dzIUtOmTe3Lk5OTi40yXSggIEABAQFuzwcAAACg6vLaEaWIiAiFhoZq+fLl9mUFBQWKiopS7969TUwGAAAAoKozdUQpKytLhw4dsr+Pi4tTbGysGjRooCuvvFJjxozR5MmT1apVK7Vq1UqTJ09W7dq1df/995uYGgBwoctdEg0AQGVkalGKiYnRTTfdZH8/duxYSdLIkSM1b948jRs3Trm5uRo1apRSU1PVs2dPLVu2TEFBQWZFBgA42ZOQofZhwRddT4UCAFRGphal/v37yzAu/iBCi8WiyMhIRUZGei4UAKBMCq08UBYAUPV47T1KAAAAAGAWihIAoEIudWUAAACVFUUJAFAhk5bsLdV2Vpuh//wSp10n092cCACAivPa5ygBACqHLcdSL7n+/Ix4X285odd+2CNJOvrGMLfnAgCgIhhRAgC4VXpuoaRzs+MBAFBZUJQAAC6TnlNodgQAAFyCS+8AABX2a9xZ7UvM0Cvf7b7oNvsSGVECAFQeFCUAQIXd/cHGy26z6chZDyQBAMA1uPQOAOB2VhtTiAMAKheKEgDA7bpPWu7w3jAM7U/MVH6R1aREAABcGpfeAQDcLtVpkofvYk9pzBexkpgqHADgnRhRAgB43PmSJEnJGXnmBQEA4CIoSgAAUxVYbWZHAACgGIoSAAAAADihKAEATGUY0vpDKXrr5/0qYnQJAOAlmMwBAGC6Bz7aLElqVr+W7u1xpclpAABgRAkA4EWOn8255PpV+5K0PT7NM2EAANUaI0oAAFMZpXwW7dGUbD06L+bc10wpDgBwM0aUAACmMmRc8PXFnUjNdX8YAAB+Q1ECAJjqwhGlS40uWSzuzwIAwHkUJQCAqUp55Z3oSQAAT6IoAQC8hnGp2nRBUzJ+G3oqstpktZW2agEAUHoUJQCAqRyKjiGlZhdo1b6kYgXI54Jr73pNWaWZqw6q35trdMuMtfbiBACAqzDrHQDAVDNXHbR/vetUuobP/EUnUnM1YWhbHUnJ0nUtGujOrs0cLr1LzMjTW8sO2N/nFdpUy9/Xg6kBAFUdRQkAYKrFsafsX68/dMb+9es/7pUkff5r/LmidInZHC55yR4AAOXApXcAAK93OjP/krPeceUdAMDVKEoAAK933esrZGPSBgCAB1GUAACVwrb4tIuuq0iFstkMJWfmVeAIAICqiKIEAKgU3vhp30XXVWTWu8cWxKjH6yu14VBKuY8BAKh6KEoAgGpt5b5kSdLcDUfNDQIA8CoUJQBApcfdSwAAV6MoAQAqPVfMeneJSfUAANUQRQkAUPkxpAQAcDGKEgCg0jNkKCu/SEt3JWjoO+t0+HRWmY9xqec0AQCqHz+zAwAAUFELNh7T9OUH7O8HvB2lAdc00ZiBrdWxWbB9eXJmnpoE1SzxGBYuvgMAXIARJQBApXdhSTpv5b5kDZ/5i85mF8hqM/Te6kPq8fpKfRB1uMRjMKIEALgQI0oAgCqt6z+X69or62nb8TRJ0pSf9umJfi2LbUdRAgBciBElAECVd74knZeVX2ROEABApUFRAgBUOx1e/VmLt510WMY9SgCAC1GUAADV0tgvYx0X0JMAABegKAEAqiWbIf28O9H+np4EALgQRQkAUG098ckW+9eFVpvmro/TkXI8gwkAUPUw6x0AAJJ+3p2kn3cnSZKOvjHM5DQAALMxogQAwCUUFNnMjgAAMAEjSgAAXMTsNYc1dek+dW4WrOGdw/SXvleZHQkA4CEUJQAAnLR4YYnD++0n0rX9RLpuaR+q8Aa1TUoFAPAkihIAAKX0r+UHdPxsjlqHBmnyHR0lSVabIV8f5swDgKqGogQAQCl989tDamOOpSq8fm39a8UBFRTZ9HDvFor8Q/tSHSM9p1Ap2flq2biOO6MCACqIyRwAACiHqUv32Sd6mLfhqMO6lKx8JWXklbhf59eWacDbUTrMNOQA4NUoSgAAuIBhGDqQlKm8Qqu6T1qhnpNXKjmz5LIkSb/GnfVgOgBAWXHpHQAALhAx/kdJUudmwfZlfaeu1v5JQ0rc3tfCfU0A4M0YUQIAwIW2n0i3f51/iWcw+TABBAB4NYoSAAAesvnIGfvX9CQA8G4UJQAA3GjGigOSpOTMPN0zZ5N9OVOKA4B34x4lAADcaMaKg9qXkKnH+13lsNyHe5QAwKtRlAAAcLOluxO1dHeiwzKrzVBaToHq1fY3KRUA4FIoSgAAmGDMF7GSpO7N6+vPN0QoPjVHc9cf1bej+ig0uKa54QAAFCUAAMwUcyxVMcdS7e8nfLtTHz98nf19Zl6hVu1L1oC2IaoTwF/bAOAp/IkLAIAXOZKSLavNkEXST7sS9e+VB7U/KVO3tg/V+w92MzseAFQbFCUAALxIXEq2ek5eoZSsAoflzvc45RZYlZlfqCZBXKYHAO7A9OAAAHgZ55J03vhvdmj5niQVFNnUc/IK9Xh9pRLScz2cDgCqB4oSAACVxOe/xuuxBTFq/dJPysgrkiQt3nZKLV5Yom+3nShxn/wiqwZOj9KCjUeVkVfoybgAUKlZDMMwzA7hThkZGQoODlZ6errq1q1rapYWLyxx6/FvbR+q125vr5/3JOnlxbvcei4AgPfZETlYJ1Nzte7gaWXmFal/m8Z6afFu7U3IsG/z5l2d9Kfu4SamBADzlKUbUJQ86N45G7XpyFm3Hf/I5KHy8bGo0GpTqwk/ufTYT990tWauPuTSYwIAzHH0jWElLj9yOkvHzubopjZNPJwIADyjLN2AS+88aPYD7putaEfkYPn4nHvKew1fHx2ZPFR/G9jaZcd//pY2LjtWRQWVYnrc1iF1PJAEJWkTEmR2BABlYBiGXvt+j76IPq6b347SI3OjFXPUff+oBwCVBUXJg/z9SvftvrV96EXXdWoWXOLyujVrOLz38bHovh6lu7SiZo1zuZ4b5FismgQFOLzvGdGgVMcrSWk/+8bxN192m5iXB162CI249gpd2aC2/f2EoW0d1j/aJ0LT7upUbL/5j/bQ4zdeVaqsF7rU55v/aA89P9h1pbW0nrjxKjUI9HfrOfz9zpXyC382fv7bjW49J4CKa/HCEo3773blF1n1zsqD+s/6OP3j65329bHxacovsqrQajMxJQCYi6LkQTVr+BZbFjdlqBY82kPXhJ77V/irGgdqxr1d9J+Hu2vduJuKbf/RyO565uar1fGKYHvBuZgmdWvq+cGt9dyg1vr3fdfqpWFtdXf3Zg7bTPxDe8W+Mljrxt2kZwa0clg3/e4uDu8XPX69Dr0+RLsn3qLI4e304UPd9cSNV+nf912rmJcGyu+3ES1nPhZpXClHpJoG19K2lwfp7T91vug2AX6++vGvfbXkrzcobsrQi5zTogevb25//0ifFnqsb4T9/SvD2+mursW/F/1aN1agf/ERq7ZN6+o/D3dXy8aB9mWN6vxeQg5MGlJijh//2lf9WjfW0ze3Uliw4xS+61+4WS8OvUbT/thJ61+4fEEsj/Zhvw8pr3m+f4nb9GhR/gL81p86y8fHIufrd88Xp/883P2i+/7dhFHKQe1CXHKcdk3ramjHi/+DBlAZfBlzQm1eWqoZKw4WWzdpyV61eWmpWk34SSdSc9R32ir9eV60Xvx2pxb9elySlJCeq84Tl2nCtzuL7Q8AVQHPUfIgXx+Ltr86WJ0nLrMvs1gsurF1Y3W5sp42HEpR/zZNVLOGr26+pvgvdG/e1UlNgmrqucFt9NzgNlqyI0GjF2695Dmfvtmx/Nhshg6fztaWY6kKCvDTHzqHqWYNX4X/Nvryj1uv0dSl+/TKbe3U5+qGeqDnlfYSZ7FY5OdrkZ+vjx7uc650XPiLZ6dmwdp6PK1Yhqi/36Qr6tXSxsNn1LV5fQX4+WjHiXT9/ZY26jtttSTp9Ts6qFn9cxnqB/rrj92a6bUf9ig9t1B9rm6oyOHt9ZcFMfrrb5/Hz9dH7cNKHl0776HezXUiNUf9r2kiP18fvTi0rfq2aqzO4fVK3P5PTiVSOldkE9Lz1DS4piwWi25q00RPfLJFDev464UhbfVd7EkN7djUYZ+2TevqD53D9MD1VzqM9AXX9tep9DxJv98f8PiNLe3rB7ZtohV7kx2O9XDvFrr2yno6kJSp91YfLjF3k6AAJWfmOywL8PPRw31a6L8xJ7TuYMq589eqoRVjb9R/t5xU9NGz2nIsVf6+Prouor5+dbrM5qrGgTpyOluS9MeuzfT1VsfZtO7pHq6H+7Sw/2w4+/QvPZWYnmf/uTrvwp//dmGO1wUvfKyn7v9wc7FjjezVXD0iGsrP16I6AX564KPft2nesLYWPX69gmvVULtXfi6271WNAhVU00/bT6SrXu0aev//uqnliz+WmFmSJo3ooJ4RDTToX2vty75/+gb9sPOUPog6Yl82/9EeahwUoNELt2rJjgSHYzzaJ0L/WR8nSfrooe66+ZomuuoS5wS83Q1Tz/05HX/23DTkCyXtScjQwaQspecW6rPNx9UmNEjN6tcq8e8uAKisKEoeFlyrhhY9fr2e/2q7Xr+jo3153Zo1dGuHphfdb3jnsGKzFA3pEKpH+rTQtVfWL/X5fXws+vqp3pKkIqtNfr6Oo1JP9W+pp/r//sv7hRkvZ9YD3XT9lJXFll9Rr5Z8fCz6+OHriq3b/upgFVptalQnoNi670b30aLoeP35hgg1DgpQ1N+Lj7BJ0q6JtyinoEg9Xv/93IH+vgrw89XE2zvYl50vpb+///0Ysa8MUu3fRpJaXXBZn8ViUVi9Wg7v5zz0+yjJQ71a2L/+6sle+mzTMb04rG2JD4B8975r9fxX2/Ws08jdea/c1l57EzL1WN8IbY47q+ijqXr+ljaq89s9WZl5RVqw8Zju6xGuz3+Nt+/3/TM3KGr/af3zhz3KzC/SD8/coGtCg+Tn66Mn+rXUrlPp6hnRUPUD/VU/0F8vDLlGZ7Ly9eG6OP2pezNdUa+WbIY0e83vRazTFcH2ovTc4Nb2ovTXm6/WFzHxGju4tULq/v4ZB1zTRL/GnVX92ueKYQ1fn2IlSTr38z/1jx2151SG+l/w30KSerdspOGdw/T99lN6865OshmGwuvXVu+rG5X4/ZKklWP72X+GuzWvry3HUh3Wr3q+v7Lzi/RFdLwGtw+R7wWjnrMf6KqnPvv9HxqCa9XQ/13fXEkZeQ7H6HBFXXVsFmwvSn2ubqjGv12W+tZdndWvdWPd1KaJhr/7ixIz8vRInxZ6ZXg7h2Pc2Lqx1h44fdHPAVQ2CzYec3j/yne77V83qhOglKzf//HmuUGt1S6srpo3DFSz+rWUnV+khiX8mQ8A3oZZ77zcgx9v1rqDKfryiV7qUYF7hDzlwinQt748SL4Wi4Jr17jEHu45975/3lripY7Odp1MV36RVd2a//69NQxDCzYeU+fweupykdEndzMMQzZDDr/YF1lt2n4iXZ2aBavH6yuUmlOodk3r6sdn+0qSsvOLdDozXy0aBV7ssBd1Jitf3SatkCR99pee6hAWrElL9uiOrleod8tG+mHHKdWtWUM3tm4swzBksTheZllotenn3Ynq0aKBmtR1LIkX/ndxnmlr4ve7NXf9UfW5uqE++8v1stkMnUjN1ZUNi5es887/P/H+/3XTrR1+v/yt0GrToOlROnomR5K0+cUBDmXuvPizOdp1Ml23dghV32mrdSI1Vx2vCNbcR65TozoBSs7IU4/J50r3T8/2Vdumde377T6VoVvahxT7/JKUV2hVZl6RvURd6PwfsxaLRTaboY9+OaLJP+676GeUzo2GffBgN4fRrcsJqRugpIz8y28IeIFaNXx1d/dm6taigSIaBurTTcfUr01jvbf6kP46oJVuucT9ugBQXkwPfoHKXpSsNkNnsvNLHKHwRvlFVn20Lk53dr1CTYNrXX4HFzqRmqPoo2c1vFNYsZGyqubI6SzN23BUT/Zr6TDiVRGjF26VRdLM+7u65HjnrdqXpDGLYjX97i4a6HSPUH6RVesPpahHREP7yNnlFFptOpWWq+YNixfCIqtNf5i5Xte1qO8wmngxKVn52nj4jG5pH2qfkOPC6fUPvT7EbT9Lj8z9Vav3nxtl+r/rr9Snm47b193XI1yT7+goi8Wi2Pg0Lfr1uP5x6zWqH+ivIqtNRTZDH607oreWHbDv89FD3TWgbROtOXBac6KOaPRNV+tfKw7oqX7nRoj/siDGvm27pnV1b49wBfj56B9f79Td3Zvpy5jiDyutVcNXVpuhAm7oh5cY3C5Eh5KzdCQlW5/9padSsvJ1a4dQ1fDx0XfbT6p1SFCJl2UXWm2qUcX/XgBQOlWuKM2aNUtvvvmmEhIS1L59e82YMUN9+/Yt1b6VvSgBVUFJo1DeLCu/SBZJgaUsb+WRlJGnid/v1kO9Wqh1SJCe+XyrRnS5QhGNAtU5vF6pf6lLysjTwaQs3dDq4pcoStKiX4/rhW/O3XRf0jN0Nh05o+9iT2r80LbFZtHML7IqIS1PsfFpGvNFrB7u3UKP9onQ6ax8rTt4Wo/1vUrtX/39HrGvnuylb7ae1HODW2vW6sNKzMjVjzsT7es/fKi7+rZqpE83HdOkJXtL9TkBV2jesLYy84p0NrvAYfm0P3ZSwW+Xgd/QqpHDP9yk5xTK97d7JM//WXb8TI6Ca9XQ+sMpahwUoOsqMCkOAM+qUkXpiy++0IMPPqhZs2apT58++uCDD/TRRx9pz549uvLKKy+7P0UJAM4VoXvnbJJ08YeNlobVZjhcEnre6M+2asnOBH03uk+JE6acn3zmnXu76PYuV9iXX3hp5oJHe6hTs2AF+PkqI69QPX+7BLJe7RpKyynUy7e10z9/2CNJ+tc9nfVl9AltPHKmVLl7RDTQr3E8Gwie9+LQa7Q/MUsbD6foVHqeXr+jgw4mZall40D7/bnbT6Trqf4t5edj0eHTWWoTGqQaPj6yGef+f7NYLMotsKrIZpO/n4/yCmwKqOFTqkvMATiqUkWpZ8+e6tq1q2bPnm1f1rZtW40YMUJTpky57P4UJQA458voeLVsUkfdmpd+AhhXKunyp9TsAm04fEYD2zVRgJ/jL32ZeYWq7e/nUMzyi6wyjN8ft5CWU6DY+DR9vfWkJt/RQTbj3H6N6gTompeXSjo3Sc0/br1GknT4dJa2HE2VLFKgv58GtG2iXSfT9er/dis9t1AjulyhO7teobeXHdCSnY4zGn7x+PV69X+7tS8xs9Sf+cIZJIHKbPRNLR1mX23RsLZuaNVIn246rpvaNNbq/adVJ8BPN1zdSJ3Cg1XDx+fcTLk+FqXmFJ4reIVWHTmdrUKrTZ3D6ykwwE9+Pue22ZuQqSsb1FJocOW41QBlV9vfz2FSLbNUmaJUUFCg2rVr66uvvtIdd9xhX/7ss88qNjZWUVFRxfbJz89Xfv7vNzNnZGQoPDycogQA1UyR1aa9CZlqH1ZXPhd5ztulnErLVZHVuOTkIpK0dFfiuV8QWzVSSla+gmvVKFYIT6XlKvroWd3WKcxe/IqsNuUX2VTb31c/705SZl6h/tQ9XDaboaTMPK3Zf1o3tWmiWjV8ZejcRCf1atfQDVNXq1n9WgqpW1Nh9Wopv9CqZXuS9MSNV+mDtUdKiggApruqcaBWPdff7BhlKkpePT14SkqKrFarQkIcbwAPCQlRYmJiiftMmTJFEydO9EQ8AIAX8/P1Ucdml37e2qWUdqKUC2dfLOlRB+ePdeElh+fznZ8s5MJj+PhY1DS4lu7r4Xh5eb3a5x5yfalLJ8cPbXvRdRfOvliS/CJrsVG98/tZLJZi9xqezsyXj+Xc1Prny19KVoH2J2aqz9UN9V3sKTUOClCfqxspOSNPR1Ky1T6srhZsPKaIRoGq4eujPlc31DdbTyqopp96t2wkH4t09Ey2atbw1a6T6Zq15rB6t2ykmjV81CEsWMfP5ujw6SwF16qha5rW1Y74NH21pfhEJNK5R2i0CQ3S7DWHZbFIeYVMSlIRD17fXJ9scpwWflC7EC3fk6SaNXzs3992TeuqfVhdFdkMFVptKrIayi4oUszRVN3Z9QrFpWSfG0Vu20R+Pj727aJ+e4TCdS3MGfGG+7lq8ilP8uoRpVOnTumKK67Qhg0b1KtXL/vy119/XZ988on27Ss+vS4jSgAAAABKUmVGlBo1aiRfX99io0fJycnFRpnOCwgIUEAAD7IDAAAAUH5e/VABf39/devWTcuXL3dYvnz5cvXu3dukVAAAAACqOq8eUZKksWPH6sEHH1T37t3Vq1cvzZkzR8ePH9eTTz5pdjQAAAAAVZTXF6V77rlHZ86c0WuvvaaEhAR16NBBP/74o5o3b252NAAAAABVlFdP5uAKPEcJAAAAgFS2buDV9ygBAAAAgBkoSgAAAADghKIEAAAAAE4oSgAAAADghKIEAAAAAE4oSgAAAADghKIEAAAAAE4oSgAAAADghKIEAAAAAE4oSgAAAADghKIEAAAAAE4oSgAAAADghKIEAAAAAE78zA7gboZhSJIyMjJMTgIAAADATOc7wfmOcClVvihlZmZKksLDw01OAgAAAMAbZGZmKjg4+JLbWIzS1KlKzGaz6dSpUwoKCpLFYjE1S0ZGhsLDwxUfH6+6deuamgWVAz8zKCt+ZlBW/MygrPiZQVl508+MYRjKzMxUWFiYfHwufRdSlR9R8vHxUbNmzcyO4aBu3bqm/5CgcuFnBmXFzwzKip8ZlBU/Mygrb/mZudxI0nlM5gAAAAAATihKAAAAAOCEouRBAQEBevXVVxUQEGB2FFQS/MygrPiZQVnxM4Oy4mcGZVVZf2aq/GQOAAAAAFBWjCgBAAAAgBOKEgAAAAA4oSgBAAAAgBOKEgAAAAA4oSh50KxZsxQREaGaNWuqW7duWrdundmR4KXWrl2r4cOHKywsTBaLRYsXLzY7ErzclClTdN111ykoKEhNmjTRiBEjtH//frNjwYvNnj1bnTp1sj8AslevXvrpp5/MjoVKYsqUKbJYLBozZozZUeClIiMjZbFYHF6hoaFmxyoTipKHfPHFFxozZowmTJigbdu2qW/fvhoyZIiOHz9udjR4oezsbHXu3FkzZ840OwoqiaioKI0ePVqbNm3S8uXLVVRUpMGDBys7O9vsaPBSzZo10xtvvKGYmBjFxMTo5ptv1u23367du3ebHQ1eLjo6WnPmzFGnTp3MjgIv1759eyUkJNhfO3fuNDtSmTA9uIf07NlTXbt21ezZs+3L2rZtqxEjRmjKlCkmJoO3s1gs+vbbbzVixAizo6ASOX36tJo0aaKoqCjdeOONZsdBJdGgQQO9+eab+vOf/2x2FHiprKwsde3aVbNmzdKkSZPUpUsXzZgxw+xY8EKRkZFavHixYmNjzY5SbowoeUBBQYG2bNmiwYMHOywfPHiwNmzYYFIqAFVZenq6pHO/+AKXY7VatWjRImVnZ6tXr15mx4EXGz16tIYNG6aBAweaHQWVwMGDBxUWFqaIiAjde++9OnLkiNmRysTP7ADVQUpKiqxWq0JCQhyWh4SEKDEx0aRUAKoqwzA0duxY3XDDDerQoYPZceDFdu7cqV69eikvL0916tTRt99+q3bt2pkdC15q0aJF2rp1q6Kjo82OgkqgZ8+eWrBggVq3bq2kpCRNmjRJvXv31u7du9WwYUOz45UKRcmDLBaLw3vDMIotA4CKevrpp7Vjxw798ssvZkeBl2vTpo1iY2OVlpamr7/+WiNHjlRUVBRlCcXEx8fr2Wef1bJly1SzZk2z46ASGDJkiP3rjh07qlevXmrZsqXmz5+vsWPHmpis9ChKHtCoUSP5+voWGz1KTk4uNsoEABXxzDPP6H//+5/Wrl2rZs2amR0HXs7f319XX321JKl79+6Kjo7WO++8ow8++MDkZPA2W7ZsUXJysrp162ZfZrVatXbtWs2cOVP5+fny9fU1MSG8XWBgoDp27KiDBw+aHaXUuEfJA/z9/dWtWzctX77cYfny5cvVu3dvk1IBqEoMw9DTTz+tb775RqtWrVJERITZkVAJGYah/Px8s2PACw0YMEA7d+5UbGys/dW9e3c98MADio2NpSThsvLz87V37141bdrU7CilxoiSh4wdO1YPPvigunfvrl69emnOnDk6fvy4nnzySbOjwQtlZWXp0KFD9vdxcXGKjY1VgwYNdOWVV5qYDN5q9OjRWrhwob777jsFBQXZR7CDg4NVq1Ytk9PBG7344osaMmSIwsPDlZmZqUWLFmnNmjVaunSp2dHghYKCgord8xgYGKiGDRtyLyRK9Pzzz2v48OG68sorlZycrEmTJikjI0MjR440O1qpUZQ85J577tGZM2f02muvKSEhQR06dNCPP/6o5s2bmx0NXigmJkY33XST/f35a3lHjhypefPmmZQK3uz8owf69+/vsHzu3Ll6+OGHPR8IXi8pKUkPPvigEhISFBwcrE6dOmnp0qUaNGiQ2dEAVAEnTpzQfffdp5SUFDVu3FjXX3+9Nm3aVKl+9+U5SgAAAADghHuUAAAAAMAJRQkAAAAAnFCUAAAAAMAJRQkAAAAAnFCUAAAAAMAJRQkAAAAAnFCUAAAAAMAJRQkAAACAV1i7dq2GDx+usLAwWSwWLV68uMzHMAxDb731llq3bq2AgACFh4dr8uTJZT4ORQkAgN+0aNFCM2bMMDsGAFRb2dnZ6ty5s2bOnFnuYzz77LP66KOP9NZbb2nfvn36/vvv1aNHjzIfx2IYhlHuFAAAlNPDDz+stLQ0LV68WP3791eXLl08VlLmzZunMWPGKC0tzWH56dOnFRgYqNq1a3skBwDg4iwWi7799luNGDHCvqygoEAvvfSSPvvsM6WlpalDhw6aOnWq+vfvL0nau3evOnXqpF27dqlNmzYVOj8jSgCAKqOgoKBC+zdu3JiSBABe7JFHHtH69eu1aNEi7dixQ3/6059066236uDBg5Kk77//XldddZV++OEHRUREqEWLFvrLX/6is2fPlvlcFCUAgKkefvhhRUVF6Z133pHFYpHFYtHRo0clSXv27NHQoUNVp04dhYSE6MEHH1RKSop93/79++vpp5/W2LFj1ahRIw0aNEiSNH36dHXs2FGBgYEKDw/XqFGjlJWVJUlas2aNHnnkEaWnp9vPFxkZKan4pXfHjx/X7bffrjp16qhu3bq6++67lZSUZF8fGRmpLl266JNPPlGLFi0UHByse++9V5mZme79pgFANXT48GF9/vnn+uqrr9S3b1+1bNlSzz//vG644QbNnTtXknTkyBEdO3ZMX331lRYsWKB58+Zpy5Ytuuuuu8p8PooSAMBU77zzjnr16qXHHntMCQkJSkhIUHh4uBISEtSvXz916dJFMTExWrp0qZKSknT33Xc77D9//nz5+flp/fr1+uCDDyRJPj4++ve//61du3Zp/vz5WrVqlcaNGydJ6t27t2bMmKG6devaz/f8888Xy2UYhkaMGKGzZ88qKipKy5cv1+HDh3XPPfc4bHf48GEtXrxYP/zwg3744QdFRUXpjTfecNN3CwCqr61bt8owDLVu3Vp16tSxv6KionT48GFJks1mU35+vhYsWKC+ffuqf//++vjjj7V69Wrt37+/TOfzc8eHAACgtIKDg+Xv76/atWsrNDTUvnz27Nnq2rWrw0xF//nPfxQeHq4DBw6odevWkqSrr75a06ZNczjmmDFj7F9HRETon//8p5566inNmjVL/v7+Cg4OlsVicTifsxUrVmjHjh2Ki4tTeHi4JOmTTz5R+/btFR0dreuuu07Sub+U582bp6CgIEnSgw8+qJUrV+r111+v2DcGAODAZrPJ19dXW7Zska+vr8O6OnXqSJKaNm0qPz8/+98RktS2bVtJ564SKMt9SxQlAIBX2rJli1avXm3/y+9Chw8ftv8l2L1792LrV69ercmTJ2vPnj3KyMhQUVGR8vLylJ2drcDAwFKdf+/evQoPD7eXJElq166d6tWrp71799qLUosWLewlSTr3l3RycnKZPisA4PKuvfZaWa1WJScnq2/fviVu06dPHxUVFenw4cNq2bKlJOnAgQOSpObNm5fpfBQlAIBXstlsGj58uKZOnVpsXdOmTe1fOxefY8eOaejQoXryySf1z3/+Uw0aNNAvv/yiP//5zyosLCz1+Q3DkMViuezyGjVqOKy3WCyy2WylPg8A4HdZWVk6dOiQ/X1cXJxiY2PVoEEDtW7dWg888IAeeughvf3227r22muVkpKiVatWqWPHjho6dKgGDhyorl276tFHH9WMGTNks9k0evRoDRo0yGGUqTQoSgAA0/n7+8tqtTos69q1q77++mu1aNFCfn6l/+sqJiZGRUVFevvtt+Xjc+5W3C+//PKy53PWrl07HT9+XPHx8fZRpT179ig9Pd1+GQcAwLViYmJ000032d+PHTtWkjRy5EjNmzdPc+fO1aRJk/Tcc8/p5MmTatiwoXr16qWhQ4dKOneP6vfff69nnnlGN954owIDAzVkyBC9/fbbZc5CUQIAmK5FixbavHmzjh49qjp16qhBgwYaPXq0PvzwQ9133336+9//rkaNGunQoUNatGiRPvzww2LXp5/XsmVLFRUV6d1339Xw4cO1fv16vf/++8XOl5WVpZUrV6pz586qXbt2sWnBBw4cqE6dOumBBx7QjBkzVFRUpFGjRqlfv34lXu4HAKi4/v3761KPea1Ro4YmTpyoiRMnXnSbsLAwff311xXOwqx3AADTPf/88/L19VW7du3UuHFjHT9+XGFhYVq/fr2sVqtuueUWdejQQc8++6yCg4PtI0Ul6dKli6ZPn66pU6eqQ4cO+uyzzzRlyhSHbXr37q0nn3xS99xzjxo3blxsMgjp3CV0ixcvVv369XXjjTdq4MCBuuqqq/TFF1+4/PMDALyPxbhUZQMAAACAaogRJQAAAABwQlECAAAAACcUJQAAAABwQlECAAAAACcUJQAAAABwQlECAAAAACcUJQAAAABwQlECAAAAACcUJQAAAABwQlECAAAAACcUJQAAAABw8v/zTBINmrdPJQAAAABJRU5ErkJggg==", | |
"text/plain": [ | |
"<Figure size 1000x600 with 1 Axes>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
" Z A J N K C X E V O\n", | |
"D L P S Y B M R F\n", | |
" I W T H G U Q\n", | |
"{'QWERTY': 8.140831212028026, 'Dvorak': 17.207374702349316, 'Colemak': 9.215131291772037, 'Optimized': 0.02956733896325039}\n" | |
] | |
} | |
], | |
"source": [ | |
"# Perform simulated annealing to find the optimal layout and store the cost over time\n", | |
"optimal_layout, costs_over_time = simulated_annealing(keys, matrix, key_to_index,\n", | |
" num_iterations=5000000, start_temperature=1000, end_temperature=0.0001)\n", | |
"\n", | |
"# Plot the cost over time\n", | |
"plt.figure(figsize=(10, 6))\n", | |
"plt.plot(costs_over_time)\n", | |
"plt.title('Cost over time')\n", | |
"plt.xlabel('Iteration')\n", | |
"plt.ylabel('Cost')\n", | |
"plt.show()\n", | |
"\n", | |
"# Test the function with the optimized layout\n", | |
"print_keyboard(optimal_layout)\n", | |
"\n", | |
"# Define popular keyboard layouts\n", | |
"qwerty = ['Q', 'W', 'E', 'R', 'T', 'Y', 'U', 'I', 'O', 'P', 'A', 'S', 'D', 'F', 'G', 'H', 'J', 'K', 'L', 'Z', 'X', 'C', 'V', 'B', 'N', 'M']\n", | |
"dvorak = ['P', 'Y', 'F', 'G', 'C', 'R', 'L', 'A', 'O', 'E', 'U', 'I', 'D', 'H', 'T', 'N', 'S', 'Q', 'J', 'K', 'X', 'B', 'M', 'W', 'V', 'Z']\n", | |
"colemak = ['Q', 'W', 'F', 'P', 'G', 'J', 'L', 'U', 'Y', 'A', 'R', 'S', 'T', 'D', 'H', 'N', 'E', 'I', 'O', 'Z', 'X', 'C', 'V', 'B', 'K', 'M']\n", | |
"\n", | |
"# Calculate the total cost for each layout\n", | |
"qwerty_cost = calculate_total_cost(qwerty, matrix, key_to_index)\n", | |
"dvorak_cost = calculate_total_cost(dvorak, matrix, key_to_index)\n", | |
"colemak_cost = calculate_total_cost(colemak, matrix, key_to_index)\n", | |
"optimized_cost = calculate_total_cost(optimal_layout, matrix, key_to_index)\n", | |
"\n", | |
"# Store the costs in a dictionary for easier access\n", | |
"costs = {\n", | |
" 'QWERTY': qwerty_cost,\n", | |
" 'Dvorak': dvorak_cost,\n", | |
" 'Colemak': colemak_cost,\n", | |
" 'Optimized': optimized_cost\n", | |
"}\n", | |
"\n", | |
"print(costs)" | |
] | |
} | |
], | |
"metadata": { | |
"kernelspec": { | |
"display_name": "base", | |
"language": "python", | |
"name": "python3" | |
}, | |
"language_info": { | |
"codemirror_mode": { | |
"name": "ipython", | |
"version": 3 | |
}, | |
"file_extension": ".py", | |
"mimetype": "text/x-python", | |
"name": "python", | |
"nbconvert_exporter": "python", | |
"pygments_lexer": "ipython3", | |
"version": "3.11.3" | |
}, | |
"orig_nbformat": 4 | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 2 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment