# Name: smd_random_text v0.14 # Type: Public side plugin # Random text from file, database, string or TXP field/variable # Author: Stef Dawson # URL: http://stefdawson.com/ # Recommended load order: 5 # ..................................................................... # This is a plugin for Textpattern - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ..................................................................... YToxMTp7czo0OiJuYW1lIjtzOjE1OiJzbWRfcmFuZG9tX3RleHQiO3M6NjoiYXV0aG9yIjtz OjExOiJTdGVmIERhd3NvbiI7czoxMDoiYXV0aG9yX3VyaSI7czoyMjoiaHR0cDovL3N0ZWZk YXdzb24uY29tLyI7czo3OiJ2ZXJzaW9uIjtzOjQ6IjAuMTQiO3M6MTE6ImRlc2NyaXB0aW9u IjtzOjYxOiJSYW5kb20gdGV4dCBmcm9tIGZpbGUsIGRhdGFiYXNlLCBzdHJpbmcgb3IgVFhQ IGZpZWxkL3ZhcmlhYmxlIjtzOjQ6ImNvZGUiO3M6NjIzMToiZnVuY3Rpb24gc21kX3JhbmRv bV90ZXh0KCRhdHRzLCAkdGhpbmc9TlVMTCkgew0KCWdsb2JhbCAkdHhwY2ZnLCAkdmFyaWFi bGUsICRwcmV0ZXh0LCAkdGhpc2FydGljbGUsICR0aGlzZmlsZSwgJHRoaXNsaW5rLCAkdGhp c2ltYWdlOw0KDQoJZXh0cmFjdChsQXR0cyhhcnJheSgNCgkJJ3R5cGUnICAgICAgICAgICAg PT4gJ3N0cmluZycsDQoJCSdzb3VyY2UnICAgICAgICAgID0+ICdoZWxsbyB3b3JsZCcsDQoJ CSdkZWxpbScgICAgICAgICAgID0+ICd8JywNCgkJJ2ZpbGVfZGVsaW0nICAgICAgPT4gJ1xu JywNCgkJJ2ZpbGVfZGVsaW1fdHlwZScgPT4gJ2NoYXInLCAvLyBjaGFyIG9yIHJlZ2V4DQoJ CSdvdXRfZGVsaW0nICAgICAgID0+ICcsJywNCgkJJ2l0ZW1fbnVtJyAgICAgICAgPT4gJycs DQoJCSdzaHVmZmxlJyAgICAgICAgID0+ICcwJywNCgkJJ3RyaW0nICAgICAgICAgICAgPT4g JzEnLA0KCQknZXNjYXBlJyAgICAgICAgICA9PiAnaHRtbCcsDQoJCSdmb3JtJyAgICAgICAg ICAgID0+ICcnLA0KCQknbGltaXQnICAgICAgICAgICA9PiAnMScsDQoJCSdjb3VudCcgICAg ICAgICAgID0+ICd1cCcsDQoJCSd3cmFwdGFnJyAgICAgICAgID0+ICcnLA0KCQknYnJlYWsn ICAgICAgICAgICA9PiAnJywNCgkJJ3Zhcl9wcmVmaXgnICAgICAgPT4gJ3NtZF9ybmRfdHh0 JywNCgkJJ2NsYXNzJyAgICAgICAgICAgPT4gJycsDQoJCSdkZWJ1ZycgICAgICAgICAgID0+ ICcwJywNCgkpLCAkYXR0cykpOw0KDQoJJHNyY3B0ID0gZXhwbG9kZSgkZGVsaW0sICRzb3Vy Y2UpOw0KCSRsaW1pdCA9ICgkbGltaXQgPCAxKSA/IDEgOiAkbGltaXQ7DQoJJGZyb20gPSBh cnJheSgpOw0KCSRpdGVtcyA9IGFycmF5KCk7DQoJJG11bHRpcm93ID0gMTsNCg0KCXN3aXRj aCAoJHR5cGUpIHsNCgkJY2FzZSAiZmllbGQiOg0KCQkJaWYgKGlzc2V0KCR0aGlzZmlsZVsk c3JjcHRbMF1dKSAmJiAkdGhpc2ZpbGVbJHNyY3B0WzBdXSAhPSAiIikgew0KCQkJCSRmcm9t ID0gJHRoaXNmaWxlWyRzcmNwdFswXV07DQoJCQl9IGVsc2UgaWYgKGlzc2V0KCR0aGlzbGlu a1skc3JjcHRbMF1dKSAmJiAkdGhpc2xpbmtbJHNyY3B0WzBdXSAhPSAiIikgew0KCQkJCSRm cm9tID0gJHRoaXNsaW5rWyRzcmNwdFswXV07DQoJCQl9IGVsc2UgaWYgKGlzc2V0KCR0aGlz aW1hZ2VbJHNyY3B0WzBdXSkgJiYgJHRoaXNpbWFnZVskc3JjcHRbMF1dICE9ICIiKSB7DQoJ CQkJJGZyb20gPSAkdGhpc2ltYWdlWyRzcmNwdFswXV07DQoJCQl9IGVsc2UgaWYgKGlzc2V0 KCRwcmV0ZXh0WyRzcmNwdFswXV0pICYmICRwcmV0ZXh0WyRzcmNwdFswXV0gIT0gIiIpIHsN CgkJCQkkZnJvbSA9ICRwcmV0ZXh0WyRzcmNwdFswXV07DQoJCQl9IGVsc2UgaWYgKGlzc2V0 KCR0aGlzYXJ0aWNsZVskc3JjcHRbMF1dKSAmJiAkdGhpc2FydGljbGVbJHNyY3B0WzBdXSAh PSAiIikgew0KCQkJCSRmcm9tID0gJHRoaXNhcnRpY2xlWyRzcmNwdFswXV07DQoJCQl9DQoJ CQlpZiAoJGZyb20pIHsNCgkJCQkkZnJvbSA9IGV4cGxvZGUoJGRlbGltLCAkZnJvbSk7DQoJ CQkJJGxpbWl0ID0gKGNvdW50KCRmcm9tKSA8ICRsaW1pdCkgPyBjb3VudCgkZnJvbSkgOiAk bGltaXQ7DQoJCQkJJGl0ZW1zID0gKCRpdGVtX251bSAhPSAnJykgPyAoKGNvdW50KCRmcm9t KSA+PSAkaXRlbV9udW0pID8gJGl0ZW1fbnVtIDogMCkgOiBhcnJheV9yYW5kKCRmcm9tLCAk bGltaXQpOw0KCQkJfQ0KCQkJYnJlYWs7DQoJCWNhc2UgInR4cHZhciI6DQoJCQkkZnJvbSA9 IGV4cGxvZGUoJGRlbGltLCAkdmFyaWFibGVbJHNyY3B0WzBdXSk7DQoJCQkkbGltaXQgPSAo Y291bnQoJGZyb20pIDwgJGxpbWl0KSA/IGNvdW50KCRmcm9tKSA6ICRsaW1pdDsNCgkJCSRp dGVtcyA9ICgkaXRlbV9udW0gIT0gJycpID8gKChjb3VudCgkZnJvbSkgPj0gJGl0ZW1fbnVt KSA/ICRpdGVtX251bSA6IDApIDogYXJyYXlfcmFuZCgkZnJvbSwgJGxpbWl0KTsNCgkJCWJy ZWFrOw0KCQljYXNlICJ1cmx2YXIiOg0KCQkJJGZyb20gPSBleHBsb2RlKCRkZWxpbSwgZ3Bz KCRzcmNwdFswXSkpOw0KCQkJJGxpbWl0ID0gKGNvdW50KCRmcm9tKSA8ICRsaW1pdCkgPyBj b3VudCgkZnJvbSkgOiAkbGltaXQ7DQoJCQkkaXRlbXMgPSAoJGl0ZW1fbnVtICE9ICcnKSA/ ICgoY291bnQoJGZyb20pID49ICRpdGVtX251bSkgPyAkaXRlbV9udW0gOiAwKSA6IGFycmF5 X3JhbmQoJGZyb20sICRsaW1pdCk7DQoJCQlicmVhazsNCgkJY2FzZSAiZGF0YWJhc2UiOg0K CQkJJHdoZXJlID0gIjE9MSBPUkRFUiBCWSBSQU5EKCkgTElNSVQgIi4kbGltaXQ7DQoJCQkk ZnJvbSA9IHNhZmVfcm93cygkc3JjcHRbMV0sICRzcmNwdFswXSwgJHdoZXJlLCAkZGVidWcp Ow0KCQkJJG11bHRpcm93ID0gY291bnQoZXhwbG9kZSgnLCcsICRzcmNwdFsxXSkpOw0KCQkJ JGxpbWl0ID0gY291bnQoJGZyb20pOw0KCQkJJGl0ZW1zID0gKCRpdGVtX251bSAhPSAnJykg PyAoKGNvdW50KCRmcm9tKSA+PSAkaXRlbV9udW0pID8gJGl0ZW1fbnVtIDogMCkgOiBhcnJh eV9rZXlzKCRmcm9tKTsNCgkJCWJyZWFrOw0KCQljYXNlICJmaWxlIjoNCgkJCSRwYXRoID0g JHR4cGNmZ1snZG9jX3Jvb3QnXS5EUy5sdHJpbSgkc3JjcHRbMF0sIERTKTsNCgkJCWlmICgk ZGVidWcpIHsNCgkJCQllY2hvICIrKyBGSUxFIFBBVEggKysiOw0KCQkJCWRtcCgkcGF0aCk7 DQoJCQl9DQoJCQlpZiAoZmlsZV9leGlzdHMoJHBhdGgpKSB7DQoJCQkJaWYgKCRmaWxlX2Rl bGltID09ICdcbicpIHsNCgkJCQkJJGZyb20gPSBkb0FycmF5KGZpbGUoJHBhdGgpLCAncnRy aW0nKTsNCgkJCQl9IGVsc2UgaWYgKCRmaWxlX2RlbGltX3R5cGUgPT0gJ2NoYXInKSB7DQoJ CQkJCSRmcm9tID0gZXhwbG9kZSgkZmlsZV9kZWxpbSwgZmlsZV9nZXRfY29udGVudHMoJHBh dGgpKTsNCgkJCQl9IGVsc2UgaWYgKCRmaWxlX2RlbGltX3R5cGUgPT0gJ3JlZ2V4JykgewkJ CQkJDQoJCQkJCS8vIENhbm5vdCBndWFyYW50ZWUgdGhhdCBhIGZpeGVkIGRlbGltaXRlciB3 b24ndCBicmVhayBwcmVnX21hdGNoIChhbmQgcHJlZ19xdW90ZSBkb2Vzbid0IGhlbHApIHNv DQoJCQkJCS8vIGR5bmFtaWNhbGx5IGFzc2lnbiB0aGUgZGVsaW1pdGVyIGJhc2VkIG9uIHRo ZSBmaXJzdCBlbnRyeSBpbiAkZGxtUG9vbCB0aGF0IGlzIE5PVCBpbiB0aGUgZmlsZV9kZWxp bSBhdHRyaWJ1dGUuDQoJCQkJCS8vIFRoaXMgbWluaW1pc2VzIChkb2VzIG5vdCBlbGltaW5h dGUpIHRoZSBwb3NzaWJpbGl0eSBvZiBhIFRYUC1pbml0aWF0ZWQgcHJlZ19tYXRjaCBlcnJv ciwgd2hpbGUgc3RpbGwNCgkJCQkJLy8gcHJlc2VydmluZyBlcnJvcnMgb3V0c2lkZSBUWFAn cyBjb250cm9sIChlLmcuIG1hbmdsZWQgdXNlci1zdWJtaXR0ZWQgUENSRSBwYXR0ZXJuKQ0K CQkJCQkkZGxtUG9vbCA9IGFycmF5KCcvJywgJ0AnLCAnIycsICd+JywgJ2AnLCAnfCcsICch JywgJyUnKTsNCgkJCQkJJGRsbSA9IGFycmF5X21lcmdlKGFycmF5X2RpZmYoJGRsbVBvb2ws IHByZWdfc3BsaXQoJy8vJywgJGZpbGVfZGVsaW0sIC0xKSkpOw0KCQkJCQkkZGxtID0gKGNv dW50KCRkbG0pID4gMCkgPyAkZGxtWzBdLiRmaWxlX2RlbGltLiRkbG1bMF0gOiAkZmlsZV9k ZWxpbTsNCgkJCQkJaWYgKCRkZWJ1Zykgew0KCQkJCQkJZWNobyAiKysgUkVHRVggKysiOw0K CQkJCQkJZG1wKCRkbG0pOw0KCQkJCQl9DQoJCQkJCSRmcm9tID0gcHJlZ19zcGxpdCgkZGxt LCBmaWxlX2dldF9jb250ZW50cygkcGF0aCkpOw0KCQkJCX0NCgkJCQlpZiAoJGRlYnVnID4g Mykgew0KCQkJCQllY2hvICIrKyBTUExJVCBGSUxFIENPTlRFTlRTICsrIjsNCgkJCQkJZG1w KCRmcm9tKTsNCgkJCQl9DQoJCQkJJGxpbWl0ID0gKGNvdW50KCRmcm9tKSA8ICRsaW1pdCkg PyBjb3VudCgkZnJvbSkgOiAkbGltaXQ7DQoJCQkJJGl0ZW1zID0gKCRpdGVtX251bSAhPSAn JykgPyAoKGNvdW50KCRmcm9tKSA+PSAkaXRlbV9udW0pID8gJGl0ZW1fbnVtIDogMCkgOiBh cnJheV9yYW5kKCRmcm9tLCAkbGltaXQpOw0KCQkJfQ0KCQkJYnJlYWs7DQoJCWNhc2UgInN0 cmluZyI6DQoJCWRlZmF1bHQ6DQoJCQkkZnJvbSA9ICRzcmNwdDsNCgkJCSRsaW1pdCA9IChj b3VudCgkZnJvbSkgPCAkbGltaXQpID8gY291bnQoJGZyb20pIDogJGxpbWl0Ow0KCQkJJGl0 ZW1zID0gKCRpdGVtX251bSAhPSAnJykgPyAoKGNvdW50KCRmcm9tKSA+PSAkaXRlbV9udW0p ID8gJGl0ZW1fbnVtIDogMCkgOiBhcnJheV9yYW5kKCRmcm9tLCAkbGltaXQpOw0KCQkJYnJl YWs7DQoJfQ0KDQoJLy8gRm9yY2UgYXJyYXkgaWYgaXQgaXNuJ3QgYWxyZWFkeSAoc29tZSBQ SFAgZnVuY3Rpb25zIHJldHVybiBzaW5nbGUgdmFsdWVzKQ0KCWlmICghaXNfYXJyYXkoJGl0 ZW1zKSkgew0KCQkkaXRlbXMgPSBhcnJheSgkaXRlbXMpOw0KCX0NCg0KCWlmICgkc2h1ZmZs ZSkgew0KCQlzaHVmZmxlKCRpdGVtcyk7DQoJfQ0KDQoJaWYgKCRtdWx0aXJvdyA9PSAxKSB7 DQoJCSRmcm9tID0gKCR0cmltKSA/IGRvQXJyYXkoJGZyb20sICd0cmltJykgOiAkZnJvbTsN Cgl9DQoNCglpZiAoJGRlYnVnKSB7DQoJCWVjaG8gIisrIElURU0gUE9PTCArKyI7DQoJCWRt cCgkZnJvbSk7DQoJCWVjaG8gIisrIENIT1NFTiBJVEVNUyArKyI7DQoJCWRtcCgkaXRlbXMp Ow0KCX0NCglpZiAoJGRlYnVnID4gMikgew0KCQllY2hvICIrKyBQUkVURVhUICsrIjsNCgkJ ZG1wKCRwcmV0ZXh0KTsNCgkJaWYgKGlzc2V0KCR0aGlzZmlsZSkpIHsNCgkJCWVjaG8gIisr IFRISVMgRklMRSArKyI7DQoJCQlkbXAoJHRoaXNmaWxlKTsNCgkJfQ0KCQlpZiAoaXNzZXQo JHRoaXNsaW5rKSkgew0KCQkJZWNobyAiKysgVEhJUyBMSU5LICsrIjsNCgkJCWRtcCgkdGhp c2xpbmspOw0KCQl9DQoJCWlmIChpc3NldCgkdGhpc2ltYWdlKSkgew0KCQkJZWNobyAiKysg VEhJUyBJTUFHRSArKyI7DQoJCQlkbXAoJHRoaXNpbWFnZSk7DQoJCX0NCgkJaWYgKGlzc2V0 KCR0aGlzYXJ0aWNsZSkpIHsNCgkJCWVjaG8gIisrIFRISVMgQVJUSUNMRSArKyI7DQoJCQlk bXAoJHRoaXNhcnRpY2xlKTsNCgkJfQ0KCX0NCg0KCS8vIEZpbmQgb3V0IGhvdyB0byBwbG9u ayB0aGUgb3V0cHV0DQoJJHdoYXQgPSAoJGZvcm0pID8gZmV0Y2hfZm9ybSgkZm9ybSkgOiAo KCR0aGluZykgPyAkdGhpbmcgOiAneycuJHZhcl9wcmVmaXguJ30nKTsNCg0KCS8vIFBpY2sg dGhlIGdpdmVuICRpdGVtcyBrZXlzIG91dCBvZiB0aGUgJGZyb20gYXJyYXkgYW5kIGRpc3Bs YXkgdGhlbQ0KCSRvdXQgPSBhcnJheSgpOw0KCSRjdHIgPSAoJGNvdW50PT0idXAiKSA/IDAg OiAkbGltaXQtMTsNCglmb3JlYWNoICgkaXRlbXMgYXMgJGl0ZW0pIHsNCgkJJHJlcGxhY2Vt ZW50ID0gYXJyYXkoKTsNCgkJaWYgKGlzX2FycmF5KCRmcm9tWyRpdGVtXSkpIHsNCgkJCWZv cmVhY2ggKCRmcm9tWyRpdGVtXSBhcyAkamR4ID0+ICR2YWwpIHsNCgkJCQkkdmFsID0gKCR0 cmltKSA/IHRyaW0oJHZhbCkgOiAkdmFsOw0KCQkJCSRyZXBsYWNlbWVudFsneycuJHZhcl9w cmVmaXguJ18nLiRqZHguJ30nXSA9ICgkZXNjYXBlID09ICdodG1sJykgPyBodG1sc3BlY2lh bGNoYXJzKCR2YWwpIDogJHZhbDsNCgkJCX0NCgkJCSRmcm9tWyRpdGVtXSA9IGpvaW4oJG91 dF9kZWxpbSwgJGZyb21bJGl0ZW1dKTsNCgkJCSRmcm9tWyRpdGVtXSA9ICgkdHJpbSkgPyB0 cmltKCRmcm9tWyRpdGVtXSkgOiAkZnJvbVskaXRlbV07DQoJCX0NCgkJJHJlcGxhY2VtZW50 Wyd7Jy4kdmFyX3ByZWZpeC4nfSddID0gKCRlc2NhcGUgPT0gJ2h0bWwnKSA/IGh0bWxzcGVj aWFsY2hhcnMoJGZyb21bJGl0ZW1dKSA6ICRmcm9tWyRpdGVtXTsNCgkJJHJlcGxhY2VtZW50 Wyd7Jy4kdmFyX3ByZWZpeC4nX3Jvd3N9J10gPSAkbGltaXQ7DQoJCSRyZXBsYWNlbWVudFsn eycuJHZhcl9wcmVmaXguJ190aGlzaW5kZXh9J10gPSAkY3RyOw0KCQkkcmVwbGFjZW1lbnRb J3snLiR2YXJfcHJlZml4LidfdGhpc3Jvd30nXSA9ICRjdHIgKyAxOw0KCQkkcmVwbGFjZW1l bnRbJ3snLiR2YXJfcHJlZml4LidfY2hvc2VuX2l0ZW19J10gPSAkaXRlbTsNCgkJaWYgKCRk ZWJ1ZyA+IDEpIHsNCgkJCWVjaG8gIisrIFJFUExBQ0VNRU5UUyArKyI7DQoJCQlkbXAoJHJl cGxhY2VtZW50KTsNCgkJfQ0KCQkkb3V0W10gPSBwYXJzZShzdHJ0cigkd2hhdCwgJHJlcGxh Y2VtZW50KSk7DQoJCSRjdHIgPSAoJGNvdW50PT0idXAiKSA/ICRjdHIrMSA6ICRjdHItMTsN Cgl9DQoNCglyZXR1cm4gZG9XcmFwKCRvdXQsICR3cmFwdGFnLCAkYnJlYWssICRjbGFzcyk7 DQp9IjtzOjQ6InR5cGUiO3M6MToiMCI7czo1OiJvcmRlciI7czoxOiI1IjtzOjU6ImZsYWdz IjtzOjE6IjAiO3M6NDoiaGVscCI7czoxNTM0NjoiPGRpdiBpZD0ic21kX2hlbHAiPgoKCTxo MT5zbWRfcmFuZG9tX3RleHQ8L2gxPgoKCTxwPkNob29zZSByYW5kb20gdGV4dCBzdHJpbmdz IGZyb20gYSB2YXJpZXR5IG9mIHNvdXJjZXMuIENvdWxkIGJlIHVzZWQgYXMgYSBxdW90ZS1v Zi10aGUtZGF5IHN5c3RlbSwgcmFuZG9tIHRhZyBsaW5lcywgb3Igc29tZXRoaW5nIG1vcmUg ZWxhYm9yYXRlLjwvcD4KCgk8aDI+RmVhdHVyZXM8L2gyPgoKCTx1bD4KCQk8bGk+UHVsbCB0 aGUgaXRlbSBsaXN0IGZyb20gZWl0aGVyOgoJPHVsPgoJCTxsaT5hIGdpdmVuIGRlbGltaXRl ZCBzdHJpbmc8L2xpPgoJCTxsaT5hIGZpbGU8L2xpPgoJCTxsaT5hIGRhdGFiYXNlIHRhYmxl PC9saT4KCQk8bGk+YSA8Y29kZT4mbHQ7dHhwOnZhcmlhYmxlIC8mZ3Q7PC9jb2RlPjwvbGk+ CgkJPGxpPnVzZXItc3VibWl0dGVkIGZvcm0gZGF0YTwvbGk+CgkJPGxpPmEgVGV4dHBhdHRl cm4gZmllbGQ8L2xpPgoJPC91bD48L2xpPgoJCTxsaT5HcmFiIGFzIG1hbnkgcmFuZG9tIGl0 ZW1zIGFzIHlvdSBsaWtlIGZyb20geW91ciBjaG9zZW4gbGlzdDwvbGk+CgkJPGxpPlBhc3Mg ZWFjaCB0byBhIGZvcm0vdGhlIGNvbnRhaW5lciBpZiB5b3Ugd2lzaCB0byBmb3JtYXQgdGhl bTwvbGk+Cgk8L3VsPgoKCTxoMj5BdXRob3I8L2gyPgoKCTxwPjxhIGhyZWY9Imh0dHA6Ly9z dGVmZGF3c29uLmNvbS9jb250YWN0Ij5TdGVmIERhd3NvbjwvYT4uIENvbWJpbmVzIGlkZWFz IGZyb20gZHJ1X3JhbmRvbV90ZXh0IGJ5IERyZXcgTWNMZWxsYW4gYW5kIHNpbXBsZV9yYW5k b21fdGV4dCBieSBNYW51ZWwgRWJlcnQsIHBsdXMgc29tZSBzcHJpbmtsaW5ncyBvZiBteSBv d24uIE1hbnkgdGhhbmtzIHRvIHRoZSBhdXRob3JzIG9mIHRob3NlIHdvcmtzLjwvcD4KCgk8 aDI+SW5zdGFsbGF0aW9uIC8gVW5pbnN0YWxsYXRpb248L2gyPgoKCTxwPkRvd25sb2FkIHRo ZSBwbHVnaW4gZnJvbSBlaXRoZXIgPGEgaHJlZj0iaHR0cDovL3RleHRwYXR0ZXJuLm9yZy9w bHVnaW5zLzEwMjIvc21kX3JhbmRvbV90ZXh0Ij50ZXh0cGF0dGVybi5vcmc8L2E+LCBvciB0 aGUgPGEgaHJlZj0iaHR0cDovL3N0ZWZkYXdzb24uY29tL3N3Ij5zb2Z0d2FyZSBwYWdlPC9h PiwgcGFzdGUgdGhlIGNvZGUgaW50byB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bh bj4gQWRtaW4gLSZndDsgUGx1Z2lucyBwYW5lLCBpbnN0YWxsIGFuZCBlbmFibGUgdGhlIHBs dWdpbi4gVmlzaXQgdGhlIDxhIGhyZWY9Imh0dHA6Ly9mb3J1bS50ZXh0cGF0dGVybi5jb20v dmlld3RvcGljLnBocD9waWQ9MTkwNjc1Ij5mb3J1bSB0aHJlYWQ8L2E+IGZvciBtb3JlIGlu Zm8gb3IgdG8gcmVwb3J0IG9uIHRoZSBzdWNjZXNzIG9yIG90aGVyd2lzZSBvZiB0aGUgcGx1 Z2luLjwvcD4KCgk8cD5UbyB1bmluc3RhbGwsIHNpbXBseSBkZWxldGUgZnJvbSB0aGUgPGVt PkFkbWluIC0mZ3Q7IFBsdWdpbnM8L2VtPiBwYWdlLjwvcD4KCgk8aDI+VXNhZ2U8L2gyPgoK CTxwPlVzZSB0aGUgdGFnIGluIGFueSBwYWdlLCBmb3JtIG9yIGFydGljbGUvZmlsZS9pbWFn ZS9saW5rIGNvbnRleHQuPC9wPgoKCTxoMyBjbGFzcz0idGFnIj5zbWRfcmFuZG9tX3RleHQ8 L2gzPgoKCTxwIGNsYXNzPSJ0YWctc3VtbWFyeSI+VGhlcmUgYXJlIHR3byBtYW5kYXRvcnkg YXR0cmlidXRlczogPGNvZGU+dHlwZTwvY29kZT4gYW5kIDxjb2RlPnNvdXJjZTwvY29kZT4u IFRoZSBvdGhlcnMgYXJlIHVzZWQgdG8gY29udHJvbCBob3cgdGhlIGluZm9ybWF0aW9uIGlz IGV4dHJhY3RlZCBhbmQvb3IgcHJlc2VudGVkLjwvcD4KCgk8aDQgY2xhc3M9ImF0dHMiPk1h bmRhdG9yeSBhdHRyaWJ1dGVzPC9oND4KCgk8dWw+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5t IG1hbmQiPnR5cGU8L3NwYW4+IDogd2hlcmUgdG8gbG9vayBmb3IgdGhlIHBvb2wgb2YgdGV4 dCBzdHJpbmdzLiBDYW4gYmUgb25lIG9mIDxjb2RlPnN0cmluZzwvY29kZT4gKHRoZSBkZWZh dWx0KSwgPGNvZGU+ZmllbGQ8L2NvZGU+LCA8Y29kZT50eHB2YXI8L2NvZGU+LCA8Y29kZT51 cmx2YXI8L2NvZGU+LCA8Y29kZT5kYXRhYmFzZTwvY29kZT4sIG9yIDxjb2RlPmZpbGU8L2Nv ZGU+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0gbWFuZCI+c291cmNlPC9zcGFuPiA6 IGZ1cnRoZXIgcmVmaW5lbWVudCBvZiB3aGVyZSB0byBmaW5kIHRoZSBzdHJpbmdzIHVzaW5n IHRoZSBmb2xsb3dpbmcgcnVsZXM6Cgk8dWw+CgkJPGxpPjxzcGFuPnN0cmluZzwvc3Bhbj4g OiBhIGRlbGltaXRlZCBsaXN0IG9mIHRleHQgKGUuZy4gPGNvZGU+c291cmNlPSZxdW90O215 fGNyYWNraW5nfHdvcmRzfG9mfHRoZXxkYXl8aW4gYSBuYXR0eSBsaXR0bGV8bGlzdCZxdW90 OzwvY29kZT4pPC9saT4KCQk8bGk+PHNwYW4+ZmllbGQ8L3NwYW4+IDogdGhlIG5hbWUgb2Yg dGhlIFRleHRwYXR0ZXJuIGZpZWxkIHRvIGxvb2sgaW4gKGUuZy4gPGNvZGU+c291cmNlPSZx dW90O2FydGljbGVfaW1hZ2UmcXVvdDs8L2NvZGU+IG9yIDxjb2RlPnNvdXJjZT0mcXVvdDtt eV9jdXN0b21fZmllbGRfbmFtZSZxdW90OzwvY29kZT4pPC9saT4KCQk8bGk+PHNwYW4+dHhw dmFyPC9zcGFuPiA6IHRoZSBuYW1lIG9mIGEgPGNvZGU+Jmx0O3R4cDp2YXJpYWJsZSAvJmd0 OzwvY29kZT4gdGhhdCBoYXMgYmVlbiBkZWZpbmVkIChlLmcuIDxjb2RlPnNvdXJjZT0mcXVv dDtteV9saXN0JnF1b3Q7PC9jb2RlPik8L2xpPgoJCTxsaT48c3Bhbj51cmx2YXI8L3NwYW4+ IDogdGhlIG5hbWUgb2YgYSA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPiB2YXJpYWJs ZSAodmlhIDxzcGFuIGNsYXNzPSJjYXBzIj5HRVQ8L3NwYW4+IG9yIDxzcGFuIGNsYXNzPSJj YXBzIj5QT1NUPC9zcGFuPikgdGhhdCB3aWxsIGJlIHBhc3NlZCB0byB0aGUgcGFnZSAoZS5n LiA8Y29kZT5zb3VyY2U9JnF1b3Q7cHJvcGVydHlfbGlzdCZxdW90OzwvY29kZT4pPC9saT4K CQk8bGk+PHNwYW4+ZGF0YWJhc2U8L3NwYW4+IDogdGhlIHRhYmxlIGFuZCBjb2x1bW4gbmFt ZSwgc2VwYXJhdGVkIGJ5IDxjb2RlPmRlbGltPC9jb2RlPiAoZS5nLiA8Y29kZT5zb3VyY2U9 JnF1b3Q7dHhwX2NhdGVnb3J5fHRpdGxlJnF1b3Q7PC9jb2RlPikuIFlvdSBtYXkgc3BlY2lm eSBtb3JlIHRoYW4gb25lIGNvbHVtbiBmcm9tIHRoZSBzYW1lIHRhYmxlIGJ5IGxpc3Rpbmcg dGhlbSBzZXBhcmF0ZWQgYnkgY29tbWEuIEZvciBleGFtcGxlIDxjb2RlPnNvdXJjZT0mcXVv dDt0eHBfZGlzY3Vzc3xtZXNzYWdlLG5hbWUsZGlzY3Vzc2lkJnF1b3Q7PC9jb2RlPjwvbGk+ CgkJPGxpPjxzcGFuPmZpbGU8L3NwYW4+IDogYSBmaWxlIG5hbWUgcmVsYXRpdmUgdG8gdGhl IHJvb3Qgb2YgeW91ciBzaXRlLCB3aXRoIG9yIHdpdGhvdXQgbGVhZGluZyBzbGFzaCAoZS5n LiA8Y29kZT5zb3VyY2U9JnF1b3Q7ZmlsZXMvbXlfc3RyaW5ncy50eHQmcXVvdDs8L2NvZGU+ KTwvbGk+Cgk8L3VsPjwvbGk+Cgk8L3VsPgoKCTxoNCBjbGFzcz0iYXR0cyI+Rm9ybWF0dGlu ZzwvaDQ+CgoJPHVsPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+bGltaXQ8L3NwYW4+IDog dGhlIG51bWJlciBvZiBpdGVtcyB0byBwdWxsIGZyb20gdGhlIGxpc3QuIERlZmF1bHRzIHRv IDEuIElmIHlvdSBzcGVjaWZ5IG1vcmUgdGhhbiB0aGUgYXZhaWxhYmxlIG51bWJlciBvZiBp dGVtcyBpbiB0aGUgcG9vbCwgdGhlIGVudGlyZSBwb29sIHdpbGwgYmUgdXNlZCBhbmQgcHJl c2VudGVkIGluIGEgcmFuZG9tIG9yZGVyPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0i PmZvcm08L3NwYW4+IDogdGhlIGZvcm0gdG8gdXNlIHRvIGZvcm1hdCB0aGUgdGV4dC4gSWYg bm90IHN1cHBsaWVkLCB3aWxsIHRyeSB0aGUgY29udGFpbmVyLiBJZiB0aGF0JiM4MjE3O3Mg bm90IHVzZWQgZWl0aGVyLCB0aGUgcGx1Z2luIHdpbGwgc2ltcGx5IG91dHB1dCB0aGUgY2hv c2VuIHRleHQgb24gaXRzIG93bjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5jb3Vu dDwvc3Bhbj4gOiB3aGV0aGVyIHRvIGNvdW50IDxjb2RlPnVwPC9jb2RlPiAodGhlIGRlZmF1 bHQpIG9yIDxjb2RlPmRvd248L2NvZGU+IGZvciBlYWNoIHJhbmRvbSBwaWVjZSBvZiB0ZXh0 PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnRyaW08L3NwYW4+IDogd2hldGhlciB0 byByZW1vdmUgd2hpdGVzcGFjZSBmcm9tIGFyb3VuZCBlYWNoIGxpc3QgaXRlbSAoMSkgb3Ig bm90ICgwKS4gRGVmYXVsdDogMTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5lc2Nh cGU8L3NwYW4+IDogZXNjYXBlIDxzcGFuIGNsYXNzPSJjYXBzIj5IVE1MPC9zcGFuPiBlbnRp dGllcyBzdWNoIGFzIDxjb2RlPiZsdDs8L2NvZGU+LCA8Y29kZT4mZ3Q7PC9jb2RlPiBhbmQg PGNvZGU+JmFtcDs8L2NvZGU+IGluIGFueSB0ZXh0IGl0ZW1zLiBVc2UgPGNvZGU+ZXNjYXBl PSZxdW90OyZxdW90OzwvY29kZT4gdG8gdHVybiBpdCBvZmYuIERlZmF1bHQ6IDxjb2RlPmh0 bWw8L2NvZGU+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPndyYXB0YWc8L3NwYW4+ IDogdGhlIChYKUhUTUwgdGFnIHdpdGggd2hpY2ggdG8gd3JhcCB0aGUgY2hvc2VuIHN0cmlu Z3MsIGUuZy4gPGNvZGU+d3JhcHRhZz0mcXVvdDt1bCZxdW90OzwvY29kZT4uIERlZmF1bHQ6 IHVuc2V0PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmJyZWFrPC9zcGFuPiA6IHRo ZSAoWClIVE1MIHRhZyB0byBwdXQgYmV0d2VlbiBzdWNjZXNzaXZlIGl0ZW1zIG9mIHRleHQs IGUuZy4gPGNvZGU+YnJlYWs9JnF1b3Q7bGkmcXVvdDs8L2NvZGU+LiBEZWZhdWx0OiB1bnNl dDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5jbGFzczwvc3Bhbj4gOiB0aGUgPHNw YW4gY2xhc3M9ImNhcHMiPkNTUzwvc3Bhbj4gY2xhc3MgdG8gYXBwbHkgdG8gdGhlIGl0ZW0g d3JhcHRhZywgZS5nLiA8Y29kZT5jbGFzcz0mcXVvdDtyYW5kb21fc3RyaW5ncyZxdW90Ozwv Y29kZT4uIERlZmF1bHQ6IHVuc2V0PC9saT4KCTwvdWw+CgoJPGg0IGNsYXNzPSJhdHRzIj5Q bHVnaW4gY29uZmlndXJhdGlvbjwvaDQ+CgoJPHVsPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRu bSI+ZGVsaW08L3NwYW4+IDogdGhlIGRlbGltaXRlciB0byB1c2UgYmV0d2VlbiB3b3Jkcy9h dHRyaWJ1dGUgb3B0aW9ucy4gRGVmYXVsdDogcGlwZSA8Y29kZT58PC9jb2RlPjwvbGk+CgkJ PGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5maWxlX2RlbGltPC9zcGFuPiA6IHRoZSBkZWxpbWl0 ZXIgdG8gdXNlIHdoZW4gcGFyc2luZyBmaWxlcy4gSWYgZWFjaCB3b3JkIG9yIHBocmFzZSBp cyBvbiBpdHMgb3duIGxpbmUgdGhlbiB0aGUgZGVmYXVsdCBuZXdsaW5lICg8Y29kZT5cbjwv Y29kZT4pIGlzIHN1ZmZpY2llbnQuIElmIHlvdSB3aXNoIHRvIGhhdmUgYWxsIHlvdXIgdGV4 dCBzdHJpbmdzIG9uIG9uZSBsaW5lIG9mIHRoZSBmaWxlIGRlbGltaXRlZCBieSBzb21lIG90 aGVyIGNoYXJhY3Rlciwgc2V0IHlvdXIgb3duIGRlbGltaXRlciBoZXJlLiBGb3IgbW9yZSBl bGFib3JhdGUgZmlsZSBzdHJ1Y3R1cmVzLCB5b3UgbWF5IHVzZSByZWdleGVzIGlmIHlvdSBh bHNvIHNldCA8Y29kZT5maWxlX2RlbGltX3R5cGU9JnF1b3Q7cmVnZXgmcXVvdDs8L2NvZGU+ PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmZpbGVfZGVsaW1fdHlwZTwvc3Bhbj4g OiBjaG9vc2UgZnJvbSBlaXRoZXIgPGNvZGU+Y2hhcjwvY29kZT4gKHRoZSBkZWZhdWx0KSB0 byB0ZWxsIHRoZSBwbHVnaW4gdGhhdCB5b3UgYXJlIHNwbGl0dGluZyB5b3VyIGZpbGUgdXNp bmcgcmVndWxhciA8c3BhbiBjbGFzcz0iY2FwcyI+QVNDSUk8L3NwYW4+IGNoYXJhY3RlcnMg aW4geW91ciA8Y29kZT5maWxlX2RlbGltPC9jb2RlPiwgb3IgPGNvZGU+cmVnZXg8L2NvZGU+ IHRvIGluZGljYXRlIHlvdSB3aXNoIHRvIHVzZSB5b3VyIG93biByZWd1bGFyIGV4cHJlc3Np b24uIE5vdGUgdGhlcmUgaXMgbm8gbmVlZCB0byBzcGVjaWZ5IHRoZSByZWd1bGFyIGV4cHJl c3Npb24gZGVsaW1pdGVycyBhcyB0aGV5IHdpbGwgYmUgY2hvc2VuIGF1dG9tYXRpY2FsbHkg YmFzZWQgb24gdGhlIGNvbnRlbnQgb2YgeW91ciByZWdleDwvbGk+CgkJPGxpPjxzcGFuIGNs YXNzPSJhdG5tIj5pdGVtX251bTwvc3Bhbj4gOiBzaG93IHRoaXMgcGFydGljdWxhciBpdGVt IGZyb20gdGhlIHBvb2wuIElmIGl0IGRvZXNuJiM4MjE3O3QgZXhpc3QsIHlvdSBnZXQgdGhl IGZpcnN0IGl0ZW0uIEJ1dCB3YWl0PyEgVGhpcyBpcyBhIHJhbmRvbV90ZXh0IHBsdWdpbiwg d2h5IHdvdWxkIGFueWJvZHkgd2FudCB0byBzcGVjaWZ5IHdoaWNoIGl0ZW0gdG8gdXNlPyBU d28gdXNlcyBzcHJpbmcgdG8gbWluZDogRmlyc3RseSwgaWYgeW91IGhhdmUgYWxyZWFkeSBy YW5kb21pemVkIHlvdXIgaXRlbXMgZXh0ZXJuYWxseSB5b3UgbWlnaHQgd2lzaCB0byBhbHdh eXMgcGljaywgc2F5LCB0aGUgZmlyc3QgaXRlbS4gU2Vjb25kbHkgJiM4MjEyOyBhbmQgZmFy IG1vcmUgc3VidGx5ICYjODIxMjsgaWYgeW91IHdpc2ggdG8gcHVsbCBtb3JlIHRoYW4gb25l IGl0ZW0gZnJvbSBhbnkgcmFuZG9tbHkgY2hvc2VuIHBsYWNlLCB5b3UgY2FuIG5lc3Qgc21k X3JhbmRvbV90ZXh0IHRhZ3MgYW5kIG1ha2UgdGhlIGlubmVyIHRhZ3MgYWx3YXlzIHVzZSB0 aGUgc2FtZSByb3cvcG9zaXRpb24gbnVtYmVyIGFzIHRoZSByYW5kb21seSBjaG9zZW4gb3V0 ZXIgdGFnLiBTZWUgPGEgaHJlZj0iI2VnNyI+ZXhhbXBsZSA3PC9hPjwvbGk+CgkJPGxpPjxz cGFuIGNsYXNzPSJhdG5tIj52YXJfcHJlZml4PC9zcGFuPiA6IGlmIHlvdSB3aXNoIHRvIG5l c3Qgc21kX3JhbmRvbV90ZXh0IHRhZ3MgdGhlbiB5b3UgbWF5IGZpbmQgdGhhdCB0aGUgcmVw bGFjZW1lbnQgdmFyaWFibGUgbmFtZXMgY2xhc2guIElmIHRoYXQgaXMgdGhlIGNhc2UgeW91 IGNhbiBhbHRlciB0aGUgcHJlZml4IHRvIGF2b2lkIHRoaXMuIERlZmF1bHQ6IDxjb2RlPnNt ZF9ybmRfdHh0PC9jb2RlPjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5zaHVmZmxl PC9zcGFuPiA6IHBlcmhhcHMgYSBsaXR0bGUgcG9pbnRsZXNzLCB0aGlzIGFkZHMgYW4gZXh0 cmEgbGF5ZXIgb2YgcmFuZG9tbmVzcyB0byBwcm9jZWVkaW5ncyBieSBzaHVmZmxpbmcgdGhl IGNob3NlbiBpdGVtcyBhZ2Fpbi4gU28gaWYgeW91IGhhZCBhc2tlZCBmb3IgNiBpdGVtcyBp biB5b3VyIGxpc3Qgb2YgMjAgYW5kIHRoZSBwbHVnaW4gaGFkIHJhbmRvbWx5IGNob3NlbiB0 aGVtIGluIHRoaXMgb3JkZXI6IDxjb2RlPjQsIDE3LCAyLCA1LCAxMywgMTE8L2NvZGU+LCB1 c2luZyA8Y29kZT5zaHVmZmxlPSZxdW90OzEmcXVvdDs8L2NvZGU+IG1pZ2h0IHJlb3JkZXIg dGhlbSB0byA8Y29kZT4xNywgNSwgMiwgMTEsIDQsIDEzPC9jb2RlPjwvbGk+CgkJPGxpPjxz cGFuIGNsYXNzPSJhdG5tIj5kZWJ1Zzwvc3Bhbj4gOiBzZXQgdG8gMSB0byBzaG93IHRoZSBw b29sLCB0aGUgZmlsZSBuYW1lIChpZiBhcHBsaWNhYmxlKSBhbmQgdGhlIGNob3NlbiBpdGVt cy4gVXNlIDIgdG8gc2VlIHdoYXQgPGNvZGU+ZmllbGQ8L2NvZGU+cyBhbmQgcmVwbGFjZW1l bnRzIGFyZSBhdmFpbGFibGUgZm9yIHlvdXIgdXNlPC9saT4KCTwvdWw+CgoJPGgzPlJlcGxh Y2VtZW50IHRhZ3M8L2gzPgoKCTxwPldoZW4gdXNpbmcgYSBmb3JtIG9yIGNvbnRhaW5lciwg dXNlIHRoZSBmb2xsb3dpbmcgcmVwbGFjZW1lbnQgdGFncyB0byBpbnNlcnQgdGhlIHJlbGV2 YW50IHBpZWNlIG9mIGluZm9ybWF0aW9uIHdoZXJldmVyIHlvdSB3YW50IGl0OjwvcD4KCgk8 cD48Y29kZT57c21kX3JuZF90eHR9PC9jb2RlPiA6IHRoZSB0ZXh0IHN0cmluZyBpdHNlbGYg KGlmIHlvdSBoYXZlIGFsdGVyZWQgPGNvZGU+dmFyX3ByZWZpeDwvY29kZT4gdGhlbiB0aGlz IHJlcGxhY2VtZW50IG5hbWUgaXMgd2hhdGV2ZXIgeW91IGhhdmUgY2hvc2VuIGFzIHlvdXIg cHJlZml4KTxiciAvPgo8Y29kZT57c21kX3JuZF90eHRfcm93c308L2NvZGU+IDogdGhlIG51 bWJlciBvZiBpdGVtcyBpbiB0b3RhbDxiciAvPgo8Y29kZT57c21kX3JuZF90eHRfdGhpc3Jv d308L2NvZGU+IDogdGhlIGN1cnJlbnQgcm93IG51bWJlcjxiciAvPgo8Y29kZT57c21kX3Ju ZF90eHRfdGhpc2luZGV4fTwvY29kZT4gOiB0aGUgY3VycmVudCByb3cgaW5kZXggKHplcm8t YmFzZWQpPGJyIC8+Cjxjb2RlPntzbWRfcm5kX3R4dF9jaG9zZW5faXRlbX08L2NvZGU+IDog dGhlIHplcm8tYmFzZWQgaW5kZXggbnVtYmVyIG9mIHRoZSBhY3R1YWwgaXRlbSBzZWxlY3Rl ZCBieSB0aGUgcGx1Z2luPC9wPgoKCTxwPkluIGFkZGl0aW9uLCBpZiB5b3UgaGF2ZSBjaG9z ZW4gdG8gZXh0cmFjdCBtdWx0aXBsZSBjb2x1bW5zIGZyb20gYSBkYXRhYmFzZSB0YWJsZSwg eW91IHdpbGwgaGF2ZSBkaXNjcmVldCByZXBsYWNlbWVudHMgYXZhaWxhYmxlIGZvciBlYWNo IGl0ZW0gc3VmZml4ZWQgYnkgdGhlIGNvbHVtbiBuYW1lLiBTbyBpZiB5b3UgaGFkIHVzZWQg PGNvZGU+c291cmNlPSZxdW90O3R4cF9jYXRlZ29yeXxuYW1lLHRpdGxlJnF1b3Q7PC9jb2Rl PiB5b3Ugd291bGQgaGF2ZSB0d28gZXh0cmEgcmVwbGFjZW1lbnRzIGNhbGxlZCA8Y29kZT57 c21kX3JuZF90eHRfbmFtZX08L2NvZGU+IGFuZCA8Y29kZT57c21kX3JuZF90eHRfdGl0bGV9 PC9jb2RlPi48L3A+CgoJPGgyPkV4YW1wbGVzPC9oMj4KCgk8aDMgaWQ9ImVnMSI+RXhhbXBs ZSAxOiBRdW90ZSBvZiB0aGUgZGF5PC9oMz4KCgk8cD5SZWFkIHF1b3RlcyBmcm9tIGEgZGF0 YWJhc2UuIFRoZSB0YWJsZSBpcyBjYWxsZWQgJiM4MjIwO3F1b3RlcyYjODIyMTsgYW5kIGhh cyBhbHJlYWR5IGJlZW4gYWRkZWQgdG8gdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3Nw YW4+IGRhdGFiYXNlICh0aGUgY29ubmVjdGlvbiBtdXN0IGFscmVhZHkgYmUgb3BlbikuIFRo ZSBjb2x1bW4gY29udGFpbmluZyB0aGUgcXVvdGVzIGlzIGNhbGxlZCAmIzgyMjA7dGV4dCYj ODIyMTs6PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0 O3R4cDpzbWRfcmFuZG9tX3RleHQgdHlwZT0mcXVvdDtkYXRhYmFzZSZxdW90OwogICAgIHNv dXJjZT0mcXVvdDtxdW90ZXN8dGV4dCZxdW90OyZndDsKICAmbHQ7ZGl2IGNsYXNzPSZxdW90 O3FvdGQmcXVvdDsmZ3Q7UXVvdGUgb2YgdGhlIGRheTogJmx0O2JyIC8mZ3Q7e3NtZF9ybmRf dHh0fSZsdDsvZGl2Jmd0OwombHQ7L3R4cDpzbWRfcmFuZG9tX3RleHQmZ3Q7CjwvY29kZT48 L3ByZT4KCgk8aDMgaWQ9ImVnMiI+RXhhbXBsZSAyOiBGaXZlIHJhbmRvbSBjb21tZW50czwv aDM+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7dHhwOnNt ZF9yYW5kb21fdGV4dCB0eXBlPSZxdW90O2RhdGFiYXNlJnF1b3Q7CiAgICAgc291cmNlPSZx dW90O3R4cF9kaXNjdXNzfG1lc3NhZ2UsbmFtZSZxdW90OyBsaW1pdD0mcXVvdDs1JnF1b3Q7 CiAgICAgd3JhcHRhZz0mcXVvdDt1bCZxdW90OyBicmVhaz0mcXVvdDtsaSZxdW90OyZndDsK ICAgJmx0O3AmZ3Q7Jmx0O2NpdGUmZ3Q7e3NtZF9ybmRfdHh0X25hbWV9Jmx0Oy9jaXRlJmd0 OyB3cm90ZTombHQ7L3AmZ3Q7CiAgICZsdDtibG9ja3F1b3RlJmd0OwogICB7c21kX3JuZF90 eHRfbWVzc2FnZX0KICAgJmx0Oy9ibG9ja3F1b3RlJmd0OwombHQ7L3R4cDpzbWRfcmFuZG9t X3RleHQmZ3Q7CjwvY29kZT48L3ByZT4KCgk8aDMgaWQ9ImVnMyI+RXhhbXBsZSAzOiBUb3Ag MTAgd29yZHM8L2gzPgoKCTxwPlRvcCB0ZW4gcmFuZG9tIHNpbGx5IHdvcmRzIGZyb20gYSBs aXN0IGluIGEgZmlsZSBpbiB0aGUgdGV4dHBhdHRlcm4gcm9vdCBmb2xkZXIsIGNvdW50aW5n IGRvd24gZnJvbSAxMCB0byAxLiBFYWNoIHdvcmQgbXVzdCBiZSBvbiBhIHNlcGFyYXRlIHJv dyBvZiB0aGUgZmlsZSB1bmxlc3MgeW91IGFsdGVyIHRoZSA8Y29kZT5maWxlX2RlbGltPC9j b2RlPiBhdHRyaWJ1dGU7IGluIHdoaWNoIGNhc2UgdGhlIHdvcmRzIG11c3QgYWxsIGFwcGVh ciBvbiB0aGUgZmlyc3Qgcm93IG9mIHRoZSBmaWxlLiBJZiB0aGVyZSBhcmVuJiM4MjE3O3Qg MTAgaXRlbXMgaW4gdGhlIGZpbGUsIHRoZSBjb3VudCBiZWdpbnMgZnJvbSBob3dldmVyIGhp Z2ggaXQgY2FuIGdvLjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxv Y2siPiZsdDt0eHA6c21kX3JhbmRvbV90ZXh0IHR5cGU9JnF1b3Q7ZmlsZSZxdW90OwogICAg IHNvdXJjZT0mcXVvdDt3b3Jkcy50eHQmcXVvdDsgbGltaXQ9JnF1b3Q7MTAmcXVvdDsKICAg ICBmb3JtPSZxdW90O3dvcmRvdXQmcXVvdDsgY291bnQ9JnF1b3Q7ZG93biZxdW90OyAvJmd0 Owo8L2NvZGU+PC9wcmU+CgoJPHA+YW5kIGluIGZvcm0gPGNvZGU+d29yZG91dDwvY29kZT46 PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+I3tzbWRfcm5k X3R4dF90aGlzcm93fSA6IHtzbWRfcm5kX3R4dH0gJmx0O2JyIC8mZ3Q7CjwvY29kZT48L3By ZT4KCgk8aDMgaWQ9ImVnNCI+RXhhbXBsZSA0OiBSYW5kb20gZS1tYWlsIGFkZHJlc3M8L2gz PgoKCTxwPlVzZSBhIDxjb2RlPiZsdDt0eHA6dmFyaWFibGUgLyZndDs8L2NvZGU+IHRvIGhv bGQgYSBsaXN0IG9mIHJhbmRvbSBlLW1haWwgYWRkcmVzc2VzIGZyb20gd2hpY2ggb25lIHdp bGwgYmUgc2VsZWN0ZWQgdG8gYmUgc2VudCB2aWEgYSB6ZW1fY29udGFjdF9yZWJvcm4gZm9y bTo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7dHhw OnZhcmlhYmxlIG5hbWU9JnF1b3Q7ZW1haWxzJnF1b3Q7CiAgICAgdmFsdWU9JnF1b3Q7QWxk b3VzLkh1eGxleXxXaWxsaWFtLlNoYWtlc3BlYXJlfEpvaG4uQmV0amVtYW4mcXVvdDsgLyZn dDsKJmx0O3R4cDp6ZW1fY29udGFjdAogICAgIHRvPSYjMzk7Jmx0O3R4cDpzbWRfcmFuZG9t X3RleHQgdHlwZT0mcXVvdDt0eHB2YXImcXVvdDsKICAgICBzb3VyY2U9JnF1b3Q7ZW1haWxz JnF1b3Q7IC8mZ3Q7QHdyaXRlcnMuY29tJiMzOTsmZ3Q7CiAgLy8gT3RoZXIgemVtX2NvbnRh Y3Qgb3B0aW9ucwombHQ7L3R4cDp6ZW1fY29udGFjdCZndDsKPC9jb2RlPjwvcHJlPgoKCTxo MyBpZD0iZWc1Ij5FeGFtcGxlIDU6IFJhbmRvbSBpbWFnZSBzZWxlY3Rpb248L2gzPgoKCTxw PkluZGlyZWN0bHksIG5vdCBqdXN0IGZvciB0ZXh0ISBDaG9vc2UgdHdvIHJhbmRvbSBpbWFn ZSBJRHMgZnJvbSBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IGdpdmVuIGluIHRoZSBjdXN0b20g ZmllbGQgbGFiZWxsZWQgJiM4MjIwO215X2ltYWdlcyYjODIyMTsgYW5kIGRpc3BsYXkgdGhl bSB2aWEgdGhlIGJ1aWx0LWluIDxjb2RlPiZsdDt0eHA6aW1hZ2UgLyZndDs8L2NvZGU+IHRh Zy48L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7dHhw OnNtZF9yYW5kb21fdGV4dCB0eXBlPSZxdW90O2ZpZWxkJnF1b3Q7CiAgICAgc291cmNlPSZx dW90O215X2ltYWdlcyZxdW90OyBsaW1pdD0mcXVvdDsyJnF1b3Q7IGRlbGltPSZxdW90Oywm cXVvdDsmZ3Q7CiAgJmx0O3R4cDppbWFnZSBpZD0mcXVvdDt7c21kX3JuZF90eHR9JnF1b3Q7 IC8mZ3Q7CiZsdDsvdHhwOnNtZF9yYW5kb21fdGV4dCZndDsKPC9jb2RlPjwvcHJlPgoKCTxo MyBpZD0iZWc2Ij5FeGFtcGxlIDY6IEl0ZW0gZnJvbSBhIGZhY3QgZmlsZTwvaDM+CgoJPHA+ QWRkIHRoaXMgdG8geW91ciA8Y29kZT5maWxlczwvY29kZT4gZm9ybSB0byBkaXNwbGF5IGEg cmFuZG9tIGZhY3QgYWJvdXQgZWFjaCBmaWxlIGZyb20gYSBwaXBlLWRlbG1paXRlZCBsaXN0 IGRlZmluZWQgaW4gdGhlIGZpbGUmIzgyMTc7cyA8Y29kZT5kZXNjcmlwdGlvbjwvY29kZT4g ZmllbGQ6PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0 O3R4cDpzbWRfcmFuZG9tX3RleHQgdHlwZT0mcXVvdDtmaWVsZCZxdW90OwogICAgIHNvdXJj ZT0mcXVvdDtkZXNjcmlwdGlvbiZxdW90OyZndDsKJmx0O2JyIC8mZ3Q7RkFDVDoge3NtZF9y bmRfdHh0fQombHQ7L3R4cDpzbWRfcmFuZG9tX3RleHQmZ3Q7CjwvY29kZT48L3ByZT4KCgk8 aDMgaWQ9ImVnNyI+RXhhbXBsZSA3OiBLZWVwaW5nIGl0ZW1zIGluIHN5bmM8L2gzPgoKCTxw PlNheSB5b3UgaGF2ZSBhIHNldCBvZiB0eHA6dmFyaWFibGVzIHRoYXQgY29udGFpbiBsaXN0 cyBvZiByZWxhdGVkIHRoaW5nczo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xh c3M9ImJsb2NrIj4mbHQ7dHhwOnZhcmlhYmxlIG5hbWU9JnF1b3Q7aHBfZm9yZW5hbWUmcXVv dDsmZ3Q7CiAgSGFycnkgfCBIZXJtaW9uZSB8IFJvbiB8IFNldmVydXMKJmx0Oy90eHA6dmFy aWFibGUmZ3Q7CiZsdDt0eHA6dmFyaWFibGUgbmFtZT0mcXVvdDtocF9zdXJuYW1lJnF1b3Q7 Jmd0OwogIFBvdHRlciB8IEdyYW5nZXIgfCBXZWFzbGV5IHwgU25hcGUKJmx0Oy90eHA6dmFy aWFibGUmZ3Q7CiZsdDt0eHA6dmFyaWFibGUgbmFtZT0mcXVvdDtocF9hZ2UmcXVvdDsmZ3Q7 CiAgMTQgfCAxNiB8IDE1IHwgMTMwCiZsdDsvdHhwOnZhcmlhYmxlJmd0Owo8L2NvZGU+PC9w cmU+CgoJPHA+SG93IHdvdWxkIHlvdSBlbnN1cmUgeW91IHJldHJpZXZlZCB0aGUgJiM4MjE2 O2NvbHVtbiYjODIxNzsgdGhhdCBjb3JyZXNwb25kcyB3aXRoIHRoZSBjb3JyZWN0IHZhbHVl IGZvciBlYWNoIGNoYXJhY3Rlcj8gTGlrZSB0aGlzOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2Nr Ij48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDt0eHA6c21kX3JhbmRvbV90ZXh0IHR5cGU9JnF1 b3Q7dHhwdmFyJnF1b3Q7CiAgICAgc291cmNlPSZxdW90O2hwX2ZvcmVuYW1lJnF1b3Q7IGxp bWl0PSZxdW90OzImcXVvdDsgd3JhcHRhZz0mcXVvdDt1bCZxdW90OwogICAgIGJyZWFrPSZx dW90O2xpJnF1b3Q7Jmd0OwogICBDaGFyYWN0ZXI6IHtzbWRfcm5kX3R4dH0KICAgJmx0O3R4 cDpzbWRfcmFuZG9tX3RleHQgdHlwZT0mcXVvdDt0eHB2YXImcXVvdDsKICAgICBzb3VyY2U9 JnF1b3Q7aHBfc3VybmFtZSZxdW90OwogICAgIGl0ZW1fbnVtPSZxdW90O3tzbWRfcm5kX3R4 dF9jaG9zZW5faXRlbX0mcXVvdDsgLyZndDsKICAgaXMgJmx0O3R4cDpzbWRfcmFuZG9tX3Rl eHQgdHlwZT0mcXVvdDt0eHB2YXImcXVvdDsKICAgICBzb3VyY2U9JnF1b3Q7aHBfYWdlJnF1 b3Q7CiAgICAgaXRlbV9udW09JnF1b3Q7e3NtZF9ybmRfdHh0X2Nob3Nlbl9pdGVtfSZxdW90 OyAvJmd0OwogICB5ZWFycyBvbGQKJmx0Oy90eHA6c21kX3JhbmRvbV90ZXh0Jmd0Owo8L2Nv ZGU+PC9wcmU+CgoJPHA+QXMgeW91IGNhbiBzZWUsIHRoZSBmaXJzdCBzbWRfcmFuZG9tX3Rl eHQgY2hvb3NlcyB0d28gcmFuZG9tIGNoYXJhY3RlciBmb3JlbmFtZXMgZnJvbSB0aGUgZmly c3QgdHhwOnZhcmlhYmxlLiBUaGVuLCBmb3IgZWFjaCBvZiB0aGUgY2hvc2VuIGZvcmVuYW1l cywgdGhlIHNlY29uZCBhbmQgdGhpcmQgKGlubmVyKSBzbWRfcmFuZG9tX3RleHQgdGFncyBn byBhbmQgZmV0Y2ggPGVtPnRoZSBzYW1lIGNvbHVtbjwvZW0+IGFzIHRoZSBvbmUganVzdCBj aG9zZW4uIEl0IHVzZXMgPGNvZGU+e3NtZF9ybmRfdHh0X2Nob3Nlbl9pdGVtfTwvY29kZT4g dG8gZm9yY2UgdGhlIHBsdWdpbiB0byByZWFkIHRoZSBjb3JyZWN0IGNvbHVtbi48L3A+CgoJ PGgyPkNoYW5nZWxvZzwvaDI+CgoJPHVsPgoJCTxsaT4xMCBPY3QgMDggfCAwLjEgfCBJbml0 aWFsIHJlbGVhc2U8L2xpPgoJCTxsaT4xNyBNYXIgMDkgfCAwLjExIHwgQWRkZWQgPGNvZGU+ dHJpbTwvY29kZT4gYW5kIDxjb2RlPmVzY2FwZTwvY29kZT48L2xpPgoJCTxsaT4yNiBKdWwg MDkgfCAwLjEyIHwgQWRkZWQgPGNvZGU+aXRlbV9udW08L2NvZGU+LCA8Y29kZT5zaHVmZmxl PC9jb2RlPiBhbmQgdGhlIHJlcGxhY2VtZW50IHRhZyA8Y29kZT57c21kX3JuZF90eHRfY2hv c2VuX2l0ZW19PC9jb2RlPjwvbGk+CgkJPGxpPjI4IEZlYiAxMSB8IDAuMTMgfCBQZXJtaXR0 ZWQgbXVsdGlwbGUgZGF0YWJhc2UgY29sdW1ucyB0byBiZSBzZWxlY3RlZCBpbiBvbmUgcGx1 Z2luIGNhbGwgKHRoYW5rcyBnaWFtcGFibG8pIDsgYWRkZWQgPGNvZGU+dmFyX3ByZWZpeDwv Y29kZT48L2xpPgoJCTxsaT4wMyBNYXkgMTEgfCAwLjE0IHwgQWRkZWQgPGNvZGU+ZmlsZV9k ZWxpbV90eXBlPC9jb2RlPiBhbmQgcGVybWl0dGVkIHJlZ2V4ZXMgaW4gPGNvZGU+ZmlsZV9k ZWxpbTwvY29kZT4gKHRoYW5rcyBNeU90aGVIZWRnZUZveCk8L2xpPgoJPC91bD4KCjwvZGl2 Pgo8IS0tICoqKiBCRUdJTiBQTFVHSU4gQ1NTICoqKiAtLT4KPHN0eWxlIHR5cGU9InRleHQv Y3NzIj4KI3NtZF9oZWxwIHsgbGluZS1oZWlnaHQ6MS41IDt9CiNzbWRfaGVscCBjb2RlIHsg Zm9udC13ZWlnaHQ6Ym9sZDsgZm9udDogMTA1JS8xMzAlICJDb3VyaWVyIE5ldyIsIGNvdXJp ZXIsIG1vbm9zcGFjZTsgYmFja2dyb3VuZC1jb2xvcjogI2YwZTY4YzsgY29sb3I6IzMzMzsg fQojc21kX2hlbHAgY29kZS5ibG9jayB7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgYm9yZGVyOjFw eCBkb3R0ZWQgIzk5OTsgZGlzcGxheTpibG9jazsgbWFyZ2luOjEwcHggMTBweCAyMHB4OyBw YWRkaW5nOjEwcHg7IH0KI3NtZF9oZWxwIGgxIHsgZm9udDogMjBweCBHZW9yZ2lhLCBzYW5z LXNlcmlmOyBtYXJnaW46IDA7IHRleHQtYWxpZ246IGNlbnRlcjsgfQojc21kX2hlbHAgaDIg eyBib3JkZXItYm90dG9tOiAxcHggc29saWQgYmxhY2s7IHBhZGRpbmc6MTBweCAwIDA7IGZv bnQ6IDE3cHggR2VvcmdpYSwgc2Fucy1zZXJpZjsgfQojc21kX2hlbHAgaDMgeyBmb250OiBi b2xkIDEycHggQXJpYWwsIHNhbnMtc2VyaWY7IGxldHRlci1zcGFjaW5nOiAxcHg7IG1hcmdp bjogMjBweCAwIDA7IHRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7IH0KI3NtZF9oZWxwIGg0 IHsgZm9udDogYm9sZCAxMXB4IEFyaWFsLCBzYW5zLXNlcmlmOyBsZXR0ZXItc3BhY2luZzog MXB4OyBtYXJnaW46IDEwcHggMCAwOyB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOyB9CiNz bWRfaGVscCAuYXRubSB7IGZvbnQtd2VpZ2h0OmJvbGQ7IH0KI3NtZF9oZWxwIC5tYW5kIHsg Ym9yZGVyOjFweCBkb3R0ZWQgIzk5OTsgfQojc21kX2hlbHAgdGFibGUgeyB3aWR0aDo5MCU7 IHRleHQtYWxpZ246Y2VudGVyOyBwYWRkaW5nLWJvdHRvbToxZW07IH0KI3NtZF9oZWxwIHRk LCAjc21kX2hlbHAgdGggeyBib3JkZXI6MXB4IHNvbGlkICM5OTk7IHBhZGRpbmc6LjVlbSAw OyB9CiNzbWRfaGVscCB1bCB7IGxpc3Qtc3R5bGUtdHlwZTpzcXVhcmU7IH0KI3NtZF9oZWxw IC5pbXBvcnRhbnQgeyBjb2xvcjpyZWQ7IH0KI3NtZF9oZWxwIGxpIHsgbWFyZ2luOjVweCAy MHB4IDVweCAzMHB4OyB9CiNzbWRfaGVscCAuYnJlYWsgeyBtYXJnaW4tdG9wOjVweDsgfQo8 L3N0eWxlPgo8IS0tICoqKiBFTkQgUExVR0lOIENTUyAqKiogLS0+CiI7czozOiJtZDUiO3M6 MzI6Ijk3ZmQzYTg4NGU0OWFmN2U3ZWZkZjE4Mjc3ZjkzNGIxIjt9