f0VMRgEBAQAAAAAAAAAAAAEACAABAAAAAAAAAAAAAABwhgAABxAAUDQAAAAAACgABQACAHYxOwpwYWNrYWdlIGNnaTsKcGtncGF0aCBuZXQvaHR0cC9jZ2k7CnByaW9yaXR5IDEzOwppbXBvcnQgYnVmaW8gYnVmaW8gImJ1ZmlvIjsKaW1wb3J0IHRscyBjcnlwdG8vdGxzICJjcnlwdG8vdGxzIjsKaW1wb3J0IGVycm9ycyBlcnJvcnMgImVycm9ycyI7CmltcG9ydCBmbXQgZm10ICJmbXQiOwppbXBvcnQgaW8gaW8gImlvIjsKaW1wb3J0IGlvdXRpbCBpby9pb3V0aWwgImlvL2lvdXRpbCI7CmltcG9ydCBsb2cgbG9nICJsb2ciOwppbXBvcnQgbmV0IG5ldCAibmV0IjsKaW1wb3J0IGh0dHAgbmV0L2h0dHAgIm5ldC9odHRwIjsKaW1wb3J0IHVybCBuZXQvdXJsICJuZXQvdXJsIjsKaW1wb3J0IG9zIG9zICJvcyI7CmltcG9ydCBleGVjIG9zL2V4ZWMgIm9zL2V4ZWMiOwppbXBvcnQgZmlsZXBhdGggcGF0aC9maWxlcGF0aCAicGF0aC9maWxlcGF0aCI7CmltcG9ydCByZWdleHAgcmVnZXhwICJyZWdleHAiOwppbXBvcnQgcnVudGltZSBydW50aW1lICJydW50aW1lIjsKaW1wb3J0IHN0cmNvbnYgc3RyY29udiAic3RyY29udiI7CmltcG9ydCBzdHJpbmdzIHN0cmluZ3MgInN0cmluZ3MiOwppbml0IGNnaSBuZXRfaHR0cF9jZ2kuLmltcG9ydCAxMyBtYXRoIG1hdGguLmltcG9ydCAxIHJ1bnRpbWUgcnVudGltZS4uaW1wb3J0IDEgdW5pY29kZSB1bmljb2RlLi5pbXBvcnQgMSBzdHJjb252IHN0cmNvbnYuLmltcG9ydCAyIHN5bmMgc3luYy4uaW1wb3J0IDIgaW8gaW8uLmltcG9ydCAzIHJhbmQgbWF0aF9yYW5kLi5pbXBvcnQgMyByZWZsZWN0IHJlZmxlY3QuLmltcG9ydCAzIHN5c2NhbGwgc3lzY2FsbC4uaW1wb3J0IDMgYmluYXJ5IGVuY29kaW5nX2JpbmFyeS4uaW1wb3J0IDQgYnl0ZXMgYnl0ZXMuLmltcG9ydCA0IGNpcGhlciBjcnlwdG9fY2lwaGVyLi5pbXBvcnQgNCBzeXNjYWxsIGludGVybmFsX3N5c2NhbGwuLmltcG9ydCA0IHRpbWUgdGltZS4uaW1wb3J0IDQgYmFzZTY0IGVuY29kaW5nX2Jhc2U2NC4uaW1wb3J0IDUgYnVmaW8gYnVmaW8uLmltcG9ydCA1IGNyYzMyIGhhc2hfY3JjMzIuLmltcG9ydCA1IGNyeXB0byBjcnlwdG8uLmltcG9ydCA1IGRlcyBjcnlwdG9fZGVzLi5pbXBvcnQgNSBvcyBvcy4uaW1wb3J0IDUgcGF0aCBwYXRoLi5pbXBvcnQgNSBzeW50YXggcmVnZXhwX3N5bnRheC4uaW1wb3J0IDUgZmlsZXBhdGggcGF0aF9maWxlcGF0aC4uaW1wb3J0IDYgZm10IGZtdC4uaW1wb3J0IDYgbWQ1IGNyeXB0b19tZDUuLmltcG9ydCA2IG5ldCBuZXQuLmltcG9ydCA2IHBlbSBlbmNvZGluZ19wZW0uLmltcG9ydCA2IHJlZ2V4cCByZWdleHAuLmltcG9ydCA2IHNoYTEgY3J5cHRvX3NoYTEuLmltcG9ydCA2IHNoYTI1NiBjcnlwdG9fc2hhMjU2Li5pbXBvcnQgNiBzaGE1MTIgY3J5cHRvX3NoYTUxMi4uaW1wb3J0IDYgYmlnIG1hdGhfYmlnLi5pbXBvcnQgNyBleGVjIG9zX2V4ZWMuLmltcG9ydCA3IGZsYXRlIGNvbXByZXNzX2ZsYXRlLi5pbXBvcnQgNyBoZXggZW5jb2RpbmdfaGV4Li5pbXBvcnQgNyBpbnRlcm5hbCBuZXRfaHR0cF9pbnRlcm5hbC4uaW1wb3J0IDcgaW91dGlsIGlvX2lvdXRpbC4uaW1wb3J0IDcgbG9nIGxvZy4uaW1wb3J0IDcgbWltZSBtaW1lLi5pbXBvcnQgNyBhc24xIGVuY29kaW5nX2FzbjEuLmltcG9ydCA4IGRzYSBjcnlwdG9fZHNhLi5pbXBvcnQgOCBlbGxpcHRpYyBjcnlwdG9fZWxsaXB0aWMuLmltcG9ydCA4IGd6aXAgY29tcHJlc3NfZ3ppcC4uaW1wb3J0IDggcmFuZCBjcnlwdG9fcmFuZC4uaW1wb3J0IDggdGV4dHByb3RvIG5ldF90ZXh0cHJvdG8uLmltcG9ydCA4IGVjZHNhIGNyeXB0b19lY2RzYS4uaW1wb3J0IDkgbXVsdGlwYXJ0IG1pbWVfbXVsdGlwYXJ0Li5pbXBvcnQgOSBwa2l4IGNyeXB0b194NTA5X3BraXguLmltcG9ydCA5IHJzYSBjcnlwdG9fcnNhLi5pbXBvcnQgOSB4NTA5IGNyeXB0b194NTA5Li5pbXBvcnQgMTAgdGxzIGNyeXB0b190bHMuLmltcG9ydCAxMSBodHRwIG5ldF9odHRwLi5pbXBvcnQgMTI7CnR5cGUgPHR5cGUgMSAiSGFuZGxlciIgPHR5cGUgMiBzdHJ1Y3QgeyBQYXRoIDx0eXBlIC0xNj47IFJvb3QgPHR5cGUgLTE2PjsgRGlyIDx0eXBlIC0xNj47IEVudiA8dHlwZSAzIFtdIDx0eXBlIC0xNj4+OyBJbmhlcml0RW52IDx0eXBlIDQgW10gPHR5cGUgLTE2Pj47IExvZ2dlciA8dHlwZSA1ICo8dHlwZSA2ICJsb2cuTG9nZ2VyIiA8dHlwZSA3IHN0cnVjdCB7IC5sb2cubXUgPHR5cGUgOCAic3luYy5NdXRleCIgInN5bmMiIDx0eXBlIDkgc3RydWN0IHsgLnN5bmMuc3RhdGUgPHR5cGUgLTM+OyAuc3luYy5zZW1hIDx0eXBlIC03PjsgfT4KIGZ1bmMgKG0gPHR5cGUgMTAgKjx0eXBlIDg+PikgVW5sb2NrICgpOwogZnVuYyAobSA8dHlwZSAxMD4pIExvY2sgKCk7Cj47IC5sb2cucHJlZml4IDx0eXBlIC0xNj47IC5sb2cuZmxhZyA8dHlwZSAtMTE+OyAubG9nLm91dCA8dHlwZSAxMSAiaW8uV3JpdGVyIiA8dHlwZSAxMiBpbnRlcmZhY2UgeyBXcml0ZSAocCA8dHlwZSAxMyBbXSA8dHlwZSAtMjA+PikgKG4gPHR5cGUgLTExPiwgZXJyIDx0eXBlIC0xOT4pOyB9Pj47IC5sb2cuYnVmIDx0eXBlIDE0IFtdIDx0eXBlIC0yMD4+OyB9PgogZnVuYyAobCA8dHlwZSAxNSAqPHR5cGUgNj4+KSBQcmludGYgKGZvcm1hdCA8dHlwZSAtMTY+LCB2IC4uLjx0eXBlIDE2IGludGVyZmFjZSB7IH0+KTsKIGZ1bmMgKGwgPHR5cGUgMTU+KSBGYXRhbCAodiAuLi48dHlwZSAxNyBpbnRlcmZhY2UgeyB9Pik7CiBmdW5jIChsIDx0eXBlIDE1PikgUHJpbnRsbiAodiAuLi48dHlwZSAxOCBpbnRlcmZhY2UgeyB9Pik7CiBmdW5jIChsIDx0eXBlIDE1PikgUHJlZml4ICgpIDx0eXBlIC0xNj47CiBmdW5jIChsIDx0eXBlIDE1PikgUHJpbnQgKHYgLi4uPHR5cGUgMTkgaW50ZXJmYWNlIHsgfT4pOwogZnVuYyAobCA8dHlwZSAxNT4pIFNldFByZWZpeCAocHJlZml4IDx0eXBlIC0xNj4pOwogZnVuYyAobCA8dHlwZSAxNT4pIE91dHB1dCAoY2FsbGRlcHRoIDx0eXBlIC0xMT4sIHMgPHR5cGUgLTE2PikgPHR5cGUgLTE5PjsKIGZ1bmMgKGwgPHR5cGUgMTU+KSBQYW5pY2YgKGZvcm1hdCA8dHlwZSAtMTY+LCB2IC4uLjx0eXBlIDIwIGludGVyZmFjZSB7IH0+KTsKIGZ1bmMgKGwgPHR5cGUgMTU+KSAubG9nLmZvcm1hdEhlYWRlciAoYnVmIDx0eXBlIDIxICo8dHlwZSAyMiBbXSA8dHlwZSAtMjA+Pj4sIHQgPHR5cGUgMjMgInRpbWUuVGltZSIgInRpbWUiIDx0eXBlIDI0IHN0cnVjdCB7IC50aW1lLnNlYyA8dHlwZSAtND47IC50aW1lLm5zZWMgPHR5cGUgLTM+OyAudGltZS5sb2MgPHR5cGUgMjUgKjx0eXBlIDI2ICJ0aW1lLkxvY2F0aW9uIiA8dHlwZSAyNyBzdHJ1Y3QgeyAudGltZS5uYW1lIDx0eXBlIC0xNj47IC50aW1lLnpvbmUgPHR5cGUgMjggW10gPHR5cGUgMjkgIi50aW1lLnpvbmUiIDx0eXBlIDMwIHN0cnVjdCB7IC50aW1lLm5hbWUgPHR5cGUgLTE2PjsgLnRpbWUub2Zmc2V0IDx0eXBlIC0xMT47IC50aW1lLmlzRFNUIDx0eXBlIC0xNT47IH0+Pj47IC50aW1lLnR4IDx0eXBlIDMxIFtdIDx0eXBlIDMyICIudGltZS56b25lVHJhbnMiIDx0eXBlIDMzIHN0cnVjdCB7IC50aW1lLndoZW4gPHR5cGUgLTQ+OyAudGltZS5pbmRleCA8dHlwZSAtNT47IC50aW1lLmlzc3RkIDx0eXBlIC0xNT47IC50aW1lLmlzdXRjIDx0eXBlIC0xNT47IH0+Pj47IC50aW1lLmNhY2hlU3RhcnQgPHR5cGUgLTQ+OyAudGltZS5jYWNoZUVuZCA8dHlwZSAtND47IC50aW1lLmNhY2hlWm9uZSA8dHlwZSAzNCAqPHR5cGUgMjk+PjsgfT4KIGZ1bmMgKGwgPHR5cGUgMzUgKjx0eXBlIDI2Pj4pIC50aW1lLmZpcnN0Wm9uZVVzZWQgKCkgPHR5cGUgLTE1PjsKIGZ1bmMgKGwgPHR5cGUgMzU+KSAudGltZS5sb29rdXAgKHNlYyA8dHlwZSAtND4pIChuYW1lIDx0eXBlIC0xNj4sIG9mZnNldCA8dHlwZSAtMTE+LCBpc0RTVCA8dHlwZSAtMTU+LCBzdGFydCA8dHlwZSAtND4sIGVuZCA8dHlwZSAtND4pOwogZnVuYyAobCA8dHlwZSAzNT4pIC50aW1lLmxvb2t1cE5hbWUgKG5hbWUgPHR5cGUgLTE2PiwgdW5peCA8dHlwZSAtND4pIChvZmZzZXQgPHR5cGUgLTExPiwgaXNEU1QgPHR5cGUgLTE1Piwgb2sgPHR5cGUgLTE1Pik7CiBmdW5jIChsIDx0eXBlIDM1PikgU3RyaW5nICgpIDx0eXBlIC0xNj47CiBmdW5jIChsIDx0eXBlIDM1PikgLnRpbWUuZ2V0ICgpIDx0eXBlIDM1PjsKIGZ1bmMgKGwgPHR5cGUgMzU+KSAudGltZS5sb29rdXBGaXJzdFpvbmUgKCkgPHR5cGUgLTExPjsKPj47IH0+CiBmdW5jICh0IDx0eXBlIDIzPikgQWZ0ZXIgKHUgPHR5cGUgMjM+KSA8dHlwZSAtMTU+OwogZnVuYyAodCA8dHlwZSAyMz4pIE1hcnNoYWxUZXh0ICgpICg/IDx0eXBlIDM2IFtdIDx0eXBlIC0yMD4+LCA/IDx0eXBlIC0xOT4pOwogZnVuYyAodCA8dHlwZSAyMz4pIERhdGUgKCkgKHllYXIgPHR5cGUgLTExPiwgbW9udGggPHR5cGUgMzcgInRpbWUuTW9udGgiIDx0eXBlIC0xMT4KIGZ1bmMgKG0gPHR5cGUgMzc+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKPiwgZGF5IDx0eXBlIC0xMT4pOwogZnVuYyAodCA8dHlwZSAyMz4pIC50aW1lLmFicyAoKSA8dHlwZSAtOD47CiBmdW5jICh0IDx0eXBlIDIzPikgV2Vla2RheSAoKSA8dHlwZSAzOCAidGltZS5XZWVrZGF5IiA8dHlwZSAtMTE+CiBmdW5jIChkIDx0eXBlIDM4PikgU3RyaW5nICgpIDx0eXBlIC0xNj47Cj47CiBmdW5jICh0IDx0eXBlIDIzPikgTmFub3NlY29uZCAoKSA8dHlwZSAtMTE+OwogZnVuYyAodCA8dHlwZSAzOSAqPHR5cGUgMjM+PikgR29iRGVjb2RlIChkYXRhIDx0eXBlIDQwIFtdIDx0eXBlIC0yMD4+KSA8dHlwZSAtMTk+OwogZnVuYyAodCA8dHlwZSAyMz4pIEluIChsb2MgPHR5cGUgMjU+KSA8dHlwZSAyMz47CiBmdW5jICh0IDx0eXBlIDIzPikgTG9jYWwgKCkgPHR5cGUgMjM+OwogZnVuYyAodCA8dHlwZSAyMz4pIE1vbnRoICgpIDx0eXBlIDM3PjsKIGZ1bmMgKHQgPHR5cGUgMjM+KSBIb3VyICgpIDx0eXBlIC0xMT47CiBmdW5jICh0IDx0eXBlIDIzPikgTWFyc2hhbEJpbmFyeSAoKSAoPyA8dHlwZSA0MSBbXSA8dHlwZSAtMjA+PiwgPyA8dHlwZSAtMTk+KTsKIGZ1bmMgKHQgPHR5cGUgMjM+KSBVbml4TmFubyAoKSA8dHlwZSAtND47CiBmdW5jICh0IDx0eXBlIDIzPikgRXF1YWwgKHUgPHR5cGUgMjM+KSA8dHlwZSAtMTU+OwogZnVuYyAodCA8dHlwZSAyMz4pIEZvcm1hdCAobGF5b3V0IDx0eXBlIC0xNj4pIDx0eXBlIC0xNj47CiBmdW5jICh0IDx0eXBlIDIzPikgQWRkRGF0ZSAoeWVhcnMgPHR5cGUgLTExPiwgbW9udGhzIDx0eXBlIC0xMT4sIGRheXMgPHR5cGUgLTExPikgPHR5cGUgMjM+OwogZnVuYyAodCA8dHlwZSAyMz4pIFpvbmUgKCkgKG5hbWUgPHR5cGUgLTE2Piwgb2Zmc2V0IDx0eXBlIC0xMT4pOwogZnVuYyAodCA8dHlwZSAyMz4pIERheSAoKSA8dHlwZSAtMTE+OwogZnVuYyAodCA8dHlwZSAyMz4pIENsb2NrICgpIChob3VyIDx0eXBlIC0xMT4sIG1pbiA8dHlwZSAtMTE+LCBzZWMgPHR5cGUgLTExPik7CiBmdW5jICh0IDx0eXBlIDIzPikgTWFyc2hhbEpTT04gKCkgKD8gPHR5cGUgNDIgW10gPHR5cGUgLTIwPj4sID8gPHR5cGUgLTE5Pik7CiBmdW5jICh0IDx0eXBlIDIzPikgVVRDICgpIDx0eXBlIDIzPjsKIGZ1bmMgKHQgPHR5cGUgMjM+KSAudGltZS5kYXRlIChmdWxsIDx0eXBlIC0xNT4pICh5ZWFyIDx0eXBlIC0xMT4sIG1vbnRoIDx0eXBlIDM3PiwgZGF5IDx0eXBlIC0xMT4sIHlkYXkgPHR5cGUgLTExPik7CiBmdW5jICh0IDx0eXBlIDIzPikgSXNaZXJvICgpIDx0eXBlIC0xNT47CiBmdW5jICh0IDx0eXBlIDIzPikgQmVmb3JlICh1IDx0eXBlIDIzPikgPHR5cGUgLTE1PjsKIGZ1bmMgKHQgPHR5cGUgMjM+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKHQgPHR5cGUgMjM+KSBTZWNvbmQgKCkgPHR5cGUgLTExPjsKIGZ1bmMgKHQgPHR5cGUgMjM+KSBNaW51dGUgKCkgPHR5cGUgLTExPjsKIGZ1bmMgKHQgPHR5cGUgMjM+KSBTdWIgKHUgPHR5cGUgMjM+KSA8dHlwZSA0MyAidGltZS5EdXJhdGlvbiIgPHR5cGUgLTQ+CiBmdW5jIChkIDx0eXBlIDQzPikgU2Vjb25kcyAoKSA8dHlwZSAtMTA+OwogZnVuYyAoZCA8dHlwZSA0Mz4pIFN0cmluZyAoKSA8dHlwZSAtMTY+OwogZnVuYyAoZCA8dHlwZSA0Mz4pIE1pbnV0ZXMgKCkgPHR5cGUgLTEwPjsKIGZ1bmMgKGQgPHR5cGUgNDM+KSBIb3VycyAoKSA8dHlwZSAtMTA+OwogZnVuYyAoZCA8dHlwZSA0Mz4pIE5hbm9zZWNvbmRzICgpIDx0eXBlIC00PjsKPjsKIGZ1bmMgKHQgPHR5cGUgMjM+KSBSb3VuZCAoZCA8dHlwZSA0Mz4pIDx0eXBlIDIzPjsKIGZ1bmMgKHQgPHR5cGUgMjM+KSBVbml4ICgpIDx0eXBlIC00PjsKIGZ1bmMgKHQgPHR5cGUgMzk+KSBVbm1hcnNoYWxUZXh0IChkYXRhIDx0eXBlIDQ0IFtdIDx0eXBlIC0yMD4+KSAoZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAodCA8dHlwZSAyMz4pIEFkZCAoZCA8dHlwZSA0Mz4pIDx0eXBlIDIzPjsKIGZ1bmMgKHQgPHR5cGUgMjM+KSBUcnVuY2F0ZSAoZCA8dHlwZSA0Mz4pIDx0eXBlIDIzPjsKIGZ1bmMgKHQgPHR5cGUgMjM+KSBMb2NhdGlvbiAoKSA8dHlwZSAyNT47CiBmdW5jICh0IDx0eXBlIDIzPikgR29iRW5jb2RlICgpICg/IDx0eXBlIDQ1IFtdIDx0eXBlIC0yMD4+LCA/IDx0eXBlIC0xOT4pOwogZnVuYyAodCA8dHlwZSAzOT4pIFVubWFyc2hhbEJpbmFyeSAoZGF0YSA8dHlwZSA0NiBbXSA8dHlwZSAtMjA+PikgPHR5cGUgLTE5PjsKIGZ1bmMgKHQgPHR5cGUgMjM+KSBJU09XZWVrICgpICh5ZWFyIDx0eXBlIC0xMT4sIHdlZWsgPHR5cGUgLTExPik7CiBmdW5jICh0IDx0eXBlIDIzPikgLnRpbWUubG9jYWJzICgpIChuYW1lIDx0eXBlIC0xNj4sIG9mZnNldCA8dHlwZSAtMTE+LCBhYnMgPHR5cGUgLTg+KTsKIGZ1bmMgKHQgPHR5cGUgMjM+KSBZZWFyRGF5ICgpIDx0eXBlIC0xMT47CiBmdW5jICh0IDx0eXBlIDIzPikgWWVhciAoKSA8dHlwZSAtMTE+OwogZnVuYyAodCA8dHlwZSAzOT4pIFVubWFyc2hhbEpTT04gKGRhdGEgPHR5cGUgNDcgW10gPHR5cGUgLTIwPj4pIChlcnIgPHR5cGUgLTE5Pik7Cj4sIGZpbGUgPHR5cGUgLTE2PiwgbGluZSA8dHlwZSAtMTE+KTsKIGZ1bmMgKGwgPHR5cGUgMTU+KSBGYXRhbGxuICh2IC4uLjx0eXBlIDQ4IGludGVyZmFjZSB7IH0+KTsKIGZ1bmMgKGwgPHR5cGUgMTU+KSBTZXRGbGFncyAoZmxhZyA8dHlwZSAtMTE+KTsKIGZ1bmMgKGwgPHR5cGUgMTU+KSBQYW5pY2xuICh2IC4uLjx0eXBlIDQ5IGludGVyZmFjZSB7IH0+KTsKIGZ1bmMgKGwgPHR5cGUgMTU+KSBGbGFncyAoKSA8dHlwZSAtMTE+OwogZnVuYyAobCA8dHlwZSAxNT4pIFBhbmljICh2IC4uLjx0eXBlIDUwIGludGVyZmFjZSB7IH0+KTsKIGZ1bmMgKGwgPHR5cGUgMTU+KSBGYXRhbGYgKGZvcm1hdCA8dHlwZSAtMTY+LCB2IC4uLjx0eXBlIDUxIGludGVyZmFjZSB7IH0+KTsKPj47IEFyZ3MgPHR5cGUgNTIgW10gPHR5cGUgLTE2Pj47IFBhdGhMb2NhdGlvbkhhbmRsZXIgPHR5cGUgNTMgIm5ldC9odHRwLkhhbmRsZXIiIDx0eXBlIDU0IGludGVyZmFjZSB7IFNlcnZlSFRUUCAoPyA8dHlwZSA1NSAibmV0L2h0dHAuUmVzcG9uc2VXcml0ZXIiIDx0eXBlIDU2IGludGVyZmFjZSB7IEhlYWRlciAoKSA8dHlwZSA1NyAibmV0L2h0dHAuSGVhZGVyIiA8dHlwZSA1OCBtYXAgWzx0eXBlIC0xNj5dIDx0eXBlIDU5IFtdIDx0eXBlIC0xNj4+PgogZnVuYyAoaCA8dHlwZSA1Nz4pIEdldCAoa2V5IDx0eXBlIC0xNj4pIDx0eXBlIC0xNj47CiBmdW5jIChoIDx0eXBlIDU3PikgV3JpdGUgKHcgPHR5cGUgMTE+KSA8dHlwZSAtMTk+OwogZnVuYyAoaCA8dHlwZSA1Nz4pIC5uZXQvaHR0cC5nZXQgKGtleSA8dHlwZSAtMTY+KSA8dHlwZSAtMTY+OwogZnVuYyAoaCA8dHlwZSA1Nz4pIFdyaXRlU3Vic2V0ICh3IDx0eXBlIDExPiwgZXhjbHVkZSA8dHlwZSA2MCBtYXAgWzx0eXBlIC0xNj5dIDx0eXBlIC0xNT4+KSA8dHlwZSAtMTk+OwogZnVuYyAoaCA8dHlwZSA1Nz4pIFNldCAoa2V5IDx0eXBlIC0xNj4sIHZhbHVlIDx0eXBlIC0xNj4pOwogZnVuYyAoaCA8dHlwZSA1Nz4pIC5uZXQvaHR0cC5zb3J0ZWRLZXlWYWx1ZXMgKGV4Y2x1ZGUgPHR5cGUgNjEgbWFwIFs8dHlwZSAtMTY+XSA8dHlwZSAtMTU+PikgKGt2cyA8dHlwZSA2MiBbXSA8dHlwZSA2MyAiLm5ldC9odHRwLmtleVZhbHVlcyIgPHR5cGUgNjQgc3RydWN0IHsgLm5ldC9odHRwLmtleSA8dHlwZSAtMTY+OyAubmV0L2h0dHAudmFsdWVzIDx0eXBlIDY1IFtdIDx0eXBlIC0xNj4+OyB9Pj4+LCBocyA8dHlwZSA2NiAqPHR5cGUgNjcgIi5uZXQvaHR0cC5oZWFkZXJTb3J0ZXIiIDx0eXBlIDY4IHN0cnVjdCB7IC5uZXQvaHR0cC5rdnMgPHR5cGUgNjkgW10gPHR5cGUgNjM+PjsgfT4KIGZ1bmMgKHMgPHR5cGUgNzAgKjx0eXBlIDY3Pj4pIExlc3MgKGkgPHR5cGUgLTExPiwgaiA8dHlwZSAtMTE+KSA8dHlwZSAtMTU+OwogZnVuYyAocyA8dHlwZSA3MD4pIExlbiAoKSA8dHlwZSAtMTE+OwogZnVuYyAocyA8dHlwZSA3MD4pIFN3YXAgKGkgPHR5cGUgLTExPiwgaiA8dHlwZSAtMTE+KTsKPj4pOwogZnVuYyAoaCA8dHlwZSA1Nz4pIEFkZCAoa2V5IDx0eXBlIC0xNj4sIHZhbHVlIDx0eXBlIC0xNj4pOwogZnVuYyAoaCA8dHlwZSA1Nz4pIC5uZXQvaHR0cC5jbG9uZSAoKSA8dHlwZSA1Nz47CiBmdW5jIChoIDx0eXBlIDU3PikgRGVsIChrZXkgPHR5cGUgLTE2Pik7Cj47IFdyaXRlICg/IDx0eXBlIDcxIFtdIDx0eXBlIC0yMD4+KSAoPyA8dHlwZSAtMTE+LCA/IDx0eXBlIC0xOT4pOyBXcml0ZUhlYWRlciAoPyA8dHlwZSAtMTE+KTsgfT4+LCA/IDx0eXBlIDcyICo8dHlwZSA3MyAibmV0L2h0dHAuUmVxdWVzdCIgPHR5cGUgNzQgc3RydWN0IHsgTWV0aG9kIDx0eXBlIC0xNj47IFVSTCA8dHlwZSA3NSAqPHR5cGUgNzYgIm5ldC91cmwuVVJMIiA8dHlwZSA3NyBzdHJ1Y3QgeyBTY2hlbWUgPHR5cGUgLTE2PjsgT3BhcXVlIDx0eXBlIC0xNj47IFVzZXIgPHR5cGUgNzggKjx0eXBlIDc5ICJuZXQvdXJsLlVzZXJpbmZvIiA8dHlwZSA4MCBzdHJ1Y3QgeyAubmV0L3VybC51c2VybmFtZSA8dHlwZSAtMTY+OyAubmV0L3VybC5wYXNzd29yZCA8dHlwZSAtMTY+OyAubmV0L3VybC5wYXNzd29yZFNldCA8dHlwZSAtMTU+OyB9PgogZnVuYyAodSA8dHlwZSA4MSAqPHR5cGUgNzk+PikgVXNlcm5hbWUgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKHUgPHR5cGUgODE+KSBQYXNzd29yZCAoKSAoPyA8dHlwZSAtMTY+LCA/IDx0eXBlIC0xNT4pOwogZnVuYyAodSA8dHlwZSA4MT4pIFN0cmluZyAoKSA8dHlwZSAtMTY+Owo+PjsgSG9zdCA8dHlwZSAtMTY+OyBQYXRoIDx0eXBlIC0xNj47IFJhd1F1ZXJ5IDx0eXBlIC0xNj47IEZyYWdtZW50IDx0eXBlIC0xNj47IH0+CiBmdW5jICh1IDx0eXBlIDgyICo8dHlwZSA3Nj4+KSBJc0FicyAoKSA8dHlwZSAtMTU+OwogZnVuYyAodSA8dHlwZSA4Mj4pIFJlcXVlc3RVUkkgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKHUgPHR5cGUgODI+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKHUgPHR5cGUgODI+KSBSZXNvbHZlUmVmZXJlbmNlIChyZWYgPHR5cGUgODI+KSA8dHlwZSA4Mj47CiBmdW5jICh1IDx0eXBlIDgyPikgUXVlcnkgKCkgPHR5cGUgODMgIm5ldC91cmwuVmFsdWVzIiA8dHlwZSA4NCBtYXAgWzx0eXBlIC0xNj5dIDx0eXBlIDg1IFtdIDx0eXBlIC0xNj4+PgogZnVuYyAodiA8dHlwZSA4Mz4pIEdldCAoa2V5IDx0eXBlIC0xNj4pIDx0eXBlIC0xNj47CiBmdW5jICh2IDx0eXBlIDgzPikgRW5jb2RlICgpIDx0eXBlIC0xNj47CiBmdW5jICh2IDx0eXBlIDgzPikgU2V0IChrZXkgPHR5cGUgLTE2PiwgdmFsdWUgPHR5cGUgLTE2Pik7CiBmdW5jICh2IDx0eXBlIDgzPikgQWRkIChrZXkgPHR5cGUgLTE2PiwgdmFsdWUgPHR5cGUgLTE2Pik7CiBmdW5jICh2IDx0eXBlIDgzPikgRGVsIChrZXkgPHR5cGUgLTE2Pik7Cj47CiBmdW5jICh1IDx0eXBlIDgyPikgUGFyc2UgKHJlZiA8dHlwZSAtMTY+KSAoPyA8dHlwZSA4Mj4sID8gPHR5cGUgLTE5Pik7Cj4+OyBQcm90byA8dHlwZSAtMTY+OyBQcm90b01ham9yIDx0eXBlIC0xMT47IFByb3RvTWlub3IgPHR5cGUgLTExPjsgSGVhZGVyIDx0eXBlIDU3PjsgQm9keSA8dHlwZSA4NiAiaW8uUmVhZENsb3NlciIgPHR5cGUgODcgaW50ZXJmYWNlIHsgPyA8dHlwZSA4OCAiaW8uUmVhZGVyIiA8dHlwZSA4OSBpbnRlcmZhY2UgeyBSZWFkIChwIDx0eXBlIDkwIFtdIDx0eXBlIC0yMD4+KSAobiA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7IH0+PjsgPyA8dHlwZSA5MSAiaW8uQ2xvc2VyIiA8dHlwZSA5MiBpbnRlcmZhY2UgeyBDbG9zZSAoKSA8dHlwZSAtMTk+OyB9Pj47IH0+PjsgQ29udGVudExlbmd0aCA8dHlwZSAtND47IFRyYW5zZmVyRW5jb2RpbmcgPHR5cGUgOTMgW10gPHR5cGUgLTE2Pj47IENsb3NlIDx0eXBlIC0xNT47IEhvc3QgPHR5cGUgLTE2PjsgRm9ybSA8dHlwZSA4Mz47IFBvc3RGb3JtIDx0eXBlIDgzPjsgTXVsdGlwYXJ0Rm9ybSA8dHlwZSA5NCAqPHR5cGUgOTUgIm1pbWUvbXVsdGlwYXJ0LkZvcm0iICJtdWx0aXBhcnQiIDx0eXBlIDk2IHN0cnVjdCB7IFZhbHVlIDx0eXBlIDk3IG1hcCBbPHR5cGUgLTE2Pl0gPHR5cGUgOTggW10gPHR5cGUgLTE2Pj4+OyBGaWxlIDx0eXBlIDk5IG1hcCBbPHR5cGUgLTE2Pl0gPHR5cGUgMTAwIFtdIDx0eXBlIDEwMSAqPHR5cGUgMTAyICJtaW1lL211bHRpcGFydC5GaWxlSGVhZGVyIiA8dHlwZSAxMDMgc3RydWN0IHsgRmlsZW5hbWUgPHR5cGUgLTE2PjsgSGVhZGVyIDx0eXBlIDEwNCAibmV0L3RleHRwcm90by5NSU1FSGVhZGVyIiAidGV4dHByb3RvIiA8dHlwZSAxMDUgbWFwIFs8dHlwZSAtMTY+XSA8dHlwZSAxMDYgW10gPHR5cGUgLTE2Pj4+CiBmdW5jIChoIDx0eXBlIDEwND4pIEdldCAoa2V5IDx0eXBlIC0xNj4pIDx0eXBlIC0xNj47CiBmdW5jIChoIDx0eXBlIDEwND4pIFNldCAoa2V5IDx0eXBlIC0xNj4sIHZhbHVlIDx0eXBlIC0xNj4pOwogZnVuYyAoaCA8dHlwZSAxMDQ+KSBBZGQgKGtleSA8dHlwZSAtMTY+LCB2YWx1ZSA8dHlwZSAtMTY+KTsKIGZ1bmMgKGggPHR5cGUgMTA0PikgRGVsIChrZXkgPHR5cGUgLTE2Pik7Cj47IC5taW1lL211bHRpcGFydC5jb250ZW50IDx0eXBlIDEwNyBbXSA8dHlwZSAtMjA+PjsgLm1pbWUvbXVsdGlwYXJ0LnRtcGZpbGUgPHR5cGUgLTE2PjsgfT4KIGZ1bmMgKGZoIDx0eXBlIDEwOCAqPHR5cGUgMTAyPj4pIE9wZW4gKCkgKD8gPHR5cGUgMTA5ICJtaW1lL211bHRpcGFydC5GaWxlIiA8dHlwZSAxMTAgaW50ZXJmYWNlIHsgPyA8dHlwZSA4OD47ID8gPHR5cGUgMTExICJpby5SZWFkZXJBdCIgPHR5cGUgMTEyIGludGVyZmFjZSB7IFJlYWRBdCAocCA8dHlwZSAxMTMgW10gPHR5cGUgLTIwPj4sIG9mZiA8dHlwZSAtND4pIChuIDx0eXBlIC0xMT4sIGVyciA8dHlwZSAtMTk+KTsgfT4+OyA/IDx0eXBlIDExNCAiaW8uU2Vla2VyIiA8dHlwZSAxMTUgaW50ZXJmYWNlIHsgU2VlayAob2Zmc2V0IDx0eXBlIC00Piwgd2hlbmNlIDx0eXBlIC0xMT4pICg/IDx0eXBlIC00PiwgPyA8dHlwZSAtMTk+KTsgfT4+OyA/IDx0eXBlIDkxPjsgfT4+LCA/IDx0eXBlIC0xOT4pOwo+Pj4+OyB9PgogZnVuYyAoZiA8dHlwZSAxMTYgKjx0eXBlIDk1Pj4pIFJlbW92ZUFsbCAoKSA8dHlwZSAtMTk+Owo+PjsgVHJhaWxlciA8dHlwZSA1Nz47IFJlbW90ZUFkZHIgPHR5cGUgLTE2PjsgUmVxdWVzdFVSSSA8dHlwZSAtMTY+OyBUTFMgPHR5cGUgMTE3ICo8dHlwZSAxMTggImNyeXB0by90bHMuQ29ubmVjdGlvblN0YXRlIiA8dHlwZSAxMTkgc3RydWN0IHsgVmVyc2lvbiA8dHlwZSAtNj47IEhhbmRzaGFrZUNvbXBsZXRlIDx0eXBlIC0xNT47IERpZFJlc3VtZSA8dHlwZSAtMTU+OyBDaXBoZXJTdWl0ZSA8dHlwZSAtNj47IE5lZ290aWF0ZWRQcm90b2NvbCA8dHlwZSAtMTY+OyBOZWdvdGlhdGVkUHJvdG9jb2xJc011dHVhbCA8dHlwZSAtMTU+OyBTZXJ2ZXJOYW1lIDx0eXBlIC0xNj47IFBlZXJDZXJ0aWZpY2F0ZXMgPHR5cGUgMTIwIFtdIDx0eXBlIDEyMSAqPHR5cGUgMTIyICJjcnlwdG8veDUwOS5DZXJ0aWZpY2F0ZSIgIng1MDkiIDx0eXBlIDEyMyBzdHJ1Y3QgeyBSYXcgPHR5cGUgMTI0IFtdIDx0eXBlIC0yMD4+OyBSYXdUQlNDZXJ0aWZpY2F0ZSA8dHlwZSAxMjUgW10gPHR5cGUgLTIwPj47IFJhd1N1YmplY3RQdWJsaWNLZXlJbmZvIDx0eXBlIDEyNiBbXSA8dHlwZSAtMjA+PjsgUmF3U3ViamVjdCA8dHlwZSAxMjcgW10gPHR5cGUgLTIwPj47IFJhd0lzc3VlciA8dHlwZSAxMjggW10gPHR5cGUgLTIwPj47IFNpZ25hdHVyZSA8dHlwZSAxMjkgW10gPHR5cGUgLTIwPj47IFNpZ25hdHVyZUFsZ29yaXRobSA8dHlwZSAxMzAgImNyeXB0by94NTA5LlNpZ25hdHVyZUFsZ29yaXRobSIgPHR5cGUgLTExPj47IFB1YmxpY0tleUFsZ29yaXRobSA8dHlwZSAxMzEgImNyeXB0by94NTA5LlB1YmxpY0tleUFsZ29yaXRobSIgPHR5cGUgLTExPj47IFB1YmxpY0tleSA8dHlwZSAxMzIgaW50ZXJmYWNlIHsgfT47IFZlcnNpb24gPHR5cGUgLTExPjsgU2VyaWFsTnVtYmVyIDx0eXBlIDEzMyAqPHR5cGUgMTM0ICJtYXRoL2JpZy5JbnQiICJiaWciIDx0eXBlIDEzNSBzdHJ1Y3QgeyAubWF0aC9iaWcubmVnIDx0eXBlIC0xNT47IC5tYXRoL2JpZy5hYnMgPHR5cGUgMTM2ICIubWF0aC9iaWcubmF0IiA8dHlwZSAxMzcgW10gPHR5cGUgMTM4ICJtYXRoL2JpZy5Xb3JkIiA8dHlwZSAtMTM+Pj4KIGZ1bmMgKHogPHR5cGUgMTM2PikgLm1hdGgvYmlnLm11bCAoeCA8dHlwZSAxMzY+LCB5IDx0eXBlIDEzNj4pIDx0eXBlIDEzNj47CiBmdW5jICh6IDx0eXBlIDEzNj4pIC5tYXRoL2JpZy5zY2FuIChyIDx0eXBlIDEzOSAiaW8uUnVuZVNjYW5uZXIiIDx0eXBlIDE0MCBpbnRlcmZhY2UgeyA/IDx0eXBlIDE0MSAiaW8uUnVuZVJlYWRlciIgPHR5cGUgMTQyIGludGVyZmFjZSB7IFJlYWRSdW5lICgpIChyIDx0eXBlIC0yMT4sIHNpemUgPHR5cGUgLTExPiwgZXJyIDx0eXBlIC0xOT4pOyB9Pj47IFVucmVhZFJ1bmUgKCkgPHR5cGUgLTE5PjsgfT4+LCBiYXNlIDx0eXBlIC0xMT4pICg/IDx0eXBlIDEzNj4sID8gPHR5cGUgLTExPiwgPyA8dHlwZSAtMTk+KTsKIGZ1bmMgKHogPHR5cGUgMTM2PikgLm1hdGgvYmlnLmFkZCAoeCA8dHlwZSAxMzY+LCB5IDx0eXBlIDEzNj4pIDx0eXBlIDEzNj47CiBmdW5jICh6IDx0eXBlIDEzNj4pIC5tYXRoL2JpZy5hbmROb3QgKHggPHR5cGUgMTM2PiwgeSA8dHlwZSAxMzY+KSA8dHlwZSAxMzY+OwogZnVuYyAoeiA8dHlwZSAxMzY+KSAubWF0aC9iaWcuc2V0Qml0ICh4IDx0eXBlIDEzNj4sIGkgPHR5cGUgLTEyPiwgYiA8dHlwZSAtMTI+KSA8dHlwZSAxMzY+OwogZnVuYyAoeiA8dHlwZSAxMzY+KSAubWF0aC9iaWcuc3ViICh4IDx0eXBlIDEzNj4sIHkgPHR5cGUgMTM2PikgPHR5cGUgMTM2PjsKIGZ1bmMgKHggPHR5cGUgMTM2PikgLm1hdGgvYmlnLm1vZFcgKGQgPHR5cGUgMTM4PikgKHIgPHR5cGUgMTM4Pik7CiBmdW5jIChuIDx0eXBlIDEzNj4pIC5tYXRoL2JpZy5wcm9iYWJseVByaW1lIChyZXBzIDx0eXBlIC0xMT4pIDx0eXBlIC0xNT47CiBmdW5jIChxIDx0eXBlIDEzNj4pIC5tYXRoL2JpZy5jb252ZXJ0V29yZHMgKHMgPHR5cGUgMTQzIFtdIDx0eXBlIC0yMD4+LCBjaGFyc2V0IDx0eXBlIC0xNj4sIGIgPHR5cGUgMTM4PiwgbmRpZ2l0cyA8dHlwZSAtMTE+LCBiYiA8dHlwZSAxMzg+LCB0YWJsZSA8dHlwZSAxNDQgW10gPHR5cGUgMTQ1ICIubWF0aC9iaWcuZGl2aXNvciIgPHR5cGUgMTQ2IHN0cnVjdCB7IC5tYXRoL2JpZy5iYmIgPHR5cGUgMTM2PjsgLm1hdGgvYmlnLm5iaXRzIDx0eXBlIC0xMT47IC5tYXRoL2JpZy5uZGlnaXRzIDx0eXBlIC0xMT47IH0+Pj4pOwogZnVuYyAoeCA8dHlwZSAxMzY+KSAubWF0aC9iaWcuc3RyaW5nIChjaGFyc2V0IDx0eXBlIC0xNj4pIDx0eXBlIC0xNj47CiBmdW5jICh6IDx0eXBlIDEzNj4pIC5tYXRoL2JpZy5kaXZXICh4IDx0eXBlIDEzNj4sIHkgPHR5cGUgMTM4PikgKHEgPHR5cGUgMTM2PiwgciA8dHlwZSAxMzg+KTsKIGZ1bmMgKHogPHR5cGUgMTM2PikgLm1hdGgvYmlnLnNociAoeCA8dHlwZSAxMzY+LCBzIDx0eXBlIC0xMj4pIDx0eXBlIDEzNj47CiBmdW5jICh6IDx0eXBlIDEzNj4pIC5tYXRoL2JpZy5tdWxSYW5nZSAoYSA8dHlwZSAtOD4sIGIgPHR5cGUgLTg+KSA8dHlwZSAxMzY+OwogZnVuYyAoeiA8dHlwZSAxMzY+KSAubWF0aC9iaWcubXVsQWRkV1cgKHggPHR5cGUgMTM2PiwgeSA8dHlwZSAxMzg+LCByIDx0eXBlIDEzOD4pIDx0eXBlIDEzNj47CiBmdW5jICh4IDx0eXBlIDEzNj4pIC5tYXRoL2JpZy5kZWNpbWFsU3RyaW5nICgpIDx0eXBlIC0xNj47CiBmdW5jICh6IDx0eXBlIDEzNj4pIC5tYXRoL2JpZy5hbmQgKHggPHR5cGUgMTM2PiwgeSA8dHlwZSAxMzY+KSA8dHlwZSAxMzY+OwogZnVuYyAoeiA8dHlwZSAxMzY+KSAubWF0aC9iaWcuYml0IChpIDx0eXBlIC0xMj4pIDx0eXBlIC0xMj47CiBmdW5jICh6IDx0eXBlIDEzNj4pIC5tYXRoL2JpZy54b3IgKHggPHR5cGUgMTM2PiwgeSA8dHlwZSAxMzY+KSA8dHlwZSAxMzY+OwogZnVuYyAoeiA8dHlwZSAxMzY+KSAubWF0aC9iaWcuc2V0ICh4IDx0eXBlIDEzNj4pIDx0eXBlIDEzNj47CiBmdW5jICh6IDx0eXBlIDEzNj4pIC5tYXRoL2JpZy5yYW5kb20gKHJhbmQgPHR5cGUgMTQ3ICo8dHlwZSAxNDggIm1hdGgvcmFuZC5SYW5kIiAicmFuZCIgPHR5cGUgMTQ5IHN0cnVjdCB7IC5tYXRoL3JhbmQuc3JjIDx0eXBlIDE1MCAibWF0aC9yYW5kLlNvdXJjZSIgPHR5cGUgMTUxIGludGVyZmFjZSB7IEludDYzICgpIDx0eXBlIC00PjsgU2VlZCAoc2VlZCA8dHlwZSAtND4pOyB9Pj47IH0+CiBmdW5jIChyIDx0eXBlIDE1MiAqPHR5cGUgMTQ4Pj4pIEV4cEZsb2F0NjQgKCkgPHR5cGUgLTEwPjsKIGZ1bmMgKHIgPHR5cGUgMTUyPikgSW50MzFuIChuIDx0eXBlIC0zPikgPHR5cGUgLTM+OwogZnVuYyAociA8dHlwZSAxNTI+KSBVaW50MzIgKCkgPHR5cGUgLTc+OwogZnVuYyAociA8dHlwZSAxNTI+KSBJbnRuIChuIDx0eXBlIC0xMT4pIDx0eXBlIC0xMT47CiBmdW5jIChyIDx0eXBlIDE1Mj4pIFBlcm0gKG4gPHR5cGUgLTExPikgPHR5cGUgMTUzIFtdIDx0eXBlIC0xMT4+OwogZnVuYyAociA8dHlwZSAxNTI+KSBOb3JtRmxvYXQ2NCAoKSA8dHlwZSAtMTA+OwogZnVuYyAociA8dHlwZSAxNTI+KSBJbnQzMSAoKSA8dHlwZSAtMz47CiBmdW5jIChyIDx0eXBlIDE1Mj4pIEZsb2F0NjQgKCkgPHR5cGUgLTEwPjsKIGZ1bmMgKHIgPHR5cGUgMTUyPikgU2VlZCAoc2VlZCA8dHlwZSAtND4pOwogZnVuYyAociA8dHlwZSAxNTI+KSBJbnQgKCkgPHR5cGUgLTExPjsKIGZ1bmMgKHIgPHR5cGUgMTUyPikgSW50NjMgKCkgPHR5cGUgLTQ+OwogZnVuYyAociA8dHlwZSAxNTI+KSBJbnQ2M24gKG4gPHR5cGUgLTQ+KSA8dHlwZSAtND47CiBmdW5jIChyIDx0eXBlIDE1Mj4pIEZsb2F0MzIgKCkgPHR5cGUgLTk+Owo+PiwgbGltaXQgPHR5cGUgMTM2PiwgbiA8dHlwZSAtMTE+KSA8dHlwZSAxMzY+OwogZnVuYyAoeCA8dHlwZSAxMzY+KSAubWF0aC9iaWcuY21wICh5IDx0eXBlIDEzNj4pIChyIDx0eXBlIC0xMT4pOwogZnVuYyAoeiA8dHlwZSAxMzY+KSAubWF0aC9iaWcub3IgKHggPHR5cGUgMTM2PiwgeSA8dHlwZSAxMzY+KSA8dHlwZSAxMzY+OwogZnVuYyAoeCA8dHlwZSAxMzY+KSAubWF0aC9iaWcuYml0TGVuICgpIDx0eXBlIC0xMT47CiBmdW5jICh6IDx0eXBlIDEzNj4pIC5tYXRoL2JpZy5zZXRXb3JkICh4IDx0eXBlIDEzOD4pIDx0eXBlIDEzNj47CiBmdW5jICh6IDx0eXBlIDEzNj4pIC5tYXRoL2JpZy5kaXYgKHoyIDx0eXBlIDEzNj4sIHUgPHR5cGUgMTM2PiwgdiA8dHlwZSAxMzY+KSAocSA8dHlwZSAxMzY+LCByIDx0eXBlIDEzNj4pOwogZnVuYyAoeiA8dHlwZSAxMzY+KSAubWF0aC9iaWcuc2V0VWludDY0ICh4IDx0eXBlIC04PikgPHR5cGUgMTM2PjsKIGZ1bmMgKHggPHR5cGUgMTM2PikgLm1hdGgvYmlnLnRyYWlsaW5nWmVyb0JpdHMgKCkgPHR5cGUgLTEyPjsKIGZ1bmMgKHogPHR5cGUgMTM2PikgLm1hdGgvYmlnLmRpdkxhcmdlICh1IDx0eXBlIDEzNj4sIHVJbiA8dHlwZSAxMzY+LCB2IDx0eXBlIDEzNj4pIChxIDx0eXBlIDEzNj4sIHIgPHR5cGUgMTM2Pik7CiBmdW5jICh6IDx0eXBlIDEzNj4pIC5tYXRoL2JpZy5leHBOTldpbmRvd2VkICh4IDx0eXBlIDEzNj4sIHkgPHR5cGUgMTM2PiwgbSA8dHlwZSAxMzY+KSA8dHlwZSAxMzY+OwogZnVuYyAoeiA8dHlwZSAxMzY+KSAubWF0aC9iaWcubm9ybSAoKSA8dHlwZSAxMzY+OwogZnVuYyAoeiA8dHlwZSAxMzY+KSAubWF0aC9iaWcuc2V0Qnl0ZXMgKGJ1ZiA8dHlwZSAxNTQgW10gPHR5cGUgLTIwPj4pIDx0eXBlIDEzNj47CiBmdW5jICh6IDx0eXBlIDEzNj4pIC5tYXRoL2JpZy5zaGwgKHggPHR5cGUgMTM2PiwgcyA8dHlwZSAtMTI+KSA8dHlwZSAxMzY+OwogZnVuYyAoeiA8dHlwZSAxMzY+KSAubWF0aC9iaWcubWFrZSAobiA8dHlwZSAtMTE+KSA8dHlwZSAxMzY+OwogZnVuYyAoeiA8dHlwZSAxMzY+KSAubWF0aC9iaWcuY2xlYXIgKCk7CiBmdW5jICh6IDx0eXBlIDEzNj4pIC5tYXRoL2JpZy5ieXRlcyAoYnVmIDx0eXBlIDE1NSBbXSA8dHlwZSAtMjA+PikgKGkgPHR5cGUgLTExPik7CiBmdW5jICh6IDx0eXBlIDEzNj4pIC5tYXRoL2JpZy5leHBXVyAoeCA8dHlwZSAxMzg+LCB5IDx0eXBlIDEzOD4pIDx0eXBlIDEzNj47CiBmdW5jICh6IDx0eXBlIDEzNj4pIC5tYXRoL2JpZy5leHBOTiAoeCA8dHlwZSAxMzY+LCB5IDx0eXBlIDEzNj4sIG0gPHR5cGUgMTM2PikgPHR5cGUgMTM2PjsKPjsgfT4KIGZ1bmMgKHogPHR5cGUgMTU2ICo8dHlwZSAxMzQ+PikgTmVnICh4IDx0eXBlIDE1Nj4pIDx0eXBlIDE1Nj47CiBmdW5jICh6IDx0eXBlIDE1Nj4pIFF1b1JlbSAoeCA8dHlwZSAxNTY+LCB5IDx0eXBlIDE1Nj4sIHIgPHR5cGUgMTU2PikgKD8gPHR5cGUgMTU2PiwgPyA8dHlwZSAxNTY+KTsKIGZ1bmMgKHggPHR5cGUgMTU2PikgQnl0ZXMgKCkgPHR5cGUgMTU3IFtdIDx0eXBlIC0yMD4+OwogZnVuYyAoeiA8dHlwZSAxNTY+KSBTZXRCaXRzIChhYnMgPHR5cGUgMTU4IFtdIDx0eXBlIDEzOD4+KSA8dHlwZSAxNTY+OwogZnVuYyAoeiA8dHlwZSAxNTY+KSBTZXRCaXQgKHggPHR5cGUgMTU2PiwgaSA8dHlwZSAtMTE+LCBiIDx0eXBlIC0xMj4pIDx0eXBlIDE1Nj47CiBmdW5jICh6IDx0eXBlIDE1Nj4pIFhvciAoeCA8dHlwZSAxNTY+LCB5IDx0eXBlIDE1Nj4pIDx0eXBlIDE1Nj47CiBmdW5jICh6IDx0eXBlIDE1Nj4pIFNldEludDY0ICh4IDx0eXBlIC00PikgPHR5cGUgMTU2PjsKIGZ1bmMgKHogPHR5cGUgMTU2PikgTm90ICh4IDx0eXBlIDE1Nj4pIDx0eXBlIDE1Nj47CiBmdW5jICh6IDx0eXBlIDE1Nj4pIFVubWFyc2hhbEpTT04gKHRleHQgPHR5cGUgMTU5IFtdIDx0eXBlIC0yMD4+KSA8dHlwZSAtMTk+OwogZnVuYyAoeiA8dHlwZSAxNTY+KSBPciAoeCA8dHlwZSAxNTY+LCB5IDx0eXBlIDE1Nj4pIDx0eXBlIDE1Nj47CiBmdW5jICh6IDx0eXBlIDE1Nj4pIFNldFVpbnQ2NCAoeCA8dHlwZSAtOD4pIDx0eXBlIDE1Nj47CiBmdW5jICh4IDx0eXBlIDE1Nj4pIEludDY0ICgpIDx0eXBlIC00PjsKIGZ1bmMgKHogPHR5cGUgMTU2PikgLm1hdGgvYmlnLnNjYW4gKHIgPHR5cGUgMTM5PiwgYmFzZSA8dHlwZSAtMTE+KSAoPyA8dHlwZSAxNTY+LCA/IDx0eXBlIC0xMT4sID8gPHR5cGUgLTE5Pik7CiBmdW5jICh6IDx0eXBlIDE1Nj4pIEdDRCAoeCA8dHlwZSAxNTY+LCB5IDx0eXBlIDE1Nj4sIGEgPHR5cGUgMTU2PiwgYiA8dHlwZSAxNTY+KSA8dHlwZSAxNTY+OwogZnVuYyAoeiA8dHlwZSAxNTY+KSBSZW0gKHggPHR5cGUgMTU2PiwgeSA8dHlwZSAxNTY+KSA8dHlwZSAxNTY+OwogZnVuYyAoeCA8dHlwZSAxNTY+KSBCaXQgKGkgPHR5cGUgLTExPikgPHR5cGUgLTEyPjsKIGZ1bmMgKHggPHR5cGUgMTU2PikgQml0cyAoKSA8dHlwZSAxNjAgW10gPHR5cGUgMTM4Pj47CiBmdW5jICh6IDx0eXBlIDE1Nj4pIFNldEJ5dGVzIChidWYgPHR5cGUgMTYxIFtdIDx0eXBlIC0yMD4+KSA8dHlwZSAxNTY+OwogZnVuYyAoeiA8dHlwZSAxNTY+KSBEaXZNb2QgKHggPHR5cGUgMTU2PiwgeSA8dHlwZSAxNTY+LCBtIDx0eXBlIDE1Nj4pICg/IDx0eXBlIDE1Nj4sID8gPHR5cGUgMTU2Pik7CiBmdW5jICh6IDx0eXBlIDE1Nj4pIFJzaCAoeCA8dHlwZSAxNTY+LCBuIDx0eXBlIC0xMj4pIDx0eXBlIDE1Nj47CiBmdW5jICh4IDx0eXBlIDE1Nj4pIENtcCAoeSA8dHlwZSAxNTY+KSAociA8dHlwZSAtMTE+KTsKIGZ1bmMgKHogPHR5cGUgMTU2PikgU2NhbiAocyA8dHlwZSAxNjIgImZtdC5TY2FuU3RhdGUiIDx0eXBlIDE2MyBpbnRlcmZhY2UgeyBSZWFkUnVuZSAoKSAociA8dHlwZSAtMjE+LCBzaXplIDx0eXBlIC0xMT4sIGVyciA8dHlwZSAtMTk+KTsgVW5yZWFkUnVuZSAoKSA8dHlwZSAtMTk+OyBTa2lwU3BhY2UgKCk7IFRva2VuIChza2lwU3BhY2UgPHR5cGUgLTE1PiwgZiA8dHlwZSAxNjQgKD8gPHR5cGUgLTIxPikgPHR5cGUgLTE1Pj4pICh0b2tlbiA8dHlwZSAxNjUgW10gPHR5cGUgLTIwPj4sIGVyciA8dHlwZSAtMTk+KTsgV2lkdGggKCkgKHdpZCA8dHlwZSAtMTE+LCBvayA8dHlwZSAtMTU+KTsgUmVhZCAoYnVmIDx0eXBlIDE2NiBbXSA8dHlwZSAtMjA+PikgKG4gPHR5cGUgLTExPiwgZXJyIDx0eXBlIC0xOT4pOyB9Pj4sIGNoIDx0eXBlIC0yMT4pIDx0eXBlIC0xOT47CiBmdW5jICh4IDx0eXBlIDE1Nj4pIEdvYkVuY29kZSAoKSAoPyA8dHlwZSAxNjcgW10gPHR5cGUgLTIwPj4sID8gPHR5cGUgLTE5Pik7CiBmdW5jICh4IDx0eXBlIDE1Nj4pIFByb2JhYmx5UHJpbWUgKG4gPHR5cGUgLTExPikgPHR5cGUgLTE1PjsKIGZ1bmMgKHggPHR5cGUgMTU2PikgU2lnbiAoKSA8dHlwZSAtMTE+OwogZnVuYyAoeiA8dHlwZSAxNTY+KSBNb2QgKHggPHR5cGUgMTU2PiwgeSA8dHlwZSAxNTY+KSA8dHlwZSAxNTY+OwogZnVuYyAoeiA8dHlwZSAxNTY+KSBFeHAgKHggPHR5cGUgMTU2PiwgeSA8dHlwZSAxNTY+LCBtIDx0eXBlIDE1Nj4pIDx0eXBlIDE1Nj47CiBmdW5jICh4IDx0eXBlIDE1Nj4pIFN0cmluZyAoKSA8dHlwZSAtMTY+OwogZnVuYyAoeiA8dHlwZSAxNTY+KSBBYnMgKHggPHR5cGUgMTU2PikgPHR5cGUgMTU2PjsKIGZ1bmMgKHogPHR5cGUgMTU2PikgVW5tYXJzaGFsVGV4dCAodGV4dCA8dHlwZSAxNjggW10gPHR5cGUgLTIwPj4pIDx0eXBlIC0xOT47CiBmdW5jICh6IDx0eXBlIDE1Nj4pIFJhbmQgKHJuZCA8dHlwZSAxNDc+LCBuIDx0eXBlIDE1Nj4pIDx0eXBlIDE1Nj47CiBmdW5jICh6IDx0eXBlIDE1Nj4pIEFuZCAoeCA8dHlwZSAxNTY+LCB5IDx0eXBlIDE1Nj4pIDx0eXBlIDE1Nj47CiBmdW5jICh6IDx0eXBlIDE1Nj4pIE1vZEludmVyc2UgKGcgPHR5cGUgMTU2PiwgbiA8dHlwZSAxNTY+KSA8dHlwZSAxNTY+OwogZnVuYyAoeiA8dHlwZSAxNTY+KSBRdW8gKHggPHR5cGUgMTU2PiwgeSA8dHlwZSAxNTY+KSA8dHlwZSAxNTY+OwogZnVuYyAoeiA8dHlwZSAxNTY+KSBBZGQgKHggPHR5cGUgMTU2PiwgeSA8dHlwZSAxNTY+KSA8dHlwZSAxNTY+OwogZnVuYyAoeiA8dHlwZSAxNTY+KSBMc2ggKHggPHR5cGUgMTU2PiwgbiA8dHlwZSAtMTI+KSA8dHlwZSAxNTY+OwogZnVuYyAoeiA8dHlwZSAxNTY+KSBBbmROb3QgKHggPHR5cGUgMTU2PiwgeSA8dHlwZSAxNTY+KSA8dHlwZSAxNTY+OwogZnVuYyAoeiA8dHlwZSAxNTY+KSBTZXQgKHggPHR5cGUgMTU2PikgPHR5cGUgMTU2PjsKIGZ1bmMgKHogPHR5cGUgMTU2PikgTXVsICh4IDx0eXBlIDE1Nj4sIHkgPHR5cGUgMTU2PikgPHR5cGUgMTU2PjsKIGZ1bmMgKHogPHR5cGUgMTU2PikgTWFyc2hhbFRleHQgKCkgKHRleHQgPHR5cGUgMTY5IFtdIDx0eXBlIC0yMD4+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jICh6IDx0eXBlIDE1Nj4pIERpdiAoeCA8dHlwZSAxNTY+LCB5IDx0eXBlIDE1Nj4pIDx0eXBlIDE1Nj47CiBmdW5jICh6IDx0eXBlIDE1Nj4pIEJpbm9taWFsIChuIDx0eXBlIC00PiwgayA8dHlwZSAtND4pIDx0eXBlIDE1Nj47CiBmdW5jICh4IDx0eXBlIDE1Nj4pIEZvcm1hdCAocyA8dHlwZSAxNzAgImZtdC5TdGF0ZSIgPHR5cGUgMTcxIGludGVyZmFjZSB7IFdyaXRlIChiIDx0eXBlIDE3MiBbXSA8dHlwZSAtMjA+PikgKHJldCA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7IFdpZHRoICgpICh3aWQgPHR5cGUgLTExPiwgb2sgPHR5cGUgLTE1Pik7IFByZWNpc2lvbiAoKSAocHJlYyA8dHlwZSAtMTE+LCBvayA8dHlwZSAtMTU+KTsgRmxhZyAoYyA8dHlwZSAtMTE+KSA8dHlwZSAtMTU+OyB9Pj4sIGNoIDx0eXBlIC0yMT4pOwogZnVuYyAoeiA8dHlwZSAxNTY+KSBNdWxSYW5nZSAoYSA8dHlwZSAtND4sIGIgPHR5cGUgLTQ+KSA8dHlwZSAxNTY+OwogZnVuYyAoeiA8dHlwZSAxNTY+KSBTZXRTdHJpbmcgKHMgPHR5cGUgLTE2PiwgYmFzZSA8dHlwZSAtMTE+KSAoPyA8dHlwZSAxNTY+LCA/IDx0eXBlIC0xNT4pOwogZnVuYyAoeCA8dHlwZSAxNTY+KSBVaW50NjQgKCkgPHR5cGUgLTg+OwogZnVuYyAoeiA8dHlwZSAxNTY+KSBNYXJzaGFsSlNPTiAoKSAoPyA8dHlwZSAxNzMgW10gPHR5cGUgLTIwPj4sID8gPHR5cGUgLTE5Pik7CiBmdW5jICh6IDx0eXBlIDE1Nj4pIEdvYkRlY29kZSAoYnVmIDx0eXBlIDE3NCBbXSA8dHlwZSAtMjA+PikgPHR5cGUgLTE5PjsKIGZ1bmMgKHggPHR5cGUgMTU2PikgQml0TGVuICgpIDx0eXBlIC0xMT47CiBmdW5jICh6IDx0eXBlIDE1Nj4pIC5tYXRoL2JpZy5iaW5hcnlHQ0QgKGEgPHR5cGUgMTU2PiwgYiA8dHlwZSAxNTY+KSA8dHlwZSAxNTY+OwogZnVuYyAoeiA8dHlwZSAxNTY+KSBTdWIgKHggPHR5cGUgMTU2PiwgeSA8dHlwZSAxNTY+KSA8dHlwZSAxNTY+Owo+PjsgSXNzdWVyIDx0eXBlIDE3NSAiY3J5cHRvL3g1MDkvcGtpeC5OYW1lIiAicGtpeCIgPHR5cGUgMTc2IHN0cnVjdCB7IENvdW50cnkgPHR5cGUgMTc3IFtdIDx0eXBlIC0xNj4+OyBPcmdhbml6YXRpb24gPHR5cGUgMTc3PjsgT3JnYW5pemF0aW9uYWxVbml0IDx0eXBlIDE3Nz47IExvY2FsaXR5IDx0eXBlIDE3OCBbXSA8dHlwZSAtMTY+PjsgUHJvdmluY2UgPHR5cGUgMTc4PjsgU3RyZWV0QWRkcmVzcyA8dHlwZSAxNzkgW10gPHR5cGUgLTE2Pj47IFBvc3RhbENvZGUgPHR5cGUgMTc5PjsgU2VyaWFsTnVtYmVyIDx0eXBlIC0xNj47IENvbW1vbk5hbWUgPHR5cGUgLTE2PjsgTmFtZXMgPHR5cGUgMTgwIFtdIDx0eXBlIDE4MSAiY3J5cHRvL3g1MDkvcGtpeC5BdHRyaWJ1dGVUeXBlQW5kVmFsdWUiIDx0eXBlIDE4MiBzdHJ1Y3QgeyBUeXBlIDx0eXBlIDE4MyAiZW5jb2RpbmcvYXNuMS5PYmplY3RJZGVudGlmaWVyIiAiYXNuMSIgPHR5cGUgMTg0IFtdIDx0eXBlIC0xMT4+CiBmdW5jIChvaSA8dHlwZSAxODM+KSBFcXVhbCAob3RoZXIgPHR5cGUgMTgzPikgPHR5cGUgLTE1PjsKIGZ1bmMgKG9pIDx0eXBlIDE4Mz4pIFN0cmluZyAoKSA8dHlwZSAtMTY+Owo+OyBWYWx1ZSA8dHlwZSAxODUgaW50ZXJmYWNlIHsgfT47IH0+Pj47IH0+CiBmdW5jIChuIDx0eXBlIDE3NT4pIFRvUkROU2VxdWVuY2UgKCkgKHJldCA8dHlwZSAxODYgImNyeXB0by94NTA5L3BraXguUkROU2VxdWVuY2UiIDx0eXBlIDE4NyBbXSA8dHlwZSAxODggImNyeXB0by94NTA5L3BraXguUmVsYXRpdmVEaXN0aW5ndWlzaGVkTmFtZVNFVCIgPHR5cGUgMTg5IFtdIDx0eXBlIDE4MT4+Pj4+KTsKIGZ1bmMgKG4gPHR5cGUgMTkwICo8dHlwZSAxNzU+PikgRmlsbEZyb21SRE5TZXF1ZW5jZSAocmRucyA8dHlwZSAxOTEgKjx0eXBlIDE4Nj4+KTsKPjsgU3ViamVjdCA8dHlwZSAxNzU+OyBOb3RCZWZvcmUgPHR5cGUgMjM+OyBOb3RBZnRlciA8dHlwZSAyMz47IEtleVVzYWdlIDx0eXBlIDE5MiAiY3J5cHRvL3g1MDkuS2V5VXNhZ2UiIDx0eXBlIC0xMT4+OyBFeHRlbnNpb25zIDx0eXBlIDE5MyBbXSA8dHlwZSAxOTQgImNyeXB0by94NTA5L3BraXguRXh0ZW5zaW9uIiA8dHlwZSAxOTUgc3RydWN0IHsgSWQgPHR5cGUgMTgzPjsgQ3JpdGljYWwgPHR5cGUgLTE1PiAiYXNuMTpcIm9wdGlvbmFsXCIiOyBWYWx1ZSA8dHlwZSAxOTYgW10gPHR5cGUgLTIwPj47IH0+Pj47IEV4dHJhRXh0ZW5zaW9ucyA8dHlwZSAxOTcgW10gPHR5cGUgMTk0Pj47IEV4dEtleVVzYWdlIDx0eXBlIDE5OCBbXSA8dHlwZSAxOTkgImNyeXB0by94NTA5LkV4dEtleVVzYWdlIiA8dHlwZSAtMTE+Pj47IFVua25vd25FeHRLZXlVc2FnZSA8dHlwZSAyMDAgW10gPHR5cGUgMTgzPj47IEJhc2ljQ29uc3RyYWludHNWYWxpZCA8dHlwZSAtMTU+OyBJc0NBIDx0eXBlIC0xNT47IE1heFBhdGhMZW4gPHR5cGUgLTExPjsgTWF4UGF0aExlblplcm8gPHR5cGUgLTE1PjsgU3ViamVjdEtleUlkIDx0eXBlIDIwMSBbXSA8dHlwZSAtMjA+PjsgQXV0aG9yaXR5S2V5SWQgPHR5cGUgMjAyIFtdIDx0eXBlIC0yMD4+OyBPQ1NQU2VydmVyIDx0eXBlIDIwMyBbXSA8dHlwZSAtMTY+PjsgSXNzdWluZ0NlcnRpZmljYXRlVVJMIDx0eXBlIDIwNCBbXSA8dHlwZSAtMTY+PjsgRE5TTmFtZXMgPHR5cGUgMjA1IFtdIDx0eXBlIC0xNj4+OyBFbWFpbEFkZHJlc3NlcyA8dHlwZSAyMDYgW10gPHR5cGUgLTE2Pj47IElQQWRkcmVzc2VzIDx0eXBlIDIwNyBbXSA8dHlwZSAyMDggIm5ldC5JUCIgPHR5cGUgMjA5IFtdIDx0eXBlIC0yMD4+CiBmdW5jIChpcCA8dHlwZSAyMDg+KSBNYXJzaGFsVGV4dCAoKSAoPyA8dHlwZSAyMTAgW10gPHR5cGUgLTIwPj4sID8gPHR5cGUgLTE5Pik7CiBmdW5jIChpcCA8dHlwZSAyMDg+KSBJc0xpbmtMb2NhbE11bHRpY2FzdCAoKSA8dHlwZSAtMTU+OwogZnVuYyAoaXAgPHR5cGUgMjA4PikgSXNNdWx0aWNhc3QgKCkgPHR5cGUgLTE1PjsKIGZ1bmMgKGlwIDx0eXBlIDIwOD4pIFRvNCAoKSA8dHlwZSAyMDg+OwogZnVuYyAoaXAgPHR5cGUgMjExICo8dHlwZSAyMDg+PikgVW5tYXJzaGFsVGV4dCAodGV4dCA8dHlwZSAyMTIgW10gPHR5cGUgLTIwPj4pIDx0eXBlIC0xOT47CiBmdW5jIChpcCA8dHlwZSAyMDg+KSBUbzE2ICgpIDx0eXBlIDIwOD47CiBmdW5jIChpcCA8dHlwZSAyMDg+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKGlwIDx0eXBlIDIwOD4pIElzTGlua0xvY2FsVW5pY2FzdCAoKSA8dHlwZSAtMTU+OwogZnVuYyAoaXAgPHR5cGUgMjA4PikgSXNMb29wYmFjayAoKSA8dHlwZSAtMTU+OwogZnVuYyAoaXAgPHR5cGUgMjA4PikgRXF1YWwgKHggPHR5cGUgMjA4PikgPHR5cGUgLTE1PjsKIGZ1bmMgKGlwIDx0eXBlIDIwOD4pIERlZmF1bHRNYXNrICgpIDx0eXBlIDIxMyAibmV0LklQTWFzayIgPHR5cGUgMjE0IFtdIDx0eXBlIC0yMD4+CiBmdW5jIChtIDx0eXBlIDIxMz4pIFN0cmluZyAoKSA8dHlwZSAtMTY+OwogZnVuYyAobSA8dHlwZSAyMTM+KSBTaXplICgpIChvbmVzIDx0eXBlIC0xMT4sIGJpdHMgPHR5cGUgLTExPik7Cj47CiBmdW5jIChpcCA8dHlwZSAyMDg+KSBNYXNrIChtYXNrIDx0eXBlIDIxMz4pIDx0eXBlIDIwOD47CiBmdW5jIChpcCA8dHlwZSAyMDg+KSBJc1Vuc3BlY2lmaWVkICgpIDx0eXBlIC0xNT47CiBmdW5jIChpcCA8dHlwZSAyMDg+KSBJc0ludGVyZmFjZUxvY2FsTXVsdGljYXN0ICgpIDx0eXBlIC0xNT47CiBmdW5jIChpcCA8dHlwZSAyMDg+KSBJc0dsb2JhbFVuaWNhc3QgKCkgPHR5cGUgLTE1PjsKPj47IFBlcm1pdHRlZEROU0RvbWFpbnNDcml0aWNhbCA8dHlwZSAtMTU+OyBQZXJtaXR0ZWRETlNEb21haW5zIDx0eXBlIDIxNSBbXSA8dHlwZSAtMTY+PjsgQ1JMRGlzdHJpYnV0aW9uUG9pbnRzIDx0eXBlIDIxNiBbXSA8dHlwZSAtMTY+PjsgUG9saWN5SWRlbnRpZmllcnMgPHR5cGUgMjE3IFtdIDx0eXBlIDE4Mz4+OyB9PgogZnVuYyAoYyA8dHlwZSAyMTggKjx0eXBlIDEyMj4+KSBDaGVja1NpZ25hdHVyZSAoYWxnbyA8dHlwZSAxMzA+LCBzaWduZWQgPHR5cGUgMjE5IFtdIDx0eXBlIC0yMD4+LCBzaWduYXR1cmUgPHR5cGUgMjE5PikgKGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGMgPHR5cGUgMjE4PikgLmNyeXB0by94NTA5LnN5c3RlbVZlcmlmeSAob3B0cyA8dHlwZSAyMjAgKjx0eXBlIDIyMSAiY3J5cHRvL3g1MDkuVmVyaWZ5T3B0aW9ucyIgPHR5cGUgMjIyIHN0cnVjdCB7IEROU05hbWUgPHR5cGUgLTE2PjsgSW50ZXJtZWRpYXRlcyA8dHlwZSAyMjMgKjx0eXBlIDIyNCAiY3J5cHRvL3g1MDkuQ2VydFBvb2wiIDx0eXBlIDIyNSBzdHJ1Y3QgeyAuY3J5cHRvL3g1MDkuYnlTdWJqZWN0S2V5SWQgPHR5cGUgMjI2IG1hcCBbPHR5cGUgLTE2Pl0gPHR5cGUgMjI3IFtdIDx0eXBlIC0xMT4+PjsgLmNyeXB0by94NTA5LmJ5TmFtZSA8dHlwZSAyMjggbWFwIFs8dHlwZSAtMTY+XSA8dHlwZSAyMjkgW10gPHR5cGUgLTExPj4+OyAuY3J5cHRvL3g1MDkuY2VydHMgPHR5cGUgMjMwIFtdIDx0eXBlIDIxOD4+OyB9PgogZnVuYyAocyA8dHlwZSAyMzEgKjx0eXBlIDIyND4+KSBBcHBlbmRDZXJ0c0Zyb21QRU0gKHBlbUNlcnRzIDx0eXBlIDIzMiBbXSA8dHlwZSAtMjA+PikgKG9rIDx0eXBlIC0xNT4pOwogZnVuYyAocyA8dHlwZSAyMzE+KSBTdWJqZWN0cyAoKSAocmVzIDx0eXBlIDIzMyBbXSA8dHlwZSAyMzQgW10gPHR5cGUgLTIwPj4+KTsKIGZ1bmMgKHMgPHR5cGUgMjMxPikgQWRkQ2VydCAoY2VydCA8dHlwZSAyMTg+KTsKIGZ1bmMgKHMgPHR5cGUgMjMxPikgLmNyeXB0by94NTA5LmZpbmRWZXJpZmllZFBhcmVudHMgKGNlcnQgPHR5cGUgMjE4PikgKHBhcmVudHMgPHR5cGUgMjM1IFtdIDx0eXBlIC0xMT4+LCBlcnJDZXJ0IDx0eXBlIDIxOD4sIGVyciA8dHlwZSAtMTk+KTsKPj47IFJvb3RzIDx0eXBlIDIyMz47IEN1cnJlbnRUaW1lIDx0eXBlIDIzPjsgS2V5VXNhZ2VzIDx0eXBlIDIzNiBbXSA8dHlwZSAxOTk+PjsgfT4+PikgKGNoYWlucyA8dHlwZSAyMzcgW10gPHR5cGUgMjM4IFtdIDx0eXBlIDIxOD4+PiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoYyA8dHlwZSAyMTg+KSBWZXJpZnkgKG9wdHMgPHR5cGUgMjIxPikgKGNoYWlucyA8dHlwZSAyMzkgW10gPHR5cGUgMjQwIFtdIDx0eXBlIDIxOD4+PiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoYyA8dHlwZSAyMTg+KSBFcXVhbCAob3RoZXIgPHR5cGUgMjE4PikgPHR5cGUgLTE1PjsKIGZ1bmMgKGMgPHR5cGUgMjE4PikgQ2hlY2tTaWduYXR1cmVGcm9tIChwYXJlbnQgPHR5cGUgMjE4PikgKGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGMgPHR5cGUgMjE4PikgLmNyeXB0by94NTA5LmlzVmFsaWQgKGNlcnRUeXBlIDx0eXBlIC0xMT4sIGN1cnJlbnRDaGFpbiA8dHlwZSAyNDEgW10gPHR5cGUgMjE4Pj4sIG9wdHMgPHR5cGUgMjIwPikgPHR5cGUgLTE5PjsKIGZ1bmMgKGMgPHR5cGUgMjE4PikgVmVyaWZ5SG9zdG5hbWUgKGggPHR5cGUgLTE2PikgPHR5cGUgLTE5PjsKIGZ1bmMgKGMgPHR5cGUgMjE4PikgQ2hlY2tDUkxTaWduYXR1cmUgKGNybCA8dHlwZSAyNDIgKjx0eXBlIDI0MyAiY3J5cHRvL3g1MDkvcGtpeC5DZXJ0aWZpY2F0ZUxpc3QiIDx0eXBlIDI0NCBzdHJ1Y3QgeyBUQlNDZXJ0TGlzdCA8dHlwZSAyNDUgImNyeXB0by94NTA5L3BraXguVEJTQ2VydGlmaWNhdGVMaXN0IiA8dHlwZSAyNDYgc3RydWN0IHsgUmF3IDx0eXBlIDI0NyAiZW5jb2RpbmcvYXNuMS5SYXdDb250ZW50IiA8dHlwZSAyNDggW10gPHR5cGUgLTIwPj4+OyBWZXJzaW9uIDx0eXBlIC0xMT4gImFzbjE6XCJvcHRpb25hbCxkZWZhdWx0OjJcIiI7IFNpZ25hdHVyZSA8dHlwZSAyNDkgImNyeXB0by94NTA5L3BraXguQWxnb3JpdGhtSWRlbnRpZmllciIgPHR5cGUgMjUwIHN0cnVjdCB7IEFsZ29yaXRobSA8dHlwZSAxODM+OyBQYXJhbWV0ZXJzIDx0eXBlIDI1MSAiZW5jb2RpbmcvYXNuMS5SYXdWYWx1ZSIgPHR5cGUgMjUyIHN0cnVjdCB7IENsYXNzIDx0eXBlIC0xMT47IFRhZyA8dHlwZSAtMTE+OyBJc0NvbXBvdW5kIDx0eXBlIC0xNT47IEJ5dGVzIDx0eXBlIDI1MyBbXSA8dHlwZSAtMjA+PjsgRnVsbEJ5dGVzIDx0eXBlIDI1NCBbXSA8dHlwZSAtMjA+PjsgfT4+ICJhc24xOlwib3B0aW9uYWxcIiI7IH0+PjsgSXNzdWVyIDx0eXBlIDE4Nj47IFRoaXNVcGRhdGUgPHR5cGUgMjM+OyBOZXh0VXBkYXRlIDx0eXBlIDIzPiAiYXNuMTpcIm9wdGlvbmFsXCIiOyBSZXZva2VkQ2VydGlmaWNhdGVzIDx0eXBlIDI1NSBbXSA8dHlwZSAyNTYgImNyeXB0by94NTA5L3BraXguUmV2b2tlZENlcnRpZmljYXRlIiA8dHlwZSAyNTcgc3RydWN0IHsgU2VyaWFsTnVtYmVyIDx0eXBlIDEzMz47IFJldm9jYXRpb25UaW1lIDx0eXBlIDIzPjsgRXh0ZW5zaW9ucyA8dHlwZSAyNTggW10gPHR5cGUgMTk0Pj4gImFzbjE6XCJvcHRpb25hbFwiIjsgfT4+PiAiYXNuMTpcIm9wdGlvbmFsXCIiOyBFeHRlbnNpb25zIDx0eXBlIDI1OSBbXSA8dHlwZSAxOTQ+PiAiYXNuMTpcInRhZzowLG9wdGlvbmFsLGV4cGxpY2l0XCIiOyB9Pj47IFNpZ25hdHVyZUFsZ29yaXRobSA8dHlwZSAyNDk+OyBTaWduYXR1cmVWYWx1ZSA8dHlwZSAyNjAgImVuY29kaW5nL2FzbjEuQml0U3RyaW5nIiA8dHlwZSAyNjEgc3RydWN0IHsgQnl0ZXMgPHR5cGUgMjYyIFtdIDx0eXBlIC0yMD4+OyBCaXRMZW5ndGggPHR5cGUgLTExPjsgfT4KIGZ1bmMgKGIgPHR5cGUgMjYwPikgQXQgKGkgPHR5cGUgLTExPikgPHR5cGUgLTExPjsKIGZ1bmMgKGIgPHR5cGUgMjYwPikgUmlnaHRBbGlnbiAoKSA8dHlwZSAyNjMgW10gPHR5cGUgLTIwPj47Cj47IH0+CiBmdW5jIChjZXJ0TGlzdCA8dHlwZSAyNjQgKjx0eXBlIDI0Mz4+KSBIYXNFeHBpcmVkIChub3cgPHR5cGUgMjM+KSA8dHlwZSAtMTU+Owo+PikgKGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGMgPHR5cGUgMjE4PikgLmNyeXB0by94NTA5LmJ1aWxkQ2hhaW5zIChjYWNoZSA8dHlwZSAyNjUgbWFwIFs8dHlwZSAtMTE+XSA8dHlwZSAyNjYgW10gPHR5cGUgMjY3IFtdIDx0eXBlIDIxOD4+Pj4sIGN1cnJlbnRDaGFpbiA8dHlwZSAyNjggW10gPHR5cGUgMjE4Pj4sIG9wdHMgPHR5cGUgMjIwPikgKGNoYWlucyA8dHlwZSAyNjkgW10gPHR5cGUgMjcwIFtdIDx0eXBlIDIxOD4+PiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoYyA8dHlwZSAyMTg+KSBDcmVhdGVDUkwgKHJhbmQgPHR5cGUgODg+LCBwcml2IDx0eXBlIDI3MSBpbnRlcmZhY2UgeyB9PiwgcmV2b2tlZENlcnRzIDx0eXBlIDI3MiBbXSA8dHlwZSAyNTY+Piwgbm93IDx0eXBlIDIzPiwgZXhwaXJ5IDx0eXBlIDIzPikgKGNybEJ5dGVzIDx0eXBlIDI3MyBbXSA8dHlwZSAtMjA+PiwgZXJyIDx0eXBlIC0xOT4pOwo+Pj47IFZlcmlmaWVkQ2hhaW5zIDx0eXBlIDI3NCBbXSA8dHlwZSAyNzUgW10gPHR5cGUgMTIxPj4+OyBUTFNVbmlxdWUgPHR5cGUgMjc2IFtdIDx0eXBlIC0yMD4+OyB9Pj4+OyB9PgogZnVuYyAociA8dHlwZSAyNzcgKjx0eXBlIDczPj4pIC5uZXQvaHR0cC5leHBlY3RzQ29udGludWUgKCkgPHR5cGUgLTE1PjsKIGZ1bmMgKHIgPHR5cGUgMjc3PikgUmVmZXJlciAoKSA8dHlwZSAtMTY+OwogZnVuYyAociA8dHlwZSAyNzc+KSBQcm90b0F0TGVhc3QgKG1ham9yIDx0eXBlIC0xMT4sIG1pbm9yIDx0eXBlIC0xMT4pIDx0eXBlIC0xNT47CiBmdW5jIChyIDx0eXBlIDI3Nz4pIC5uZXQvaHR0cC5tdWx0aXBhcnRSZWFkZXIgKCkgKD8gPHR5cGUgMjc4ICo8dHlwZSAyNzkgIm1pbWUvbXVsdGlwYXJ0LlJlYWRlciIgPHR5cGUgMjgwIHN0cnVjdCB7IC5taW1lL211bHRpcGFydC5idWZSZWFkZXIgPHR5cGUgMjgxICo8dHlwZSAyODIgImJ1ZmlvLlJlYWRlciIgPHR5cGUgMjgzIHN0cnVjdCB7IC5idWZpby5idWYgPHR5cGUgMjg0IFtdIDx0eXBlIC0yMD4+OyAuYnVmaW8ucmQgPHR5cGUgODg+OyAuYnVmaW8uciA8dHlwZSAtMTE+OyAuYnVmaW8udyA8dHlwZSAtMTE+OyAuYnVmaW8uZXJyIDx0eXBlIC0xOT47IC5idWZpby5sYXN0Qnl0ZSA8dHlwZSAtMTE+OyAuYnVmaW8ubGFzdFJ1bmVTaXplIDx0eXBlIC0xMT47IH0+CiBmdW5jIChiIDx0eXBlIDI4NSAqPHR5cGUgMjgyPj4pIFVucmVhZEJ5dGUgKCkgPHR5cGUgLTE5PjsKIGZ1bmMgKGIgPHR5cGUgMjg1PikgUmVhZFN0cmluZyAoZGVsaW0gPHR5cGUgLTIwPikgKGxpbmUgPHR5cGUgLTE2PiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoYiA8dHlwZSAyODU+KSBSZWFkQnl0ZSAoKSAoYyA8dHlwZSAtMjA+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChiIDx0eXBlIDI4NT4pIFdyaXRlVG8gKHcgPHR5cGUgMTE+KSAobiA8dHlwZSAtND4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGIgPHR5cGUgMjg1PikgUmVhZEJ5dGVzIChkZWxpbSA8dHlwZSAtMjA+KSAobGluZSA8dHlwZSAyODYgW10gPHR5cGUgLTIwPj4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGIgPHR5cGUgMjg1PikgLmJ1ZmlvLndyaXRlQnVmICh3IDx0eXBlIDExPikgKD8gPHR5cGUgLTQ+LCA/IDx0eXBlIC0xOT4pOwogZnVuYyAoYiA8dHlwZSAyODU+KSBSZWFkTGluZSAoKSAobGluZSA8dHlwZSAyODcgW10gPHR5cGUgLTIwPj4sIGlzUHJlZml4IDx0eXBlIC0xNT4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGIgPHR5cGUgMjg1PikgUmVhZFJ1bmUgKCkgKHIgPHR5cGUgLTIxPiwgc2l6ZSA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChiIDx0eXBlIDI4NT4pIFJlYWRTbGljZSAoZGVsaW0gPHR5cGUgLTIwPikgKGxpbmUgPHR5cGUgMjg4IFtdIDx0eXBlIC0yMD4+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChiIDx0eXBlIDI4NT4pIFJlc2V0IChyIDx0eXBlIDg4Pik7CiBmdW5jIChiIDx0eXBlIDI4NT4pIFJlYWQgKHAgPHR5cGUgMjg5IFtdIDx0eXBlIC0yMD4+KSAobiA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChiIDx0eXBlIDI4NT4pIC5idWZpby5maWxsICgpOwogZnVuYyAoYiA8dHlwZSAyODU+KSBVbnJlYWRSdW5lICgpIDx0eXBlIC0xOT47CiBmdW5jIChiIDx0eXBlIDI4NT4pIEJ1ZmZlcmVkICgpIDx0eXBlIC0xMT47CiBmdW5jIChiIDx0eXBlIDI4NT4pIC5idWZpby5yZXNldCAoYnVmIDx0eXBlIDI5MCBbXSA8dHlwZSAtMjA+PiwgciA8dHlwZSA4OD4pOwogZnVuYyAoYiA8dHlwZSAyODU+KSBQZWVrIChuIDx0eXBlIC0xMT4pICg/IDx0eXBlIDI5MSBbXSA8dHlwZSAtMjA+PiwgPyA8dHlwZSAtMTk+KTsKIGZ1bmMgKGIgPHR5cGUgMjg1PikgLmJ1ZmlvLnJlYWRFcnIgKCkgPHR5cGUgLTE5PjsKPj47IC5taW1lL211bHRpcGFydC5jdXJyZW50UGFydCA8dHlwZSAyOTIgKjx0eXBlIDI5MyAibWltZS9tdWx0aXBhcnQuUGFydCIgPHR5cGUgMjk0IHN0cnVjdCB7IEhlYWRlciA8dHlwZSAxMDQ+OyAubWltZS9tdWx0aXBhcnQuYnVmZmVyIDx0eXBlIDI5NSAqPHR5cGUgMjk2ICJieXRlcy5CdWZmZXIiICJieXRlcyIgPHR5cGUgMjk3IHN0cnVjdCB7IC5ieXRlcy5idWYgPHR5cGUgMjk4IFtdIDx0eXBlIC0yMD4+OyAuYnl0ZXMub2ZmIDx0eXBlIC0xMT47IC5ieXRlcy5ydW5lQnl0ZXMgPHR5cGUgMjk5IFs0IF0gPHR5cGUgLTIwPj47IC5ieXRlcy5ib290c3RyYXAgPHR5cGUgMzAwIFs2NCBdIDx0eXBlIC0yMD4+OyAuYnl0ZXMubGFzdFJlYWQgPHR5cGUgMzAxICIuYnl0ZXMucmVhZE9wIiA8dHlwZSAtMTE+PjsgfT4KIGZ1bmMgKGIgPHR5cGUgMzAyICo8dHlwZSAyOTY+PikgVW5yZWFkQnl0ZSAoKSA8dHlwZSAtMTk+OwogZnVuYyAoYiA8dHlwZSAzMDI+KSBUcnVuY2F0ZSAobiA8dHlwZSAtMTE+KTsKIGZ1bmMgKGIgPHR5cGUgMzAyPikgV3JpdGVTdHJpbmcgKHMgPHR5cGUgLTE2PikgKG4gPHR5cGUgLTExPiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoYiA8dHlwZSAzMDI+KSBSZWFkU3RyaW5nIChkZWxpbSA8dHlwZSAtMjA+KSAobGluZSA8dHlwZSAtMTY+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChiIDx0eXBlIDMwMj4pIFJlYWRCeXRlICgpIChjIDx0eXBlIC0yMD4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGIgPHR5cGUgMzAyPikgTmV4dCAobiA8dHlwZSAtMTE+KSA8dHlwZSAzMDMgW10gPHR5cGUgLTIwPj47CiBmdW5jIChiIDx0eXBlIDMwMj4pIFdyaXRlUnVuZSAociA8dHlwZSAtMjE+KSAobiA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChiIDx0eXBlIDMwMj4pIFN0cmluZyAoKSA8dHlwZSAtMTY+OwogZnVuYyAoYiA8dHlwZSAzMDI+KSBXcml0ZVRvICh3IDx0eXBlIDExPikgKG4gPHR5cGUgLTQ+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChiIDx0eXBlIDMwMj4pIFJlYWRCeXRlcyAoZGVsaW0gPHR5cGUgLTIwPikgKGxpbmUgPHR5cGUgMzA0IFtdIDx0eXBlIC0yMD4+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChiIDx0eXBlIDMwMj4pIC5ieXRlcy5ncm93IChuIDx0eXBlIC0xMT4pIDx0eXBlIC0xMT47CiBmdW5jIChiIDx0eXBlIDMwMj4pIFJlYWRSdW5lICgpIChyIDx0eXBlIC0yMT4sIHNpemUgPHR5cGUgLTExPiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoYiA8dHlwZSAzMDI+KSBSZXNldCAoKTsKIGZ1bmMgKGIgPHR5cGUgMzAyPikgUmVhZCAocCA8dHlwZSAzMDUgW10gPHR5cGUgLTIwPj4pIChuIDx0eXBlIC0xMT4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGIgPHR5cGUgMzAyPikgVW5yZWFkUnVuZSAoKSA8dHlwZSAtMTk+OwogZnVuYyAoYiA8dHlwZSAzMDI+KSBXcml0ZSAocCA8dHlwZSAzMDYgW10gPHR5cGUgLTIwPj4pIChuIDx0eXBlIC0xMT4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGIgPHR5cGUgMzAyPikgV3JpdGVCeXRlIChjIDx0eXBlIC0yMD4pIDx0eXBlIC0xOT47CiBmdW5jIChiIDx0eXBlIDMwMj4pIC5ieXRlcy5yZWFkU2xpY2UgKGRlbGltIDx0eXBlIC0yMD4pIChsaW5lIDx0eXBlIDMwNyBbXSA8dHlwZSAtMjA+PiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoYiA8dHlwZSAzMDI+KSBSZWFkRnJvbSAociA8dHlwZSA4OD4pIChuIDx0eXBlIC00PiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoYiA8dHlwZSAzMDI+KSBMZW4gKCkgPHR5cGUgLTExPjsKIGZ1bmMgKGIgPHR5cGUgMzAyPikgR3JvdyAobiA8dHlwZSAtMTE+KTsKIGZ1bmMgKGIgPHR5cGUgMzAyPikgQnl0ZXMgKCkgPHR5cGUgMzA4IFtdIDx0eXBlIC0yMD4+Owo+PjsgLm1pbWUvbXVsdGlwYXJ0Lm1yIDx0eXBlIDMwOSAqPHR5cGUgMjc5Pj47IC5taW1lL211bHRpcGFydC5ieXRlc1JlYWQgPHR5cGUgLTExPjsgLm1pbWUvbXVsdGlwYXJ0LmRpc3Bvc2l0aW9uIDx0eXBlIC0xNj47IC5taW1lL211bHRpcGFydC5kaXNwb3NpdGlvblBhcmFtcyA8dHlwZSAzMTAgbWFwIFs8dHlwZSAtMTY+XSA8dHlwZSAtMTY+PjsgLm1pbWUvbXVsdGlwYXJ0LnIgPHR5cGUgODg+OyB9PgogZnVuYyAocCA8dHlwZSAzMTEgKjx0eXBlIDI5Mz4+KSBGaWxlTmFtZSAoKSA8dHlwZSAtMTY+OwogZnVuYyAocCA8dHlwZSAzMTE+KSAubWltZS9tdWx0aXBhcnQucGFyc2VDb250ZW50RGlzcG9zaXRpb24gKCk7CiBmdW5jIChwIDx0eXBlIDMxMT4pIENsb3NlICgpIDx0eXBlIC0xOT47CiBmdW5jIChicCA8dHlwZSAzMTE+KSAubWltZS9tdWx0aXBhcnQucG9wdWxhdGVIZWFkZXJzICgpIDx0eXBlIC0xOT47CiBmdW5jIChwIDx0eXBlIDMxMT4pIFJlYWQgKGQgPHR5cGUgMzEyIFtdIDx0eXBlIC0yMD4+KSAobiA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChwIDx0eXBlIDMxMT4pIEZvcm1OYW1lICgpIDx0eXBlIC0xNj47Cj4+OyAubWltZS9tdWx0aXBhcnQucGFydHNSZWFkIDx0eXBlIC0xMT47IC5taW1lL211bHRpcGFydC5ubCA8dHlwZSAzMTMgW10gPHR5cGUgLTIwPj47IC5taW1lL211bHRpcGFydC5ubERhc2hCb3VuZGFyeSA8dHlwZSAzMTQgW10gPHR5cGUgLTIwPj47IC5taW1lL211bHRpcGFydC5kYXNoQm91bmRhcnlEYXNoIDx0eXBlIDMxNSBbXSA8dHlwZSAtMjA+PjsgLm1pbWUvbXVsdGlwYXJ0LmRhc2hCb3VuZGFyeSA8dHlwZSAzMTYgW10gPHR5cGUgLTIwPj47IH0+CiBmdW5jIChtciA8dHlwZSAzMTcgKjx0eXBlIDI3OT4+KSAubWltZS9tdWx0aXBhcnQucGVla0J1ZmZlcklzRW1wdHlQYXJ0IChwZWVrIDx0eXBlIDMxOCBbXSA8dHlwZSAtMjA+PikgPHR5cGUgLTE1PjsKIGZ1bmMgKHIgPHR5cGUgMzE3PikgUmVhZEZvcm0gKG1heE1lbW9yeSA8dHlwZSAtND4pIChmIDx0eXBlIDk0PiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAobXIgPHR5cGUgMzE3PikgLm1pbWUvbXVsdGlwYXJ0LmlzQm91bmRhcnlEZWxpbWl0ZXJMaW5lIChsaW5lIDx0eXBlIDMxOSBbXSA8dHlwZSAtMjA+PikgKHJldCA8dHlwZSAtMTU+KTsKIGZ1bmMgKHIgPHR5cGUgMzE3PikgTmV4dFBhcnQgKCkgKD8gPHR5cGUgMjkyPiwgPyA8dHlwZSAtMTk+KTsKIGZ1bmMgKG1yIDx0eXBlIDMxNz4pIC5taW1lL211bHRpcGFydC5pc0ZpbmFsQm91bmRhcnkgKGxpbmUgPHR5cGUgMzIwIFtdIDx0eXBlIC0yMD4+KSA8dHlwZSAtMTU+Owo+PiwgPyA8dHlwZSAtMTk+KTsKIGZ1bmMgKHIgPHR5cGUgMjc3PikgLm5ldC9odHRwLndhbnRzSHR0cDEwS2VlcEFsaXZlICgpIDx0eXBlIC0xNT47CiBmdW5jIChyIDx0eXBlIDI3Nz4pIFBhcnNlTXVsdGlwYXJ0Rm9ybSAobWF4TWVtb3J5IDx0eXBlIC00PikgPHR5cGUgLTE5PjsKIGZ1bmMgKHIgPHR5cGUgMjc3PikgVXNlckFnZW50ICgpIDx0eXBlIC0xNj47CiBmdW5jIChyZXEgPHR5cGUgMjc3PikgLm5ldC9odHRwLndyaXRlICh3IDx0eXBlIDExPiwgdXNpbmdQcm94eSA8dHlwZSAtMTU+LCBleHRyYUhlYWRlcnMgPHR5cGUgNTc+KSA8dHlwZSAtMTk+OwogZnVuYyAociA8dHlwZSAyNzc+KSBDb29raWVzICgpIDx0eXBlIDMyMSBbXSA8dHlwZSAzMjIgKjx0eXBlIDMyMyAibmV0L2h0dHAuQ29va2llIiA8dHlwZSAzMjQgc3RydWN0IHsgTmFtZSA8dHlwZSAtMTY+OyBWYWx1ZSA8dHlwZSAtMTY+OyBQYXRoIDx0eXBlIC0xNj47IERvbWFpbiA8dHlwZSAtMTY+OyBFeHBpcmVzIDx0eXBlIDIzPjsgUmF3RXhwaXJlcyA8dHlwZSAtMTY+OyBNYXhBZ2UgPHR5cGUgLTExPjsgU2VjdXJlIDx0eXBlIC0xNT47IEh0dHBPbmx5IDx0eXBlIC0xNT47IFJhdyA8dHlwZSAtMTY+OyBVbnBhcnNlZCA8dHlwZSAzMjUgW10gPHR5cGUgLTE2Pj47IH0+CiBmdW5jIChjIDx0eXBlIDMyNiAqPHR5cGUgMzIzPj4pIFN0cmluZyAoKSA8dHlwZSAtMTY+Owo+Pj47CiBmdW5jIChyIDx0eXBlIDI3Nz4pIFdyaXRlUHJveHkgKHcgPHR5cGUgMTE+KSA8dHlwZSAtMTk+OwogZnVuYyAociA8dHlwZSAyNzc+KSBNdWx0aXBhcnRSZWFkZXIgKCkgKD8gPHR5cGUgMjc4PiwgPyA8dHlwZSAtMTk+KTsKIGZ1bmMgKHIgPHR5cGUgMjc3PikgV3JpdGUgKHcgPHR5cGUgMTE+KSA8dHlwZSAtMTk+OwogZnVuYyAociA8dHlwZSAyNzc+KSAubmV0L2h0dHAud2FudHNDbG9zZSAoKSA8dHlwZSAtMTU+OwogZnVuYyAociA8dHlwZSAyNzc+KSBGb3JtVmFsdWUgKGtleSA8dHlwZSAtMTY+KSA8dHlwZSAtMTY+OwogZnVuYyAociA8dHlwZSAyNzc+KSBQYXJzZUZvcm0gKCkgPHR5cGUgLTE5PjsKIGZ1bmMgKHIgPHR5cGUgMjc3PikgQ29va2llIChuYW1lIDx0eXBlIC0xNj4pICg/IDx0eXBlIDMyMj4sID8gPHR5cGUgLTE5Pik7CiBmdW5jIChyIDx0eXBlIDI3Nz4pIFBvc3RGb3JtVmFsdWUgKGtleSA8dHlwZSAtMTY+KSA8dHlwZSAtMTY+OwogZnVuYyAociA8dHlwZSAyNzc+KSBBZGRDb29raWUgKGMgPHR5cGUgMzIyPik7CiBmdW5jIChyIDx0eXBlIDI3Nz4pIEZvcm1GaWxlIChrZXkgPHR5cGUgLTE2PikgKD8gPHR5cGUgMTA5PiwgPyA8dHlwZSAxMDE+LCA/IDx0eXBlIC0xOT4pOwogZnVuYyAociA8dHlwZSAyNzc+KSAubmV0L2h0dHAuY2xvc2VCb2R5ICgpOwogZnVuYyAociA8dHlwZSAyNzc+KSBTZXRCYXNpY0F1dGggKHVzZXJuYW1lIDx0eXBlIC0xNj4sIHBhc3N3b3JkIDx0eXBlIC0xNj4pOwogZnVuYyAociA8dHlwZSAyNzc+KSBCYXNpY0F1dGggKCkgKHVzZXJuYW1lIDx0eXBlIC0xNj4sIHBhc3N3b3JkIDx0eXBlIC0xNj4sIG9rIDx0eXBlIC0xNT4pOwo+Pik7IH0+PjsgfT4KIGZ1bmMgKGggPHR5cGUgMzI3ICo8dHlwZSAxPj4pIFNlcnZlSFRUUCAocncgPHR5cGUgNTU+LCByZXEgPHR5cGUgNzI+KTsKIGZ1bmMgKGggPHR5cGUgMzI3PikgLm5ldC9odHRwL2NnaS5wcmludGYgKGZvcm1hdCA8dHlwZSAtMTY+LCB2IC4uLjx0eXBlIDMyOCBpbnRlcmZhY2UgeyB9Pik7CiBmdW5jIChoIDx0eXBlIDMyNz4pIC5uZXQvaHR0cC9jZ2kuaGFuZGxlSW50ZXJuYWxSZWRpcmVjdCAocncgPHR5cGUgNTU+LCByZXEgPHR5cGUgNzI+LCBwYXRoIDx0eXBlIC0xNj4pOwo+OwpmdW5jIFJlcXVlc3QgKCkgKD8gPHR5cGUgNzI+LCA/IDx0eXBlIC0xOT4pOwpmdW5jIFJlcXVlc3RGcm9tTWFwIChwYXJhbXMgPHR5cGUgMzI5IG1hcCBbPHR5cGUgLTE2Pl0gPHR5cGUgLTE2Pj4pICg/IDx0eXBlIDcyPiwgPyA8dHlwZSAtMTk+KTsKZnVuYyBTZXJ2ZSAoaGFuZGxlciA8dHlwZSA1Mz4pIDx0eXBlIC0xOT47CmNoZWNrc3VtIEZFOTdGMzQ1REQ0RDc1MDZCMENGNzAxQzY2NjMwQTU3RDNGMUVCMUM7CgAuc3ltdGFiAC5zdHJ0YWIALnNoc3RydGFiAC5nb19leHBvcnQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsAAAABAAAAAAAAAAAAAAA0AAAA74UAAAAAAAAAAAAAAQAAAAAAAAARAAAAAwAAAAAAAAAAAAAAI4YAACYAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAIAAAAAAAAAAAAAAEyGAAAgAAAABAAAAAIAAAAEAAAAEAAAAAkAAAADAAAAAAAAAAAAAABshgAAAQAAAAAAAAAAAAAAAQAAAAAAAAA=