f0VMRgEBAQAAAAAAAAAAAAEACAABAAAAAAAAAAAAAAB0DgAABxAAUDQAAAAAACgABQACAHYxOwpwYWNrYWdlIGRyaXZlcjsKcGtncGF0aCBkYXRhYmFzZS9zcWwvZHJpdmVyOwpwcmlvcml0eSA3OwppbXBvcnQgZXJyb3JzIGVycm9ycyAiZXJyb3JzIjsKaW1wb3J0IGZtdCBmbXQgImZtdCI7CmltcG9ydCByZWZsZWN0IHJlZmxlY3QgInJlZmxlY3QiOwppbXBvcnQgc3RyY29udiBzdHJjb252ICJzdHJjb252IjsKaW1wb3J0IHRpbWUgdGltZSAidGltZSI7CmluaXQgZHJpdmVyIGRhdGFiYXNlX3NxbF9kcml2ZXIuLmltcG9ydCA3IG1hdGggbWF0aC4uaW1wb3J0IDEgcnVudGltZSBydW50aW1lLi5pbXBvcnQgMSBzdHJjb252IHN0cmNvbnYuLmltcG9ydCAyIHN5bmMgc3luYy4uaW1wb3J0IDIgaW8gaW8uLmltcG9ydCAzIHJlZmxlY3QgcmVmbGVjdC4uaW1wb3J0IDMgc3lzY2FsbCBzeXNjYWxsLi5pbXBvcnQgMyB0aW1lIHRpbWUuLmltcG9ydCA0IG9zIG9zLi5pbXBvcnQgNSBmbXQgZm10Li5pbXBvcnQgNjsKdmFyIEJvb2wgPHR5cGUgMSAiLmRhdGFiYXNlL3NxbC9kcml2ZXIuYm9vbFR5cGUiIDx0eXBlIDIgc3RydWN0IHsgfT4KIGZ1bmMgKD8gPHR5cGUgMT4pIFN0cmluZyAoKSA8dHlwZSAtMTY+OwogZnVuYyAoPyA8dHlwZSAxPikgQ29udmVydFZhbHVlIChzcmMgPHR5cGUgMyBpbnRlcmZhY2UgeyB9PikgKD8gPHR5cGUgNCAiVmFsdWUiIDx0eXBlIDUgaW50ZXJmYWNlIHsgfT4+LCA/IDx0eXBlIC0xOT4pOwo+Owp0eXBlIDx0eXBlIDYgIkNvbHVtbkNvbnZlcnRlciIgPHR5cGUgNyBpbnRlcmZhY2UgeyBDb2x1bW5Db252ZXJ0ZXIgKGlkeCA8dHlwZSAtMTE+KSA8dHlwZSA4ICJWYWx1ZUNvbnZlcnRlciIgPHR5cGUgOSBpbnRlcmZhY2UgeyBDb252ZXJ0VmFsdWUgKHYgPHR5cGUgMTAgaW50ZXJmYWNlIHsgfT4pICg/IDx0eXBlIDQ+LCA/IDx0eXBlIC0xOT4pOyB9Pj47IH0+PjsKdHlwZSA8dHlwZSAxMSAiQ29ubiIgPHR5cGUgMTIgaW50ZXJmYWNlIHsgUHJlcGFyZSAocXVlcnkgPHR5cGUgLTE2PikgKD8gPHR5cGUgMTMgIlN0bXQiIDx0eXBlIDE0IGludGVyZmFjZSB7IENsb3NlICgpIDx0eXBlIC0xOT47IE51bUlucHV0ICgpIDx0eXBlIC0xMT47IEV4ZWMgKGFyZ3MgPHR5cGUgMTUgW10gPHR5cGUgND4+KSAoPyA8dHlwZSAxNiAiUmVzdWx0IiA8dHlwZSAxNyBpbnRlcmZhY2UgeyBMYXN0SW5zZXJ0SWQgKCkgKD8gPHR5cGUgLTQ+LCA/IDx0eXBlIC0xOT4pOyBSb3dzQWZmZWN0ZWQgKCkgKD8gPHR5cGUgLTQ+LCA/IDx0eXBlIC0xOT4pOyB9Pj4sID8gPHR5cGUgLTE5Pik7IFF1ZXJ5IChhcmdzIDx0eXBlIDE4IFtdIDx0eXBlIDQ+PikgKD8gPHR5cGUgMTkgIlJvd3MiIDx0eXBlIDIwIGludGVyZmFjZSB7IENvbHVtbnMgKCkgPHR5cGUgMjEgW10gPHR5cGUgLTE2Pj47IENsb3NlICgpIDx0eXBlIC0xOT47IE5leHQgKGRlc3QgPHR5cGUgMjIgW10gPHR5cGUgND4+KSA8dHlwZSAtMTk+OyB9Pj4sID8gPHR5cGUgLTE5Pik7IH0+PiwgPyA8dHlwZSAtMTk+KTsgQ2xvc2UgKCkgPHR5cGUgLTE5PjsgQmVnaW4gKCkgKD8gPHR5cGUgMjMgIlR4IiA8dHlwZSAyNCBpbnRlcmZhY2UgeyBDb21taXQgKCkgPHR5cGUgLTE5PjsgUm9sbGJhY2sgKCkgPHR5cGUgLTE5PjsgfT4+LCA/IDx0eXBlIC0xOT4pOyB9Pj47CnZhciBEZWZhdWx0UGFyYW1ldGVyQ29udmVydGVyIDx0eXBlIDI1ICIuZGF0YWJhc2Uvc3FsL2RyaXZlci5kZWZhdWx0Q29udmVydGVyIiA8dHlwZSAyNiBzdHJ1Y3QgeyB9PgogZnVuYyAoPyA8dHlwZSAyNT4pIENvbnZlcnRWYWx1ZSAodiA8dHlwZSAyNyBpbnRlcmZhY2UgeyB9PikgKD8gPHR5cGUgND4sID8gPHR5cGUgLTE5Pik7Cj47CnR5cGUgPHR5cGUgMjggIkRyaXZlciIgPHR5cGUgMjkgaW50ZXJmYWNlIHsgT3BlbiAobmFtZSA8dHlwZSAtMTY+KSAoPyA8dHlwZSAxMT4sID8gPHR5cGUgLTE5Pik7IH0+PjsKdmFyIEVyckJhZENvbm4gPHR5cGUgLTE5PjsKdmFyIEVyclNraXAgPHR5cGUgLTE5PjsKdHlwZSA8dHlwZSAzMCAiRXhlY2VyIiA8dHlwZSAzMSBpbnRlcmZhY2UgeyBFeGVjIChxdWVyeSA8dHlwZSAtMTY+LCBhcmdzIDx0eXBlIDMyIFtdIDx0eXBlIDQ+PikgKD8gPHR5cGUgMTY+LCA/IDx0eXBlIC0xOT4pOyB9Pj47CnZhciBJbnQzMiA8dHlwZSAzMyAiLmRhdGFiYXNlL3NxbC9kcml2ZXIuaW50MzJUeXBlIiA8dHlwZSAzNCBzdHJ1Y3QgeyB9PgogZnVuYyAoPyA8dHlwZSAzMz4pIENvbnZlcnRWYWx1ZSAodiA8dHlwZSAzNSBpbnRlcmZhY2UgeyB9PikgKD8gPHR5cGUgND4sID8gPHR5cGUgLTE5Pik7Cj47CmZ1bmMgSXNTY2FuVmFsdWUgKHYgPHR5cGUgMzYgaW50ZXJmYWNlIHsgfT4pIDx0eXBlIC0xNT47CmZ1bmMgSXNWYWx1ZSAodiA8dHlwZSAzNyBpbnRlcmZhY2UgeyB9PikgPHR5cGUgLTE1PjsKdHlwZSA8dHlwZSAzOCAiTm90TnVsbCIgPHR5cGUgMzkgc3RydWN0IHsgQ29udmVydGVyIDx0eXBlIDg+OyB9PgogZnVuYyAobiA8dHlwZSAzOD4pIENvbnZlcnRWYWx1ZSAodiA8dHlwZSA0MCBpbnRlcmZhY2UgeyB9PikgKD8gPHR5cGUgND4sID8gPHR5cGUgLTE5Pik7Cj47CnR5cGUgPHR5cGUgNDEgIk51bGwiIDx0eXBlIDQyIHN0cnVjdCB7IENvbnZlcnRlciA8dHlwZSA4PjsgfT4KIGZ1bmMgKG4gPHR5cGUgNDE+KSBDb252ZXJ0VmFsdWUgKHYgPHR5cGUgNDMgaW50ZXJmYWNlIHsgfT4pICg/IDx0eXBlIDQ+LCA/IDx0eXBlIC0xOT4pOwo+Owp0eXBlIDx0eXBlIDQ0ICJRdWVyeWVyIiA8dHlwZSA0NSBpbnRlcmZhY2UgeyBRdWVyeSAocXVlcnkgPHR5cGUgLTE2PiwgYXJncyA8dHlwZSA0NiBbXSA8dHlwZSA0Pj4pICg/IDx0eXBlIDE5PiwgPyA8dHlwZSAtMTk+KTsgfT4+Owp0eXBlIDx0eXBlIDE2PjsKdmFyIFJlc3VsdE5vUm93cyA8dHlwZSA0NyAiLmRhdGFiYXNlL3NxbC9kcml2ZXIubm9Sb3dzIiA8dHlwZSA0OCBzdHJ1Y3QgeyB9PgogZnVuYyAoPyA8dHlwZSA0Nz4pIExhc3RJbnNlcnRJZCAoKSAoPyA8dHlwZSAtND4sID8gPHR5cGUgLTE5Pik7CiBmdW5jICg/IDx0eXBlIDQ3PikgUm93c0FmZmVjdGVkICgpICg/IDx0eXBlIC00PiwgPyA8dHlwZSAtMTk+KTsKPjsKdHlwZSA8dHlwZSAxOT47CnR5cGUgPHR5cGUgNDkgIlJvd3NBZmZlY3RlZCIgPHR5cGUgLTQ+CiBmdW5jICg/IDx0eXBlIDQ5PikgTGFzdEluc2VydElkICgpICg/IDx0eXBlIC00PiwgPyA8dHlwZSAtMTk+KTsKIGZ1bmMgKHYgPHR5cGUgNDk+KSBSb3dzQWZmZWN0ZWQgKCkgKD8gPHR5cGUgLTQ+LCA/IDx0eXBlIC0xOT4pOwo+Owp0eXBlIDx0eXBlIDEzPjsKdmFyIFN0cmluZyA8dHlwZSA1MCAiLmRhdGFiYXNlL3NxbC9kcml2ZXIuc3RyaW5nVHlwZSIgPHR5cGUgNTEgc3RydWN0IHsgfT4KIGZ1bmMgKD8gPHR5cGUgNTA+KSBDb252ZXJ0VmFsdWUgKHYgPHR5cGUgNTIgaW50ZXJmYWNlIHsgfT4pICg/IDx0eXBlIDQ+LCA/IDx0eXBlIC0xOT4pOwo+Owp0eXBlIDx0eXBlIDIzPjsKdHlwZSA8dHlwZSA0PjsKdHlwZSA8dHlwZSA4PjsKdHlwZSA8dHlwZSA1MyAiVmFsdWVyIiA8dHlwZSA1NCBpbnRlcmZhY2UgeyBWYWx1ZSAoKSAoPyA8dHlwZSA0PiwgPyA8dHlwZSAtMTk+KTsgfT4+OwpjaGVja3N1bSAxRjUwMTA3NDc3NDJBQ0FGQTQzMUJDNDYyNkQ4NzlDN0EyMDNENDFGOwoALnN5bXRhYgAuc3RydGFiAC5zaHN0cnRhYgAuZ29fZXhwb3J0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAAAAQAAAAAAAAAAAAAANAAAAPYNAAAAAAAAAAAAAAEAAAAAAAAAEQAAAAMAAAAAAAAAAAAAACoOAAAmAAAAAAAAAAAAAAABAAAAAAAAAAEAAAACAAAAAAAAAAAAAABQDgAAIAAAAAQAAAACAAAABAAAABAAAAAJAAAAAwAAAAAAAAAAAAAAcA4AAAEAAAAAAAAAAAAAAAEAAAAAAAAA