f0VMRgEBAQAAAAAAAAAAAAEACAABAAAAAAAAAAAAAAB8AAEABxAAUDQAAAAAACgABQACAHYxOwpwYWNrYWdlIGh0dHA7CnBrZ3BhdGggbmV0L2h0dHA7CnByaW9yaXR5IDEyOwppbXBvcnQgYnVmaW8gYnVmaW8gImJ1ZmlvIjsKaW1wb3J0IGJ5dGVzIGJ5dGVzICJieXRlcyI7CmltcG9ydCBnemlwIGNvbXByZXNzL2d6aXAgImNvbXByZXNzL2d6aXAiOwppbXBvcnQgdGxzIGNyeXB0by90bHMgImNyeXB0by90bHMiOwppbXBvcnQgYmFzZTY0IGVuY29kaW5nL2Jhc2U2NCAiZW5jb2RpbmcvYmFzZTY0IjsKaW1wb3J0IGJpbmFyeSBlbmNvZGluZy9iaW5hcnkgImVuY29kaW5nL2JpbmFyeSI7CmltcG9ydCBlcnJvcnMgZXJyb3JzICJlcnJvcnMiOwppbXBvcnQgZm10IGZtdCAiZm10IjsKaW1wb3J0IGlvIGlvICJpbyI7CmltcG9ydCBpb3V0aWwgaW8vaW91dGlsICJpby9pb3V0aWwiOwppbXBvcnQgbG9nIGxvZyAibG9nIjsKaW1wb3J0IG1pbWUgbWltZSAibWltZSI7CmltcG9ydCBtdWx0aXBhcnQgbWltZS9tdWx0aXBhcnQgIm1pbWUvbXVsdGlwYXJ0IjsKaW1wb3J0IG5ldCBuZXQgIm5ldCI7CmltcG9ydCBpbnRlcm5hbCBuZXQvaHR0cC9pbnRlcm5hbCAibmV0L2h0dHAvaW50ZXJuYWwiOwppbXBvcnQgdGV4dHByb3RvIG5ldC90ZXh0cHJvdG8gIm5ldC90ZXh0cHJvdG8iOwppbXBvcnQgdXJsIG5ldC91cmwgIm5ldC91cmwiOwppbXBvcnQgb3Mgb3MgIm9zIjsKaW1wb3J0IHBhdGggcGF0aCAicGF0aCI7CmltcG9ydCBmaWxlcGF0aCBwYXRoL2ZpbGVwYXRoICJwYXRoL2ZpbGVwYXRoIjsKaW1wb3J0IHJ1bnRpbWUgcnVudGltZSAicnVudGltZSI7CmltcG9ydCBzb3J0IHNvcnQgInNvcnQiOwppbXBvcnQgc3RyY29udiBzdHJjb252ICJzdHJjb252IjsKaW1wb3J0IHN0cmluZ3Mgc3RyaW5ncyAic3RyaW5ncyI7CmltcG9ydCBzeW5jIHN5bmMgInN5bmMiOwppbXBvcnQgYXRvbWljIHN5bmMvYXRvbWljICJzeW5jL2F0b21pYyI7CmltcG9ydCB0aW1lIHRpbWUgInRpbWUiOwppbml0IGh0dHAgbmV0X2h0dHAuLmltcG9ydCAxMiBtYXRoIG1hdGguLmltcG9ydCAxIHJ1bnRpbWUgcnVudGltZS4uaW1wb3J0IDEgdW5pY29kZSB1bmljb2RlLi5pbXBvcnQgMSBzdHJjb252IHN0cmNvbnYuLmltcG9ydCAyIHN5bmMgc3luYy4uaW1wb3J0IDIgaW8gaW8uLmltcG9ydCAzIHJhbmQgbWF0aF9yYW5kLi5pbXBvcnQgMyByZWZsZWN0IHJlZmxlY3QuLmltcG9ydCAzIHN5c2NhbGwgc3lzY2FsbC4uaW1wb3J0IDMgYmluYXJ5IGVuY29kaW5nX2JpbmFyeS4uaW1wb3J0IDQgYnl0ZXMgYnl0ZXMuLmltcG9ydCA0IGNpcGhlciBjcnlwdG9fY2lwaGVyLi5pbXBvcnQgNCBzeXNjYWxsIGludGVybmFsX3N5c2NhbGwuLmltcG9ydCA0IHRpbWUgdGltZS4uaW1wb3J0IDQgYmFzZTY0IGVuY29kaW5nX2Jhc2U2NC4uaW1wb3J0IDUgYnVmaW8gYnVmaW8uLmltcG9ydCA1IGNyYzMyIGhhc2hfY3JjMzIuLmltcG9ydCA1IGNyeXB0byBjcnlwdG8uLmltcG9ydCA1IGRlcyBjcnlwdG9fZGVzLi5pbXBvcnQgNSBvcyBvcy4uaW1wb3J0IDUgcGF0aCBwYXRoLi5pbXBvcnQgNSBmaWxlcGF0aCBwYXRoX2ZpbGVwYXRoLi5pbXBvcnQgNiBmbXQgZm10Li5pbXBvcnQgNiBtZDUgY3J5cHRvX21kNS4uaW1wb3J0IDYgbmV0IG5ldC4uaW1wb3J0IDYgcGVtIGVuY29kaW5nX3BlbS4uaW1wb3J0IDYgc2hhMSBjcnlwdG9fc2hhMS4uaW1wb3J0IDYgc2hhMjU2IGNyeXB0b19zaGEyNTYuLmltcG9ydCA2IHNoYTUxMiBjcnlwdG9fc2hhNTEyLi5pbXBvcnQgNiBiaWcgbWF0aF9iaWcuLmltcG9ydCA3IGZsYXRlIGNvbXByZXNzX2ZsYXRlLi5pbXBvcnQgNyBoZXggZW5jb2RpbmdfaGV4Li5pbXBvcnQgNyBpbnRlcm5hbCBuZXRfaHR0cF9pbnRlcm5hbC4uaW1wb3J0IDcgaW91dGlsIGlvX2lvdXRpbC4uaW1wb3J0IDcgbG9nIGxvZy4uaW1wb3J0IDcgbWltZSBtaW1lLi5pbXBvcnQgNyBhc24xIGVuY29kaW5nX2FzbjEuLmltcG9ydCA4IGRzYSBjcnlwdG9fZHNhLi5pbXBvcnQgOCBlbGxpcHRpYyBjcnlwdG9fZWxsaXB0aWMuLmltcG9ydCA4IGd6aXAgY29tcHJlc3NfZ3ppcC4uaW1wb3J0IDggcmFuZCBjcnlwdG9fcmFuZC4uaW1wb3J0IDggdGV4dHByb3RvIG5ldF90ZXh0cHJvdG8uLmltcG9ydCA4IGVjZHNhIGNyeXB0b19lY2RzYS4uaW1wb3J0IDkgbXVsdGlwYXJ0IG1pbWVfbXVsdGlwYXJ0Li5pbXBvcnQgOSBwa2l4IGNyeXB0b194NTA5X3BraXguLmltcG9ydCA5IHJzYSBjcnlwdG9fcnNhLi5pbXBvcnQgOSB4NTA5IGNyeXB0b194NTA5Li5pbXBvcnQgMTAgdGxzIGNyeXB0b190bHMuLmltcG9ydCAxMTsKZnVuYyBDYW5vbmljYWxIZWFkZXJLZXkgKHMgPHR5cGUgLTE2PikgPHR5cGUgLTE2PjsKdHlwZSA8dHlwZSAxICJDbGllbnQiIDx0eXBlIDIgc3RydWN0IHsgVHJhbnNwb3J0IDx0eXBlIDMgIlJvdW5kVHJpcHBlciIgPHR5cGUgNCBpbnRlcmZhY2UgeyBSb3VuZFRyaXAgKD8gPHR5cGUgNSAqPHR5cGUgNiAiUmVxdWVzdCIgPHR5cGUgNyBzdHJ1Y3QgeyBNZXRob2QgPHR5cGUgLTE2PjsgVVJMIDx0eXBlIDggKjx0eXBlIDkgIm5ldC91cmwuVVJMIiA8dHlwZSAxMCBzdHJ1Y3QgeyBTY2hlbWUgPHR5cGUgLTE2PjsgT3BhcXVlIDx0eXBlIC0xNj47IFVzZXIgPHR5cGUgMTEgKjx0eXBlIDEyICJuZXQvdXJsLlVzZXJpbmZvIiA8dHlwZSAxMyBzdHJ1Y3QgeyAubmV0L3VybC51c2VybmFtZSA8dHlwZSAtMTY+OyAubmV0L3VybC5wYXNzd29yZCA8dHlwZSAtMTY+OyAubmV0L3VybC5wYXNzd29yZFNldCA8dHlwZSAtMTU+OyB9PgogZnVuYyAodSA8dHlwZSAxNCAqPHR5cGUgMTI+PikgVXNlcm5hbWUgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKHUgPHR5cGUgMTQ+KSBQYXNzd29yZCAoKSAoPyA8dHlwZSAtMTY+LCA/IDx0eXBlIC0xNT4pOwogZnVuYyAodSA8dHlwZSAxND4pIFN0cmluZyAoKSA8dHlwZSAtMTY+Owo+PjsgSG9zdCA8dHlwZSAtMTY+OyBQYXRoIDx0eXBlIC0xNj47IFJhd1F1ZXJ5IDx0eXBlIC0xNj47IEZyYWdtZW50IDx0eXBlIC0xNj47IH0+CiBmdW5jICh1IDx0eXBlIDE1ICo8dHlwZSA5Pj4pIElzQWJzICgpIDx0eXBlIC0xNT47CiBmdW5jICh1IDx0eXBlIDE1PikgUmVxdWVzdFVSSSAoKSA8dHlwZSAtMTY+OwogZnVuYyAodSA8dHlwZSAxNT4pIFN0cmluZyAoKSA8dHlwZSAtMTY+OwogZnVuYyAodSA8dHlwZSAxNT4pIFF1ZXJ5ICgpIDx0eXBlIDE2ICJuZXQvdXJsLlZhbHVlcyIgPHR5cGUgMTcgbWFwIFs8dHlwZSAtMTY+XSA8dHlwZSAxOCBbXSA8dHlwZSAtMTY+Pj4KIGZ1bmMgKHYgPHR5cGUgMTY+KSBHZXQgKGtleSA8dHlwZSAtMTY+KSA8dHlwZSAtMTY+OwogZnVuYyAodiA8dHlwZSAxNj4pIEVuY29kZSAoKSA8dHlwZSAtMTY+OwogZnVuYyAodiA8dHlwZSAxNj4pIFNldCAoa2V5IDx0eXBlIC0xNj4sIHZhbHVlIDx0eXBlIC0xNj4pOwogZnVuYyAodiA8dHlwZSAxNj4pIEFkZCAoa2V5IDx0eXBlIC0xNj4sIHZhbHVlIDx0eXBlIC0xNj4pOwogZnVuYyAodiA8dHlwZSAxNj4pIERlbCAoa2V5IDx0eXBlIC0xNj4pOwo+OwogZnVuYyAodSA8dHlwZSAxNT4pIFJlc29sdmVSZWZlcmVuY2UgKHJlZiA8dHlwZSAxNT4pIDx0eXBlIDE1PjsKIGZ1bmMgKHUgPHR5cGUgMTU+KSBQYXJzZSAocmVmIDx0eXBlIC0xNj4pICg/IDx0eXBlIDE1PiwgPyA8dHlwZSAtMTk+KTsKPj47IFByb3RvIDx0eXBlIC0xNj47IFByb3RvTWFqb3IgPHR5cGUgLTExPjsgUHJvdG9NaW5vciA8dHlwZSAtMTE+OyBIZWFkZXIgPHR5cGUgMTkgIkhlYWRlciIgPHR5cGUgMjAgbWFwIFs8dHlwZSAtMTY+XSA8dHlwZSAyMSBbXSA8dHlwZSAtMTY+Pj4KIGZ1bmMgKGggPHR5cGUgMTk+KSBBZGQgKGtleSA8dHlwZSAtMTY+LCB2YWx1ZSA8dHlwZSAtMTY+KTsKIGZ1bmMgKGggPHR5cGUgMTk+KSBTZXQgKGtleSA8dHlwZSAtMTY+LCB2YWx1ZSA8dHlwZSAtMTY+KTsKIGZ1bmMgKGggPHR5cGUgMTk+KSBHZXQgKGtleSA8dHlwZSAtMTY+KSA8dHlwZSAtMTY+OwogZnVuYyAoaCA8dHlwZSAxOT4pIC5uZXQvaHR0cC5nZXQgKGtleSA8dHlwZSAtMTY+KSA8dHlwZSAtMTY+OwogZnVuYyAoaCA8dHlwZSAxOT4pIERlbCAoa2V5IDx0eXBlIC0xNj4pOwogZnVuYyAoaCA8dHlwZSAxOT4pIFdyaXRlICh3IDx0eXBlIDIyICJpby5Xcml0ZXIiIDx0eXBlIDIzIGludGVyZmFjZSB7IFdyaXRlIChwIDx0eXBlIDI0IFtdIDx0eXBlIC0yMD4+KSAobiA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7IH0+PikgPHR5cGUgLTE5PjsKIGZ1bmMgKGggPHR5cGUgMTk+KSAubmV0L2h0dHAuY2xvbmUgKCkgPHR5cGUgMTk+OwogZnVuYyAoaCA8dHlwZSAxOT4pIC5uZXQvaHR0cC5zb3J0ZWRLZXlWYWx1ZXMgKGV4Y2x1ZGUgPHR5cGUgMjUgbWFwIFs8dHlwZSAtMTY+XSA8dHlwZSAtMTU+PikgKGt2cyA8dHlwZSAyNiBbXSA8dHlwZSAyNyAiLm5ldC9odHRwLmtleVZhbHVlcyIgPHR5cGUgMjggc3RydWN0IHsgLm5ldC9odHRwLmtleSA8dHlwZSAtMTY+OyAubmV0L2h0dHAudmFsdWVzIDx0eXBlIDI5IFtdIDx0eXBlIC0xNj4+OyB9Pj4+LCBocyA8dHlwZSAzMCAqPHR5cGUgMzEgIi5uZXQvaHR0cC5oZWFkZXJTb3J0ZXIiIDx0eXBlIDMyIHN0cnVjdCB7IC5uZXQvaHR0cC5rdnMgPHR5cGUgMzMgW10gPHR5cGUgMjc+PjsgfT4KIGZ1bmMgKHMgPHR5cGUgMzQgKjx0eXBlIDMxPj4pIExlbiAoKSA8dHlwZSAtMTE+OwogZnVuYyAocyA8dHlwZSAzND4pIFN3YXAgKGkgPHR5cGUgLTExPiwgaiA8dHlwZSAtMTE+KTsKIGZ1bmMgKHMgPHR5cGUgMzQ+KSBMZXNzIChpIDx0eXBlIC0xMT4sIGogPHR5cGUgLTExPikgPHR5cGUgLTE1PjsKPj4pOwogZnVuYyAoaCA8dHlwZSAxOT4pIFdyaXRlU3Vic2V0ICh3IDx0eXBlIDIyPiwgZXhjbHVkZSA8dHlwZSAzNSBtYXAgWzx0eXBlIC0xNj5dIDx0eXBlIC0xNT4+KSA8dHlwZSAtMTk+Owo+OyBCb2R5IDx0eXBlIDM2ICJpby5SZWFkQ2xvc2VyIiA8dHlwZSAzNyBpbnRlcmZhY2UgeyA/IDx0eXBlIDM4ICJpby5SZWFkZXIiIDx0eXBlIDM5IGludGVyZmFjZSB7IFJlYWQgKHAgPHR5cGUgNDAgW10gPHR5cGUgLTIwPj4pIChuIDx0eXBlIC0xMT4sIGVyciA8dHlwZSAtMTk+KTsgfT4+OyA/IDx0eXBlIDQxICJpby5DbG9zZXIiIDx0eXBlIDQyIGludGVyZmFjZSB7IENsb3NlICgpIDx0eXBlIC0xOT47IH0+PjsgfT4+OyBDb250ZW50TGVuZ3RoIDx0eXBlIC00PjsgVHJhbnNmZXJFbmNvZGluZyA8dHlwZSA0MyBbXSA8dHlwZSAtMTY+PjsgQ2xvc2UgPHR5cGUgLTE1PjsgSG9zdCA8dHlwZSAtMTY+OyBGb3JtIDx0eXBlIDE2PjsgUG9zdEZvcm0gPHR5cGUgMTY+OyBNdWx0aXBhcnRGb3JtIDx0eXBlIDQ0ICo8dHlwZSA0NSAibWltZS9tdWx0aXBhcnQuRm9ybSIgPHR5cGUgNDYgc3RydWN0IHsgVmFsdWUgPHR5cGUgNDcgbWFwIFs8dHlwZSAtMTY+XSA8dHlwZSA0OCBbXSA8dHlwZSAtMTY+Pj47IEZpbGUgPHR5cGUgNDkgbWFwIFs8dHlwZSAtMTY+XSA8dHlwZSA1MCBbXSA8dHlwZSA1MSAqPHR5cGUgNTIgIm1pbWUvbXVsdGlwYXJ0LkZpbGVIZWFkZXIiIDx0eXBlIDUzIHN0cnVjdCB7IEZpbGVuYW1lIDx0eXBlIC0xNj47IEhlYWRlciA8dHlwZSA1NCAibmV0L3RleHRwcm90by5NSU1FSGVhZGVyIiA8dHlwZSA1NSBtYXAgWzx0eXBlIC0xNj5dIDx0eXBlIDU2IFtdIDx0eXBlIC0xNj4+PgogZnVuYyAoaCA8dHlwZSA1ND4pIEdldCAoa2V5IDx0eXBlIC0xNj4pIDx0eXBlIC0xNj47CiBmdW5jIChoIDx0eXBlIDU0PikgU2V0IChrZXkgPHR5cGUgLTE2PiwgdmFsdWUgPHR5cGUgLTE2Pik7CiBmdW5jIChoIDx0eXBlIDU0PikgQWRkIChrZXkgPHR5cGUgLTE2PiwgdmFsdWUgPHR5cGUgLTE2Pik7CiBmdW5jIChoIDx0eXBlIDU0PikgRGVsIChrZXkgPHR5cGUgLTE2Pik7Cj47IC5taW1lL211bHRpcGFydC5jb250ZW50IDx0eXBlIDU3IFtdIDx0eXBlIC0yMD4+OyAubWltZS9tdWx0aXBhcnQudG1wZmlsZSA8dHlwZSAtMTY+OyB9PgogZnVuYyAoZmggPHR5cGUgNTggKjx0eXBlIDUyPj4pIE9wZW4gKCkgKD8gPHR5cGUgNTkgIm1pbWUvbXVsdGlwYXJ0LkZpbGUiIDx0eXBlIDYwIGludGVyZmFjZSB7ID8gPHR5cGUgMzg+OyA/IDx0eXBlIDYxICJpby5SZWFkZXJBdCIgPHR5cGUgNjIgaW50ZXJmYWNlIHsgUmVhZEF0IChwIDx0eXBlIDYzIFtdIDx0eXBlIC0yMD4+LCBvZmYgPHR5cGUgLTQ+KSAobiA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7IH0+PjsgPyA8dHlwZSA2NCAiaW8uU2Vla2VyIiA8dHlwZSA2NSBpbnRlcmZhY2UgeyBTZWVrIChvZmZzZXQgPHR5cGUgLTQ+LCB3aGVuY2UgPHR5cGUgLTExPikgKD8gPHR5cGUgLTQ+LCA/IDx0eXBlIC0xOT4pOyB9Pj47ID8gPHR5cGUgNDE+OyB9Pj4sID8gPHR5cGUgLTE5Pik7Cj4+Pj47IH0+CiBmdW5jIChmIDx0eXBlIDY2ICo8dHlwZSA0NT4+KSBSZW1vdmVBbGwgKCkgPHR5cGUgLTE5PjsKPj47IFRyYWlsZXIgPHR5cGUgMTk+OyBSZW1vdGVBZGRyIDx0eXBlIC0xNj47IFJlcXVlc3RVUkkgPHR5cGUgLTE2PjsgVExTIDx0eXBlIDY3ICo8dHlwZSA2OCAiY3J5cHRvL3Rscy5Db25uZWN0aW9uU3RhdGUiIDx0eXBlIDY5IHN0cnVjdCB7IFZlcnNpb24gPHR5cGUgLTY+OyBIYW5kc2hha2VDb21wbGV0ZSA8dHlwZSAtMTU+OyBEaWRSZXN1bWUgPHR5cGUgLTE1PjsgQ2lwaGVyU3VpdGUgPHR5cGUgLTY+OyBOZWdvdGlhdGVkUHJvdG9jb2wgPHR5cGUgLTE2PjsgTmVnb3RpYXRlZFByb3RvY29sSXNNdXR1YWwgPHR5cGUgLTE1PjsgU2VydmVyTmFtZSA8dHlwZSAtMTY+OyBQZWVyQ2VydGlmaWNhdGVzIDx0eXBlIDcwIFtdIDx0eXBlIDcxICo8dHlwZSA3MiAiY3J5cHRvL3g1MDkuQ2VydGlmaWNhdGUiICJ4NTA5IiA8dHlwZSA3MyBzdHJ1Y3QgeyBSYXcgPHR5cGUgNzQgW10gPHR5cGUgLTIwPj47IFJhd1RCU0NlcnRpZmljYXRlIDx0eXBlIDc1IFtdIDx0eXBlIC0yMD4+OyBSYXdTdWJqZWN0UHVibGljS2V5SW5mbyA8dHlwZSA3NiBbXSA8dHlwZSAtMjA+PjsgUmF3U3ViamVjdCA8dHlwZSA3NyBbXSA8dHlwZSAtMjA+PjsgUmF3SXNzdWVyIDx0eXBlIDc4IFtdIDx0eXBlIC0yMD4+OyBTaWduYXR1cmUgPHR5cGUgNzkgW10gPHR5cGUgLTIwPj47IFNpZ25hdHVyZUFsZ29yaXRobSA8dHlwZSA4MCAiY3J5cHRvL3g1MDkuU2lnbmF0dXJlQWxnb3JpdGhtIiA8dHlwZSAtMTE+PjsgUHVibGljS2V5QWxnb3JpdGhtIDx0eXBlIDgxICJjcnlwdG8veDUwOS5QdWJsaWNLZXlBbGdvcml0aG0iIDx0eXBlIC0xMT4+OyBQdWJsaWNLZXkgPHR5cGUgODIgaW50ZXJmYWNlIHsgfT47IFZlcnNpb24gPHR5cGUgLTExPjsgU2VyaWFsTnVtYmVyIDx0eXBlIDgzICo8dHlwZSA4NCAibWF0aC9iaWcuSW50IiAiYmlnIiA8dHlwZSA4NSBzdHJ1Y3QgeyAubWF0aC9iaWcubmVnIDx0eXBlIC0xNT47IC5tYXRoL2JpZy5hYnMgPHR5cGUgODYgIi5tYXRoL2JpZy5uYXQiIDx0eXBlIDg3IFtdIDx0eXBlIDg4ICJtYXRoL2JpZy5Xb3JkIiA8dHlwZSAtMTM+Pj4KIGZ1bmMgKHogPHR5cGUgODY+KSAubWF0aC9iaWcubXVsICh4IDx0eXBlIDg2PiwgeSA8dHlwZSA4Nj4pIDx0eXBlIDg2PjsKIGZ1bmMgKHogPHR5cGUgODY+KSAubWF0aC9iaWcuc2NhbiAociA8dHlwZSA4OSAiaW8uUnVuZVNjYW5uZXIiIDx0eXBlIDkwIGludGVyZmFjZSB7ID8gPHR5cGUgOTEgImlvLlJ1bmVSZWFkZXIiIDx0eXBlIDkyIGludGVyZmFjZSB7IFJlYWRSdW5lICgpIChyIDx0eXBlIC0yMT4sIHNpemUgPHR5cGUgLTExPiwgZXJyIDx0eXBlIC0xOT4pOyB9Pj47IFVucmVhZFJ1bmUgKCkgPHR5cGUgLTE5PjsgfT4+LCBiYXNlIDx0eXBlIC0xMT4pICg/IDx0eXBlIDg2PiwgPyA8dHlwZSAtMTE+LCA/IDx0eXBlIC0xOT4pOwogZnVuYyAoeiA8dHlwZSA4Nj4pIC5tYXRoL2JpZy5hZGQgKHggPHR5cGUgODY+LCB5IDx0eXBlIDg2PikgPHR5cGUgODY+OwogZnVuYyAoeiA8dHlwZSA4Nj4pIC5tYXRoL2JpZy5hbmROb3QgKHggPHR5cGUgODY+LCB5IDx0eXBlIDg2PikgPHR5cGUgODY+OwogZnVuYyAoeiA8dHlwZSA4Nj4pIC5tYXRoL2JpZy5zZXRCaXQgKHggPHR5cGUgODY+LCBpIDx0eXBlIC0xMj4sIGIgPHR5cGUgLTEyPikgPHR5cGUgODY+OwogZnVuYyAoeiA8dHlwZSA4Nj4pIC5tYXRoL2JpZy5zdWIgKHggPHR5cGUgODY+LCB5IDx0eXBlIDg2PikgPHR5cGUgODY+OwogZnVuYyAoeCA8dHlwZSA4Nj4pIC5tYXRoL2JpZy5tb2RXIChkIDx0eXBlIDg4PikgKHIgPHR5cGUgODg+KTsKIGZ1bmMgKG4gPHR5cGUgODY+KSAubWF0aC9iaWcucHJvYmFibHlQcmltZSAocmVwcyA8dHlwZSAtMTE+KSA8dHlwZSAtMTU+OwogZnVuYyAocSA8dHlwZSA4Nj4pIC5tYXRoL2JpZy5jb252ZXJ0V29yZHMgKHMgPHR5cGUgOTMgW10gPHR5cGUgLTIwPj4sIGNoYXJzZXQgPHR5cGUgLTE2PiwgYiA8dHlwZSA4OD4sIG5kaWdpdHMgPHR5cGUgLTExPiwgYmIgPHR5cGUgODg+LCB0YWJsZSA8dHlwZSA5NCBbXSA8dHlwZSA5NSAiLm1hdGgvYmlnLmRpdmlzb3IiIDx0eXBlIDk2IHN0cnVjdCB7IC5tYXRoL2JpZy5iYmIgPHR5cGUgODY+OyAubWF0aC9iaWcubmJpdHMgPHR5cGUgLTExPjsgLm1hdGgvYmlnLm5kaWdpdHMgPHR5cGUgLTExPjsgfT4+Pik7CiBmdW5jICh4IDx0eXBlIDg2PikgLm1hdGgvYmlnLnN0cmluZyAoY2hhcnNldCA8dHlwZSAtMTY+KSA8dHlwZSAtMTY+OwogZnVuYyAoeiA8dHlwZSA4Nj4pIC5tYXRoL2JpZy5kaXZXICh4IDx0eXBlIDg2PiwgeSA8dHlwZSA4OD4pIChxIDx0eXBlIDg2PiwgciA8dHlwZSA4OD4pOwogZnVuYyAoeiA8dHlwZSA4Nj4pIC5tYXRoL2JpZy5zaHIgKHggPHR5cGUgODY+LCBzIDx0eXBlIC0xMj4pIDx0eXBlIDg2PjsKIGZ1bmMgKHogPHR5cGUgODY+KSAubWF0aC9iaWcubXVsUmFuZ2UgKGEgPHR5cGUgLTg+LCBiIDx0eXBlIC04PikgPHR5cGUgODY+OwogZnVuYyAoeiA8dHlwZSA4Nj4pIC5tYXRoL2JpZy5tdWxBZGRXVyAoeCA8dHlwZSA4Nj4sIHkgPHR5cGUgODg+LCByIDx0eXBlIDg4PikgPHR5cGUgODY+OwogZnVuYyAoeCA8dHlwZSA4Nj4pIC5tYXRoL2JpZy5kZWNpbWFsU3RyaW5nICgpIDx0eXBlIC0xNj47CiBmdW5jICh6IDx0eXBlIDg2PikgLm1hdGgvYmlnLmFuZCAoeCA8dHlwZSA4Nj4sIHkgPHR5cGUgODY+KSA8dHlwZSA4Nj47CiBmdW5jICh6IDx0eXBlIDg2PikgLm1hdGgvYmlnLmJpdCAoaSA8dHlwZSAtMTI+KSA8dHlwZSAtMTI+OwogZnVuYyAoeiA8dHlwZSA4Nj4pIC5tYXRoL2JpZy54b3IgKHggPHR5cGUgODY+LCB5IDx0eXBlIDg2PikgPHR5cGUgODY+OwogZnVuYyAoeiA8dHlwZSA4Nj4pIC5tYXRoL2JpZy5zZXQgKHggPHR5cGUgODY+KSA8dHlwZSA4Nj47CiBmdW5jICh6IDx0eXBlIDg2PikgLm1hdGgvYmlnLnJhbmRvbSAocmFuZCA8dHlwZSA5NyAqPHR5cGUgOTggIm1hdGgvcmFuZC5SYW5kIiAicmFuZCIgPHR5cGUgOTkgc3RydWN0IHsgLm1hdGgvcmFuZC5zcmMgPHR5cGUgMTAwICJtYXRoL3JhbmQuU291cmNlIiA8dHlwZSAxMDEgaW50ZXJmYWNlIHsgSW50NjMgKCkgPHR5cGUgLTQ+OyBTZWVkIChzZWVkIDx0eXBlIC00Pik7IH0+PjsgfT4KIGZ1bmMgKHIgPHR5cGUgMTAyICo8dHlwZSA5OD4+KSBFeHBGbG9hdDY0ICgpIDx0eXBlIC0xMD47CiBmdW5jIChyIDx0eXBlIDEwMj4pIEludDMxbiAobiA8dHlwZSAtMz4pIDx0eXBlIC0zPjsKIGZ1bmMgKHIgPHR5cGUgMTAyPikgVWludDMyICgpIDx0eXBlIC03PjsKIGZ1bmMgKHIgPHR5cGUgMTAyPikgSW50biAobiA8dHlwZSAtMTE+KSA8dHlwZSAtMTE+OwogZnVuYyAociA8dHlwZSAxMDI+KSBQZXJtIChuIDx0eXBlIC0xMT4pIDx0eXBlIDEwMyBbXSA8dHlwZSAtMTE+PjsKIGZ1bmMgKHIgPHR5cGUgMTAyPikgTm9ybUZsb2F0NjQgKCkgPHR5cGUgLTEwPjsKIGZ1bmMgKHIgPHR5cGUgMTAyPikgSW50MzEgKCkgPHR5cGUgLTM+OwogZnVuYyAociA8dHlwZSAxMDI+KSBGbG9hdDY0ICgpIDx0eXBlIC0xMD47CiBmdW5jIChyIDx0eXBlIDEwMj4pIFNlZWQgKHNlZWQgPHR5cGUgLTQ+KTsKIGZ1bmMgKHIgPHR5cGUgMTAyPikgSW50ICgpIDx0eXBlIC0xMT47CiBmdW5jIChyIDx0eXBlIDEwMj4pIEludDYzICgpIDx0eXBlIC00PjsKIGZ1bmMgKHIgPHR5cGUgMTAyPikgSW50NjNuIChuIDx0eXBlIC00PikgPHR5cGUgLTQ+OwogZnVuYyAociA8dHlwZSAxMDI+KSBGbG9hdDMyICgpIDx0eXBlIC05PjsKPj4sIGxpbWl0IDx0eXBlIDg2PiwgbiA8dHlwZSAtMTE+KSA8dHlwZSA4Nj47CiBmdW5jICh4IDx0eXBlIDg2PikgLm1hdGgvYmlnLmNtcCAoeSA8dHlwZSA4Nj4pIChyIDx0eXBlIC0xMT4pOwogZnVuYyAoeiA8dHlwZSA4Nj4pIC5tYXRoL2JpZy5vciAoeCA8dHlwZSA4Nj4sIHkgPHR5cGUgODY+KSA8dHlwZSA4Nj47CiBmdW5jICh4IDx0eXBlIDg2PikgLm1hdGgvYmlnLmJpdExlbiAoKSA8dHlwZSAtMTE+OwogZnVuYyAoeiA8dHlwZSA4Nj4pIC5tYXRoL2JpZy5zZXRXb3JkICh4IDx0eXBlIDg4PikgPHR5cGUgODY+OwogZnVuYyAoeiA8dHlwZSA4Nj4pIC5tYXRoL2JpZy5kaXYgKHoyIDx0eXBlIDg2PiwgdSA8dHlwZSA4Nj4sIHYgPHR5cGUgODY+KSAocSA8dHlwZSA4Nj4sIHIgPHR5cGUgODY+KTsKIGZ1bmMgKHogPHR5cGUgODY+KSAubWF0aC9iaWcuc2V0VWludDY0ICh4IDx0eXBlIC04PikgPHR5cGUgODY+OwogZnVuYyAoeCA8dHlwZSA4Nj4pIC5tYXRoL2JpZy50cmFpbGluZ1plcm9CaXRzICgpIDx0eXBlIC0xMj47CiBmdW5jICh6IDx0eXBlIDg2PikgLm1hdGgvYmlnLmRpdkxhcmdlICh1IDx0eXBlIDg2PiwgdUluIDx0eXBlIDg2PiwgdiA8dHlwZSA4Nj4pIChxIDx0eXBlIDg2PiwgciA8dHlwZSA4Nj4pOwogZnVuYyAoeiA8dHlwZSA4Nj4pIC5tYXRoL2JpZy5leHBOTldpbmRvd2VkICh4IDx0eXBlIDg2PiwgeSA8dHlwZSA4Nj4sIG0gPHR5cGUgODY+KSA8dHlwZSA4Nj47CiBmdW5jICh6IDx0eXBlIDg2PikgLm1hdGgvYmlnLm5vcm0gKCkgPHR5cGUgODY+OwogZnVuYyAoeiA8dHlwZSA4Nj4pIC5tYXRoL2JpZy5zZXRCeXRlcyAoYnVmIDx0eXBlIDEwNCBbXSA8dHlwZSAtMjA+PikgPHR5cGUgODY+OwogZnVuYyAoeiA8dHlwZSA4Nj4pIC5tYXRoL2JpZy5zaGwgKHggPHR5cGUgODY+LCBzIDx0eXBlIC0xMj4pIDx0eXBlIDg2PjsKIGZ1bmMgKHogPHR5cGUgODY+KSAubWF0aC9iaWcubWFrZSAobiA8dHlwZSAtMTE+KSA8dHlwZSA4Nj47CiBmdW5jICh6IDx0eXBlIDg2PikgLm1hdGgvYmlnLmNsZWFyICgpOwogZnVuYyAoeiA8dHlwZSA4Nj4pIC5tYXRoL2JpZy5ieXRlcyAoYnVmIDx0eXBlIDEwNSBbXSA8dHlwZSAtMjA+PikgKGkgPHR5cGUgLTExPik7CiBmdW5jICh6IDx0eXBlIDg2PikgLm1hdGgvYmlnLmV4cFdXICh4IDx0eXBlIDg4PiwgeSA8dHlwZSA4OD4pIDx0eXBlIDg2PjsKIGZ1bmMgKHogPHR5cGUgODY+KSAubWF0aC9iaWcuZXhwTk4gKHggPHR5cGUgODY+LCB5IDx0eXBlIDg2PiwgbSA8dHlwZSA4Nj4pIDx0eXBlIDg2PjsKPjsgfT4KIGZ1bmMgKHogPHR5cGUgMTA2ICo8dHlwZSA4ND4+KSBOZWcgKHggPHR5cGUgMTA2PikgPHR5cGUgMTA2PjsKIGZ1bmMgKHogPHR5cGUgMTA2PikgUXVvUmVtICh4IDx0eXBlIDEwNj4sIHkgPHR5cGUgMTA2PiwgciA8dHlwZSAxMDY+KSAoPyA8dHlwZSAxMDY+LCA/IDx0eXBlIDEwNj4pOwogZnVuYyAoeCA8dHlwZSAxMDY+KSBCeXRlcyAoKSA8dHlwZSAxMDcgW10gPHR5cGUgLTIwPj47CiBmdW5jICh6IDx0eXBlIDEwNj4pIFNldEJpdHMgKGFicyA8dHlwZSAxMDggW10gPHR5cGUgODg+PikgPHR5cGUgMTA2PjsKIGZ1bmMgKHogPHR5cGUgMTA2PikgU2V0Qml0ICh4IDx0eXBlIDEwNj4sIGkgPHR5cGUgLTExPiwgYiA8dHlwZSAtMTI+KSA8dHlwZSAxMDY+OwogZnVuYyAoeiA8dHlwZSAxMDY+KSBYb3IgKHggPHR5cGUgMTA2PiwgeSA8dHlwZSAxMDY+KSA8dHlwZSAxMDY+OwogZnVuYyAoeiA8dHlwZSAxMDY+KSBTZXRJbnQ2NCAoeCA8dHlwZSAtND4pIDx0eXBlIDEwNj47CiBmdW5jICh6IDx0eXBlIDEwNj4pIE5vdCAoeCA8dHlwZSAxMDY+KSA8dHlwZSAxMDY+OwogZnVuYyAoeiA8dHlwZSAxMDY+KSBVbm1hcnNoYWxKU09OICh0ZXh0IDx0eXBlIDEwOSBbXSA8dHlwZSAtMjA+PikgPHR5cGUgLTE5PjsKIGZ1bmMgKHogPHR5cGUgMTA2PikgT3IgKHggPHR5cGUgMTA2PiwgeSA8dHlwZSAxMDY+KSA8dHlwZSAxMDY+OwogZnVuYyAoeiA8dHlwZSAxMDY+KSBTZXRVaW50NjQgKHggPHR5cGUgLTg+KSA8dHlwZSAxMDY+OwogZnVuYyAoeCA8dHlwZSAxMDY+KSBJbnQ2NCAoKSA8dHlwZSAtND47CiBmdW5jICh6IDx0eXBlIDEwNj4pIC5tYXRoL2JpZy5zY2FuIChyIDx0eXBlIDg5PiwgYmFzZSA8dHlwZSAtMTE+KSAoPyA8dHlwZSAxMDY+LCA/IDx0eXBlIC0xMT4sID8gPHR5cGUgLTE5Pik7CiBmdW5jICh6IDx0eXBlIDEwNj4pIEdDRCAoeCA8dHlwZSAxMDY+LCB5IDx0eXBlIDEwNj4sIGEgPHR5cGUgMTA2PiwgYiA8dHlwZSAxMDY+KSA8dHlwZSAxMDY+OwogZnVuYyAoeiA8dHlwZSAxMDY+KSBSZW0gKHggPHR5cGUgMTA2PiwgeSA8dHlwZSAxMDY+KSA8dHlwZSAxMDY+OwogZnVuYyAoeCA8dHlwZSAxMDY+KSBCaXQgKGkgPHR5cGUgLTExPikgPHR5cGUgLTEyPjsKIGZ1bmMgKHggPHR5cGUgMTA2PikgQml0cyAoKSA8dHlwZSAxMTAgW10gPHR5cGUgODg+PjsKIGZ1bmMgKHogPHR5cGUgMTA2PikgU2V0Qnl0ZXMgKGJ1ZiA8dHlwZSAxMTEgW10gPHR5cGUgLTIwPj4pIDx0eXBlIDEwNj47CiBmdW5jICh6IDx0eXBlIDEwNj4pIERpdk1vZCAoeCA8dHlwZSAxMDY+LCB5IDx0eXBlIDEwNj4sIG0gPHR5cGUgMTA2PikgKD8gPHR5cGUgMTA2PiwgPyA8dHlwZSAxMDY+KTsKIGZ1bmMgKHogPHR5cGUgMTA2PikgUnNoICh4IDx0eXBlIDEwNj4sIG4gPHR5cGUgLTEyPikgPHR5cGUgMTA2PjsKIGZ1bmMgKHggPHR5cGUgMTA2PikgQ21wICh5IDx0eXBlIDEwNj4pIChyIDx0eXBlIC0xMT4pOwogZnVuYyAoeiA8dHlwZSAxMDY+KSBTY2FuIChzIDx0eXBlIDExMiAiZm10LlNjYW5TdGF0ZSIgPHR5cGUgMTEzIGludGVyZmFjZSB7IFJlYWRSdW5lICgpIChyIDx0eXBlIC0yMT4sIHNpemUgPHR5cGUgLTExPiwgZXJyIDx0eXBlIC0xOT4pOyBVbnJlYWRSdW5lICgpIDx0eXBlIC0xOT47IFNraXBTcGFjZSAoKTsgVG9rZW4gKHNraXBTcGFjZSA8dHlwZSAtMTU+LCBmIDx0eXBlIDExNCAoPyA8dHlwZSAtMjE+KSA8dHlwZSAtMTU+PikgKHRva2VuIDx0eXBlIDExNSBbXSA8dHlwZSAtMjA+PiwgZXJyIDx0eXBlIC0xOT4pOyBXaWR0aCAoKSAod2lkIDx0eXBlIC0xMT4sIG9rIDx0eXBlIC0xNT4pOyBSZWFkIChidWYgPHR5cGUgMTE2IFtdIDx0eXBlIC0yMD4+KSAobiA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7IH0+PiwgY2ggPHR5cGUgLTIxPikgPHR5cGUgLTE5PjsKIGZ1bmMgKHggPHR5cGUgMTA2PikgR29iRW5jb2RlICgpICg/IDx0eXBlIDExNyBbXSA8dHlwZSAtMjA+PiwgPyA8dHlwZSAtMTk+KTsKIGZ1bmMgKHggPHR5cGUgMTA2PikgUHJvYmFibHlQcmltZSAobiA8dHlwZSAtMTE+KSA8dHlwZSAtMTU+OwogZnVuYyAoeCA8dHlwZSAxMDY+KSBTaWduICgpIDx0eXBlIC0xMT47CiBmdW5jICh6IDx0eXBlIDEwNj4pIE1vZCAoeCA8dHlwZSAxMDY+LCB5IDx0eXBlIDEwNj4pIDx0eXBlIDEwNj47CiBmdW5jICh6IDx0eXBlIDEwNj4pIEV4cCAoeCA8dHlwZSAxMDY+LCB5IDx0eXBlIDEwNj4sIG0gPHR5cGUgMTA2PikgPHR5cGUgMTA2PjsKIGZ1bmMgKHggPHR5cGUgMTA2PikgU3RyaW5nICgpIDx0eXBlIC0xNj47CiBmdW5jICh6IDx0eXBlIDEwNj4pIEFicyAoeCA8dHlwZSAxMDY+KSA8dHlwZSAxMDY+OwogZnVuYyAoeiA8dHlwZSAxMDY+KSBVbm1hcnNoYWxUZXh0ICh0ZXh0IDx0eXBlIDExOCBbXSA8dHlwZSAtMjA+PikgPHR5cGUgLTE5PjsKIGZ1bmMgKHogPHR5cGUgMTA2PikgUmFuZCAocm5kIDx0eXBlIDk3PiwgbiA8dHlwZSAxMDY+KSA8dHlwZSAxMDY+OwogZnVuYyAoeiA8dHlwZSAxMDY+KSBBbmQgKHggPHR5cGUgMTA2PiwgeSA8dHlwZSAxMDY+KSA8dHlwZSAxMDY+OwogZnVuYyAoeiA8dHlwZSAxMDY+KSBNb2RJbnZlcnNlIChnIDx0eXBlIDEwNj4sIG4gPHR5cGUgMTA2PikgPHR5cGUgMTA2PjsKIGZ1bmMgKHogPHR5cGUgMTA2PikgUXVvICh4IDx0eXBlIDEwNj4sIHkgPHR5cGUgMTA2PikgPHR5cGUgMTA2PjsKIGZ1bmMgKHogPHR5cGUgMTA2PikgQWRkICh4IDx0eXBlIDEwNj4sIHkgPHR5cGUgMTA2PikgPHR5cGUgMTA2PjsKIGZ1bmMgKHogPHR5cGUgMTA2PikgTHNoICh4IDx0eXBlIDEwNj4sIG4gPHR5cGUgLTEyPikgPHR5cGUgMTA2PjsKIGZ1bmMgKHogPHR5cGUgMTA2PikgQW5kTm90ICh4IDx0eXBlIDEwNj4sIHkgPHR5cGUgMTA2PikgPHR5cGUgMTA2PjsKIGZ1bmMgKHogPHR5cGUgMTA2PikgU2V0ICh4IDx0eXBlIDEwNj4pIDx0eXBlIDEwNj47CiBmdW5jICh6IDx0eXBlIDEwNj4pIE11bCAoeCA8dHlwZSAxMDY+LCB5IDx0eXBlIDEwNj4pIDx0eXBlIDEwNj47CiBmdW5jICh6IDx0eXBlIDEwNj4pIE1hcnNoYWxUZXh0ICgpICh0ZXh0IDx0eXBlIDExOSBbXSA8dHlwZSAtMjA+PiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoeiA8dHlwZSAxMDY+KSBEaXYgKHggPHR5cGUgMTA2PiwgeSA8dHlwZSAxMDY+KSA8dHlwZSAxMDY+OwogZnVuYyAoeiA8dHlwZSAxMDY+KSBCaW5vbWlhbCAobiA8dHlwZSAtND4sIGsgPHR5cGUgLTQ+KSA8dHlwZSAxMDY+OwogZnVuYyAoeCA8dHlwZSAxMDY+KSBGb3JtYXQgKHMgPHR5cGUgMTIwICJmbXQuU3RhdGUiIDx0eXBlIDEyMSBpbnRlcmZhY2UgeyBXcml0ZSAoYiA8dHlwZSAxMjIgW10gPHR5cGUgLTIwPj4pIChyZXQgPHR5cGUgLTExPiwgZXJyIDx0eXBlIC0xOT4pOyBXaWR0aCAoKSAod2lkIDx0eXBlIC0xMT4sIG9rIDx0eXBlIC0xNT4pOyBQcmVjaXNpb24gKCkgKHByZWMgPHR5cGUgLTExPiwgb2sgPHR5cGUgLTE1Pik7IEZsYWcgKGMgPHR5cGUgLTExPikgPHR5cGUgLTE1PjsgfT4+LCBjaCA8dHlwZSAtMjE+KTsKIGZ1bmMgKHogPHR5cGUgMTA2PikgTXVsUmFuZ2UgKGEgPHR5cGUgLTQ+LCBiIDx0eXBlIC00PikgPHR5cGUgMTA2PjsKIGZ1bmMgKHogPHR5cGUgMTA2PikgU2V0U3RyaW5nIChzIDx0eXBlIC0xNj4sIGJhc2UgPHR5cGUgLTExPikgKD8gPHR5cGUgMTA2PiwgPyA8dHlwZSAtMTU+KTsKIGZ1bmMgKHggPHR5cGUgMTA2PikgVWludDY0ICgpIDx0eXBlIC04PjsKIGZ1bmMgKHogPHR5cGUgMTA2PikgTWFyc2hhbEpTT04gKCkgKD8gPHR5cGUgMTIzIFtdIDx0eXBlIC0yMD4+LCA/IDx0eXBlIC0xOT4pOwogZnVuYyAoeiA8dHlwZSAxMDY+KSBHb2JEZWNvZGUgKGJ1ZiA8dHlwZSAxMjQgW10gPHR5cGUgLTIwPj4pIDx0eXBlIC0xOT47CiBmdW5jICh4IDx0eXBlIDEwNj4pIEJpdExlbiAoKSA8dHlwZSAtMTE+OwogZnVuYyAoeiA8dHlwZSAxMDY+KSAubWF0aC9iaWcuYmluYXJ5R0NEIChhIDx0eXBlIDEwNj4sIGIgPHR5cGUgMTA2PikgPHR5cGUgMTA2PjsKIGZ1bmMgKHogPHR5cGUgMTA2PikgU3ViICh4IDx0eXBlIDEwNj4sIHkgPHR5cGUgMTA2PikgPHR5cGUgMTA2PjsKPj47IElzc3VlciA8dHlwZSAxMjUgImNyeXB0by94NTA5L3BraXguTmFtZSIgInBraXgiIDx0eXBlIDEyNiBzdHJ1Y3QgeyBDb3VudHJ5IDx0eXBlIDEyNyBbXSA8dHlwZSAtMTY+PjsgT3JnYW5pemF0aW9uIDx0eXBlIDEyNz47IE9yZ2FuaXphdGlvbmFsVW5pdCA8dHlwZSAxMjc+OyBMb2NhbGl0eSA8dHlwZSAxMjggW10gPHR5cGUgLTE2Pj47IFByb3ZpbmNlIDx0eXBlIDEyOD47IFN0cmVldEFkZHJlc3MgPHR5cGUgMTI5IFtdIDx0eXBlIC0xNj4+OyBQb3N0YWxDb2RlIDx0eXBlIDEyOT47IFNlcmlhbE51bWJlciA8dHlwZSAtMTY+OyBDb21tb25OYW1lIDx0eXBlIC0xNj47IE5hbWVzIDx0eXBlIDEzMCBbXSA8dHlwZSAxMzEgImNyeXB0by94NTA5L3BraXguQXR0cmlidXRlVHlwZUFuZFZhbHVlIiA8dHlwZSAxMzIgc3RydWN0IHsgVHlwZSA8dHlwZSAxMzMgImVuY29kaW5nL2FzbjEuT2JqZWN0SWRlbnRpZmllciIgImFzbjEiIDx0eXBlIDEzNCBbXSA8dHlwZSAtMTE+PgogZnVuYyAob2kgPHR5cGUgMTMzPikgRXF1YWwgKG90aGVyIDx0eXBlIDEzMz4pIDx0eXBlIC0xNT47CiBmdW5jIChvaSA8dHlwZSAxMzM+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKPjsgVmFsdWUgPHR5cGUgMTM1IGludGVyZmFjZSB7IH0+OyB9Pj4+OyB9PgogZnVuYyAobiA8dHlwZSAxMjU+KSBUb1JETlNlcXVlbmNlICgpIChyZXQgPHR5cGUgMTM2ICJjcnlwdG8veDUwOS9wa2l4LlJETlNlcXVlbmNlIiA8dHlwZSAxMzcgW10gPHR5cGUgMTM4ICJjcnlwdG8veDUwOS9wa2l4LlJlbGF0aXZlRGlzdGluZ3Vpc2hlZE5hbWVTRVQiIDx0eXBlIDEzOSBbXSA8dHlwZSAxMzE+Pj4+Pik7CiBmdW5jIChuIDx0eXBlIDE0MCAqPHR5cGUgMTI1Pj4pIEZpbGxGcm9tUkROU2VxdWVuY2UgKHJkbnMgPHR5cGUgMTQxICo8dHlwZSAxMzY+Pik7Cj47IFN1YmplY3QgPHR5cGUgMTI1PjsgTm90QmVmb3JlIDx0eXBlIDE0MiAidGltZS5UaW1lIiA8dHlwZSAxNDMgc3RydWN0IHsgLnRpbWUuc2VjIDx0eXBlIC00PjsgLnRpbWUubnNlYyA8dHlwZSAtMz47IC50aW1lLmxvYyA8dHlwZSAxNDQgKjx0eXBlIDE0NSAidGltZS5Mb2NhdGlvbiIgPHR5cGUgMTQ2IHN0cnVjdCB7IC50aW1lLm5hbWUgPHR5cGUgLTE2PjsgLnRpbWUuem9uZSA8dHlwZSAxNDcgW10gPHR5cGUgMTQ4ICIudGltZS56b25lIiA8dHlwZSAxNDkgc3RydWN0IHsgLnRpbWUubmFtZSA8dHlwZSAtMTY+OyAudGltZS5vZmZzZXQgPHR5cGUgLTExPjsgLnRpbWUuaXNEU1QgPHR5cGUgLTE1PjsgfT4+PjsgLnRpbWUudHggPHR5cGUgMTUwIFtdIDx0eXBlIDE1MSAiLnRpbWUuem9uZVRyYW5zIiA8dHlwZSAxNTIgc3RydWN0IHsgLnRpbWUud2hlbiA8dHlwZSAtND47IC50aW1lLmluZGV4IDx0eXBlIC01PjsgLnRpbWUuaXNzdGQgPHR5cGUgLTE1PjsgLnRpbWUuaXN1dGMgPHR5cGUgLTE1PjsgfT4+PjsgLnRpbWUuY2FjaGVTdGFydCA8dHlwZSAtND47IC50aW1lLmNhY2hlRW5kIDx0eXBlIC00PjsgLnRpbWUuY2FjaGVab25lIDx0eXBlIDE1MyAqPHR5cGUgMTQ4Pj47IH0+CiBmdW5jIChsIDx0eXBlIDE1NCAqPHR5cGUgMTQ1Pj4pIC50aW1lLmZpcnN0Wm9uZVVzZWQgKCkgPHR5cGUgLTE1PjsKIGZ1bmMgKGwgPHR5cGUgMTU0PikgLnRpbWUubG9va3VwTmFtZSAobmFtZSA8dHlwZSAtMTY+LCB1bml4IDx0eXBlIC00PikgKG9mZnNldCA8dHlwZSAtMTE+LCBpc0RTVCA8dHlwZSAtMTU+LCBvayA8dHlwZSAtMTU+KTsKIGZ1bmMgKGwgPHR5cGUgMTU0PikgLnRpbWUubG9va3VwIChzZWMgPHR5cGUgLTQ+KSAobmFtZSA8dHlwZSAtMTY+LCBvZmZzZXQgPHR5cGUgLTExPiwgaXNEU1QgPHR5cGUgLTE1Piwgc3RhcnQgPHR5cGUgLTQ+LCBlbmQgPHR5cGUgLTQ+KTsKIGZ1bmMgKGwgPHR5cGUgMTU0PikgU3RyaW5nICgpIDx0eXBlIC0xNj47CiBmdW5jIChsIDx0eXBlIDE1ND4pIC50aW1lLmxvb2t1cEZpcnN0Wm9uZSAoKSA8dHlwZSAtMTE+OwogZnVuYyAobCA8dHlwZSAxNTQ+KSAudGltZS5nZXQgKCkgPHR5cGUgMTU0PjsKPj47IH0+CiBmdW5jICh0IDx0eXBlIDE0Mj4pIEFmdGVyICh1IDx0eXBlIDE0Mj4pIDx0eXBlIC0xNT47CiBmdW5jICh0IDx0eXBlIDE0Mj4pIE1hcnNoYWxUZXh0ICgpICg/IDx0eXBlIDE1NSBbXSA8dHlwZSAtMjA+PiwgPyA8dHlwZSAtMTk+KTsKIGZ1bmMgKHQgPHR5cGUgMTQyPikgRGF0ZSAoKSAoeWVhciA8dHlwZSAtMTE+LCBtb250aCA8dHlwZSAxNTYgInRpbWUuTW9udGgiIDx0eXBlIC0xMT4KIGZ1bmMgKG0gPHR5cGUgMTU2PikgU3RyaW5nICgpIDx0eXBlIC0xNj47Cj4sIGRheSA8dHlwZSAtMTE+KTsKIGZ1bmMgKHQgPHR5cGUgMTQyPikgLnRpbWUuYWJzICgpIDx0eXBlIC04PjsKIGZ1bmMgKHQgPHR5cGUgMTQyPikgV2Vla2RheSAoKSA8dHlwZSAxNTcgInRpbWUuV2Vla2RheSIgPHR5cGUgLTExPgogZnVuYyAoZCA8dHlwZSAxNTc+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKPjsKIGZ1bmMgKHQgPHR5cGUgMTQyPikgTmFub3NlY29uZCAoKSA8dHlwZSAtMTE+OwogZnVuYyAodCA8dHlwZSAxNTggKjx0eXBlIDE0Mj4+KSBHb2JEZWNvZGUgKGRhdGEgPHR5cGUgMTU5IFtdIDx0eXBlIC0yMD4+KSA8dHlwZSAtMTk+OwogZnVuYyAodCA8dHlwZSAxNDI+KSBJbiAobG9jIDx0eXBlIDE0ND4pIDx0eXBlIDE0Mj47CiBmdW5jICh0IDx0eXBlIDE0Mj4pIExvY2FsICgpIDx0eXBlIDE0Mj47CiBmdW5jICh0IDx0eXBlIDE0Mj4pIE1vbnRoICgpIDx0eXBlIDE1Nj47CiBmdW5jICh0IDx0eXBlIDE0Mj4pIEhvdXIgKCkgPHR5cGUgLTExPjsKIGZ1bmMgKHQgPHR5cGUgMTQyPikgTWFyc2hhbEJpbmFyeSAoKSAoPyA8dHlwZSAxNjAgW10gPHR5cGUgLTIwPj4sID8gPHR5cGUgLTE5Pik7CiBmdW5jICh0IDx0eXBlIDE0Mj4pIFVuaXhOYW5vICgpIDx0eXBlIC00PjsKIGZ1bmMgKHQgPHR5cGUgMTQyPikgRXF1YWwgKHUgPHR5cGUgMTQyPikgPHR5cGUgLTE1PjsKIGZ1bmMgKHQgPHR5cGUgMTQyPikgRm9ybWF0IChsYXlvdXQgPHR5cGUgLTE2PikgPHR5cGUgLTE2PjsKIGZ1bmMgKHQgPHR5cGUgMTQyPikgQWRkRGF0ZSAoeWVhcnMgPHR5cGUgLTExPiwgbW9udGhzIDx0eXBlIC0xMT4sIGRheXMgPHR5cGUgLTExPikgPHR5cGUgMTQyPjsKIGZ1bmMgKHQgPHR5cGUgMTQyPikgWm9uZSAoKSAobmFtZSA8dHlwZSAtMTY+LCBvZmZzZXQgPHR5cGUgLTExPik7CiBmdW5jICh0IDx0eXBlIDE0Mj4pIERheSAoKSA8dHlwZSAtMTE+OwogZnVuYyAodCA8dHlwZSAxNDI+KSBDbG9jayAoKSAoaG91ciA8dHlwZSAtMTE+LCBtaW4gPHR5cGUgLTExPiwgc2VjIDx0eXBlIC0xMT4pOwogZnVuYyAodCA8dHlwZSAxNDI+KSBNYXJzaGFsSlNPTiAoKSAoPyA8dHlwZSAxNjEgW10gPHR5cGUgLTIwPj4sID8gPHR5cGUgLTE5Pik7CiBmdW5jICh0IDx0eXBlIDE0Mj4pIFVUQyAoKSA8dHlwZSAxNDI+OwogZnVuYyAodCA8dHlwZSAxNDI+KSAudGltZS5kYXRlIChmdWxsIDx0eXBlIC0xNT4pICh5ZWFyIDx0eXBlIC0xMT4sIG1vbnRoIDx0eXBlIDE1Nj4sIGRheSA8dHlwZSAtMTE+LCB5ZGF5IDx0eXBlIC0xMT4pOwogZnVuYyAodCA8dHlwZSAxNDI+KSBJc1plcm8gKCkgPHR5cGUgLTE1PjsKIGZ1bmMgKHQgPHR5cGUgMTQyPikgQmVmb3JlICh1IDx0eXBlIDE0Mj4pIDx0eXBlIC0xNT47CiBmdW5jICh0IDx0eXBlIDE0Mj4pIFNlY29uZCAoKSA8dHlwZSAtMTE+OwogZnVuYyAodCA8dHlwZSAxNDI+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKHQgPHR5cGUgMTQyPikgTWludXRlICgpIDx0eXBlIC0xMT47CiBmdW5jICh0IDx0eXBlIDE0Mj4pIFJvdW5kIChkIDx0eXBlIDE2MiAidGltZS5EdXJhdGlvbiIgPHR5cGUgLTQ+CiBmdW5jIChkIDx0eXBlIDE2Mj4pIFNlY29uZHMgKCkgPHR5cGUgLTEwPjsKIGZ1bmMgKGQgPHR5cGUgMTYyPikgTWludXRlcyAoKSA8dHlwZSAtMTA+OwogZnVuYyAoZCA8dHlwZSAxNjI+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKGQgPHR5cGUgMTYyPikgSG91cnMgKCkgPHR5cGUgLTEwPjsKIGZ1bmMgKGQgPHR5cGUgMTYyPikgTmFub3NlY29uZHMgKCkgPHR5cGUgLTQ+Owo+KSA8dHlwZSAxNDI+OwogZnVuYyAodCA8dHlwZSAxNDI+KSBTdWIgKHUgPHR5cGUgMTQyPikgPHR5cGUgMTYyPjsKIGZ1bmMgKHQgPHR5cGUgMTU4PikgVW5tYXJzaGFsVGV4dCAoZGF0YSA8dHlwZSAxNjMgW10gPHR5cGUgLTIwPj4pIChlcnIgPHR5cGUgLTE5Pik7CiBmdW5jICh0IDx0eXBlIDE0Mj4pIFVuaXggKCkgPHR5cGUgLTQ+OwogZnVuYyAodCA8dHlwZSAxNDI+KSBUcnVuY2F0ZSAoZCA8dHlwZSAxNjI+KSA8dHlwZSAxNDI+OwogZnVuYyAodCA8dHlwZSAxNDI+KSBBZGQgKGQgPHR5cGUgMTYyPikgPHR5cGUgMTQyPjsKIGZ1bmMgKHQgPHR5cGUgMTQyPikgR29iRW5jb2RlICgpICg/IDx0eXBlIDE2NCBbXSA8dHlwZSAtMjA+PiwgPyA8dHlwZSAtMTk+KTsKIGZ1bmMgKHQgPHR5cGUgMTQyPikgTG9jYXRpb24gKCkgPHR5cGUgMTQ0PjsKIGZ1bmMgKHQgPHR5cGUgMTU4PikgVW5tYXJzaGFsQmluYXJ5IChkYXRhIDx0eXBlIDE2NSBbXSA8dHlwZSAtMjA+PikgPHR5cGUgLTE5PjsKIGZ1bmMgKHQgPHR5cGUgMTQyPikgSVNPV2VlayAoKSAoeWVhciA8dHlwZSAtMTE+LCB3ZWVrIDx0eXBlIC0xMT4pOwogZnVuYyAodCA8dHlwZSAxNDI+KSAudGltZS5sb2NhYnMgKCkgKG5hbWUgPHR5cGUgLTE2Piwgb2Zmc2V0IDx0eXBlIC0xMT4sIGFicyA8dHlwZSAtOD4pOwogZnVuYyAodCA8dHlwZSAxNDI+KSBZZWFyICgpIDx0eXBlIC0xMT47CiBmdW5jICh0IDx0eXBlIDE0Mj4pIFllYXJEYXkgKCkgPHR5cGUgLTExPjsKIGZ1bmMgKHQgPHR5cGUgMTU4PikgVW5tYXJzaGFsSlNPTiAoZGF0YSA8dHlwZSAxNjYgW10gPHR5cGUgLTIwPj4pIChlcnIgPHR5cGUgLTE5Pik7Cj47IE5vdEFmdGVyIDx0eXBlIDE0Mj47IEtleVVzYWdlIDx0eXBlIDE2NyAiY3J5cHRvL3g1MDkuS2V5VXNhZ2UiIDx0eXBlIC0xMT4+OyBFeHRlbnNpb25zIDx0eXBlIDE2OCBbXSA8dHlwZSAxNjkgImNyeXB0by94NTA5L3BraXguRXh0ZW5zaW9uIiA8dHlwZSAxNzAgc3RydWN0IHsgSWQgPHR5cGUgMTMzPjsgQ3JpdGljYWwgPHR5cGUgLTE1PiAiYXNuMTpcIm9wdGlvbmFsXCIiOyBWYWx1ZSA8dHlwZSAxNzEgW10gPHR5cGUgLTIwPj47IH0+Pj47IEV4dHJhRXh0ZW5zaW9ucyA8dHlwZSAxNzIgW10gPHR5cGUgMTY5Pj47IEV4dEtleVVzYWdlIDx0eXBlIDE3MyBbXSA8dHlwZSAxNzQgImNyeXB0by94NTA5LkV4dEtleVVzYWdlIiA8dHlwZSAtMTE+Pj47IFVua25vd25FeHRLZXlVc2FnZSA8dHlwZSAxNzUgW10gPHR5cGUgMTMzPj47IEJhc2ljQ29uc3RyYWludHNWYWxpZCA8dHlwZSAtMTU+OyBJc0NBIDx0eXBlIC0xNT47IE1heFBhdGhMZW4gPHR5cGUgLTExPjsgTWF4UGF0aExlblplcm8gPHR5cGUgLTE1PjsgU3ViamVjdEtleUlkIDx0eXBlIDE3NiBbXSA8dHlwZSAtMjA+PjsgQXV0aG9yaXR5S2V5SWQgPHR5cGUgMTc3IFtdIDx0eXBlIC0yMD4+OyBPQ1NQU2VydmVyIDx0eXBlIDE3OCBbXSA8dHlwZSAtMTY+PjsgSXNzdWluZ0NlcnRpZmljYXRlVVJMIDx0eXBlIDE3OSBbXSA8dHlwZSAtMTY+PjsgRE5TTmFtZXMgPHR5cGUgMTgwIFtdIDx0eXBlIC0xNj4+OyBFbWFpbEFkZHJlc3NlcyA8dHlwZSAxODEgW10gPHR5cGUgLTE2Pj47IElQQWRkcmVzc2VzIDx0eXBlIDE4MiBbXSA8dHlwZSAxODMgIm5ldC5JUCIgPHR5cGUgMTg0IFtdIDx0eXBlIC0yMD4+CiBmdW5jIChpcCA8dHlwZSAxODM+KSBNYXJzaGFsVGV4dCAoKSAoPyA8dHlwZSAxODUgW10gPHR5cGUgLTIwPj4sID8gPHR5cGUgLTE5Pik7CiBmdW5jIChpcCA8dHlwZSAxODM+KSBJc0xpbmtMb2NhbE11bHRpY2FzdCAoKSA8dHlwZSAtMTU+OwogZnVuYyAoaXAgPHR5cGUgMTgzPikgSXNNdWx0aWNhc3QgKCkgPHR5cGUgLTE1PjsKIGZ1bmMgKGlwIDx0eXBlIDE4Mz4pIFRvNCAoKSA8dHlwZSAxODM+OwogZnVuYyAoaXAgPHR5cGUgMTg2ICo8dHlwZSAxODM+PikgVW5tYXJzaGFsVGV4dCAodGV4dCA8dHlwZSAxODcgW10gPHR5cGUgLTIwPj4pIDx0eXBlIC0xOT47CiBmdW5jIChpcCA8dHlwZSAxODM+KSBUbzE2ICgpIDx0eXBlIDE4Mz47CiBmdW5jIChpcCA8dHlwZSAxODM+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKGlwIDx0eXBlIDE4Mz4pIElzTGlua0xvY2FsVW5pY2FzdCAoKSA8dHlwZSAtMTU+OwogZnVuYyAoaXAgPHR5cGUgMTgzPikgSXNMb29wYmFjayAoKSA8dHlwZSAtMTU+OwogZnVuYyAoaXAgPHR5cGUgMTgzPikgRXF1YWwgKHggPHR5cGUgMTgzPikgPHR5cGUgLTE1PjsKIGZ1bmMgKGlwIDx0eXBlIDE4Mz4pIERlZmF1bHRNYXNrICgpIDx0eXBlIDE4OCAibmV0LklQTWFzayIgPHR5cGUgMTg5IFtdIDx0eXBlIC0yMD4+CiBmdW5jIChtIDx0eXBlIDE4OD4pIFN0cmluZyAoKSA8dHlwZSAtMTY+OwogZnVuYyAobSA8dHlwZSAxODg+KSBTaXplICgpIChvbmVzIDx0eXBlIC0xMT4sIGJpdHMgPHR5cGUgLTExPik7Cj47CiBmdW5jIChpcCA8dHlwZSAxODM+KSBNYXNrIChtYXNrIDx0eXBlIDE4OD4pIDx0eXBlIDE4Mz47CiBmdW5jIChpcCA8dHlwZSAxODM+KSBJc1Vuc3BlY2lmaWVkICgpIDx0eXBlIC0xNT47CiBmdW5jIChpcCA8dHlwZSAxODM+KSBJc0ludGVyZmFjZUxvY2FsTXVsdGljYXN0ICgpIDx0eXBlIC0xNT47CiBmdW5jIChpcCA8dHlwZSAxODM+KSBJc0dsb2JhbFVuaWNhc3QgKCkgPHR5cGUgLTE1PjsKPj47IFBlcm1pdHRlZEROU0RvbWFpbnNDcml0aWNhbCA8dHlwZSAtMTU+OyBQZXJtaXR0ZWRETlNEb21haW5zIDx0eXBlIDE5MCBbXSA8dHlwZSAtMTY+PjsgQ1JMRGlzdHJpYnV0aW9uUG9pbnRzIDx0eXBlIDE5MSBbXSA8dHlwZSAtMTY+PjsgUG9saWN5SWRlbnRpZmllcnMgPHR5cGUgMTkyIFtdIDx0eXBlIDEzMz4+OyB9PgogZnVuYyAoYyA8dHlwZSAxOTMgKjx0eXBlIDcyPj4pIENoZWNrU2lnbmF0dXJlIChhbGdvIDx0eXBlIDgwPiwgc2lnbmVkIDx0eXBlIDE5NCBbXSA8dHlwZSAtMjA+Piwgc2lnbmF0dXJlIDx0eXBlIDE5ND4pIChlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChjIDx0eXBlIDE5Mz4pIC5jcnlwdG8veDUwOS5zeXN0ZW1WZXJpZnkgKG9wdHMgPHR5cGUgMTk1ICo8dHlwZSAxOTYgImNyeXB0by94NTA5LlZlcmlmeU9wdGlvbnMiIDx0eXBlIDE5NyBzdHJ1Y3QgeyBETlNOYW1lIDx0eXBlIC0xNj47IEludGVybWVkaWF0ZXMgPHR5cGUgMTk4ICo8dHlwZSAxOTkgImNyeXB0by94NTA5LkNlcnRQb29sIiA8dHlwZSAyMDAgc3RydWN0IHsgLmNyeXB0by94NTA5LmJ5U3ViamVjdEtleUlkIDx0eXBlIDIwMSBtYXAgWzx0eXBlIC0xNj5dIDx0eXBlIDIwMiBbXSA8dHlwZSAtMTE+Pj47IC5jcnlwdG8veDUwOS5ieU5hbWUgPHR5cGUgMjAzIG1hcCBbPHR5cGUgLTE2Pl0gPHR5cGUgMjA0IFtdIDx0eXBlIC0xMT4+PjsgLmNyeXB0by94NTA5LmNlcnRzIDx0eXBlIDIwNSBbXSA8dHlwZSAxOTM+PjsgfT4KIGZ1bmMgKHMgPHR5cGUgMjA2ICo8dHlwZSAxOTk+PikgQXBwZW5kQ2VydHNGcm9tUEVNIChwZW1DZXJ0cyA8dHlwZSAyMDcgW10gPHR5cGUgLTIwPj4pIChvayA8dHlwZSAtMTU+KTsKIGZ1bmMgKHMgPHR5cGUgMjA2PikgU3ViamVjdHMgKCkgKHJlcyA8dHlwZSAyMDggW10gPHR5cGUgMjA5IFtdIDx0eXBlIC0yMD4+Pik7CiBmdW5jIChzIDx0eXBlIDIwNj4pIEFkZENlcnQgKGNlcnQgPHR5cGUgMTkzPik7CiBmdW5jIChzIDx0eXBlIDIwNj4pIC5jcnlwdG8veDUwOS5maW5kVmVyaWZpZWRQYXJlbnRzIChjZXJ0IDx0eXBlIDE5Mz4pIChwYXJlbnRzIDx0eXBlIDIxMCBbXSA8dHlwZSAtMTE+PiwgZXJyQ2VydCA8dHlwZSAxOTM+LCBlcnIgPHR5cGUgLTE5Pik7Cj4+OyBSb290cyA8dHlwZSAxOTg+OyBDdXJyZW50VGltZSA8dHlwZSAxNDI+OyBLZXlVc2FnZXMgPHR5cGUgMjExIFtdIDx0eXBlIDE3ND4+OyB9Pj4+KSAoY2hhaW5zIDx0eXBlIDIxMiBbXSA8dHlwZSAyMTMgW10gPHR5cGUgMTkzPj4+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChjIDx0eXBlIDE5Mz4pIFZlcmlmeSAob3B0cyA8dHlwZSAxOTY+KSAoY2hhaW5zIDx0eXBlIDIxNCBbXSA8dHlwZSAyMTUgW10gPHR5cGUgMTkzPj4+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChjIDx0eXBlIDE5Mz4pIEVxdWFsIChvdGhlciA8dHlwZSAxOTM+KSA8dHlwZSAtMTU+OwogZnVuYyAoYyA8dHlwZSAxOTM+KSBDaGVja1NpZ25hdHVyZUZyb20gKHBhcmVudCA8dHlwZSAxOTM+KSAoZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoYyA8dHlwZSAxOTM+KSAuY3J5cHRvL3g1MDkuaXNWYWxpZCAoY2VydFR5cGUgPHR5cGUgLTExPiwgY3VycmVudENoYWluIDx0eXBlIDIxNiBbXSA8dHlwZSAxOTM+Piwgb3B0cyA8dHlwZSAxOTU+KSA8dHlwZSAtMTk+OwogZnVuYyAoYyA8dHlwZSAxOTM+KSBWZXJpZnlIb3N0bmFtZSAoaCA8dHlwZSAtMTY+KSA8dHlwZSAtMTk+OwogZnVuYyAoYyA8dHlwZSAxOTM+KSBDaGVja0NSTFNpZ25hdHVyZSAoY3JsIDx0eXBlIDIxNyAqPHR5cGUgMjE4ICJjcnlwdG8veDUwOS9wa2l4LkNlcnRpZmljYXRlTGlzdCIgPHR5cGUgMjE5IHN0cnVjdCB7IFRCU0NlcnRMaXN0IDx0eXBlIDIyMCAiY3J5cHRvL3g1MDkvcGtpeC5UQlNDZXJ0aWZpY2F0ZUxpc3QiIDx0eXBlIDIyMSBzdHJ1Y3QgeyBSYXcgPHR5cGUgMjIyICJlbmNvZGluZy9hc24xLlJhd0NvbnRlbnQiIDx0eXBlIDIyMyBbXSA8dHlwZSAtMjA+Pj47IFZlcnNpb24gPHR5cGUgLTExPiAiYXNuMTpcIm9wdGlvbmFsLGRlZmF1bHQ6MlwiIjsgU2lnbmF0dXJlIDx0eXBlIDIyNCAiY3J5cHRvL3g1MDkvcGtpeC5BbGdvcml0aG1JZGVudGlmaWVyIiA8dHlwZSAyMjUgc3RydWN0IHsgQWxnb3JpdGhtIDx0eXBlIDEzMz47IFBhcmFtZXRlcnMgPHR5cGUgMjI2ICJlbmNvZGluZy9hc24xLlJhd1ZhbHVlIiA8dHlwZSAyMjcgc3RydWN0IHsgQ2xhc3MgPHR5cGUgLTExPjsgVGFnIDx0eXBlIC0xMT47IElzQ29tcG91bmQgPHR5cGUgLTE1PjsgQnl0ZXMgPHR5cGUgMjI4IFtdIDx0eXBlIC0yMD4+OyBGdWxsQnl0ZXMgPHR5cGUgMjI5IFtdIDx0eXBlIC0yMD4+OyB9Pj4gImFzbjE6XCJvcHRpb25hbFwiIjsgfT4+OyBJc3N1ZXIgPHR5cGUgMTM2PjsgVGhpc1VwZGF0ZSA8dHlwZSAxNDI+OyBOZXh0VXBkYXRlIDx0eXBlIDE0Mj4gImFzbjE6XCJvcHRpb25hbFwiIjsgUmV2b2tlZENlcnRpZmljYXRlcyA8dHlwZSAyMzAgW10gPHR5cGUgMjMxICJjcnlwdG8veDUwOS9wa2l4LlJldm9rZWRDZXJ0aWZpY2F0ZSIgPHR5cGUgMjMyIHN0cnVjdCB7IFNlcmlhbE51bWJlciA8dHlwZSA4Mz47IFJldm9jYXRpb25UaW1lIDx0eXBlIDE0Mj47IEV4dGVuc2lvbnMgPHR5cGUgMjMzIFtdIDx0eXBlIDE2OT4+ICJhc24xOlwib3B0aW9uYWxcIiI7IH0+Pj4gImFzbjE6XCJvcHRpb25hbFwiIjsgRXh0ZW5zaW9ucyA8dHlwZSAyMzQgW10gPHR5cGUgMTY5Pj4gImFzbjE6XCJ0YWc6MCxvcHRpb25hbCxleHBsaWNpdFwiIjsgfT4+OyBTaWduYXR1cmVBbGdvcml0aG0gPHR5cGUgMjI0PjsgU2lnbmF0dXJlVmFsdWUgPHR5cGUgMjM1ICJlbmNvZGluZy9hc24xLkJpdFN0cmluZyIgPHR5cGUgMjM2IHN0cnVjdCB7IEJ5dGVzIDx0eXBlIDIzNyBbXSA8dHlwZSAtMjA+PjsgQml0TGVuZ3RoIDx0eXBlIC0xMT47IH0+CiBmdW5jIChiIDx0eXBlIDIzNT4pIEF0IChpIDx0eXBlIC0xMT4pIDx0eXBlIC0xMT47CiBmdW5jIChiIDx0eXBlIDIzNT4pIFJpZ2h0QWxpZ24gKCkgPHR5cGUgMjM4IFtdIDx0eXBlIC0yMD4+Owo+OyB9PgogZnVuYyAoY2VydExpc3QgPHR5cGUgMjM5ICo8dHlwZSAyMTg+PikgSGFzRXhwaXJlZCAobm93IDx0eXBlIDE0Mj4pIDx0eXBlIC0xNT47Cj4+KSAoZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoYyA8dHlwZSAxOTM+KSAuY3J5cHRvL3g1MDkuYnVpbGRDaGFpbnMgKGNhY2hlIDx0eXBlIDI0MCBtYXAgWzx0eXBlIC0xMT5dIDx0eXBlIDI0MSBbXSA8dHlwZSAyNDIgW10gPHR5cGUgMTkzPj4+PiwgY3VycmVudENoYWluIDx0eXBlIDI0MyBbXSA8dHlwZSAxOTM+Piwgb3B0cyA8dHlwZSAxOTU+KSAoY2hhaW5zIDx0eXBlIDI0NCBbXSA8dHlwZSAyNDUgW10gPHR5cGUgMTkzPj4+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChjIDx0eXBlIDE5Mz4pIENyZWF0ZUNSTCAocmFuZCA8dHlwZSAzOD4sIHByaXYgPHR5cGUgMjQ2IGludGVyZmFjZSB7IH0+LCByZXZva2VkQ2VydHMgPHR5cGUgMjQ3IFtdIDx0eXBlIDIzMT4+LCBub3cgPHR5cGUgMTQyPiwgZXhwaXJ5IDx0eXBlIDE0Mj4pIChjcmxCeXRlcyA8dHlwZSAyNDggW10gPHR5cGUgLTIwPj4sIGVyciA8dHlwZSAtMTk+KTsKPj4+OyBWZXJpZmllZENoYWlucyA8dHlwZSAyNDkgW10gPHR5cGUgMjUwIFtdIDx0eXBlIDcxPj4+OyBUTFNVbmlxdWUgPHR5cGUgMjUxIFtdIDx0eXBlIC0yMD4+OyB9Pj4+OyB9PgogZnVuYyAociA8dHlwZSAyNTIgKjx0eXBlIDY+PikgUHJvdG9BdExlYXN0IChtYWpvciA8dHlwZSAtMTE+LCBtaW5vciA8dHlwZSAtMTE+KSA8dHlwZSAtMTU+OwogZnVuYyAociA8dHlwZSAyNTI+KSBVc2VyQWdlbnQgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKHIgPHR5cGUgMjUyPikgQ29va2llcyAoKSA8dHlwZSAyNTMgW10gPHR5cGUgMjU0ICo8dHlwZSAyNTUgIkNvb2tpZSIgPHR5cGUgMjU2IHN0cnVjdCB7IE5hbWUgPHR5cGUgLTE2PjsgVmFsdWUgPHR5cGUgLTE2PjsgUGF0aCA8dHlwZSAtMTY+OyBEb21haW4gPHR5cGUgLTE2PjsgRXhwaXJlcyA8dHlwZSAxNDI+OyBSYXdFeHBpcmVzIDx0eXBlIC0xNj47IE1heEFnZSA8dHlwZSAtMTE+OyBTZWN1cmUgPHR5cGUgLTE1PjsgSHR0cE9ubHkgPHR5cGUgLTE1PjsgUmF3IDx0eXBlIC0xNj47IFVucGFyc2VkIDx0eXBlIDI1NyBbXSA8dHlwZSAtMTY+PjsgfT4KIGZ1bmMgKGMgPHR5cGUgMjU4ICo8dHlwZSAyNTU+PikgU3RyaW5nICgpIDx0eXBlIC0xNj47Cj4+PjsKIGZ1bmMgKHIgPHR5cGUgMjUyPikgQ29va2llIChuYW1lIDx0eXBlIC0xNj4pICg/IDx0eXBlIDI1ND4sID8gPHR5cGUgLTE5Pik7CiBmdW5jIChyIDx0eXBlIDI1Mj4pIEFkZENvb2tpZSAoYyA8dHlwZSAyNTQ+KTsKIGZ1bmMgKHIgPHR5cGUgMjUyPikgUmVmZXJlciAoKSA8dHlwZSAtMTY+OwogZnVuYyAociA8dHlwZSAyNTI+KSBNdWx0aXBhcnRSZWFkZXIgKCkgKD8gPHR5cGUgMjU5ICo8dHlwZSAyNjAgIm1pbWUvbXVsdGlwYXJ0LlJlYWRlciIgPHR5cGUgMjYxIHN0cnVjdCB7IC5taW1lL211bHRpcGFydC5idWZSZWFkZXIgPHR5cGUgMjYyICo8dHlwZSAyNjMgImJ1ZmlvLlJlYWRlciIgPHR5cGUgMjY0IHN0cnVjdCB7IC5idWZpby5idWYgPHR5cGUgMjY1IFtdIDx0eXBlIC0yMD4+OyAuYnVmaW8ucmQgPHR5cGUgMzg+OyAuYnVmaW8uciA8dHlwZSAtMTE+OyAuYnVmaW8udyA8dHlwZSAtMTE+OyAuYnVmaW8uZXJyIDx0eXBlIC0xOT47IC5idWZpby5sYXN0Qnl0ZSA8dHlwZSAtMTE+OyAuYnVmaW8ubGFzdFJ1bmVTaXplIDx0eXBlIC0xMT47IH0+CiBmdW5jIChiIDx0eXBlIDI2NiAqPHR5cGUgMjYzPj4pIFVucmVhZEJ5dGUgKCkgPHR5cGUgLTE5PjsKIGZ1bmMgKGIgPHR5cGUgMjY2PikgUmVhZFN0cmluZyAoZGVsaW0gPHR5cGUgLTIwPikgKGxpbmUgPHR5cGUgLTE2PiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoYiA8dHlwZSAyNjY+KSBSZWFkQnl0ZSAoKSAoYyA8dHlwZSAtMjA+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChiIDx0eXBlIDI2Nj4pIFdyaXRlVG8gKHcgPHR5cGUgMjI+KSAobiA8dHlwZSAtND4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGIgPHR5cGUgMjY2PikgUmVhZEJ5dGVzIChkZWxpbSA8dHlwZSAtMjA+KSAobGluZSA8dHlwZSAyNjcgW10gPHR5cGUgLTIwPj4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGIgPHR5cGUgMjY2PikgUmVhZExpbmUgKCkgKGxpbmUgPHR5cGUgMjY4IFtdIDx0eXBlIC0yMD4+LCBpc1ByZWZpeCA8dHlwZSAtMTU+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChiIDx0eXBlIDI2Nj4pIFJlYWRSdW5lICgpIChyIDx0eXBlIC0yMT4sIHNpemUgPHR5cGUgLTExPiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoYiA8dHlwZSAyNjY+KSAuYnVmaW8ud3JpdGVCdWYgKHcgPHR5cGUgMjI+KSAoPyA8dHlwZSAtND4sID8gPHR5cGUgLTE5Pik7CiBmdW5jIChiIDx0eXBlIDI2Nj4pIFJlYWQgKHAgPHR5cGUgMjY5IFtdIDx0eXBlIC0yMD4+KSAobiA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChiIDx0eXBlIDI2Nj4pIFJlYWRTbGljZSAoZGVsaW0gPHR5cGUgLTIwPikgKGxpbmUgPHR5cGUgMjcwIFtdIDx0eXBlIC0yMD4+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChiIDx0eXBlIDI2Nj4pIFJlc2V0IChyIDx0eXBlIDM4Pik7CiBmdW5jIChiIDx0eXBlIDI2Nj4pIFVucmVhZFJ1bmUgKCkgPHR5cGUgLTE5PjsKIGZ1bmMgKGIgPHR5cGUgMjY2PikgLmJ1ZmlvLmZpbGwgKCk7CiBmdW5jIChiIDx0eXBlIDI2Nj4pIEJ1ZmZlcmVkICgpIDx0eXBlIC0xMT47CiBmdW5jIChiIDx0eXBlIDI2Nj4pIC5idWZpby5yZXNldCAoYnVmIDx0eXBlIDI3MSBbXSA8dHlwZSAtMjA+PiwgciA8dHlwZSAzOD4pOwogZnVuYyAoYiA8dHlwZSAyNjY+KSBQZWVrIChuIDx0eXBlIC0xMT4pICg/IDx0eXBlIDI3MiBbXSA8dHlwZSAtMjA+PiwgPyA8dHlwZSAtMTk+KTsKIGZ1bmMgKGIgPHR5cGUgMjY2PikgLmJ1ZmlvLnJlYWRFcnIgKCkgPHR5cGUgLTE5PjsKPj47IC5taW1lL211bHRpcGFydC5jdXJyZW50UGFydCA8dHlwZSAyNzMgKjx0eXBlIDI3NCAibWltZS9tdWx0aXBhcnQuUGFydCIgPHR5cGUgMjc1IHN0cnVjdCB7IEhlYWRlciA8dHlwZSA1ND47IC5taW1lL211bHRpcGFydC5idWZmZXIgPHR5cGUgMjc2ICo8dHlwZSAyNzcgImJ5dGVzLkJ1ZmZlciIgPHR5cGUgMjc4IHN0cnVjdCB7IC5ieXRlcy5idWYgPHR5cGUgMjc5IFtdIDx0eXBlIC0yMD4+OyAuYnl0ZXMub2ZmIDx0eXBlIC0xMT47IC5ieXRlcy5ydW5lQnl0ZXMgPHR5cGUgMjgwIFs0IF0gPHR5cGUgLTIwPj47IC5ieXRlcy5ib290c3RyYXAgPHR5cGUgMjgxIFs2NCBdIDx0eXBlIC0yMD4+OyAuYnl0ZXMubGFzdFJlYWQgPHR5cGUgMjgyICIuYnl0ZXMucmVhZE9wIiA8dHlwZSAtMTE+PjsgfT4KIGZ1bmMgKGIgPHR5cGUgMjgzICo8dHlwZSAyNzc+PikgVW5yZWFkQnl0ZSAoKSA8dHlwZSAtMTk+OwogZnVuYyAoYiA8dHlwZSAyODM+KSBUcnVuY2F0ZSAobiA8dHlwZSAtMTE+KTsKIGZ1bmMgKGIgPHR5cGUgMjgzPikgV3JpdGVTdHJpbmcgKHMgPHR5cGUgLTE2PikgKG4gPHR5cGUgLTExPiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoYiA8dHlwZSAyODM+KSBSZWFkU3RyaW5nIChkZWxpbSA8dHlwZSAtMjA+KSAobGluZSA8dHlwZSAtMTY+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChiIDx0eXBlIDI4Mz4pIFJlYWRCeXRlICgpIChjIDx0eXBlIC0yMD4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGIgPHR5cGUgMjgzPikgTmV4dCAobiA8dHlwZSAtMTE+KSA8dHlwZSAyODQgW10gPHR5cGUgLTIwPj47CiBmdW5jIChiIDx0eXBlIDI4Mz4pIFdyaXRlUnVuZSAociA8dHlwZSAtMjE+KSAobiA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChiIDx0eXBlIDI4Mz4pIFN0cmluZyAoKSA8dHlwZSAtMTY+OwogZnVuYyAoYiA8dHlwZSAyODM+KSBXcml0ZVRvICh3IDx0eXBlIDIyPikgKG4gPHR5cGUgLTQ+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChiIDx0eXBlIDI4Mz4pIFJlYWRCeXRlcyAoZGVsaW0gPHR5cGUgLTIwPikgKGxpbmUgPHR5cGUgMjg1IFtdIDx0eXBlIC0yMD4+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChiIDx0eXBlIDI4Mz4pIC5ieXRlcy5ncm93IChuIDx0eXBlIC0xMT4pIDx0eXBlIC0xMT47CiBmdW5jIChiIDx0eXBlIDI4Mz4pIFJlYWRSdW5lICgpIChyIDx0eXBlIC0yMT4sIHNpemUgPHR5cGUgLTExPiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoYiA8dHlwZSAyODM+KSBVbnJlYWRSdW5lICgpIDx0eXBlIC0xOT47CiBmdW5jIChiIDx0eXBlIDI4Mz4pIFJlYWQgKHAgPHR5cGUgMjg2IFtdIDx0eXBlIC0yMD4+KSAobiA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChiIDx0eXBlIDI4Mz4pIFJlc2V0ICgpOwogZnVuYyAoYiA8dHlwZSAyODM+KSAuYnl0ZXMucmVhZFNsaWNlIChkZWxpbSA8dHlwZSAtMjA+KSAobGluZSA8dHlwZSAyODcgW10gPHR5cGUgLTIwPj4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGIgPHR5cGUgMjgzPikgV3JpdGVCeXRlIChjIDx0eXBlIC0yMD4pIDx0eXBlIC0xOT47CiBmdW5jIChiIDx0eXBlIDI4Mz4pIFdyaXRlIChwIDx0eXBlIDI4OCBbXSA8dHlwZSAtMjA+PikgKG4gPHR5cGUgLTExPiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoYiA8dHlwZSAyODM+KSBSZWFkRnJvbSAociA8dHlwZSAzOD4pIChuIDx0eXBlIC00PiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoYiA8dHlwZSAyODM+KSBMZW4gKCkgPHR5cGUgLTExPjsKIGZ1bmMgKGIgPHR5cGUgMjgzPikgR3JvdyAobiA8dHlwZSAtMTE+KTsKIGZ1bmMgKGIgPHR5cGUgMjgzPikgQnl0ZXMgKCkgPHR5cGUgMjg5IFtdIDx0eXBlIC0yMD4+Owo+PjsgLm1pbWUvbXVsdGlwYXJ0Lm1yIDx0eXBlIDI5MCAqPHR5cGUgMjYwPj47IC5taW1lL211bHRpcGFydC5ieXRlc1JlYWQgPHR5cGUgLTExPjsgLm1pbWUvbXVsdGlwYXJ0LmRpc3Bvc2l0aW9uIDx0eXBlIC0xNj47IC5taW1lL211bHRpcGFydC5kaXNwb3NpdGlvblBhcmFtcyA8dHlwZSAyOTEgbWFwIFs8dHlwZSAtMTY+XSA8dHlwZSAtMTY+PjsgLm1pbWUvbXVsdGlwYXJ0LnIgPHR5cGUgMzg+OyB9PgogZnVuYyAocCA8dHlwZSAyOTIgKjx0eXBlIDI3ND4+KSBGaWxlTmFtZSAoKSA8dHlwZSAtMTY+OwogZnVuYyAocCA8dHlwZSAyOTI+KSBDbG9zZSAoKSA8dHlwZSAtMTk+OwogZnVuYyAocCA8dHlwZSAyOTI+KSAubWltZS9tdWx0aXBhcnQucGFyc2VDb250ZW50RGlzcG9zaXRpb24gKCk7CiBmdW5jIChwIDx0eXBlIDI5Mj4pIFJlYWQgKGQgPHR5cGUgMjkzIFtdIDx0eXBlIC0yMD4+KSAobiA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChicCA8dHlwZSAyOTI+KSAubWltZS9tdWx0aXBhcnQucG9wdWxhdGVIZWFkZXJzICgpIDx0eXBlIC0xOT47CiBmdW5jIChwIDx0eXBlIDI5Mj4pIEZvcm1OYW1lICgpIDx0eXBlIC0xNj47Cj4+OyAubWltZS9tdWx0aXBhcnQucGFydHNSZWFkIDx0eXBlIC0xMT47IC5taW1lL211bHRpcGFydC5ubCA8dHlwZSAyOTQgW10gPHR5cGUgLTIwPj47IC5taW1lL211bHRpcGFydC5ubERhc2hCb3VuZGFyeSA8dHlwZSAyOTUgW10gPHR5cGUgLTIwPj47IC5taW1lL211bHRpcGFydC5kYXNoQm91bmRhcnlEYXNoIDx0eXBlIDI5NiBbXSA8dHlwZSAtMjA+PjsgLm1pbWUvbXVsdGlwYXJ0LmRhc2hCb3VuZGFyeSA8dHlwZSAyOTcgW10gPHR5cGUgLTIwPj47IH0+CiBmdW5jIChtciA8dHlwZSAyOTggKjx0eXBlIDI2MD4+KSAubWltZS9tdWx0aXBhcnQucGVla0J1ZmZlcklzRW1wdHlQYXJ0IChwZWVrIDx0eXBlIDI5OSBbXSA8dHlwZSAtMjA+PikgPHR5cGUgLTE1PjsKIGZ1bmMgKG1yIDx0eXBlIDI5OD4pIC5taW1lL211bHRpcGFydC5pc0JvdW5kYXJ5RGVsaW1pdGVyTGluZSAobGluZSA8dHlwZSAzMDAgW10gPHR5cGUgLTIwPj4pIChyZXQgPHR5cGUgLTE1Pik7CiBmdW5jIChyIDx0eXBlIDI5OD4pIFJlYWRGb3JtIChtYXhNZW1vcnkgPHR5cGUgLTQ+KSAoZiA8dHlwZSA0ND4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKHIgPHR5cGUgMjk4PikgTmV4dFBhcnQgKCkgKD8gPHR5cGUgMjczPiwgPyA8dHlwZSAtMTk+KTsKIGZ1bmMgKG1yIDx0eXBlIDI5OD4pIC5taW1lL211bHRpcGFydC5pc0ZpbmFsQm91bmRhcnkgKGxpbmUgPHR5cGUgMzAxIFtdIDx0eXBlIC0yMD4+KSA8dHlwZSAtMTU+Owo+PiwgPyA8dHlwZSAtMTk+KTsKIGZ1bmMgKHIgPHR5cGUgMjUyPikgLm5ldC9odHRwLm11bHRpcGFydFJlYWRlciAoKSAoPyA8dHlwZSAyNTk+LCA/IDx0eXBlIC0xOT4pOwogZnVuYyAociA8dHlwZSAyNTI+KSBXcml0ZSAodyA8dHlwZSAyMj4pIDx0eXBlIC0xOT47CiBmdW5jIChyIDx0eXBlIDI1Mj4pIFdyaXRlUHJveHkgKHcgPHR5cGUgMjI+KSA8dHlwZSAtMTk+OwogZnVuYyAocmVxIDx0eXBlIDI1Mj4pIC5uZXQvaHR0cC53cml0ZSAodyA8dHlwZSAyMj4sIHVzaW5nUHJveHkgPHR5cGUgLTE1PiwgZXh0cmFIZWFkZXJzIDx0eXBlIDE5PikgPHR5cGUgLTE5PjsKIGZ1bmMgKHIgPHR5cGUgMjUyPikgQmFzaWNBdXRoICgpICh1c2VybmFtZSA8dHlwZSAtMTY+LCBwYXNzd29yZCA8dHlwZSAtMTY+LCBvayA8dHlwZSAtMTU+KTsKIGZ1bmMgKHIgPHR5cGUgMjUyPikgU2V0QmFzaWNBdXRoICh1c2VybmFtZSA8dHlwZSAtMTY+LCBwYXNzd29yZCA8dHlwZSAtMTY+KTsKIGZ1bmMgKHIgPHR5cGUgMjUyPikgUGFyc2VGb3JtICgpIDx0eXBlIC0xOT47CiBmdW5jIChyIDx0eXBlIDI1Mj4pIFBhcnNlTXVsdGlwYXJ0Rm9ybSAobWF4TWVtb3J5IDx0eXBlIC00PikgPHR5cGUgLTE5PjsKIGZ1bmMgKHIgPHR5cGUgMjUyPikgRm9ybVZhbHVlIChrZXkgPHR5cGUgLTE2PikgPHR5cGUgLTE2PjsKIGZ1bmMgKHIgPHR5cGUgMjUyPikgUG9zdEZvcm1WYWx1ZSAoa2V5IDx0eXBlIC0xNj4pIDx0eXBlIC0xNj47CiBmdW5jIChyIDx0eXBlIDI1Mj4pIEZvcm1GaWxlIChrZXkgPHR5cGUgLTE2PikgKD8gPHR5cGUgNTk+LCA/IDx0eXBlIDUxPiwgPyA8dHlwZSAtMTk+KTsKIGZ1bmMgKHIgPHR5cGUgMjUyPikgLm5ldC9odHRwLmV4cGVjdHNDb250aW51ZSAoKSA8dHlwZSAtMTU+OwogZnVuYyAociA8dHlwZSAyNTI+KSAubmV0L2h0dHAud2FudHNIdHRwMTBLZWVwQWxpdmUgKCkgPHR5cGUgLTE1PjsKIGZ1bmMgKHIgPHR5cGUgMjUyPikgLm5ldC9odHRwLndhbnRzQ2xvc2UgKCkgPHR5cGUgLTE1PjsKIGZ1bmMgKHIgPHR5cGUgMjUyPikgLm5ldC9odHRwLmNsb3NlQm9keSAoKTsKPj4pICg/IDx0eXBlIDMwMiAqPHR5cGUgMzAzICJSZXNwb25zZSIgPHR5cGUgMzA0IHN0cnVjdCB7IFN0YXR1cyA8dHlwZSAtMTY+OyBTdGF0dXNDb2RlIDx0eXBlIC0xMT47IFByb3RvIDx0eXBlIC0xNj47IFByb3RvTWFqb3IgPHR5cGUgLTExPjsgUHJvdG9NaW5vciA8dHlwZSAtMTE+OyBIZWFkZXIgPHR5cGUgMTk+OyBCb2R5IDx0eXBlIDM2PjsgQ29udGVudExlbmd0aCA8dHlwZSAtND47IFRyYW5zZmVyRW5jb2RpbmcgPHR5cGUgMzA1IFtdIDx0eXBlIC0xNj4+OyBDbG9zZSA8dHlwZSAtMTU+OyBUcmFpbGVyIDx0eXBlIDE5PjsgUmVxdWVzdCA8dHlwZSAyNTI+OyBUTFMgPHR5cGUgNjc+OyB9PgogZnVuYyAociA8dHlwZSAzMDYgKjx0eXBlIDMwMz4+KSBDb29raWVzICgpIDx0eXBlIDMwNyBbXSA8dHlwZSAyNTQ+PjsKIGZ1bmMgKHIgPHR5cGUgMzA2PikgTG9jYXRpb24gKCkgKD8gPHR5cGUgOD4sID8gPHR5cGUgLTE5Pik7CiBmdW5jIChyIDx0eXBlIDMwNj4pIFByb3RvQXRMZWFzdCAobWFqb3IgPHR5cGUgLTExPiwgbWlub3IgPHR5cGUgLTExPikgPHR5cGUgLTE1PjsKIGZ1bmMgKHIgPHR5cGUgMzA2PikgV3JpdGUgKHcgPHR5cGUgMjI+KSA8dHlwZSAtMTk+Owo+PiwgPyA8dHlwZSAtMTk+KTsgfT4+OyBDaGVja1JlZGlyZWN0IDx0eXBlIDMwOCAocmVxIDx0eXBlIDMwOSAqPHR5cGUgNj4+LCB2aWEgPHR5cGUgMzEwIFtdIDx0eXBlIDMxMSAqPHR5cGUgNj4+PikgPHR5cGUgLTE5Pj47IEphciA8dHlwZSAzMTIgIkNvb2tpZUphciIgPHR5cGUgMzEzIGludGVyZmFjZSB7IFNldENvb2tpZXMgKHUgPHR5cGUgOD4sIGNvb2tpZXMgPHR5cGUgMzE0IFtdIDx0eXBlIDI1ND4+KTsgQ29va2llcyAodSA8dHlwZSA4PikgPHR5cGUgMzE1IFtdIDx0eXBlIDI1ND4+OyB9Pj47IFRpbWVvdXQgPHR5cGUgMTYyPjsgfT4KIGZ1bmMgKGMgPHR5cGUgMzE2ICo8dHlwZSAxPj4pIC5uZXQvaHR0cC5zZW5kIChyZXEgPHR5cGUgMzE3ICo8dHlwZSA2Pj4pICg/IDx0eXBlIDMxOCAqPHR5cGUgMzAzPj4sID8gPHR5cGUgLTE5Pik7CiBmdW5jIChjIDx0eXBlIDMxNj4pIERvIChyZXEgPHR5cGUgMzE5ICo8dHlwZSA2Pj4pIChyZXNwIDx0eXBlIDMyMCAqPHR5cGUgMzAzPj4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGMgPHR5cGUgMzE2PikgLm5ldC9odHRwLnRyYW5zcG9ydCAoKSA8dHlwZSAzPjsKIGZ1bmMgKGMgPHR5cGUgMzE2PikgR2V0ICh1cmwgPHR5cGUgLTE2PikgKHJlc3AgPHR5cGUgMzIxICo8dHlwZSAzMDM+PiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoYyA8dHlwZSAzMTY+KSAubmV0L2h0dHAuZG9Gb2xsb3dpbmdSZWRpcmVjdHMgKGlyZXEgPHR5cGUgMzIyICo8dHlwZSA2Pj4sIHNob3VsZFJlZGlyZWN0IDx0eXBlIDMyMyAoPyA8dHlwZSAtMTE+KSA8dHlwZSAtMTU+PikgKHJlc3AgPHR5cGUgMzI0ICo8dHlwZSAzMDM+PiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoYyA8dHlwZSAzMTY+KSBQb3N0ICh1cmwgPHR5cGUgLTE2PiwgYm9keVR5cGUgPHR5cGUgLTE2PiwgYm9keSA8dHlwZSAzOD4pIChyZXNwIDx0eXBlIDMyNSAqPHR5cGUgMzAzPj4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGMgPHR5cGUgMzE2PikgUG9zdEZvcm0gKHVybCA8dHlwZSAtMTY+LCBkYXRhIDx0eXBlIDE2PikgKHJlc3AgPHR5cGUgMzI2ICo8dHlwZSAzMDM+PiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoYyA8dHlwZSAzMTY+KSBIZWFkICh1cmwgPHR5cGUgLTE2PikgKHJlc3AgPHR5cGUgMzI3ICo8dHlwZSAzMDM+PiwgZXJyIDx0eXBlIC0xOT4pOwo+Owp0eXBlIDx0eXBlIDMyOCAiQ2xvc2VOb3RpZmllciIgPHR5cGUgMzI5IGludGVyZmFjZSB7IENsb3NlTm90aWZ5ICgpIDx0eXBlIDMzMCBjaGFuIDwtIDx0eXBlIC0xNT4+OyB9Pj47CnR5cGUgPHR5cGUgMzMxICJDb25uU3RhdGUiIDx0eXBlIC0xMT4KIGZ1bmMgKGMgPHR5cGUgMzMxPikgU3RyaW5nICgpIDx0eXBlIC0xNj47Cj47CnR5cGUgPHR5cGUgMjU1PjsKdHlwZSA8dHlwZSAzMTI+Owp2YXIgRGVmYXVsdENsaWVudCA8dHlwZSAzMTY+Owpjb25zdCBEZWZhdWx0TWF4SGVhZGVyQnl0ZXMgPSAxMDQ4NTc2IDsKY29uc3QgRGVmYXVsdE1heElkbGVDb25uc1Blckhvc3QgPSAyIDsKdmFyIERlZmF1bHRTZXJ2ZU11eCA8dHlwZSAzMzIgKjx0eXBlIDMzMyAiU2VydmVNdXgiIDx0eXBlIDMzNCBzdHJ1Y3QgeyAubmV0L2h0dHAubXUgPHR5cGUgMzM1ICJzeW5jLlJXTXV0ZXgiIDx0eXBlIDMzNiBzdHJ1Y3QgeyAuc3luYy53IDx0eXBlIDMzNyAic3luYy5NdXRleCIgPHR5cGUgMzM4IHN0cnVjdCB7IC5zeW5jLnN0YXRlIDx0eXBlIC0zPjsgLnN5bmMuc2VtYSA8dHlwZSAtNz47IH0+CiBmdW5jIChtIDx0eXBlIDMzOSAqPHR5cGUgMzM3Pj4pIFVubG9jayAoKTsKIGZ1bmMgKG0gPHR5cGUgMzM5PikgTG9jayAoKTsKPjsgLnN5bmMud3JpdGVyU2VtIDx0eXBlIC03PjsgLnN5bmMucmVhZGVyU2VtIDx0eXBlIC03PjsgLnN5bmMucmVhZGVyQ291bnQgPHR5cGUgLTM+OyAuc3luYy5yZWFkZXJXYWl0IDx0eXBlIC0zPjsgfT4KIGZ1bmMgKHJ3IDx0eXBlIDM0MCAqPHR5cGUgMzM1Pj4pIFJVbmxvY2sgKCk7CiBmdW5jIChydyA8dHlwZSAzNDA+KSBVbmxvY2sgKCk7CiBmdW5jIChydyA8dHlwZSAzNDA+KSBSTG9ja2VyICgpIDx0eXBlIDM0MSAic3luYy5Mb2NrZXIiIDx0eXBlIDM0MiBpbnRlcmZhY2UgeyBMb2NrICgpOyBVbmxvY2sgKCk7IH0+PjsKIGZ1bmMgKHJ3IDx0eXBlIDM0MD4pIFJMb2NrICgpOwogZnVuYyAocncgPHR5cGUgMzQwPikgTG9jayAoKTsKPjsgLm5ldC9odHRwLm0gPHR5cGUgMzQzIG1hcCBbPHR5cGUgLTE2Pl0gPHR5cGUgMzQ0ICIubmV0L2h0dHAubXV4RW50cnkiIDx0eXBlIDM0NSBzdHJ1Y3QgeyAubmV0L2h0dHAuZXhwbGljaXQgPHR5cGUgLTE1PjsgLm5ldC9odHRwLmggPHR5cGUgMzQ2ICJIYW5kbGVyIiA8dHlwZSAzNDcgaW50ZXJmYWNlIHsgU2VydmVIVFRQICg/IDx0eXBlIDM0OCAiUmVzcG9uc2VXcml0ZXIiIDx0eXBlIDM0OSBpbnRlcmZhY2UgeyBIZWFkZXIgKCkgPHR5cGUgMTk+OyBXcml0ZSAoPyA8dHlwZSAzNTAgW10gPHR5cGUgLTIwPj4pICg/IDx0eXBlIC0xMT4sID8gPHR5cGUgLTE5Pik7IFdyaXRlSGVhZGVyICg/IDx0eXBlIC0xMT4pOyB9Pj4sID8gPHR5cGUgMjUyPik7IH0+PjsgLm5ldC9odHRwLnBhdHRlcm4gPHR5cGUgLTE2PjsgfT4+PjsgLm5ldC9odHRwLmhvc3RzIDx0eXBlIC0xNT47IH0+CiBmdW5jIChtdXggPHR5cGUgMzUxICo8dHlwZSAzMzM+PikgLm5ldC9odHRwLm1hdGNoIChwYXRoIDx0eXBlIC0xNj4pIChoIDx0eXBlIDM0Nj4sIHBhdHRlcm4gPHR5cGUgLTE2Pik7CiBmdW5jIChtdXggPHR5cGUgMzUxPikgSGFuZGxlciAociA8dHlwZSAyNTI+KSAoaCA8dHlwZSAzNDY+LCBwYXR0ZXJuIDx0eXBlIC0xNj4pOwogZnVuYyAobXV4IDx0eXBlIDM1MT4pIC5uZXQvaHR0cC5oYW5kbGVyIChob3N0IDx0eXBlIC0xNj4sIHBhdGggPHR5cGUgLTE2PikgKGggPHR5cGUgMzQ2PiwgcGF0dGVybiA8dHlwZSAtMTY+KTsKIGZ1bmMgKG11eCA8dHlwZSAzNTE+KSBTZXJ2ZUhUVFAgKHcgPHR5cGUgMzQ4PiwgciA8dHlwZSAyNTI+KTsKIGZ1bmMgKG11eCA8dHlwZSAzNTE+KSBIYW5kbGUgKHBhdHRlcm4gPHR5cGUgLTE2PiwgaGFuZGxlciA8dHlwZSAzNDY+KTsKIGZ1bmMgKG11eCA8dHlwZSAzNTE+KSBIYW5kbGVGdW5jIChwYXR0ZXJuIDx0eXBlIC0xNj4sIGhhbmRsZXIgPHR5cGUgMzUyICg/IDx0eXBlIDM0OD4sID8gPHR5cGUgMjUyPik+KTsKPj47CnZhciBEZWZhdWx0VHJhbnNwb3J0IDx0eXBlIDM+OwpmdW5jIERldGVjdENvbnRlbnRUeXBlIChkYXRhIDx0eXBlIDM1MyBbXSA8dHlwZSAtMjA+PikgPHR5cGUgLTE2PjsKdHlwZSA8dHlwZSAzNTQgIkRpciIgPHR5cGUgLTE2PgogZnVuYyAoZCA8dHlwZSAzNTQ+KSBPcGVuIChuYW1lIDx0eXBlIC0xNj4pICg/IDx0eXBlIDM1NSAiRmlsZSIgPHR5cGUgMzU2IGludGVyZmFjZSB7ID8gPHR5cGUgNDE+OyA/IDx0eXBlIDM4PjsgUmVhZGRpciAoY291bnQgPHR5cGUgLTExPikgKD8gPHR5cGUgMzU3IFtdIDx0eXBlIDM1OCAib3MuRmlsZUluZm8iIDx0eXBlIDM1OSBpbnRlcmZhY2UgeyBOYW1lICgpIDx0eXBlIC0xNj47IFNpemUgKCkgPHR5cGUgLTQ+OyBNb2RlICgpIDx0eXBlIDM2MCAib3MuRmlsZU1vZGUiIDx0eXBlIC03PgogZnVuYyAobSA8dHlwZSAzNjA+KSBJc1JlZ3VsYXIgKCkgPHR5cGUgLTE1PjsKIGZ1bmMgKG0gPHR5cGUgMzYwPikgUGVybSAoKSA8dHlwZSAzNjA+OwogZnVuYyAobSA8dHlwZSAzNjA+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKG0gPHR5cGUgMzYwPikgSXNEaXIgKCkgPHR5cGUgLTE1PjsKPjsgTW9kVGltZSAoKSA8dHlwZSAxNDI+OyBJc0RpciAoKSA8dHlwZSAtMTU+OyBTeXMgKCkgPHR5cGUgMzYxIGludGVyZmFjZSB7IH0+OyB9Pj4+LCA/IDx0eXBlIC0xOT4pOyBTZWVrIChvZmZzZXQgPHR5cGUgLTQ+LCB3aGVuY2UgPHR5cGUgLTExPikgKD8gPHR5cGUgLTQ+LCA/IDx0eXBlIC0xOT4pOyBTdGF0ICgpICg/IDx0eXBlIDM1OD4sID8gPHR5cGUgLTE5Pik7IH0+PiwgPyA8dHlwZSAtMTk+KTsKPjsKdmFyIEVyckJvZHlOb3RBbGxvd2VkIDx0eXBlIC0xOT47CnZhciBFcnJCb2R5UmVhZEFmdGVyQ2xvc2UgPHR5cGUgLTE5PjsKdmFyIEVyckNvbnRlbnRMZW5ndGggPHR5cGUgLTE5PjsKdmFyIEVyckhhbmRsZXJUaW1lb3V0IDx0eXBlIC0xOT47CnZhciBFcnJIZWFkZXJUb29Mb25nIDx0eXBlIDM2MiAqPHR5cGUgMzYzICJQcm90b2NvbEVycm9yIiA8dHlwZSAzNjQgc3RydWN0IHsgRXJyb3JTdHJpbmcgPHR5cGUgLTE2PjsgfT4KIGZ1bmMgKGVyciA8dHlwZSAzNjUgKjx0eXBlIDM2Mz4+KSBFcnJvciAoKSA8dHlwZSAtMTY+Owo+PjsKdmFyIEVyckhpamFja2VkIDx0eXBlIC0xOT47CnZhciBFcnJMaW5lVG9vTG9uZyA8dHlwZSAtMTk+Owp2YXIgRXJyTWlzc2luZ0JvdW5kYXJ5IDx0eXBlIDM2Mj47CnZhciBFcnJNaXNzaW5nQ29udGVudExlbmd0aCA8dHlwZSAzNjI+Owp2YXIgRXJyTWlzc2luZ0ZpbGUgPHR5cGUgLTE5PjsKdmFyIEVyck5vQ29va2llIDx0eXBlIC0xOT47CnZhciBFcnJOb0xvY2F0aW9uIDx0eXBlIC0xOT47CnZhciBFcnJOb3RNdWx0aXBhcnQgPHR5cGUgMzYyPjsKdmFyIEVyck5vdFN1cHBvcnRlZCA8dHlwZSAzNjI+Owp2YXIgRXJyU2hvcnRCb2R5IDx0eXBlIDM2Mj47CnZhciBFcnJVbmV4cGVjdGVkVHJhaWxlciA8dHlwZSAzNjI+Owp2YXIgRXJyV3JpdGVBZnRlckZsdXNoIDx0eXBlIC0xOT47CmZ1bmMgRXJyb3IgKHcgPHR5cGUgMzQ4PiwgZXJyb3IgPHR5cGUgLTE2PiwgY29kZSA8dHlwZSAtMTE+KTsKdHlwZSA8dHlwZSAzNTU+OwpmdW5jIEZpbGVTZXJ2ZXIgKHJvb3QgPHR5cGUgMzY2ICJGaWxlU3lzdGVtIiA8dHlwZSAzNjcgaW50ZXJmYWNlIHsgT3BlbiAobmFtZSA8dHlwZSAtMTY+KSAoPyA8dHlwZSAzNTU+LCA/IDx0eXBlIC0xOT4pOyB9Pj4pIDx0eXBlIDM0Nj47CnR5cGUgPHR5cGUgMzY2PjsKdHlwZSA8dHlwZSAzNjggIkZsdXNoZXIiIDx0eXBlIDM2OSBpbnRlcmZhY2UgeyBGbHVzaCAoKTsgfT4+OwpmdW5jIEdldCAodXJsIDx0eXBlIC0xNj4pIChyZXNwIDx0eXBlIDM3MCAqPHR5cGUgMzAzPj4sIGVyciA8dHlwZSAtMTk+KTsKZnVuYyBIYW5kbGUgKHBhdHRlcm4gPHR5cGUgLTE2PiwgaGFuZGxlciA8dHlwZSAzNDY+KTsKZnVuYyBIYW5kbGVGdW5jIChwYXR0ZXJuIDx0eXBlIC0xNj4sIGhhbmRsZXIgPHR5cGUgMzcxICg/IDx0eXBlIDM0OD4sID8gPHR5cGUgMjUyPik+KTsKdHlwZSA8dHlwZSAzNDY+Owp0eXBlIDx0eXBlIDM3MiAiSGFuZGxlckZ1bmMiIDx0eXBlIDM3MyAoPyA8dHlwZSAzNDg+LCA/IDx0eXBlIDI1Mj4pPgogZnVuYyAoZiA8dHlwZSAzNzI+KSBTZXJ2ZUhUVFAgKHcgPHR5cGUgMzQ4PiwgciA8dHlwZSAyNTI+KTsKPjsKZnVuYyBIZWFkICh1cmwgPHR5cGUgLTE2PikgKHJlc3AgPHR5cGUgMzc0ICo8dHlwZSAzMDM+PiwgZXJyIDx0eXBlIC0xOT4pOwp0eXBlIDx0eXBlIDE5PjsKdHlwZSA8dHlwZSAzNzUgIkhpamFja2VyIiA8dHlwZSAzNzYgaW50ZXJmYWNlIHsgSGlqYWNrICgpICg/IDx0eXBlIDM3NyAibmV0LkNvbm4iIDx0eXBlIDM3OCBpbnRlcmZhY2UgeyBSZWFkIChiIDx0eXBlIDM3OSBbXSA8dHlwZSAtMjA+PikgKG4gPHR5cGUgLTExPiwgZXJyIDx0eXBlIC0xOT4pOyBXcml0ZSAoYiA8dHlwZSAzODAgW10gPHR5cGUgLTIwPj4pIChuIDx0eXBlIC0xMT4sIGVyciA8dHlwZSAtMTk+KTsgQ2xvc2UgKCkgPHR5cGUgLTE5PjsgTG9jYWxBZGRyICgpIDx0eXBlIDM4MSAibmV0LkFkZHIiIDx0eXBlIDM4MiBpbnRlcmZhY2UgeyBOZXR3b3JrICgpIDx0eXBlIC0xNj47IFN0cmluZyAoKSA8dHlwZSAtMTY+OyB9Pj47IFJlbW90ZUFkZHIgKCkgPHR5cGUgMzgxPjsgU2V0RGVhZGxpbmUgKHQgPHR5cGUgMTQyPikgPHR5cGUgLTE5PjsgU2V0UmVhZERlYWRsaW5lICh0IDx0eXBlIDE0Mj4pIDx0eXBlIC0xOT47IFNldFdyaXRlRGVhZGxpbmUgKHQgPHR5cGUgMTQyPikgPHR5cGUgLTE5PjsgfT4+LCA/IDx0eXBlIDM4MyAqPHR5cGUgMzg0ICJidWZpby5SZWFkV3JpdGVyIiA8dHlwZSAzODUgc3RydWN0IHsgPyA8dHlwZSAyNjI+OyA/IDx0eXBlIDM4NiAqPHR5cGUgMzg3ICJidWZpby5Xcml0ZXIiIDx0eXBlIDM4OCBzdHJ1Y3QgeyAuYnVmaW8uZXJyIDx0eXBlIC0xOT47IC5idWZpby5idWYgPHR5cGUgMzg5IFtdIDx0eXBlIC0yMD4+OyAuYnVmaW8ubiA8dHlwZSAtMTE+OyAuYnVmaW8ud3IgPHR5cGUgMjI+OyB9PgogZnVuYyAoYiA8dHlwZSAzOTAgKjx0eXBlIDM4Nz4+KSBXcml0ZVN0cmluZyAocyA8dHlwZSAtMTY+KSAoPyA8dHlwZSAtMTE+LCA/IDx0eXBlIC0xOT4pOwogZnVuYyAoYiA8dHlwZSAzOTA+KSBSZWFkRnJvbSAociA8dHlwZSAzOD4pIChuIDx0eXBlIC00PiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoYiA8dHlwZSAzOTA+KSBXcml0ZSAocCA8dHlwZSAzOTEgW10gPHR5cGUgLTIwPj4pIChubiA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChiIDx0eXBlIDM5MD4pIFdyaXRlQnl0ZSAoYyA8dHlwZSAtMjA+KSA8dHlwZSAtMTk+OwogZnVuYyAoYiA8dHlwZSAzOTA+KSBXcml0ZVJ1bmUgKHIgPHR5cGUgLTIxPikgKHNpemUgPHR5cGUgLTExPiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoYiA8dHlwZSAzOTA+KSBGbHVzaCAoKSA8dHlwZSAtMTk+OwogZnVuYyAoYiA8dHlwZSAzOTA+KSBBdmFpbGFibGUgKCkgPHR5cGUgLTExPjsKIGZ1bmMgKGIgPHR5cGUgMzkwPikgLmJ1ZmlvLmZsdXNoICgpIDx0eXBlIC0xOT47CiBmdW5jIChiIDx0eXBlIDM5MD4pIEJ1ZmZlcmVkICgpIDx0eXBlIC0xMT47CiBmdW5jIChiIDx0eXBlIDM5MD4pIFJlc2V0ICh3IDx0eXBlIDIyPik7Cj4+OyB9Pj4+LCA/IDx0eXBlIC0xOT4pOyB9Pj47CmZ1bmMgTGlzdGVuQW5kU2VydmUgKGFkZHIgPHR5cGUgLTE2PiwgaGFuZGxlciA8dHlwZSAzNDY+KSA8dHlwZSAtMTk+OwpmdW5jIExpc3RlbkFuZFNlcnZlVExTIChhZGRyIDx0eXBlIC0xNj4sIGNlcnRGaWxlIDx0eXBlIC0xNj4sIGtleUZpbGUgPHR5cGUgLTE2PiwgaGFuZGxlciA8dHlwZSAzNDY+KSA8dHlwZSAtMTk+OwpmdW5jIE1heEJ5dGVzUmVhZGVyICh3IDx0eXBlIDM0OD4sIHIgPHR5cGUgMzY+LCBuIDx0eXBlIC00PikgPHR5cGUgMzY+OwpmdW5jIE5ld0ZpbGVUcmFuc3BvcnQgKGZzIDx0eXBlIDM2Nj4pIDx0eXBlIDM+OwpmdW5jIE5ld1JlcXVlc3QgKG1ldGhvZCA8dHlwZSAtMTY+LCB1cmxTdHIgPHR5cGUgLTE2PiwgYm9keSA8dHlwZSAzOD4pICg/IDx0eXBlIDI1Mj4sID8gPHR5cGUgLTE5Pik7CmZ1bmMgTmV3U2VydmVNdXggKCkgPHR5cGUgMzMyPjsKZnVuYyBOb3RGb3VuZCAodyA8dHlwZSAzNDg+LCByIDx0eXBlIDI1Mj4pOwpmdW5jIE5vdEZvdW5kSGFuZGxlciAoKSA8dHlwZSAzNDY+OwpmdW5jIFBhcnNlSFRUUFZlcnNpb24gKHZlcnMgPHR5cGUgLTE2PikgKG1ham9yIDx0eXBlIC0xMT4sIG1pbm9yIDx0eXBlIC0xMT4sIG9rIDx0eXBlIC0xNT4pOwpmdW5jIFBhcnNlVGltZSAodGV4dCA8dHlwZSAtMTY+KSAodCA8dHlwZSAxNDI+LCBlcnIgPHR5cGUgLTE5Pik7CmZ1bmMgUG9zdCAodXJsIDx0eXBlIC0xNj4sIGJvZHlUeXBlIDx0eXBlIC0xNj4sIGJvZHkgPHR5cGUgMzg+KSAocmVzcCA8dHlwZSAzOTIgKjx0eXBlIDMwMz4+LCBlcnIgPHR5cGUgLTE5Pik7CmZ1bmMgUG9zdEZvcm0gKHVybCA8dHlwZSAtMTY+LCBkYXRhIDx0eXBlIDE2PikgKHJlc3AgPHR5cGUgMzkzICo8dHlwZSAzMDM+PiwgZXJyIDx0eXBlIC0xOT4pOwp0eXBlIDx0eXBlIDM2Mz47CmZ1bmMgUHJveHlGcm9tRW52aXJvbm1lbnQgKHJlcSA8dHlwZSAyNTI+KSAoPyA8dHlwZSA4PiwgPyA8dHlwZSAtMTk+KTsKZnVuYyBQcm94eVVSTCAoZml4ZWRVUkwgPHR5cGUgOD4pIDx0eXBlIDM5NCAoPyA8dHlwZSAyNTI+KSAoPyA8dHlwZSA4PiwgPyA8dHlwZSAtMTk+KT47CmZ1bmMgUmVhZFJlcXVlc3QgKGIgPHR5cGUgMjYyPikgKHJlcSA8dHlwZSAyNTI+LCBlcnIgPHR5cGUgLTE5Pik7CmZ1bmMgUmVhZFJlc3BvbnNlIChyIDx0eXBlIDI2Mj4sIHJlcSA8dHlwZSAyNTI+KSAoPyA8dHlwZSAzMDY+LCA/IDx0eXBlIC0xOT4pOwpmdW5jIFJlZGlyZWN0ICh3IDx0eXBlIDM0OD4sIHIgPHR5cGUgMjUyPiwgdXJsU3RyIDx0eXBlIC0xNj4sIGNvZGUgPHR5cGUgLTExPik7CmZ1bmMgUmVkaXJlY3RIYW5kbGVyICh1cmwgPHR5cGUgLTE2PiwgY29kZSA8dHlwZSAtMTE+KSA8dHlwZSAzNDY+Owp0eXBlIDx0eXBlIDY+Owp0eXBlIDx0eXBlIDMwMz47CnR5cGUgPHR5cGUgMzQ4PjsKdHlwZSA8dHlwZSAzPjsKZnVuYyBTZXJ2ZSAobCA8dHlwZSAzOTUgIm5ldC5MaXN0ZW5lciIgPHR5cGUgMzk2IGludGVyZmFjZSB7IEFjY2VwdCAoKSAoYyA8dHlwZSAzNzc+LCBlcnIgPHR5cGUgLTE5Pik7IENsb3NlICgpIDx0eXBlIC0xOT47IEFkZHIgKCkgPHR5cGUgMzgxPjsgfT4+LCBoYW5kbGVyIDx0eXBlIDM0Nj4pIDx0eXBlIC0xOT47CmZ1bmMgU2VydmVDb250ZW50ICh3IDx0eXBlIDM0OD4sIHJlcSA8dHlwZSAzOTcgKjx0eXBlIDY+PiwgbmFtZSA8dHlwZSAtMTY+LCBtb2R0aW1lIDx0eXBlIDE0Mj4sIGNvbnRlbnQgPHR5cGUgMzk4ICJpby5SZWFkU2Vla2VyIiA8dHlwZSAzOTkgaW50ZXJmYWNlIHsgPyA8dHlwZSAzOD47ID8gPHR5cGUgNjQ+OyB9Pj4pOwpmdW5jIFNlcnZlRmlsZSAodyA8dHlwZSAzNDg+LCByIDx0eXBlIDQwMCAqPHR5cGUgNj4+LCBuYW1lIDx0eXBlIC0xNj4pOwp0eXBlIDx0eXBlIDMzMz47CnR5cGUgPHR5cGUgNDAxICJTZXJ2ZXIiIDx0eXBlIDQwMiBzdHJ1Y3QgeyBBZGRyIDx0eXBlIC0xNj47IEhhbmRsZXIgPHR5cGUgMzQ2PjsgUmVhZFRpbWVvdXQgPHR5cGUgMTYyPjsgV3JpdGVUaW1lb3V0IDx0eXBlIDE2Mj47IE1heEhlYWRlckJ5dGVzIDx0eXBlIC0xMT47IFRMU0NvbmZpZyA8dHlwZSA0MDMgKjx0eXBlIDQwNCAiY3J5cHRvL3Rscy5Db25maWciIDx0eXBlIDQwNSBzdHJ1Y3QgeyBSYW5kIDx0eXBlIDM4PjsgVGltZSA8dHlwZSA0MDYgKCkgPHR5cGUgMTQyPj47IENlcnRpZmljYXRlcyA8dHlwZSA0MDcgW10gPHR5cGUgNDA4ICJjcnlwdG8vdGxzLkNlcnRpZmljYXRlIiA8dHlwZSA0MDkgc3RydWN0IHsgQ2VydGlmaWNhdGUgPHR5cGUgNDEwIFtdIDx0eXBlIDQxMSBbXSA8dHlwZSAtMjA+Pj47IFByaXZhdGVLZXkgPHR5cGUgNDEyICJjcnlwdG8uUHJpdmF0ZUtleSIgImNyeXB0byIgPHR5cGUgNDEzIGludGVyZmFjZSB7IH0+PjsgT0NTUFN0YXBsZSA8dHlwZSA0MTQgW10gPHR5cGUgLTIwPj47IExlYWYgPHR5cGUgNzE+OyB9Pj4+OyBOYW1lVG9DZXJ0aWZpY2F0ZSA8dHlwZSA0MTUgbWFwIFs8dHlwZSAtMTY+XSA8dHlwZSA0MTYgKjx0eXBlIDQwOD4+PjsgR2V0Q2VydGlmaWNhdGUgPHR5cGUgNDE3IChjbGllbnRIZWxsbyA8dHlwZSA0MTggKjx0eXBlIDQxOSAiY3J5cHRvL3Rscy5DbGllbnRIZWxsb0luZm8iIDx0eXBlIDQyMCBzdHJ1Y3QgeyBDaXBoZXJTdWl0ZXMgPHR5cGUgNDIxIFtdIDx0eXBlIC02Pj47IFNlcnZlck5hbWUgPHR5cGUgLTE2PjsgU3VwcG9ydGVkQ3VydmVzIDx0eXBlIDQyMiBbXSA8dHlwZSA0MjMgImNyeXB0by90bHMuQ3VydmVJRCIgPHR5cGUgLTY+Pj47IFN1cHBvcnRlZFBvaW50cyA8dHlwZSA0MjQgW10gPHR5cGUgLTU+PjsgfT4+PikgKD8gPHR5cGUgNDE2PiwgPyA8dHlwZSAtMTk+KT47IFJvb3RDQXMgPHR5cGUgMTk4PjsgTmV4dFByb3RvcyA8dHlwZSA0MjUgW10gPHR5cGUgLTE2Pj47IFNlcnZlck5hbWUgPHR5cGUgLTE2PjsgQ2xpZW50QXV0aCA8dHlwZSA0MjYgImNyeXB0by90bHMuQ2xpZW50QXV0aFR5cGUiIDx0eXBlIC0xMT4+OyBDbGllbnRDQXMgPHR5cGUgMTk4PjsgSW5zZWN1cmVTa2lwVmVyaWZ5IDx0eXBlIC0xNT47IENpcGhlclN1aXRlcyA8dHlwZSA0MjcgW10gPHR5cGUgLTY+PjsgUHJlZmVyU2VydmVyQ2lwaGVyU3VpdGVzIDx0eXBlIC0xNT47IFNlc3Npb25UaWNrZXRzRGlzYWJsZWQgPHR5cGUgLTE1PjsgU2Vzc2lvblRpY2tldEtleSA8dHlwZSA0MjggWzMyIF0gPHR5cGUgLTIwPj47IENsaWVudFNlc3Npb25DYWNoZSA8dHlwZSA0MjkgImNyeXB0by90bHMuQ2xpZW50U2Vzc2lvbkNhY2hlIiA8dHlwZSA0MzAgaW50ZXJmYWNlIHsgR2V0IChzZXNzaW9uS2V5IDx0eXBlIC0xNj4pIChzZXNzaW9uIDx0eXBlIDQzMSAqPHR5cGUgNDMyICJjcnlwdG8vdGxzLkNsaWVudFNlc3Npb25TdGF0ZSIgPHR5cGUgNDMzIHN0cnVjdCB7IC5jcnlwdG8vdGxzLnNlc3Npb25UaWNrZXQgPHR5cGUgNDM0IFtdIDx0eXBlIC01Pj47IC5jcnlwdG8vdGxzLnZlcnMgPHR5cGUgLTY+OyAuY3J5cHRvL3Rscy5jaXBoZXJTdWl0ZSA8dHlwZSAtNj47IC5jcnlwdG8vdGxzLm1hc3RlclNlY3JldCA8dHlwZSA0MzUgW10gPHR5cGUgLTIwPj47IC5jcnlwdG8vdGxzLnNlcnZlckNlcnRpZmljYXRlcyA8dHlwZSA0MzYgW10gPHR5cGUgNzE+PjsgfT4+Piwgb2sgPHR5cGUgLTE1Pik7IFB1dCAoc2Vzc2lvbktleSA8dHlwZSAtMTY+LCBjcyA8dHlwZSA0MzE+KTsgfT4+OyBNaW5WZXJzaW9uIDx0eXBlIC02PjsgTWF4VmVyc2lvbiA8dHlwZSAtNj47IEN1cnZlUHJlZmVyZW5jZXMgPHR5cGUgNDM3IFtdIDx0eXBlIDQyMz4+OyAuY3J5cHRvL3Rscy5zZXJ2ZXJJbml0T25jZSA8dHlwZSA0MzggInN5bmMuT25jZSIgPHR5cGUgNDM5IHN0cnVjdCB7IC5zeW5jLm0gPHR5cGUgMzM3PjsgLnN5bmMuZG9uZSA8dHlwZSAtNz47IH0+CiBmdW5jIChvIDx0eXBlIDQ0MCAqPHR5cGUgNDM4Pj4pIERvIChmIDx0eXBlIDQ0MSAoKT4pOwo+OyB9PgogZnVuYyAoYyA8dHlwZSA0NDIgKjx0eXBlIDQwND4+KSAuY3J5cHRvL3Rscy5jdXJ2ZVByZWZlcmVuY2VzICgpIDx0eXBlIDQ0MyBbXSA8dHlwZSA0MjM+PjsKIGZ1bmMgKGMgPHR5cGUgNDQyPikgLmNyeXB0by90bHMucmFuZCAoKSA8dHlwZSAzOD47CiBmdW5jIChjIDx0eXBlIDQ0Mj4pIC5jcnlwdG8vdGxzLnNlcnZlckluaXQgKCk7CiBmdW5jIChjIDx0eXBlIDQ0Mj4pIC5jcnlwdG8vdGxzLm1heFZlcnNpb24gKCkgPHR5cGUgLTY+OwogZnVuYyAoYyA8dHlwZSA0NDI+KSAuY3J5cHRvL3Rscy5tdXR1YWxWZXJzaW9uICh2ZXJzIDx0eXBlIC02PikgKD8gPHR5cGUgLTY+LCA/IDx0eXBlIC0xNT4pOwogZnVuYyAoYyA8dHlwZSA0NDI+KSAuY3J5cHRvL3Rscy5nZXRDZXJ0aWZpY2F0ZSAoY2xpZW50SGVsbG8gPHR5cGUgNDE4PikgKD8gPHR5cGUgNDE2PiwgPyA8dHlwZSAtMTk+KTsKIGZ1bmMgKGMgPHR5cGUgNDQyPikgLmNyeXB0by90bHMuY2lwaGVyU3VpdGVzICgpIDx0eXBlIDQ0NCBbXSA8dHlwZSAtNj4+OwogZnVuYyAoYyA8dHlwZSA0NDI+KSAuY3J5cHRvL3Rscy50aW1lICgpIDx0eXBlIDE0Mj47CiBmdW5jIChjIDx0eXBlIDQ0Mj4pIEJ1aWxkTmFtZVRvQ2VydGlmaWNhdGUgKCk7CiBmdW5jIChjIDx0eXBlIDQ0Mj4pIC5jcnlwdG8vdGxzLm1pblZlcnNpb24gKCkgPHR5cGUgLTY+Owo+PjsgVExTTmV4dFByb3RvIDx0eXBlIDQ0NSBtYXAgWzx0eXBlIC0xNj5dIDx0eXBlIDQ0NiAoPyA8dHlwZSA0NDcgKjx0eXBlIDQwMT4+LCA/IDx0eXBlIDQ0OCAqPHR5cGUgNDQ5ICJjcnlwdG8vdGxzLkNvbm4iIDx0eXBlIDQ1MCBzdHJ1Y3QgeyAuY3J5cHRvL3Rscy5jb25uIDx0eXBlIDM3Nz47IC5jcnlwdG8vdGxzLmlzQ2xpZW50IDx0eXBlIC0xNT47IC5jcnlwdG8vdGxzLmhhbmRzaGFrZU11dGV4IDx0eXBlIDMzNz47IC5jcnlwdG8vdGxzLmhhbmRzaGFrZUVyciA8dHlwZSAtMTk+OyAuY3J5cHRvL3Rscy52ZXJzIDx0eXBlIC02PjsgLmNyeXB0by90bHMuaGF2ZVZlcnMgPHR5cGUgLTE1PjsgLmNyeXB0by90bHMuY29uZmlnIDx0eXBlIDQwMz47IC5jcnlwdG8vdGxzLmhhbmRzaGFrZUNvbXBsZXRlIDx0eXBlIC0xNT47IC5jcnlwdG8vdGxzLmRpZFJlc3VtZSA8dHlwZSAtMTU+OyAuY3J5cHRvL3Rscy5jaXBoZXJTdWl0ZSA8dHlwZSAtNj47IC5jcnlwdG8vdGxzLm9jc3BSZXNwb25zZSA8dHlwZSA0NTEgW10gPHR5cGUgLTIwPj47IC5jcnlwdG8vdGxzLnBlZXJDZXJ0aWZpY2F0ZXMgPHR5cGUgNDUyIFtdIDx0eXBlIDcxPj47IC5jcnlwdG8vdGxzLnZlcmlmaWVkQ2hhaW5zIDx0eXBlIDQ1MyBbXSA8dHlwZSA0NTQgW10gPHR5cGUgNzE+Pj47IC5jcnlwdG8vdGxzLnNlcnZlck5hbWUgPHR5cGUgLTE2PjsgLmNyeXB0by90bHMuZmlyc3RGaW5pc2hlZCA8dHlwZSA0NTUgWzEyIF0gPHR5cGUgLTIwPj47IC5jcnlwdG8vdGxzLmNsaWVudFByb3RvY29sIDx0eXBlIC0xNj47IC5jcnlwdG8vdGxzLmNsaWVudFByb3RvY29sRmFsbGJhY2sgPHR5cGUgLTE1PjsgLmNyeXB0by90bHMuaW4gPHR5cGUgNDU2ICIuY3J5cHRvL3Rscy5oYWxmQ29ubiIgPHR5cGUgNDU3IHN0cnVjdCB7ID8gPHR5cGUgMzM3PjsgLmNyeXB0by90bHMuZXJyIDx0eXBlIC0xOT47IC5jcnlwdG8vdGxzLnZlcnNpb24gPHR5cGUgLTY+OyAuY3J5cHRvL3Rscy5jaXBoZXIgPHR5cGUgNDU4IGludGVyZmFjZSB7IH0+OyAuY3J5cHRvL3Rscy5tYWMgPHR5cGUgNDU5ICIuY3J5cHRvL3Rscy5tYWNGdW5jdGlvbiIgPHR5cGUgNDYwIGludGVyZmFjZSB7IFNpemUgKCkgPHR5cGUgLTExPjsgTUFDIChkaWdlc3RCdWYgPHR5cGUgNDYxIFtdIDx0eXBlIC0yMD4+LCBzZXEgPHR5cGUgNDYxPiwgaGVhZGVyIDx0eXBlIDQ2MT4sIGRhdGEgPHR5cGUgNDYxPikgPHR5cGUgNDYyIFtdIDx0eXBlIC0yMD4+OyB9Pj47IC5jcnlwdG8vdGxzLnNlcSA8dHlwZSA0NjMgWzggXSA8dHlwZSAtMjA+PjsgLmNyeXB0by90bHMuYmZyZWUgPHR5cGUgNDY0ICo8dHlwZSA0NjUgIi5jcnlwdG8vdGxzLmJsb2NrIiA8dHlwZSA0NjYgc3RydWN0IHsgLmNyeXB0by90bHMuZGF0YSA8dHlwZSA0NjcgW10gPHR5cGUgLTIwPj47IC5jcnlwdG8vdGxzLm9mZiA8dHlwZSAtMTE+OyAuY3J5cHRvL3Rscy5saW5rIDx0eXBlIDQ2OCAqPHR5cGUgNDY1Pj47IH0+CiBmdW5jIChiIDx0eXBlIDQ2OSAqPHR5cGUgNDY1Pj4pIC5jcnlwdG8vdGxzLnJlc2l6ZSAobiA8dHlwZSAtMTE+KTsKIGZ1bmMgKGIgPHR5cGUgNDY5PikgUmVhZCAocCA8dHlwZSA0NzAgW10gPHR5cGUgLTIwPj4pIChuIDx0eXBlIC0xMT4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGIgPHR5cGUgNDY5PikgLmNyeXB0by90bHMucmVzZXJ2ZSAobiA8dHlwZSAtMTE+KTsKIGZ1bmMgKGIgPHR5cGUgNDY5PikgLmNyeXB0by90bHMucmVhZEZyb21VbnRpbCAociA8dHlwZSAzOD4sIG4gPHR5cGUgLTExPikgPHR5cGUgLTE5PjsKPj47IC5jcnlwdG8vdGxzLm5leHRDaXBoZXIgPHR5cGUgNDcxIGludGVyZmFjZSB7IH0+OyAuY3J5cHRvL3Rscy5uZXh0TWFjIDx0eXBlIDQ1OT47IC5jcnlwdG8vdGxzLmluRGlnZXN0QnVmIDx0eXBlIDQ3MiBbXSA8dHlwZSAtMjA+PjsgLmNyeXB0by90bHMub3V0RGlnZXN0QnVmIDx0eXBlIDQ3Mj47IH0+CiBmdW5jIChoYyA8dHlwZSA0NzMgKjx0eXBlIDQ1Nj4+KSAuY3J5cHRvL3Rscy5kZWNyeXB0IChiIDx0eXBlIDQ2ND4pIChvayA8dHlwZSAtMTU+LCBwcmVmaXhMZW4gPHR5cGUgLTExPiwgYWxlcnRWYWx1ZSA8dHlwZSA0NzQgIi5jcnlwdG8vdGxzLmFsZXJ0IiA8dHlwZSAtNT4KIGZ1bmMgKGUgPHR5cGUgNDc0PikgRXJyb3IgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKGUgPHR5cGUgNDc0PikgU3RyaW5nICgpIDx0eXBlIC0xNj47Cj4pOwogZnVuYyAoaGMgPHR5cGUgNDczPikgLmNyeXB0by90bHMuZXJyb3IgKCkgPHR5cGUgLTE5PjsKIGZ1bmMgKGhjIDx0eXBlIDQ3Mz4pIC5jcnlwdG8vdGxzLmNoYW5nZUNpcGhlclNwZWMgKCkgPHR5cGUgLTE5PjsKIGZ1bmMgKGhjIDx0eXBlIDQ3Mz4pIC5jcnlwdG8vdGxzLm5ld0Jsb2NrICgpIDx0eXBlIDQ2ND47CiBmdW5jIChoYyA8dHlwZSA0NzM+KSAuY3J5cHRvL3Rscy5yZXNldFNlcSAoKTsKIGZ1bmMgKGhjIDx0eXBlIDQ3Mz4pIC5jcnlwdG8vdGxzLnNwbGl0QmxvY2sgKGIgPHR5cGUgNDY0PiwgbiA8dHlwZSAtMTE+KSAoPyA8dHlwZSA0NjQ+LCA/IDx0eXBlIDQ2ND4pOwogZnVuYyAoaGMgPHR5cGUgNDczPikgLmNyeXB0by90bHMuZW5jcnlwdCAoYiA8dHlwZSA0NjQ+LCBleHBsaWNpdElWTGVuIDx0eXBlIC0xMT4pICg/IDx0eXBlIC0xNT4sID8gPHR5cGUgNDc0Pik7CiBmdW5jIChoYyA8dHlwZSA0NzM+KSAuY3J5cHRvL3Rscy5pbmNTZXEgKCk7CiBmdW5jIChoYyA8dHlwZSA0NzM+KSAuY3J5cHRvL3Rscy5wcmVwYXJlQ2lwaGVyU3BlYyAodmVyc2lvbiA8dHlwZSAtNj4sIGNpcGhlciA8dHlwZSA0NzUgaW50ZXJmYWNlIHsgfT4sIG1hYyA8dHlwZSA0NTk+KTsKIGZ1bmMgKGhjIDx0eXBlIDQ3Mz4pIC5jcnlwdG8vdGxzLmZyZWVCbG9jayAoYiA8dHlwZSA0NjQ+KTsKIGZ1bmMgKGhjIDx0eXBlIDQ3Mz4pIC5jcnlwdG8vdGxzLnNldEVycm9yTG9ja2VkIChlcnIgPHR5cGUgLTE5PikgPHR5cGUgLTE5PjsKPjsgLmNyeXB0by90bHMub3V0IDx0eXBlIDQ1Nj47IC5jcnlwdG8vdGxzLnJhd0lucHV0IDx0eXBlIDQ2ND47IC5jcnlwdG8vdGxzLmlucHV0IDx0eXBlIDQ2ND47IC5jcnlwdG8vdGxzLmhhbmQgPHR5cGUgMjc3PjsgLmNyeXB0by90bHMudG1wIDx0eXBlIDQ3NiBbMTYgXSA8dHlwZSAtMjA+PjsgfT4KIGZ1bmMgKGMgPHR5cGUgNDc3ICo8dHlwZSA0NDk+PikgLmNyeXB0by90bHMuZGVjcnlwdFRpY2tldCAoZW5jcnlwdGVkIDx0eXBlIDQ3OCBbXSA8dHlwZSAtMjA+PikgKD8gPHR5cGUgNDc5ICo8dHlwZSA0ODAgIi5jcnlwdG8vdGxzLnNlc3Npb25TdGF0ZSIgPHR5cGUgNDgxIHN0cnVjdCB7IC5jcnlwdG8vdGxzLnZlcnMgPHR5cGUgLTY+OyAuY3J5cHRvL3Rscy5jaXBoZXJTdWl0ZSA8dHlwZSAtNj47IC5jcnlwdG8vdGxzLm1hc3RlclNlY3JldCA8dHlwZSA0ODIgW10gPHR5cGUgLTIwPj47IC5jcnlwdG8vdGxzLmNlcnRpZmljYXRlcyA8dHlwZSA0ODMgW10gPHR5cGUgNDg0IFtdIDx0eXBlIC0yMD4+PjsgfT4KIGZ1bmMgKHMgPHR5cGUgNDg1ICo8dHlwZSA0ODA+PikgLmNyeXB0by90bHMuZXF1YWwgKGkgPHR5cGUgNDg2IGludGVyZmFjZSB7IH0+KSA8dHlwZSAtMTU+OwogZnVuYyAocyA8dHlwZSA0ODU+KSAuY3J5cHRvL3Rscy5tYXJzaGFsICgpIDx0eXBlIDQ4NyBbXSA8dHlwZSAtMjA+PjsKIGZ1bmMgKHMgPHR5cGUgNDg1PikgLmNyeXB0by90bHMudW5tYXJzaGFsIChkYXRhIDx0eXBlIDQ4OCBbXSA8dHlwZSAtMjA+PikgPHR5cGUgLTE1PjsKPj4sID8gPHR5cGUgLTE1Pik7CiBmdW5jIChjIDx0eXBlIDQ3Nz4pIC5jcnlwdG8vdGxzLnJlYWRIYW5kc2hha2UgKCkgKD8gPHR5cGUgNDg5IGludGVyZmFjZSB7IH0+LCA/IDx0eXBlIC0xOT4pOwogZnVuYyAoYyA8dHlwZSA0Nzc+KSBPQ1NQUmVzcG9uc2UgKCkgPHR5cGUgNDkwIFtdIDx0eXBlIC0yMD4+OwogZnVuYyAoYyA8dHlwZSA0Nzc+KSBDbG9zZSAoKSA8dHlwZSAtMTk+OwogZnVuYyAoYyA8dHlwZSA0Nzc+KSAuY3J5cHRvL3Rscy53cml0ZVJlY29yZCAodHlwIDx0eXBlIDQ5MSAiLmNyeXB0by90bHMucmVjb3JkVHlwZSIgPHR5cGUgLTU+PiwgZGF0YSA8dHlwZSA0OTIgW10gPHR5cGUgLTIwPj4pIChuIDx0eXBlIC0xMT4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGMgPHR5cGUgNDc3PikgU2V0RGVhZGxpbmUgKHQgPHR5cGUgMTQyPikgPHR5cGUgLTE5PjsKIGZ1bmMgKGMgPHR5cGUgNDc3PikgLmNyeXB0by90bHMudHJ5Q2lwaGVyU3VpdGUgKGlkIDx0eXBlIC02Piwgc3VwcG9ydGVkQ2lwaGVyU3VpdGVzIDx0eXBlIDQ5MyBbXSA8dHlwZSAtNj4+LCB2ZXJzaW9uIDx0eXBlIC02PiwgZWxsaXB0aWNPayA8dHlwZSAtMTU+LCBlY2RzYU9rIDx0eXBlIC0xNT4pIDx0eXBlIDQ5NCAqPHR5cGUgNDk1ICIuY3J5cHRvL3Rscy5jaXBoZXJTdWl0ZSIgPHR5cGUgNDk2IHN0cnVjdCB7IC5jcnlwdG8vdGxzLmlkIDx0eXBlIC02PjsgLmNyeXB0by90bHMua2V5TGVuIDx0eXBlIC0xMT47IC5jcnlwdG8vdGxzLm1hY0xlbiA8dHlwZSAtMTE+OyAuY3J5cHRvL3Rscy5pdkxlbiA8dHlwZSAtMTE+OyAuY3J5cHRvL3Rscy5rYSA8dHlwZSA0OTcgKHZlcnNpb24gPHR5cGUgLTY+KSA8dHlwZSA0OTggIi5jcnlwdG8vdGxzLmtleUFncmVlbWVudCIgPHR5cGUgNDk5IGludGVyZmFjZSB7IC5jcnlwdG8vdGxzLmdlbmVyYXRlU2VydmVyS2V5RXhjaGFuZ2UgKD8gPHR5cGUgNDAzPiwgPyA8dHlwZSA0MTY+LCA/IDx0eXBlIDUwMCAqPHR5cGUgNTAxICIuY3J5cHRvL3Rscy5jbGllbnRIZWxsb01zZyIgPHR5cGUgNTAyIHN0cnVjdCB7IC5jcnlwdG8vdGxzLnJhdyA8dHlwZSA1MDMgW10gPHR5cGUgLTIwPj47IC5jcnlwdG8vdGxzLnZlcnMgPHR5cGUgLTY+OyAuY3J5cHRvL3Rscy5yYW5kb20gPHR5cGUgNTA0IFtdIDx0eXBlIC0yMD4+OyAuY3J5cHRvL3Rscy5zZXNzaW9uSWQgPHR5cGUgNTA1IFtdIDx0eXBlIC0yMD4+OyAuY3J5cHRvL3Rscy5jaXBoZXJTdWl0ZXMgPHR5cGUgNTA2IFtdIDx0eXBlIC02Pj47IC5jcnlwdG8vdGxzLmNvbXByZXNzaW9uTWV0aG9kcyA8dHlwZSA1MDcgW10gPHR5cGUgLTU+PjsgLmNyeXB0by90bHMubmV4dFByb3RvTmVnIDx0eXBlIC0xNT47IC5jcnlwdG8vdGxzLnNlcnZlck5hbWUgPHR5cGUgLTE2PjsgLmNyeXB0by90bHMub2NzcFN0YXBsaW5nIDx0eXBlIC0xNT47IC5jcnlwdG8vdGxzLnN1cHBvcnRlZEN1cnZlcyA8dHlwZSA1MDggW10gPHR5cGUgNDIzPj47IC5jcnlwdG8vdGxzLnN1cHBvcnRlZFBvaW50cyA8dHlwZSA1MDkgW10gPHR5cGUgLTU+PjsgLmNyeXB0by90bHMudGlja2V0U3VwcG9ydGVkIDx0eXBlIC0xNT47IC5jcnlwdG8vdGxzLnNlc3Npb25UaWNrZXQgPHR5cGUgNTEwIFtdIDx0eXBlIC01Pj47IC5jcnlwdG8vdGxzLnNpZ25hdHVyZUFuZEhhc2hlcyA8dHlwZSA1MTEgW10gPHR5cGUgNTEyICIuY3J5cHRvL3Rscy5zaWduYXR1cmVBbmRIYXNoIiA8dHlwZSA1MTMgc3RydWN0IHsgLmNyeXB0by90bHMuaGFzaCA8dHlwZSAtNT47IC5jcnlwdG8vdGxzLnNpZ25hdHVyZSA8dHlwZSAtNT47IH0+Pj47IC5jcnlwdG8vdGxzLnNlY3VyZVJlbmVnb3RpYXRpb24gPHR5cGUgLTE1PjsgLmNyeXB0by90bHMuYWxwblByb3RvY29scyA8dHlwZSA1MTQgW10gPHR5cGUgLTE2Pj47IH0+CiBmdW5jIChtIDx0eXBlIDUxNSAqPHR5cGUgNTAxPj4pIC5jcnlwdG8vdGxzLmVxdWFsIChpIDx0eXBlIDUxNiBpbnRlcmZhY2UgeyB9PikgPHR5cGUgLTE1PjsKIGZ1bmMgKG0gPHR5cGUgNTE1PikgLmNyeXB0by90bHMubWFyc2hhbCAoKSA8dHlwZSA1MTcgW10gPHR5cGUgLTIwPj47CiBmdW5jIChtIDx0eXBlIDUxNT4pIC5jcnlwdG8vdGxzLnVubWFyc2hhbCAoZGF0YSA8dHlwZSA1MTggW10gPHR5cGUgLTIwPj4pIDx0eXBlIC0xNT47Cj4+LCA/IDx0eXBlIDUxOSAqPHR5cGUgNTIwICIuY3J5cHRvL3Rscy5zZXJ2ZXJIZWxsb01zZyIgPHR5cGUgNTIxIHN0cnVjdCB7IC5jcnlwdG8vdGxzLnJhdyA8dHlwZSA1MjIgW10gPHR5cGUgLTIwPj47IC5jcnlwdG8vdGxzLnZlcnMgPHR5cGUgLTY+OyAuY3J5cHRvL3Rscy5yYW5kb20gPHR5cGUgNTIzIFtdIDx0eXBlIC0yMD4+OyAuY3J5cHRvL3Rscy5zZXNzaW9uSWQgPHR5cGUgNTI0IFtdIDx0eXBlIC0yMD4+OyAuY3J5cHRvL3Rscy5jaXBoZXJTdWl0ZSA8dHlwZSAtNj47IC5jcnlwdG8vdGxzLmNvbXByZXNzaW9uTWV0aG9kIDx0eXBlIC01PjsgLmNyeXB0by90bHMubmV4dFByb3RvTmVnIDx0eXBlIC0xNT47IC5jcnlwdG8vdGxzLm5leHRQcm90b3MgPHR5cGUgNTI1IFtdIDx0eXBlIC0xNj4+OyAuY3J5cHRvL3Rscy5vY3NwU3RhcGxpbmcgPHR5cGUgLTE1PjsgLmNyeXB0by90bHMudGlja2V0U3VwcG9ydGVkIDx0eXBlIC0xNT47IC5jcnlwdG8vdGxzLnNlY3VyZVJlbmVnb3RpYXRpb24gPHR5cGUgLTE1PjsgLmNyeXB0by90bHMuYWxwblByb3RvY29sIDx0eXBlIC0xNj47IH0+CiBmdW5jIChtIDx0eXBlIDUyNiAqPHR5cGUgNTIwPj4pIC5jcnlwdG8vdGxzLmVxdWFsIChpIDx0eXBlIDUyNyBpbnRlcmZhY2UgeyB9PikgPHR5cGUgLTE1PjsKIGZ1bmMgKG0gPHR5cGUgNTI2PikgLmNyeXB0by90bHMubWFyc2hhbCAoKSA8dHlwZSA1MjggW10gPHR5cGUgLTIwPj47CiBmdW5jIChtIDx0eXBlIDUyNj4pIC5jcnlwdG8vdGxzLnVubWFyc2hhbCAoZGF0YSA8dHlwZSA1MjkgW10gPHR5cGUgLTIwPj4pIDx0eXBlIC0xNT47Cj4+KSAoPyA8dHlwZSA1MzAgKjx0eXBlIDUzMSAiLmNyeXB0by90bHMuc2VydmVyS2V5RXhjaGFuZ2VNc2ciIDx0eXBlIDUzMiBzdHJ1Y3QgeyAuY3J5cHRvL3Rscy5yYXcgPHR5cGUgNTMzIFtdIDx0eXBlIC0yMD4+OyAuY3J5cHRvL3Rscy5rZXkgPHR5cGUgNTM0IFtdIDx0eXBlIC0yMD4+OyB9PgogZnVuYyAobSA8dHlwZSA1MzUgKjx0eXBlIDUzMT4+KSAuY3J5cHRvL3Rscy5lcXVhbCAoaSA8dHlwZSA1MzYgaW50ZXJmYWNlIHsgfT4pIDx0eXBlIC0xNT47CiBmdW5jIChtIDx0eXBlIDUzNT4pIC5jcnlwdG8vdGxzLm1hcnNoYWwgKCkgPHR5cGUgNTM3IFtdIDx0eXBlIC0yMD4+OwogZnVuYyAobSA8dHlwZSA1MzU+KSAuY3J5cHRvL3Rscy51bm1hcnNoYWwgKGRhdGEgPHR5cGUgNTM4IFtdIDx0eXBlIC0yMD4+KSA8dHlwZSAtMTU+Owo+PiwgPyA8dHlwZSAtMTk+KTsgLmNyeXB0by90bHMucHJvY2Vzc0NsaWVudEtleUV4Y2hhbmdlICg/IDx0eXBlIDQwMz4sID8gPHR5cGUgNDE2PiwgPyA8dHlwZSA1MzkgKjx0eXBlIDU0MCAiLmNyeXB0by90bHMuY2xpZW50S2V5RXhjaGFuZ2VNc2ciIDx0eXBlIDU0MSBzdHJ1Y3QgeyAuY3J5cHRvL3Rscy5yYXcgPHR5cGUgNTQyIFtdIDx0eXBlIC0yMD4+OyAuY3J5cHRvL3Rscy5jaXBoZXJ0ZXh0IDx0eXBlIDU0MyBbXSA8dHlwZSAtMjA+PjsgfT4KIGZ1bmMgKG0gPHR5cGUgNTQ0ICo8dHlwZSA1NDA+PikgLmNyeXB0by90bHMuZXF1YWwgKGkgPHR5cGUgNTQ1IGludGVyZmFjZSB7IH0+KSA8dHlwZSAtMTU+OwogZnVuYyAobSA8dHlwZSA1NDQ+KSAuY3J5cHRvL3Rscy5tYXJzaGFsICgpIDx0eXBlIDU0NiBbXSA8dHlwZSAtMjA+PjsKIGZ1bmMgKG0gPHR5cGUgNTQ0PikgLmNyeXB0by90bHMudW5tYXJzaGFsIChkYXRhIDx0eXBlIDU0NyBbXSA8dHlwZSAtMjA+PikgPHR5cGUgLTE1PjsKPj4sID8gPHR5cGUgLTY+KSAoPyA8dHlwZSA1NDggW10gPHR5cGUgLTIwPj4sID8gPHR5cGUgLTE5Pik7IC5jcnlwdG8vdGxzLnByb2Nlc3NTZXJ2ZXJLZXlFeGNoYW5nZSAoPyA8dHlwZSA0MDM+LCA/IDx0eXBlIDUwMD4sID8gPHR5cGUgNTE5PiwgPyA8dHlwZSA3MT4sID8gPHR5cGUgNTMwPikgPHR5cGUgLTE5PjsgLmNyeXB0by90bHMuZ2VuZXJhdGVDbGllbnRLZXlFeGNoYW5nZSAoPyA8dHlwZSA0MDM+LCA/IDx0eXBlIDUwMD4sID8gPHR5cGUgNzE+KSAoPyA8dHlwZSA1NDkgW10gPHR5cGUgLTIwPj4sID8gPHR5cGUgNTM5PiwgPyA8dHlwZSAtMTk+KTsgfT4+PjsgLmNyeXB0by90bHMuZmxhZ3MgPHR5cGUgLTExPjsgLmNyeXB0by90bHMuY2lwaGVyIDx0eXBlIDU1MCAoa2V5IDx0eXBlIDU1MSBbXSA8dHlwZSAtMjA+PiwgaXYgPHR5cGUgNTUxPiwgaXNSZWFkIDx0eXBlIC0xNT4pIDx0eXBlIDU1MiBpbnRlcmZhY2UgeyB9Pj47IC5jcnlwdG8vdGxzLm1hYyA8dHlwZSA1NTMgKHZlcnNpb24gPHR5cGUgLTY+LCBtYWNLZXkgPHR5cGUgNTU0IFtdIDx0eXBlIC0yMD4+KSA8dHlwZSA0NTk+PjsgLmNyeXB0by90bHMuYWVhZCA8dHlwZSA1NTUgKGtleSA8dHlwZSA1NTYgW10gPHR5cGUgLTIwPj4sIGZpeGVkTm9uY2UgPHR5cGUgNTU2PikgPHR5cGUgNTU3ICJjcnlwdG8vY2lwaGVyLkFFQUQiICJjaXBoZXIiIDx0eXBlIDU1OCBpbnRlcmZhY2UgeyBOb25jZVNpemUgKCkgPHR5cGUgLTExPjsgT3ZlcmhlYWQgKCkgPHR5cGUgLTExPjsgU2VhbCAoZHN0IDx0eXBlIDU1OSBbXSA8dHlwZSAtMjA+Piwgbm9uY2UgPHR5cGUgNTU5PiwgcGxhaW50ZXh0IDx0eXBlIDU1OT4sIGRhdGEgPHR5cGUgNTU5PikgPHR5cGUgNTYwIFtdIDx0eXBlIC0yMD4+OyBPcGVuIChkc3QgPHR5cGUgNTYxIFtdIDx0eXBlIC0yMD4+LCBub25jZSA8dHlwZSA1NjE+LCBjaXBoZXJ0ZXh0IDx0eXBlIDU2MT4sIGRhdGEgPHR5cGUgNTYxPikgKD8gPHR5cGUgNTYyIFtdIDx0eXBlIC0yMD4+LCA/IDx0eXBlIC0xOT4pOyB9Pj4+OyB9Pj4+OwogZnVuYyAoYyA8dHlwZSA0Nzc+KSBDb25uZWN0aW9uU3RhdGUgKCkgPHR5cGUgNjg+OwogZnVuYyAoYyA8dHlwZSA0Nzc+KSAuY3J5cHRvL3Rscy5lbmNyeXB0VGlja2V0IChzdGF0ZSA8dHlwZSA0Nzk+KSAoPyA8dHlwZSA1NjMgW10gPHR5cGUgLTIwPj4sID8gPHR5cGUgLTE5Pik7CiBmdW5jIChjIDx0eXBlIDQ3Nz4pIEhhbmRzaGFrZSAoKSA8dHlwZSAtMTk+OwogZnVuYyAoYyA8dHlwZSA0Nzc+KSBSZW1vdGVBZGRyICgpIDx0eXBlIDM4MT47CiBmdW5jIChjIDx0eXBlIDQ3Nz4pIFZlcmlmeUhvc3RuYW1lIChob3N0IDx0eXBlIC0xNj4pIDx0eXBlIC0xOT47CiBmdW5jIChjIDx0eXBlIDQ3Nz4pIFJlYWQgKGIgPHR5cGUgNTY0IFtdIDx0eXBlIC0yMD4+KSAobiA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChjIDx0eXBlIDQ3Nz4pIC5jcnlwdG8vdGxzLmNsaWVudEhhbmRzaGFrZSAoKSA8dHlwZSAtMTk+OwogZnVuYyAoYyA8dHlwZSA0Nzc+KSBXcml0ZSAoYiA8dHlwZSA1NjUgW10gPHR5cGUgLTIwPj4pICg/IDx0eXBlIC0xMT4sID8gPHR5cGUgLTE5Pik7CiBmdW5jIChjIDx0eXBlIDQ3Nz4pIC5jcnlwdG8vdGxzLnJlYWRSZWNvcmQgKHdhbnQgPHR5cGUgNDkxPikgPHR5cGUgLTE5PjsKIGZ1bmMgKGMgPHR5cGUgNDc3PikgLmNyeXB0by90bHMuc2VydmVySGFuZHNoYWtlICgpIDx0eXBlIC0xOT47CiBmdW5jIChjIDx0eXBlIDQ3Nz4pIExvY2FsQWRkciAoKSA8dHlwZSAzODE+OwogZnVuYyAoYyA8dHlwZSA0Nzc+KSBTZXRXcml0ZURlYWRsaW5lICh0IDx0eXBlIDE0Mj4pIDx0eXBlIC0xOT47CiBmdW5jIChjIDx0eXBlIDQ3Nz4pIC5jcnlwdG8vdGxzLnNlbmRBbGVydExvY2tlZCAoZXJyIDx0eXBlIDQ3ND4pIDx0eXBlIC0xOT47CiBmdW5jIChjIDx0eXBlIDQ3Nz4pIC5jcnlwdG8vdGxzLnNlbmRBbGVydCAoZXJyIDx0eXBlIDQ3ND4pIDx0eXBlIC0xOT47CiBmdW5jIChjIDx0eXBlIDQ3Nz4pIFNldFJlYWREZWFkbGluZSAodCA8dHlwZSAxNDI+KSA8dHlwZSAtMTk+Owo+PiwgPyA8dHlwZSAzNDY+KT4+OyBDb25uU3RhdGUgPHR5cGUgNTY2ICg/IDx0eXBlIDM3Nz4sID8gPHR5cGUgMzMxPik+OyBFcnJvckxvZyA8dHlwZSA1NjcgKjx0eXBlIDU2OCAibG9nLkxvZ2dlciIgPHR5cGUgNTY5IHN0cnVjdCB7IC5sb2cubXUgPHR5cGUgMzM3PjsgLmxvZy5wcmVmaXggPHR5cGUgLTE2PjsgLmxvZy5mbGFnIDx0eXBlIC0xMT47IC5sb2cub3V0IDx0eXBlIDIyPjsgLmxvZy5idWYgPHR5cGUgNTcwIFtdIDx0eXBlIC0yMD4+OyB9PgogZnVuYyAobCA8dHlwZSA1NzEgKjx0eXBlIDU2OD4+KSBQcmludGYgKGZvcm1hdCA8dHlwZSAtMTY+LCB2IC4uLjx0eXBlIDU3MiBpbnRlcmZhY2UgeyB9Pik7CiBmdW5jIChsIDx0eXBlIDU3MT4pIEZhdGFsICh2IC4uLjx0eXBlIDU3MyBpbnRlcmZhY2UgeyB9Pik7CiBmdW5jIChsIDx0eXBlIDU3MT4pIFByaW50bG4gKHYgLi4uPHR5cGUgNTc0IGludGVyZmFjZSB7IH0+KTsKIGZ1bmMgKGwgPHR5cGUgNTcxPikgUHJlZml4ICgpIDx0eXBlIC0xNj47CiBmdW5jIChsIDx0eXBlIDU3MT4pIFNldFByZWZpeCAocHJlZml4IDx0eXBlIC0xNj4pOwogZnVuYyAobCA8dHlwZSA1NzE+KSBQcmludCAodiAuLi48dHlwZSA1NzUgaW50ZXJmYWNlIHsgfT4pOwogZnVuYyAobCA8dHlwZSA1NzE+KSBPdXRwdXQgKGNhbGxkZXB0aCA8dHlwZSAtMTE+LCBzIDx0eXBlIC0xNj4pIDx0eXBlIC0xOT47CiBmdW5jIChsIDx0eXBlIDU3MT4pIFBhbmljZiAoZm9ybWF0IDx0eXBlIC0xNj4sIHYgLi4uPHR5cGUgNTc2IGludGVyZmFjZSB7IH0+KTsKIGZ1bmMgKGwgPHR5cGUgNTcxPikgLmxvZy5mb3JtYXRIZWFkZXIgKGJ1ZiA8dHlwZSA1NzcgKjx0eXBlIDU3OCBbXSA8dHlwZSAtMjA+Pj4sIHQgPHR5cGUgMTQyPiwgZmlsZSA8dHlwZSAtMTY+LCBsaW5lIDx0eXBlIC0xMT4pOwogZnVuYyAobCA8dHlwZSA1NzE+KSBGYXRhbGxuICh2IC4uLjx0eXBlIDU3OSBpbnRlcmZhY2UgeyB9Pik7CiBmdW5jIChsIDx0eXBlIDU3MT4pIFNldEZsYWdzIChmbGFnIDx0eXBlIC0xMT4pOwogZnVuYyAobCA8dHlwZSA1NzE+KSBQYW5pY2xuICh2IC4uLjx0eXBlIDU4MCBpbnRlcmZhY2UgeyB9Pik7CiBmdW5jIChsIDx0eXBlIDU3MT4pIEZsYWdzICgpIDx0eXBlIC0xMT47CiBmdW5jIChsIDx0eXBlIDU3MT4pIEZhdGFsZiAoZm9ybWF0IDx0eXBlIC0xNj4sIHYgLi4uPHR5cGUgNTgxIGludGVyZmFjZSB7IH0+KTsKIGZ1bmMgKGwgPHR5cGUgNTcxPikgUGFuaWMgKHYgLi4uPHR5cGUgNTgyIGludGVyZmFjZSB7IH0+KTsKPj47IC5uZXQvaHR0cC5kaXNhYmxlS2VlcEFsaXZlcyA8dHlwZSAtMz47IH0+CiBmdW5jIChzcnYgPHR5cGUgNTgzICo8dHlwZSA0MDE+PikgLm5ldC9odHRwLm5ld0Nvbm4gKHJ3YyA8dHlwZSAzNzc+KSAoYyA8dHlwZSA1ODQgKjx0eXBlIDU4NSAiLm5ldC9odHRwLmNvbm4iIDx0eXBlIDU4NiBzdHJ1Y3QgeyAubmV0L2h0dHAucmVtb3RlQWRkciA8dHlwZSAtMTY+OyAubmV0L2h0dHAuc2VydmVyIDx0eXBlIDU4NyAqPHR5cGUgNDAxPj47IC5uZXQvaHR0cC5yd2MgPHR5cGUgMzc3PjsgLm5ldC9odHRwLncgPHR5cGUgMjI+OyAubmV0L2h0dHAud2VyciA8dHlwZSAtMTk+OyAubmV0L2h0dHAuc3IgPHR5cGUgNTg4ICIubmV0L2h0dHAubGl2ZVN3aXRjaFJlYWRlciIgPHR5cGUgNTg5IHN0cnVjdCB7ID8gPHR5cGUgMzM3PjsgLm5ldC9odHRwLnIgPHR5cGUgMzg+OyB9PgogZnVuYyAoc3IgPHR5cGUgNTkwICo8dHlwZSA1ODg+PikgUmVhZCAocCA8dHlwZSA1OTEgW10gPHR5cGUgLTIwPj4pIChuIDx0eXBlIC0xMT4sIGVyciA8dHlwZSAtMTk+KTsKPjsgLm5ldC9odHRwLmxyIDx0eXBlIDU5MiAqPHR5cGUgNTkzICJpby5MaW1pdGVkUmVhZGVyIiA8dHlwZSA1OTQgc3RydWN0IHsgUiA8dHlwZSAzOD47IE4gPHR5cGUgLTQ+OyB9PgogZnVuYyAobCA8dHlwZSA1OTUgKjx0eXBlIDU5Mz4+KSBSZWFkIChwIDx0eXBlIDU5NiBbXSA8dHlwZSAtMjA+PikgKG4gPHR5cGUgLTExPiwgZXJyIDx0eXBlIC0xOT4pOwo+PjsgLm5ldC9odHRwLmJ1ZiA8dHlwZSAzODM+OyAubmV0L2h0dHAudGxzU3RhdGUgPHR5cGUgNjc+OyAubmV0L2h0dHAubXUgPHR5cGUgMzM3PjsgLm5ldC9odHRwLmNsaWVudEdvbmUgPHR5cGUgLTE1PjsgLm5ldC9odHRwLmNsb3NlTm90aWZ5YyA8dHlwZSA1OTcgY2hhbiA8dHlwZSAtMTU+PjsgLm5ldC9odHRwLmhpamFja2VkdiA8dHlwZSAtMTU+OyB9PgogZnVuYyAoYyA8dHlwZSA1OTggKjx0eXBlIDU4NT4+KSAubmV0L2h0dHAuaGlqYWNrZWQgKCkgPHR5cGUgLTE1PjsKIGZ1bmMgKGMgPHR5cGUgNTk4PikgLm5ldC9odHRwLmhpamFjayAoKSAocndjIDx0eXBlIDM3Nz4sIGJ1ZiA8dHlwZSAzODM+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChjIDx0eXBlIDU5OD4pIC5uZXQvaHR0cC5jbG9zZU5vdGlmeSAoKSA8dHlwZSA1OTkgY2hhbiA8LSA8dHlwZSAtMTU+PjsKIGZ1bmMgKGMgPHR5cGUgNTk4PikgLm5ldC9odHRwLm5vdGVDbGllbnRHb25lICgpOwogZnVuYyAoYyA8dHlwZSA1OTg+KSAubmV0L2h0dHAucmVhZFJlcXVlc3QgKCkgKHcgPHR5cGUgNjAwICo8dHlwZSA2MDEgIi5uZXQvaHR0cC5yZXNwb25zZSIgPHR5cGUgNjAyIHN0cnVjdCB7IC5uZXQvaHR0cC5jb25uIDx0eXBlIDU5OD47IC5uZXQvaHR0cC5yZXEgPHR5cGUgMjUyPjsgLm5ldC9odHRwLndyb3RlSGVhZGVyIDx0eXBlIC0xNT47IC5uZXQvaHR0cC53cm90ZUNvbnRpbnVlIDx0eXBlIC0xNT47IC5uZXQvaHR0cC53IDx0eXBlIDM4Nj47IC5uZXQvaHR0cC5jdyA8dHlwZSA2MDMgIi5uZXQvaHR0cC5jaHVua1dyaXRlciIgPHR5cGUgNjA0IHN0cnVjdCB7IC5uZXQvaHR0cC5yZXMgPHR5cGUgNjA1ICo8dHlwZSA2MDE+PjsgLm5ldC9odHRwLmhlYWRlciA8dHlwZSAxOT47IC5uZXQvaHR0cC53cm90ZUhlYWRlciA8dHlwZSAtMTU+OyAubmV0L2h0dHAuY2h1bmtpbmcgPHR5cGUgLTE1PjsgfT4KIGZ1bmMgKGN3IDx0eXBlIDYwNiAqPHR5cGUgNjAzPj4pIFdyaXRlIChwIDx0eXBlIDYwNyBbXSA8dHlwZSAtMjA+PikgKG4gPHR5cGUgLTExPiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoY3cgPHR5cGUgNjA2PikgLm5ldC9odHRwLmZsdXNoICgpOwogZnVuYyAoY3cgPHR5cGUgNjA2PikgLm5ldC9odHRwLmNsb3NlICgpOwogZnVuYyAoY3cgPHR5cGUgNjA2PikgLm5ldC9odHRwLndyaXRlSGVhZGVyIChwIDx0eXBlIDYwOCBbXSA8dHlwZSAtMjA+Pik7Cj47IC5uZXQvaHR0cC5zdyA8dHlwZSA2MDkgKjx0eXBlIDYxMCAiLm5ldC9odHRwLnN3aXRjaFdyaXRlciIgPHR5cGUgNjExIHN0cnVjdCB7ID8gPHR5cGUgMjI+OyB9Pj4+OyAubmV0L2h0dHAuaGFuZGxlckhlYWRlciA8dHlwZSAxOT47IC5uZXQvaHR0cC5jYWxsZWRIZWFkZXIgPHR5cGUgLTE1PjsgLm5ldC9odHRwLndyaXR0ZW4gPHR5cGUgLTQ+OyAubmV0L2h0dHAuY29udGVudExlbmd0aCA8dHlwZSAtND47IC5uZXQvaHR0cC5zdGF0dXMgPHR5cGUgLTExPjsgLm5ldC9odHRwLmNsb3NlQWZ0ZXJSZXBseSA8dHlwZSAtMTU+OyAubmV0L2h0dHAucmVxdWVzdEJvZHlMaW1pdEhpdCA8dHlwZSAtMTU+OyAubmV0L2h0dHAuaGFuZGxlckRvbmUgPHR5cGUgLTE1PjsgLm5ldC9odHRwLmRhdGVCdWYgPHR5cGUgNjEyIFsyOSBdIDx0eXBlIC0yMD4+OyAubmV0L2h0dHAuY2xlbkJ1ZiA8dHlwZSA2MTMgWzEwIF0gPHR5cGUgLTIwPj47IH0+CiBmdW5jICh3IDx0eXBlIDYxNCAqPHR5cGUgNjAxPj4pIC5uZXQvaHR0cC5yZXF1ZXN0VG9vTGFyZ2UgKCk7CiBmdW5jICh3IDx0eXBlIDYxND4pIC5uZXQvaHR0cC5uZWVkc1NuaWZmICgpIDx0eXBlIC0xNT47CiBmdW5jICh3IDx0eXBlIDYxND4pIFJlYWRGcm9tIChzcmMgPHR5cGUgMzg+KSAobiA8dHlwZSAtND4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKHcgPHR5cGUgNjE0PikgSGVhZGVyICgpIDx0eXBlIDE5PjsKIGZ1bmMgKHcgPHR5cGUgNjE0PikgV3JpdGVIZWFkZXIgKGNvZGUgPHR5cGUgLTExPik7CiBmdW5jICh3IDx0eXBlIDYxND4pIC5uZXQvaHR0cC5ib2R5QWxsb3dlZCAoKSA8dHlwZSAtMTU+OwogZnVuYyAodyA8dHlwZSA2MTQ+KSBXcml0ZSAoZGF0YSA8dHlwZSA2MTUgW10gPHR5cGUgLTIwPj4pIChuIDx0eXBlIC0xMT4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKHcgPHR5cGUgNjE0PikgV3JpdGVTdHJpbmcgKGRhdGEgPHR5cGUgLTE2PikgKG4gPHR5cGUgLTExPiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAodyA8dHlwZSA2MTQ+KSAubmV0L2h0dHAud3JpdGUgKGxlbkRhdGEgPHR5cGUgLTExPiwgZGF0YUIgPHR5cGUgNjE2IFtdIDx0eXBlIC0yMD4+LCBkYXRhUyA8dHlwZSAtMTY+KSAobiA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jICh3IDx0eXBlIDYxND4pIC5uZXQvaHR0cC5maW5pc2hSZXF1ZXN0ICgpOwogZnVuYyAodyA8dHlwZSA2MTQ+KSBGbHVzaCAoKTsKIGZ1bmMgKHcgPHR5cGUgNjE0PikgLm5ldC9odHRwLnNlbmRFeHBlY3RhdGlvbkZhaWxlZCAoKTsKIGZ1bmMgKHcgPHR5cGUgNjE0PikgSGlqYWNrICgpIChyd2MgPHR5cGUgMzc3PiwgYnVmIDx0eXBlIDM4Mz4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKHcgPHR5cGUgNjE0PikgQ2xvc2VOb3RpZnkgKCkgPHR5cGUgNjE3IGNoYW4gPC0gPHR5cGUgLTE1Pj47Cj4+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChjIDx0eXBlIDU5OD4pIC5uZXQvaHR0cC5maW5hbEZsdXNoICgpOwogZnVuYyAoYyA8dHlwZSA1OTg+KSAubmV0L2h0dHAuY2xvc2UgKCk7CiBmdW5jIChjIDx0eXBlIDU5OD4pIC5uZXQvaHR0cC5jbG9zZVdyaXRlQW5kV2FpdCAoKTsKIGZ1bmMgKGMgPHR5cGUgNTk4PikgLm5ldC9odHRwLnNldFN0YXRlIChuYyA8dHlwZSAzNzc+LCBzdGF0ZSA8dHlwZSAzMzE+KTsKIGZ1bmMgKGMgPHR5cGUgNTk4PikgLm5ldC9odHRwLnNlcnZlICgpOwo+PiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoc3J2IDx0eXBlIDYxOCAqPHR5cGUgNDAxPj4pIC5uZXQvaHR0cC5tYXhIZWFkZXJCeXRlcyAoKSA8dHlwZSAtMTE+OwogZnVuYyAoc3J2IDx0eXBlIDYxOSAqPHR5cGUgNDAxPj4pIC5uZXQvaHR0cC5pbml0aWFsTGltaXRlZFJlYWRlclNpemUgKCkgPHR5cGUgLTQ+OwogZnVuYyAoc3J2IDx0eXBlIDYyMCAqPHR5cGUgNDAxPj4pIExpc3RlbkFuZFNlcnZlICgpIDx0eXBlIC0xOT47CiBmdW5jIChzcnYgPHR5cGUgNjIwPikgU2VydmUgKGwgPHR5cGUgMzk1PikgPHR5cGUgLTE5PjsKIGZ1bmMgKHMgPHR5cGUgNjIwPikgLm5ldC9odHRwLmRvS2VlcEFsaXZlcyAoKSA8dHlwZSAtMTU+OwogZnVuYyAocyA8dHlwZSA2MjA+KSBTZXRLZWVwQWxpdmVzRW5hYmxlZCAodiA8dHlwZSAtMTU+KTsKIGZ1bmMgKHMgPHR5cGUgNjIwPikgLm5ldC9odHRwLmxvZ2YgKGZvcm1hdCA8dHlwZSAtMTY+LCBhcmdzIC4uLjx0eXBlIDYyMSBpbnRlcmZhY2UgeyB9Pik7CiBmdW5jIChzcnYgPHR5cGUgNjIwPikgTGlzdGVuQW5kU2VydmVUTFMgKGNlcnRGaWxlIDx0eXBlIC0xNj4sIGtleUZpbGUgPHR5cGUgLTE2PikgPHR5cGUgLTE5PjsKPjsKZnVuYyBTZXRDb29raWUgKHcgPHR5cGUgMzQ4PiwgY29va2llIDx0eXBlIDI1ND4pOwpjb25zdCBTdGF0ZUFjdGl2ZSA8dHlwZSAzMzE+ID0gMSA7CmNvbnN0IFN0YXRlQ2xvc2VkIDx0eXBlIDMzMT4gPSA0IDsKY29uc3QgU3RhdGVIaWphY2tlZCA8dHlwZSAzMzE+ID0gMyA7CmNvbnN0IFN0YXRlSWRsZSA8dHlwZSAzMzE+ID0gMiA7CmNvbnN0IFN0YXRlTmV3IDx0eXBlIDMzMT4gPSAwIDsKY29uc3QgU3RhdHVzQWNjZXB0ZWQgPSAyMDIgOwpjb25zdCBTdGF0dXNCYWRHYXRld2F5ID0gNTAyIDsKY29uc3QgU3RhdHVzQmFkUmVxdWVzdCA9IDQwMCA7CmNvbnN0IFN0YXR1c0NvbmZsaWN0ID0gNDA5IDsKY29uc3QgU3RhdHVzQ29udGludWUgPSAxMDAgOwpjb25zdCBTdGF0dXNDcmVhdGVkID0gMjAxIDsKY29uc3QgU3RhdHVzRXhwZWN0YXRpb25GYWlsZWQgPSA0MTcgOwpjb25zdCBTdGF0dXNGb3JiaWRkZW4gPSA0MDMgOwpjb25zdCBTdGF0dXNGb3VuZCA9IDMwMiA7CmNvbnN0IFN0YXR1c0dhdGV3YXlUaW1lb3V0ID0gNTA0IDsKY29uc3QgU3RhdHVzR29uZSA9IDQxMCA7CmNvbnN0IFN0YXR1c0hUVFBWZXJzaW9uTm90U3VwcG9ydGVkID0gNTA1IDsKY29uc3QgU3RhdHVzSW50ZXJuYWxTZXJ2ZXJFcnJvciA9IDUwMCA7CmNvbnN0IFN0YXR1c0xlbmd0aFJlcXVpcmVkID0gNDExIDsKY29uc3QgU3RhdHVzTWV0aG9kTm90QWxsb3dlZCA9IDQwNSA7CmNvbnN0IFN0YXR1c01vdmVkUGVybWFuZW50bHkgPSAzMDEgOwpjb25zdCBTdGF0dXNNdWx0aXBsZUNob2ljZXMgPSAzMDAgOwpjb25zdCBTdGF0dXNOb0NvbnRlbnQgPSAyMDQgOwpjb25zdCBTdGF0dXNOb25BdXRob3JpdGF0aXZlSW5mbyA9IDIwMyA7CmNvbnN0IFN0YXR1c05vdEFjY2VwdGFibGUgPSA0MDYgOwpjb25zdCBTdGF0dXNOb3RGb3VuZCA9IDQwNCA7CmNvbnN0IFN0YXR1c05vdEltcGxlbWVudGVkID0gNTAxIDsKY29uc3QgU3RhdHVzTm90TW9kaWZpZWQgPSAzMDQgOwpjb25zdCBTdGF0dXNPSyA9IDIwMCA7CmNvbnN0IFN0YXR1c1BhcnRpYWxDb250ZW50ID0gMjA2IDsKY29uc3QgU3RhdHVzUGF5bWVudFJlcXVpcmVkID0gNDAyIDsKY29uc3QgU3RhdHVzUHJlY29uZGl0aW9uRmFpbGVkID0gNDEyIDsKY29uc3QgU3RhdHVzUHJveHlBdXRoUmVxdWlyZWQgPSA0MDcgOwpjb25zdCBTdGF0dXNSZXF1ZXN0RW50aXR5VG9vTGFyZ2UgPSA0MTMgOwpjb25zdCBTdGF0dXNSZXF1ZXN0VGltZW91dCA9IDQwOCA7CmNvbnN0IFN0YXR1c1JlcXVlc3RVUklUb29Mb25nID0gNDE0IDsKY29uc3QgU3RhdHVzUmVxdWVzdGVkUmFuZ2VOb3RTYXRpc2ZpYWJsZSA9IDQxNiA7CmNvbnN0IFN0YXR1c1Jlc2V0Q29udGVudCA9IDIwNSA7CmNvbnN0IFN0YXR1c1NlZU90aGVyID0gMzAzIDsKY29uc3QgU3RhdHVzU2VydmljZVVuYXZhaWxhYmxlID0gNTAzIDsKY29uc3QgU3RhdHVzU3dpdGNoaW5nUHJvdG9jb2xzID0gMTAxIDsKY29uc3QgU3RhdHVzVGVhcG90ID0gNDE4IDsKY29uc3QgU3RhdHVzVGVtcG9yYXJ5UmVkaXJlY3QgPSAzMDcgOwpmdW5jIFN0YXR1c1RleHQgKGNvZGUgPHR5cGUgLTExPikgPHR5cGUgLTE2PjsKY29uc3QgU3RhdHVzVW5hdXRob3JpemVkID0gNDAxIDsKY29uc3QgU3RhdHVzVW5zdXBwb3J0ZWRNZWRpYVR5cGUgPSA0MTUgOwpjb25zdCBTdGF0dXNVc2VQcm94eSA9IDMwNSA7CmZ1bmMgU3RyaXBQcmVmaXggKHByZWZpeCA8dHlwZSAtMTY+LCBoIDx0eXBlIDM0Nj4pIDx0eXBlIDM0Nj47CmNvbnN0IFRpbWVGb3JtYXQgPSAiTW9uLCAwMiBKYW4gMjAwNiAxNTowNDowNSBHTVQiOwpmdW5jIFRpbWVvdXRIYW5kbGVyIChoIDx0eXBlIDM0Nj4sIGR0IDx0eXBlIDE2Mj4sIG1zZyA8dHlwZSAtMTY+KSA8dHlwZSAzNDY+Owp0eXBlIDx0eXBlIDYyMiAiVHJhbnNwb3J0IiA8dHlwZSA2MjMgc3RydWN0IHsgLm5ldC9odHRwLmlkbGVNdSA8dHlwZSAzMzc+OyAubmV0L2h0dHAud2FudElkbGUgPHR5cGUgLTE1PjsgLm5ldC9odHRwLmlkbGVDb25uIDx0eXBlIDYyNCBtYXAgWzx0eXBlIDYyNSAiLm5ldC9odHRwLmNvbm5lY3RNZXRob2RLZXkiIDx0eXBlIDYyNiBzdHJ1Y3QgeyAubmV0L2h0dHAucHJveHkgPHR5cGUgLTE2PjsgLm5ldC9odHRwLnNjaGVtZSA8dHlwZSAtMTY+OyAubmV0L2h0dHAuYWRkciA8dHlwZSAtMTY+OyB9PgogZnVuYyAoayA8dHlwZSA2MjU+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKPl0gPHR5cGUgNjI3IFtdIDx0eXBlIDYyOCAqPHR5cGUgNjI5ICIubmV0L2h0dHAucGVyc2lzdENvbm4iIDx0eXBlIDYzMCBzdHJ1Y3QgeyAubmV0L2h0dHAudCA8dHlwZSA2MzEgKjx0eXBlIDYyMj4+OyAubmV0L2h0dHAuY2FjaGVLZXkgPHR5cGUgNjI1PjsgLm5ldC9odHRwLmNvbm4gPHR5cGUgMzc3PjsgLm5ldC9odHRwLnRsc1N0YXRlIDx0eXBlIDY3PjsgLm5ldC9odHRwLmJyIDx0eXBlIDI2Mj47IC5uZXQvaHR0cC5zYXdFT0YgPHR5cGUgLTE1PjsgLm5ldC9odHRwLmJ3IDx0eXBlIDM4Nj47IC5uZXQvaHR0cC5yZXFjaCA8dHlwZSA2MzIgY2hhbiA8dHlwZSA2MzMgIi5uZXQvaHR0cC5yZXF1ZXN0QW5kQ2hhbiIgPHR5cGUgNjM0IHN0cnVjdCB7IC5uZXQvaHR0cC5yZXEgPHR5cGUgMjUyPjsgLm5ldC9odHRwLmNoIDx0eXBlIDYzNSBjaGFuIDx0eXBlIDYzNiAiLm5ldC9odHRwLnJlc3BvbnNlQW5kRXJyb3IiIDx0eXBlIDYzNyBzdHJ1Y3QgeyAubmV0L2h0dHAucmVzIDx0eXBlIDMwNj47IC5uZXQvaHR0cC5lcnIgPHR5cGUgLTE5PjsgfT4+PjsgLm5ldC9odHRwLmFkZGVkR3ppcCA8dHlwZSAtMTU+OyB9Pj4+OyAubmV0L2h0dHAud3JpdGVjaCA8dHlwZSA2MzggY2hhbiA8dHlwZSA2MzkgIi5uZXQvaHR0cC53cml0ZVJlcXVlc3QiIDx0eXBlIDY0MCBzdHJ1Y3QgeyAubmV0L2h0dHAucmVxIDx0eXBlIDY0MSAqPHR5cGUgNjQyICIubmV0L2h0dHAudHJhbnNwb3J0UmVxdWVzdCIgPHR5cGUgNjQzIHN0cnVjdCB7ID8gPHR5cGUgMjUyPjsgLm5ldC9odHRwLmV4dHJhIDx0eXBlIDE5PjsgfT4KIGZ1bmMgKHRyIDx0eXBlIDY0NCAqPHR5cGUgNjQyPj4pIC5uZXQvaHR0cC5leHRyYUhlYWRlcnMgKCkgPHR5cGUgMTk+Owo+PjsgLm5ldC9odHRwLmNoIDx0eXBlIDY0NSBjaGFuIC08IDx0eXBlIC0xOT4+OyB9Pj4+OyAubmV0L2h0dHAuY2xvc2VjaCA8dHlwZSA2NDYgY2hhbiA8dHlwZSA2NDcgc3RydWN0IHsgfT4+OyAubmV0L2h0dHAuaXNQcm94eSA8dHlwZSAtMTU+OyAubmV0L2h0dHAud3JpdGVFcnJDaCA8dHlwZSA2NDggY2hhbiA8dHlwZSAtMTk+PjsgLm5ldC9odHRwLmxrIDx0eXBlIDMzNz47IC5uZXQvaHR0cC5udW1FeHBlY3RlZFJlc3BvbnNlcyA8dHlwZSAtMTE+OyAubmV0L2h0dHAuY2xvc2VkIDx0eXBlIC0xNT47IC5uZXQvaHR0cC5icm9rZW4gPHR5cGUgLTE1PjsgLm5ldC9odHRwLm11dGF0ZUhlYWRlckZ1bmMgPHR5cGUgNjQ5ICg/IDx0eXBlIDE5Pik+OyB9PgogZnVuYyAocGMgPHR5cGUgNjUwICo8dHlwZSA2Mjk+PikgLm5ldC9odHRwLmlzQnJva2VuICgpIDx0eXBlIC0xNT47CiBmdW5jIChwYyA8dHlwZSA2NTA+KSAubmV0L2h0dHAuY2FuY2VsUmVxdWVzdCAoKTsKIGZ1bmMgKHBjIDx0eXBlIDY1MD4pIC5uZXQvaHR0cC5yZWFkTG9vcCAoKTsKIGZ1bmMgKHBjIDx0eXBlIDY1MD4pIC5uZXQvaHR0cC53cml0ZUxvb3AgKCk7CiBmdW5jIChwYyA8dHlwZSA2NTA+KSAubmV0L2h0dHAud3JvdGVSZXF1ZXN0ICgpIDx0eXBlIC0xNT47CiBmdW5jIChwYyA8dHlwZSA2NTA+KSAubmV0L2h0dHAucm91bmRUcmlwIChyZXEgPHR5cGUgNjQxPikgKHJlc3AgPHR5cGUgMzA2PiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAocGMgPHR5cGUgNjUwPikgLm5ldC9odHRwLm1hcmtCcm9rZW4gKCk7CiBmdW5jIChwYyA8dHlwZSA2NTA+KSAubmV0L2h0dHAuY2xvc2UgKCk7CiBmdW5jIChwYyA8dHlwZSA2NTA+KSAubmV0L2h0dHAuY2xvc2VMb2NrZWQgKCk7Cj4+Pj47IC5uZXQvaHR0cC5pZGxlQ29ubkNoIDx0eXBlIDY1MSBtYXAgWzx0eXBlIDYyNT5dIDx0eXBlIDY1MiBjaGFuIDx0eXBlIDY1MyAqPHR5cGUgNjI5Pj4+PjsgLm5ldC9odHRwLnJlcU11IDx0eXBlIDMzNz47IC5uZXQvaHR0cC5yZXFDYW5jZWxlciA8dHlwZSA2NTQgbWFwIFs8dHlwZSAyNTI+XSA8dHlwZSA2NTUgKCk+PjsgLm5ldC9odHRwLmFsdE11IDx0eXBlIDMzNT47IC5uZXQvaHR0cC5hbHRQcm90byA8dHlwZSA2NTYgbWFwIFs8dHlwZSAtMTY+XSA8dHlwZSAzPj47IFByb3h5IDx0eXBlIDY1NyAoPyA8dHlwZSAyNTI+KSAoPyA8dHlwZSA4PiwgPyA8dHlwZSAtMTk+KT47IERpYWwgPHR5cGUgNjU4IChuZXR3b3JrIDx0eXBlIC0xNj4sIGFkZHIgPHR5cGUgLTE2PikgKD8gPHR5cGUgMzc3PiwgPyA8dHlwZSAtMTk+KT47IERpYWxUTFMgPHR5cGUgNjU5IChuZXR3b3JrIDx0eXBlIC0xNj4sIGFkZHIgPHR5cGUgLTE2PikgKD8gPHR5cGUgMzc3PiwgPyA8dHlwZSAtMTk+KT47IFRMU0NsaWVudENvbmZpZyA8dHlwZSA0MDM+OyBUTFNIYW5kc2hha2VUaW1lb3V0IDx0eXBlIDE2Mj47IERpc2FibGVLZWVwQWxpdmVzIDx0eXBlIC0xNT47IERpc2FibGVDb21wcmVzc2lvbiA8dHlwZSAtMTU+OyBNYXhJZGxlQ29ubnNQZXJIb3N0IDx0eXBlIC0xMT47IFJlc3BvbnNlSGVhZGVyVGltZW91dCA8dHlwZSAxNjI+OyB9PgogZnVuYyAodCA8dHlwZSA2MzE+KSBSb3VuZFRyaXAgKHJlcSA8dHlwZSAyNTI+KSAocmVzcCA8dHlwZSAzMDY+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jICh0IDx0eXBlIDYzMT4pIFJlZ2lzdGVyUHJvdG9jb2wgKHNjaGVtZSA8dHlwZSAtMTY+LCBydCA8dHlwZSAzPik7CiBmdW5jICh0IDx0eXBlIDYzMT4pIENsb3NlSWRsZUNvbm5lY3Rpb25zICgpOwogZnVuYyAodCA8dHlwZSA2MzE+KSBDYW5jZWxSZXF1ZXN0IChyZXEgPHR5cGUgMjUyPik7CiBmdW5jICh0IDx0eXBlIDYzMT4pIC5uZXQvaHR0cC5jb25uZWN0TWV0aG9kRm9yUmVxdWVzdCAodHJlcSA8dHlwZSA2NDE+KSAoY20gPHR5cGUgNjYwICIubmV0L2h0dHAuY29ubmVjdE1ldGhvZCIgPHR5cGUgNjYxIHN0cnVjdCB7IC5uZXQvaHR0cC5wcm94eVVSTCA8dHlwZSA4PjsgLm5ldC9odHRwLnRhcmdldFNjaGVtZSA8dHlwZSAtMTY+OyAubmV0L2h0dHAudGFyZ2V0QWRkciA8dHlwZSAtMTY+OyB9PgogZnVuYyAoY20gPHR5cGUgNjYyICo8dHlwZSA2NjA+PikgLm5ldC9odHRwLnByb3h5QXV0aCAoKSA8dHlwZSAtMTY+OwogZnVuYyAoY20gPHR5cGUgNjYzICo8dHlwZSA2NjA+PikgLm5ldC9odHRwLmtleSAoKSA8dHlwZSA2MjU+OwogZnVuYyAoY20gPHR5cGUgNjYzPikgLm5ldC9odHRwLmFkZHIgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKGNtIDx0eXBlIDY2Mz4pIC5uZXQvaHR0cC50bHNIb3N0ICgpIDx0eXBlIC0xNj47Cj4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKHQgPHR5cGUgNjMxPikgLm5ldC9odHRwLnB1dElkbGVDb25uIChwY29ubiA8dHlwZSA2NjQgKjx0eXBlIDYyOT4+KSA8dHlwZSAtMTU+OwogZnVuYyAodCA8dHlwZSA2MzE+KSAubmV0L2h0dHAuZ2V0SWRsZUNvbm5DaCAoY20gPHR5cGUgNjYwPikgPHR5cGUgNjY1IGNoYW4gPHR5cGUgNjY2ICo8dHlwZSA2Mjk+Pj47CiBmdW5jICh0IDx0eXBlIDYzMT4pIC5uZXQvaHR0cC5nZXRJZGxlQ29ubiAoY20gPHR5cGUgNjYwPikgKHBjb25uIDx0eXBlIDY2NyAqPHR5cGUgNjI5Pj4pOwogZnVuYyAodCA8dHlwZSA2MzE+KSAubmV0L2h0dHAuc2V0UmVxQ2FuY2VsZXIgKHIgPHR5cGUgMjUyPiwgZm4gPHR5cGUgNjY4ICgpPik7CiBmdW5jICh0IDx0eXBlIDYzMT4pIC5uZXQvaHR0cC5kaWFsIChuZXR3b3JrIDx0eXBlIC0xNj4sIGFkZHIgPHR5cGUgLTE2PikgKGMgPHR5cGUgMzc3PiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAodCA8dHlwZSA2MzE+KSAubmV0L2h0dHAuZ2V0Q29ubiAocmVxIDx0eXBlIDI1Mj4sIGNtIDx0eXBlIDY2MD4pICg/IDx0eXBlIDY2OSAqPHR5cGUgNjI5Pj4sID8gPHR5cGUgLTE5Pik7CiBmdW5jICh0IDx0eXBlIDYzMT4pIC5uZXQvaHR0cC5kaWFsQ29ubiAoY20gPHR5cGUgNjYwPikgKD8gPHR5cGUgNjcwICo8dHlwZSA2Mjk+PiwgPyA8dHlwZSAtMTk+KTsKPjsKY2hlY2tzdW0gRDhDRkI1QTQ1NTE4N0E4RjJDMjEwMTBFMjdFRDI0MkNFMDRBQTI3NjsKAC5zeW10YWIALnN0cnRhYgAuc2hzdHJ0YWIALmdvX2V4cG9ydAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGwAAAAEAAAAAAAAAAAAAADQAAAD+/wAAAAAAAAAAAAABAAAAAAAAABEAAAADAAAAAAAAAAAAAAAyAAEAJgAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAgAAAAAAAAAAAAAAWAABACAAAAAEAAAAAgAAAAQAAAAQAAAACQAAAAMAAAAAAAAAAAAAAHgAAQABAAAAAAAAAAAAAAABAAAAAAAAAA==