f0VMRgEBAQAAAAAAAAAAAAEACAABAAAAAAAAAAAAAABIEQAABxAAUDQAAAAAACgABQACAHYxOwpwYWNrYWdlIGpzb25ycGM7CnBrZ3BhdGggbmV0L3JwYy9qc29ucnBjOwpwcmlvcml0eSAxNDsKaW1wb3J0IGpzb24gZW5jb2RpbmcvanNvbiAiZW5jb2RpbmcvanNvbiI7CmltcG9ydCBlcnJvcnMgZXJyb3JzICJlcnJvcnMiOwppbXBvcnQgZm10IGZtdCAiZm10IjsKaW1wb3J0IGlvIGlvICJpbyI7CmltcG9ydCBuZXQgbmV0ICJuZXQiOwppbXBvcnQgcnBjIG5ldC9ycGMgIm5ldC9ycGMiOwppbXBvcnQgc3luYyBzeW5jICJzeW5jIjsKaW5pdCBqc29ucnBjIG5ldF9ycGNfanNvbnJwYy4uaW1wb3J0IDE0IG1hdGggbWF0aC4uaW1wb3J0IDEgcnVudGltZSBydW50aW1lLi5pbXBvcnQgMSB1bmljb2RlIHVuaWNvZGUuLmltcG9ydCAxIHN0cmNvbnYgc3RyY29udi4uaW1wb3J0IDIgc3luYyBzeW5jLi5pbXBvcnQgMiBpbyBpby4uaW1wb3J0IDMgcmFuZCBtYXRoX3JhbmQuLmltcG9ydCAzIHJlZmxlY3QgcmVmbGVjdC4uaW1wb3J0IDMgc3lzY2FsbCBzeXNjYWxsLi5pbXBvcnQgMyBiaW5hcnkgZW5jb2RpbmdfYmluYXJ5Li5pbXBvcnQgNCBieXRlcyBieXRlcy4uaW1wb3J0IDQgY2lwaGVyIGNyeXB0b19jaXBoZXIuLmltcG9ydCA0IHN5c2NhbGwgaW50ZXJuYWxfc3lzY2FsbC4uaW1wb3J0IDQgdGltZSB0aW1lLi5pbXBvcnQgNCBiYXNlNjQgZW5jb2RpbmdfYmFzZTY0Li5pbXBvcnQgNSBidWZpbyBidWZpby4uaW1wb3J0IDUgY3JjMzIgaGFzaF9jcmMzMi4uaW1wb3J0IDUgY3J5cHRvIGNyeXB0by4uaW1wb3J0IDUgZGVzIGNyeXB0b19kZXMuLmltcG9ydCA1IGh0bWwgaHRtbC4uaW1wb3J0IDUgb3Mgb3MuLmltcG9ydCA1IHBhdGggcGF0aC4uaW1wb3J0IDUgZmlsZXBhdGggcGF0aF9maWxlcGF0aC4uaW1wb3J0IDYgZm10IGZtdC4uaW1wb3J0IDYgbWQ1IGNyeXB0b19tZDUuLmltcG9ydCA2IG5ldCBuZXQuLmltcG9ydCA2IHBlbSBlbmNvZGluZ19wZW0uLmltcG9ydCA2IHNoYTEgY3J5cHRvX3NoYTEuLmltcG9ydCA2IHNoYTI1NiBjcnlwdG9fc2hhMjU2Li5pbXBvcnQgNiBzaGE1MTIgY3J5cHRvX3NoYTUxMi4uaW1wb3J0IDYgYmlnIG1hdGhfYmlnLi5pbXBvcnQgNyBmbGF0ZSBjb21wcmVzc19mbGF0ZS4uaW1wb3J0IDcgZ29iIGVuY29kaW5nX2dvYi4uaW1wb3J0IDcgaGV4IGVuY29kaW5nX2hleC4uaW1wb3J0IDcgaW50ZXJuYWwgbmV0X2h0dHBfaW50ZXJuYWwuLmltcG9ydCA3IGlvdXRpbCBpb19pb3V0aWwuLmltcG9ydCA3IGpzb24gZW5jb2RpbmdfanNvbi4uaW1wb3J0IDcgbG9nIGxvZy4uaW1wb3J0IDcgbWltZSBtaW1lLi5pbXBvcnQgNyBwYXJzZSB0ZXh0X3RlbXBsYXRlX3BhcnNlLi5pbXBvcnQgNyBhc24xIGVuY29kaW5nX2FzbjEuLmltcG9ydCA4IGRzYSBjcnlwdG9fZHNhLi5pbXBvcnQgOCBlbGxpcHRpYyBjcnlwdG9fZWxsaXB0aWMuLmltcG9ydCA4IGd6aXAgY29tcHJlc3NfZ3ppcC4uaW1wb3J0IDggcmFuZCBjcnlwdG9fcmFuZC4uaW1wb3J0IDggdGVtcGxhdGUgdGV4dF90ZW1wbGF0ZS4uaW1wb3J0IDggdGV4dHByb3RvIG5ldF90ZXh0cHJvdG8uLmltcG9ydCA4IGVjZHNhIGNyeXB0b19lY2RzYS4uaW1wb3J0IDkgbXVsdGlwYXJ0IG1pbWVfbXVsdGlwYXJ0Li5pbXBvcnQgOSBwa2l4IGNyeXB0b194NTA5X3BraXguLmltcG9ydCA5IHJzYSBjcnlwdG9fcnNhLi5pbXBvcnQgOSB0ZW1wbGF0ZSBodG1sX3RlbXBsYXRlLi5pbXBvcnQgOSB4NTA5IGNyeXB0b194NTA5Li5pbXBvcnQgMTAgdGxzIGNyeXB0b190bHMuLmltcG9ydCAxMSBodHRwIG5ldF9odHRwLi5pbXBvcnQgMTIgcnBjIG5ldF9ycGMuLmltcG9ydCAxMzsKZnVuYyBEaWFsIChuZXR3b3JrIDx0eXBlIC0xNj4sIGFkZHJlc3MgPHR5cGUgLTE2PikgKD8gPHR5cGUgMSAqPHR5cGUgMiAibmV0L3JwYy5DbGllbnQiIDx0eXBlIDMgc3RydWN0IHsgLm5ldC9ycGMuY29kZWMgPHR5cGUgNCAibmV0L3JwYy5DbGllbnRDb2RlYyIgPHR5cGUgNSBpbnRlcmZhY2UgeyBXcml0ZVJlcXVlc3QgKD8gPHR5cGUgNiAqPHR5cGUgNyAibmV0L3JwYy5SZXF1ZXN0IiA8dHlwZSA4IHN0cnVjdCB7IFNlcnZpY2VNZXRob2QgPHR5cGUgLTE2PjsgU2VxIDx0eXBlIC04PjsgLm5ldC9ycGMubmV4dCA8dHlwZSA5ICo8dHlwZSA3Pj47IH0+Pj4sID8gPHR5cGUgMTAgaW50ZXJmYWNlIHsgfT4pIDx0eXBlIC0xOT47IFJlYWRSZXNwb25zZUhlYWRlciAoPyA8dHlwZSAxMSAqPHR5cGUgMTIgIm5ldC9ycGMuUmVzcG9uc2UiIDx0eXBlIDEzIHN0cnVjdCB7IFNlcnZpY2VNZXRob2QgPHR5cGUgLTE2PjsgU2VxIDx0eXBlIC04PjsgRXJyb3IgPHR5cGUgLTE2PjsgLm5ldC9ycGMubmV4dCA8dHlwZSAxNCAqPHR5cGUgMTI+PjsgfT4+PikgPHR5cGUgLTE5PjsgUmVhZFJlc3BvbnNlQm9keSAoPyA8dHlwZSAxNSBpbnRlcmZhY2UgeyB9PikgPHR5cGUgLTE5PjsgQ2xvc2UgKCkgPHR5cGUgLTE5PjsgfT4+OyAubmV0L3JwYy5yZXFNdXRleCA8dHlwZSAxNiAic3luYy5NdXRleCIgPHR5cGUgMTcgc3RydWN0IHsgLnN5bmMuc3RhdGUgPHR5cGUgLTM+OyAuc3luYy5zZW1hIDx0eXBlIC03PjsgfT4KIGZ1bmMgKG0gPHR5cGUgMTggKjx0eXBlIDE2Pj4pIFVubG9jayAoKTsKIGZ1bmMgKG0gPHR5cGUgMTg+KSBMb2NrICgpOwo+OyAubmV0L3JwYy5yZXF1ZXN0IDx0eXBlIDc+OyAubmV0L3JwYy5tdXRleCA8dHlwZSAxNj47IC5uZXQvcnBjLnNlcSA8dHlwZSAtOD47IC5uZXQvcnBjLnBlbmRpbmcgPHR5cGUgMTkgbWFwIFs8dHlwZSAtOD5dIDx0eXBlIDIwICo8dHlwZSAyMSAibmV0L3JwYy5DYWxsIiA8dHlwZSAyMiBzdHJ1Y3QgeyBTZXJ2aWNlTWV0aG9kIDx0eXBlIC0xNj47IEFyZ3MgPHR5cGUgMjMgaW50ZXJmYWNlIHsgfT47IFJlcGx5IDx0eXBlIDI0IGludGVyZmFjZSB7IH0+OyBFcnJvciA8dHlwZSAtMTk+OyBEb25lIDx0eXBlIDI1IGNoYW4gPHR5cGUgMjYgKjx0eXBlIDIxPj4+OyB9PgogZnVuYyAoY2FsbCA8dHlwZSAyNyAqPHR5cGUgMjE+PikgLm5ldC9ycGMuZG9uZSAoKTsKPj4+OyAubmV0L3JwYy5jbG9zaW5nIDx0eXBlIC0xNT47IC5uZXQvcnBjLnNodXRkb3duIDx0eXBlIC0xNT47IH0+CiBmdW5jIChjbGllbnQgPHR5cGUgMjggKjx0eXBlIDI+PikgR28gKHNlcnZpY2VNZXRob2QgPHR5cGUgLTE2PiwgYXJncyA8dHlwZSAyOSBpbnRlcmZhY2UgeyB9PiwgcmVwbHkgPHR5cGUgMzAgaW50ZXJmYWNlIHsgfT4sIGRvbmUgPHR5cGUgMzEgY2hhbiA8dHlwZSAyMD4+KSA8dHlwZSAyMD47CiBmdW5jIChjbGllbnQgPHR5cGUgMjg+KSAubmV0L3JwYy5zZW5kIChjYWxsIDx0eXBlIDIwPik7CiBmdW5jIChjbGllbnQgPHR5cGUgMjg+KSBDbG9zZSAoKSA8dHlwZSAtMTk+OwogZnVuYyAoY2xpZW50IDx0eXBlIDI4PikgLm5ldC9ycGMuaW5wdXQgKCk7CiBmdW5jIChjbGllbnQgPHR5cGUgMjg+KSBDYWxsIChzZXJ2aWNlTWV0aG9kIDx0eXBlIC0xNj4sIGFyZ3MgPHR5cGUgMzIgaW50ZXJmYWNlIHsgfT4sIHJlcGx5IDx0eXBlIDMzIGludGVyZmFjZSB7IH0+KSA8dHlwZSAtMTk+Owo+PiwgPyA8dHlwZSAtMTk+KTsKZnVuYyBOZXdDbGllbnQgKGNvbm4gPHR5cGUgMzQgImlvLlJlYWRXcml0ZUNsb3NlciIgPHR5cGUgMzUgaW50ZXJmYWNlIHsgPyA8dHlwZSAzNiAiaW8uUmVhZGVyIiA8dHlwZSAzNyBpbnRlcmZhY2UgeyBSZWFkIChwIDx0eXBlIDM4IFtdIDx0eXBlIC0yMD4+KSAobiA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7IH0+PjsgPyA8dHlwZSAzOSAiaW8uV3JpdGVyIiA8dHlwZSA0MCBpbnRlcmZhY2UgeyBXcml0ZSAocCA8dHlwZSA0MSBbXSA8dHlwZSAtMjA+PikgKG4gPHR5cGUgLTExPiwgZXJyIDx0eXBlIC0xOT4pOyB9Pj47ID8gPHR5cGUgNDIgImlvLkNsb3NlciIgPHR5cGUgNDMgaW50ZXJmYWNlIHsgQ2xvc2UgKCkgPHR5cGUgLTE5PjsgfT4+OyB9Pj4pIDx0eXBlIDE+OwpmdW5jIE5ld0NsaWVudENvZGVjIChjb25uIDx0eXBlIDM0PikgPHR5cGUgND47CmZ1bmMgTmV3U2VydmVyQ29kZWMgKGNvbm4gPHR5cGUgMzQ+KSA8dHlwZSA0NCAibmV0L3JwYy5TZXJ2ZXJDb2RlYyIgPHR5cGUgNDUgaW50ZXJmYWNlIHsgUmVhZFJlcXVlc3RIZWFkZXIgKD8gPHR5cGUgNj4pIDx0eXBlIC0xOT47IFJlYWRSZXF1ZXN0Qm9keSAoPyA8dHlwZSA0NiBpbnRlcmZhY2UgeyB9PikgPHR5cGUgLTE5PjsgV3JpdGVSZXNwb25zZSAoPyA8dHlwZSAxMT4sID8gPHR5cGUgNDcgaW50ZXJmYWNlIHsgfT4pIDx0eXBlIC0xOT47IENsb3NlICgpIDx0eXBlIC0xOT47IH0+PjsKZnVuYyBTZXJ2ZUNvbm4gKGNvbm4gPHR5cGUgMzQ+KTsKY2hlY2tzdW0gQ0VGOTQ5NTRFOEQ1NUY1N0E1RjRFQjYyMTM2NTMwQTE4MkY0MkFCRTsKAC5zeW10YWIALnN0cnRhYgAuc2hzdHJ0YWIALmdvX2V4cG9ydAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGwAAAAEAAAAAAAAAAAAAADQAAADKEAAAAAAAAAAAAAABAAAAAAAAABEAAAADAAAAAAAAAAAAAAD+EAAAJgAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAgAAAAAAAAAAAAAAJBEAACAAAAAEAAAAAgAAAAQAAAAQAAAACQAAAAMAAAAAAAAAAAAAAEQRAAABAAAAAAAAAAAAAAABAAAAAAAAAA==