LyoKICoJT0xFMk5MUyBsaWJyYXJ5CiAqCiAqCUNvcHlyaWdodCAxOTk1CU1hcnRpbiB2b24gTG9ld2lzCiAqLwoKLyoJQXQgdGhlIG1vbWVudCwgdGhlc2UgYXJlIG9ubHkgZW1wdHkgc3R1YnMuCiAqLwoKI2luY2x1ZGUgPHN0cmluZy5oPgojaW5jbHVkZSAid2luZG93cy5oIgojaW5jbHVkZSAib2xlLmgiCiNpbmNsdWRlICJvcHRpb25zLmgiCiNpbmNsdWRlICJ3aW5ubHMuaCIKI2luY2x1ZGUgInN0ZGRlYnVnLmgiCiNpbmNsdWRlICJkZWJ1Zy5oIgoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqICAgICAgICAgICBHZXRVc2VyRGVmYXVsdExDSUQgICAgICAgKE9MRTJOTFMuMSkKICovCkRXT1JEIEdldFVzZXJEZWZhdWx0TENJRCgpCnsKLyogRGVmYXVsdCBzb3J0aW5nLCBuZXV0cmFsIHN1Ymxhbmd1YWdlICovCiAgICBzd2l0Y2goT3B0aW9ucy5sYW5ndWFnZSkKICAgIHsKIC8qIGNhc2UgTEFOR19CdTogcmV0dXJuIDB4MDI7ICovICAgICAgLyogQnVsZ2FyaWFuICovCiAvKiBjYXNlIExBTkdfQ2g6IHJldHVybiAweDA0OyAqLyAgICAgIC8qIENoaW5lc2UgKi8KICAgIGNhc2UgTEFOR19DejogcmV0dXJuIDB4MDU7ICAgICAgICAgLyogQ3plY2ggKi8KICAgIGNhc2UgTEFOR19EYTogcmV0dXJuIDB4MDY7ICAgICAgICAgLyogRGFuaXNoICovCiAgICBjYXNlIExBTkdfRGU6IHJldHVybiAweDA3OyAgICAgICAgIC8qIEdlcm1hbiAqLwogLyogY2FzZSBMQU5HX0dyOiByZXR1cm4gMHgwODsgKi8gICAgICAvKiBHcmVlayAqLwogICAgY2FzZSBMQU5HX0VuOiByZXR1cm4gMHgwOTsgICAgICAgICAvKiBFbmdsaXNoICovCiAgICBjYXNlIExBTkdfRXM6IHJldHVybiAweDBhOyAgICAgICAgIC8qIFNwYW5pc2ggKi8KICAgIGNhc2UgTEFOR19GaTogcmV0dXJuIDB4MGI7ICAgICAgICAgLyogRmlubmlzaCAqLwogICAgY2FzZSBMQU5HX0ZyOiByZXR1cm4gMHgwYzsgICAgICAgICAvKiBGcmVuY2ggKi8KIC8qIGNhc2UgTEFOR19IdTogcmV0dXJuIDB4MGU7ICovICAgICAgLyogSHVuZ2FyaWFuICovCiAvKiBjYXNlIExBTkdfSWM6IHJldHVybiAweDBmOyAqLyAgICAgIC8qIEljZWxhbmRpYyAqLwogICAgY2FzZSBMQU5HX0l0OiByZXR1cm4gMHgxMDsgICAgICAgICAvKiBJdGFsaWFuICovCiAvKiBjYXNlIExBTkdfSnA6IHJldHVybiAweDExOyAqLyAgICAgIC8qIEphcGFuZXNlICovCiAgICBjYXNlIExBTkdfS286IHJldHVybiAweDEyOyAgICAgICAgIC8qIEtvcmVhbiAqLwogLyogY2FzZSBMQU5HX0R1OiByZXR1cm4gMHgxMzsgKi8gICAgICAvKiBEdXRjaCAqLwogICAgY2FzZSBMQU5HX05vOiByZXR1cm4gMHgxNDsgICAgICAgICAvKiBOb3J3ZWdpYW4gKi8KIC8qIGNhc2UgTEFOR19QbDogcmV0dXJuIDB4MTU7ICovICAgICAgLyogUG9saXNoICovCiAvKiBjYXNlIExBTkdfUG86IHJldHVybiAweDE2OyAqLyAgICAgIC8qIFBvcnR1Z3Vlc2UgKi8KIC8qIGNhc2UgTEFOR19SbzogcmV0dXJuIDB4MTg7ICovICAgICAgLyogUm9tYW5pYW4gKi8KIC8qIGNhc2UgTEFOR19SdTogcmV0dXJuIDB4MTk7ICovICAgICAgLyogUnVzc2lhbiAqLwogLyogY2FzZSBMQU5HX0NyOiByZXR1cm4gMHgxYTsgKi8gICAgICAvKiBDcm9hdGlhbiAqLwogLyogY2FzZSBMQU5HX1NsOiByZXR1cm4gMHgxYjsgKi8gICAgICAvKiBTbG92YWsgKi8KIC8qIGNhc2UgTEFOR19TdzogcmV0dXJuIDB4MWQ7ICovICAgICAgLyogU3dlZGlzaCAqLwogLyogY2FzZSBMQU5HX1R1OiByZXR1cm4gMHgxZjsgKi8gICAgICAvKiBUdXJraXNoICovCiAvKiBjYXNlIExBTkdfU3Y6IHJldHVybiAweDI0OyAqLyAgICAgIC8qIFNsb3ZlbmlhbiAqLwogICAgY2FzZSBMQU5HX0VvOiByZXR1cm4gMHgyNTsgICAgICAgICAvKiBFc3BlcmFudG8gKG5vdCBvZmZpY2lhbCkgKi8KCiAgICBkZWZhdWx0OgoJcmV0dXJuIDB4MDA7ICAgICAgICAgICAgICAgICAgIC8qIE5ldXRyYWwgbGFuZ3VhZ2UgKi8KICAgIH0KfQoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqICAgICAgICAgR2V0U3lzdGVtRGVmYXVsdExDSUQgICAgICAgKE9MRTJOTFMuMikKICovCkRXT1JEIEdldFN5c3RlbURlZmF1bHRMQ0lEKCkKewoJcmV0dXJuIEdldFVzZXJEZWZhdWx0TENJRCgpOwp9CgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogICAgICAgICBHZXRVc2VyRGVmYXVsdExhbmdJRCAgICAgICAoT0xFMk5MUy4zKQogKi8KV09SRCBHZXRVc2VyRGVmYXVsdExhbmdJRCgpCnsKCXJldHVybiAoV09SRClHZXRVc2VyRGVmYXVsdExDSUQoKTsKfQoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqICAgICAgICAgR2V0U3lzdGVtRGVmYXVsdExhbmdJRCAgICAgKE9MRTJOTFMuNCkKICovCldPUkQgR2V0U3lzdGVtRGVmYXVsdExhbmdJRCgpCnsKCXJldHVybiBHZXRVc2VyRGVmYXVsdExhbmdJRCgpOwp9CgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogICAgICAgICBHZXRMb2NhbGVJbmZvQSAgICAgICAgICAgICAoT0xFMk5MUy41KQogKiBJcyB0aGUgbGFzdCBwYXJhbWV0ZXIgcmVhbGx5IFdPUkQgZm9yIFdpbjE2PwogKi8KaW50IEdldExvY2FsZUluZm9BKERXT1JEIGxjaWQsRFdPUkQgTENUeXBlLExQU1RSIGJ1ZixXT1JEIGxlbikKewoJY2hhciAqcmV0U3RyaW5nOwogICAgaW50IHJldExlbjsKICAgIGRwcmludGZfb2xlKHN0ZGRlYiwiR2V0TG9jYWxlSW5mb0EoJThsWCwlOGxYLCVwLCU0WClcbiIsCgkJCWxjaWQsTENUeXBlLGJ1ZixsZW4pOwojaWYgMAoJLyogV2luZSBpcyBzdXBwb3J0aW5nIG9ubHkgdGhlIGRlZmF1bHQgbG9jYWxlICovCglpZihsY2lkIT1HZXRVc2VyRGVmYXVsdExDSUQoKSkKCXsKCQlkcHJpbnRmX29sZShzdGRuaW1wLCJHZXRMb2NhbGVJbmZvQTogVW5rbm93biBsb2NhbGVcbiIpOwoJCXJldHVybiAwOwoJfQojZW5kaWYKCS8qIEFzIGFuIG9wdGlvbiwgd2UgY291bGQgb2J0YWluIHRoZSB2YWx1ZSBmcm9tIHdpbi5pbmkuCgkgICBUaGlzIHdvdWxkIG5vdCBtYXRjaCB0aGUgV2luZSBjb21waWxlLXRpbWUgb3B0aW9uLgoJICAgQWxzbywgbm90IGFsbCBpZGVudGlmaWVycyBhcmUgYXZhaWxhYmxlIGZyb20gd2luLmluaSAqLwoJcmV0U3RyaW5nPTA7CglyZXRMZW49MDsKCS8qIElmIHdlIGFyZSB0aHJvdWdoIGFsbCBvZiB0aGlzLCByZXRMZW4gc2hvdWxkIG5vdCBiZSB6ZXJvIGFueW1vcmUuCgkgICBJZiBpdCBpcywgdGhlIHZhbHVlIGlzIG5vdCBzdXBwb3J0ZWQgKi8KI2RlZmluZSBMT0NWQUwodHlwZSx2YWx1ZSkJaWYodHlwZT09TENUeXBlKQkJCVwKCQkJCQkJCQl7cmV0TGVuPXN0cmxlbih2YWx1ZSkrMTtcCgkJCQkJCQkJIHJldFN0cmluZz12YWx1ZTsgICAgICAgXAoJCQkJCQkJCX0KI2RlZmluZSBVTlNVUFBPUlRFRCh0eXBlKSAgIGlmKHR5cGU9PWxjaWQpcmV0U3RyaW5nPSN0eXBlOwoKLyogSSByZWFsbHkgd2lzaCBJIHdvdWxkIGtub3cgYSBiZXR0ZXIgd2F5IHRvIGRvIHRoaXMgKi8KVU5TVVBQT1JURUQoTE9DQUxFX0lMQU5HVUFHRSkKVU5TVVBQT1JURUQoTE9DQUxFX1NMQU5HVUFHRSkKVU5TVVBQT1JURUQoTE9DQUxFX1NFTkdMQU5HVUFHRSkKVU5TVVBQT1JURUQoTE9DQUxFX1NBQkJSRVZMQU5HTkFNRSkKVU5TVVBQT1JURUQoTE9DQUxFX1NOQVRJVkVMQU5HTkFNRSkKVU5TVVBQT1JURUQoTE9DQUxFX0lDT1VOVFJZKQpVTlNVUFBPUlRFRChMT0NBTEVfU0NPVU5UUlkpClVOU1VQUE9SVEVEKExPQ0FMRV9TRU5HQ09VTlRSWSkKVU5TVVBQT1JURUQoTE9DQUxFX1NBQkJSRVZDVFJZTkFNRSkKVU5TVVBQT1JURUQoTE9DQUxFX1NOQVRJVkVDVFJZTkFNRSkKVU5TVVBQT1JURUQoTE9DQUxFX0lERUZBVUxUTEFOR1VBR0UpClVOU1VQUE9SVEVEKExPQ0FMRV9JREVGQVVMVENPVU5UUlkpClVOU1VQUE9SVEVEKExPQ0FMRV9JREVGQVVMVENPREVQQUdFKQpVTlNVUFBPUlRFRChMT0NBTEVfSURFRkFVTFRBTlNJQ09ERVBBR0UpClVOU1VQUE9SVEVEKExPQ0FMRV9TTElTVCkKVU5TVVBQT1JURUQoTE9DQUxFX0lNRUFTVVJFKQpVTlNVUFBPUlRFRChMT0NBTEVfU0RFQ0lNQUwpClVOU1VQUE9SVEVEKExPQ0FMRV9TVEhPVVNBTkQpClVOU1VQUE9SVEVEKExPQ0FMRV9TR1JPVVBJTkcpClVOU1VQUE9SVEVEKExPQ0FMRV9JRElHSVRTKQpVTlNVUFBPUlRFRChMT0NBTEVfSUxaRVJPKQpVTlNVUFBPUlRFRChMT0NBTEVfSU5FR05VTUJFUikKVU5TVVBQT1JURUQoTE9DQUxFX1NOQVRJVkVESUdJVFMpClVOU1VQUE9SVEVEKExPQ0FMRV9TQ1VSUkVOQ1kpClVOU1VQUE9SVEVEKExPQ0FMRV9TSU5UTFNZTUJPTCkKVU5TVVBQT1JURUQoTE9DQUxFX1NNT05ERUNJTUFMU0VQKQpVTlNVUFBPUlRFRChMT0NBTEVfU01PTlRIT1VTQU5EU0VQKQpVTlNVUFBPUlRFRChMT0NBTEVfU01PTkdST1VQSU5HKQpVTlNVUFBPUlRFRChMT0NBTEVfSUNVUlJESUdJVFMpClVOU1VQUE9SVEVEKExPQ0FMRV9JSU5UTENVUlJESUdJVFMpClVOU1VQUE9SVEVEKExPQ0FMRV9JQ1VSUkVOQ1kpClVOU1VQUE9SVEVEKExPQ0FMRV9JTkVHQ1VSUikKVU5TVVBQT1JURUQoTE9DQUxFX1NEQVRFKQpVTlNVUFBPUlRFRChMT0NBTEVfU1RJTUUpClVOU1VQUE9SVEVEKExPQ0FMRV9TU0hPUlREQVRFKQpVTlNVUFBPUlRFRChMT0NBTEVfU0xPTkdEQVRFKQpVTlNVUFBPUlRFRChMT0NBTEVfU1RJTUVGT1JNQVQpClVOU1VQUE9SVEVEKExPQ0FMRV9JREFURSkKVU5TVVBQT1JURUQoTE9DQUxFX0lMREFURSkKVU5TVVBQT1JURUQoTE9DQUxFX0lUSU1FKQpVTlNVUFBPUlRFRChMT0NBTEVfSVRJTUVNQVJLUE9TTikKVU5TVVBQT1JURUQoTE9DQUxFX0lDRU5UVVJZKQpVTlNVUFBPUlRFRChMT0NBTEVfSVRMWkVSTykKVU5TVVBQT1JURUQoTE9DQUxFX0lEQVlMWkVSTykKVU5TVVBQT1JURUQoTE9DQUxFX0lNT05MWkVSTykKVU5TVVBQT1JURUQoTE9DQUxFX1MxMTU5KQpVTlNVUFBPUlRFRChMT0NBTEVfUzIzNTkpClVOU1VQUE9SVEVEKExPQ0FMRV9JQ0FMRU5EQVJUWVBFKQpVTlNVUFBPUlRFRChMT0NBTEVfSU9QVElPTkFMQ0FMRU5EQVIpClVOU1VQUE9SVEVEKExPQ0FMRV9JRklSU1REQVlPRldFRUspClVOU1VQUE9SVEVEKExPQ0FMRV9JRklSU1RXRUVLT0ZZRUFSKQpVTlNVUFBPUlRFRChMT0NBTEVfU0RBWU5BTUUxKQpVTlNVUFBPUlRFRChMT0NBTEVfU0RBWU5BTUUyKQpVTlNVUFBPUlRFRChMT0NBTEVfU0RBWU5BTUUzKQpVTlNVUFBPUlRFRChMT0NBTEVfU0RBWU5BTUU0KQpVTlNVUFBPUlRFRChMT0NBTEVfU0RBWU5BTUU1KQpVTlNVUFBPUlRFRChMT0NBTEVfU0RBWU5BTUU2KQpVTlNVUFBPUlRFRChMT0NBTEVfU0RBWU5BTUU3KQpVTlNVUFBPUlRFRChMT0NBTEVfU0FCQlJFVkRBWU5BTUUxKQpVTlNVUFBPUlRFRChMT0NBTEVfU0FCQlJFVkRBWU5BTUUyKQpVTlNVUFBPUlRFRChMT0NBTEVfU0FCQlJFVkRBWU5BTUUzKQpVTlNVUFBPUlRFRChMT0NBTEVfU0FCQlJFVkRBWU5BTUU0KQpVTlNVUFBPUlRFRChMT0NBTEVfU0FCQlJFVkRBWU5BTUU1KQpVTlNVUFBPUlRFRChMT0NBTEVfU0FCQlJFVkRBWU5BTUU2KQpVTlNVUFBPUlRFRChMT0NBTEVfU0FCQlJFVkRBWU5BTUU3KQpVTlNVUFBPUlRFRChMT0NBTEVfU01PTlRITkFNRTEpClVOU1VQUE9SVEVEKExPQ0FMRV9TTU9OVEhOQU1FMikKVU5TVVBQT1JURUQoTE9DQUxFX1NNT05USE5BTUUzKQpVTlNVUFBPUlRFRChMT0NBTEVfU01PTlRITkFNRTQpClVOU1VQUE9SVEVEKExPQ0FMRV9TTU9OVEhOQU1FNSkKVU5TVVBQT1JURUQoTE9DQUxFX1NNT05USE5BTUU2KQpVTlNVUFBPUlRFRChMT0NBTEVfU01PTlRITkFNRTcpClVOU1VQUE9SVEVEKExPQ0FMRV9TTU9OVEhOQU1FOCkKVU5TVVBQT1JURUQoTE9DQUxFX1NNT05USE5BTUU5KQpVTlNVUFBPUlRFRChMT0NBTEVfU01PTlRITkFNRTEwKQpVTlNVUFBPUlRFRChMT0NBTEVfU01PTlRITkFNRTExKQpVTlNVUFBPUlRFRChMT0NBTEVfU01PTlRITkFNRTEyKQpVTlNVUFBPUlRFRChMT0NBTEVfU01PTlRITkFNRTEzKQpVTlNVUFBPUlRFRChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEpClVOU1VQUE9SVEVEKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMikKVU5TVVBQT1JURUQoTE9DQUxFX1NBQkJSRVZNT05USE5BTUUzKQpVTlNVUFBPUlRFRChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTQpClVOU1VQUE9SVEVEKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNSkKVU5TVVBQT1JURUQoTE9DQUxFX1NBQkJSRVZNT05USE5BTUU2KQpVTlNVUFBPUlRFRChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTcpClVOU1VQUE9SVEVEKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FOCkKVU5TVVBQT1JURUQoTE9DQUxFX1NBQkJSRVZNT05USE5BTUU5KQpVTlNVUFBPUlRFRChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEwKQpVTlNVUFBPUlRFRChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTExKQpVTlNVUFBPUlRFRChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEyKQpVTlNVUFBPUlRFRChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEzKQpVTlNVUFBPUlRFRChMT0NBTEVfU1BPU0lUSVZFU0lHTikKVU5TVVBQT1JURUQoTE9DQUxFX1NORUdBVElWRVNJR04pClVOU1VQUE9SVEVEKExPQ0FMRV9JUE9TU0lHTlBPU04pClVOU1VQUE9SVEVEKExPQ0FMRV9JTkVHU0lHTlBPU04pClVOU1VQUE9SVEVEKExPQ0FMRV9JUE9TU1lNUFJFQ0VERVMpClVOU1VQUE9SVEVEKExPQ0FMRV9JUE9TU0VQQllTUEFDRSkKVU5TVVBQT1JURUQoTE9DQUxFX0lORUdTWU1QUkVDRURFUykKVU5TVVBQT1JURUQoTE9DQUxFX0lORUdTRVBCWVNQQUNFKQoKLyogTm93LCB0aGUgbGFuZ3VhZ2Ugc3BlY2lmaWMgZGVmaW5pdGlvbnMuIFRoZXkgZG9uJ3QgaGF2ZSB0byBiZQogICBjb21wbGV0ZSAqLwogICAgc3dpdGNoKE9wdGlvbnMubGFuZ3VhZ2UpCiAgICB7CiAgICBjYXNlIExBTkdfRGU6Ci8qIFRoaXMgZGVmaW5pdGlvbnMgYXBwbHkgdG8gR2VybWFueSBvbmx5LiBVc2VycyBpbiBBdXN0cmlhIAogICBvciBTd2l0emVybGFuZCBtaWdodCB3YW50IHRvIG1vZGlmeSB0aGVtICovCkxPQ1ZBTChMT0NBTEVfSUxBTkdVQUdFLCI5IikKTE9DVkFMKExPQ0FMRV9TTEFOR1VBR0UsIkRldXRzY2giKQpMT0NWQUwoTE9DQUxFX1NFTkdMQU5HVUFHRSwiR2VybWFuIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTEFOR05BTUUsImRldSIpCkxPQ1ZBTChMT0NBTEVfU05BVElWRUxBTkdOQU1FLCJEZXV0c2NoIikKTE9DVkFMKExPQ0FMRV9JQ09VTlRSWSwiNDkiKQpMT0NWQUwoTE9DQUxFX1NDT1VOVFJZLCJEZXV0c2NobGFuZCIpCkxPQ1ZBTChMT0NBTEVfU0VOR0NPVU5UUlksIkRldXRzY2hsYW5kIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWQ1RSWU5BTUUsIkRlIikKTE9DVkFMKExPQ0FMRV9TTkFUSVZFQ1RSWU5BTUUsIkRldXRzY2hsYW5kIikKTE9DVkFMKExPQ0FMRV9JREVGQVVMVExBTkdVQUdFLCI5IikKTE9DVkFMKExPQ0FMRV9JREVGQVVMVENPVU5UUlksIjQ5IikKLyogRHVubm8KTE9DVkFMKExPQ0FMRV9JREVGQVVMVENPREVQQUdFKQpMT0NWQUwoTE9DQUxFX0lERUZBVUxUQU5TSUNPREVQQUdFKQoqLwpMT0NWQUwoTE9DQUxFX1NMSVNULCI7IikKTE9DVkFMKExPQ0FMRV9JTUVBU1VSRSwiMCIpCkxPQ1ZBTChMT0NBTEVfU0RFQ0lNQUwsIiwiKQpMT0NWQUwoTE9DQUxFX1NUSE9VU0FORCwiLiIpCi8qCkxPQ1ZBTChMT0NBTEVfU0dST1VQSU5HKQoqLwpMT0NWQUwoTE9DQUxFX0lESUdJVFMsIjIiKQpMT0NWQUwoTE9DQUxFX0lMWkVSTywiMSIpCi8qCkxPQ1ZBTChMT0NBTEVfSU5FR05VTUJFUikKSXMgdGhpcyAiMDEyMzQ1Njc4OSIgPz8KTE9DVkFMKExPQ0FMRV9TTkFUSVZFRElHSVRTKQoqLwpMT0NWQUwoTE9DQUxFX1NDVVJSRU5DWSwiRE0iKQovKgpMT0NWQUwoTE9DQUxFX1NJTlRMU1lNQk9MKQpMT0NWQUwoTE9DQUxFX1NNT05ERUNJTUFMU0VQKQpMT0NWQUwoTE9DQUxFX1NNT05USE9VU0FORFNFUCkKTE9DVkFMKExPQ0FMRV9TTU9OR1JPVVBJTkcpCiovCkxPQ1ZBTChMT0NBTEVfSUNVUlJESUdJVFMsIjIiKQovKgpMT0NWQUwoTE9DQUxFX0lJTlRMQ1VSUkRJR0lUUykKKi8KTE9DVkFMKExPQ0FMRV9JQ1VSUkVOQ1ksIjMiKQpMT0NWQUwoTE9DQUxFX0lORUdDVVJSLCI4IikKTE9DVkFMKExPQ0FMRV9TREFURSwiLiIpCkxPQ1ZBTChMT0NBTEVfU1RJTUUsIjoiKQpMT0NWQUwoTE9DQUxFX1NTSE9SVERBVEUsImRkLk1NLnl5eXkiKQpMT0NWQUwoTE9DQUxFX1NMT05HREFURSwiZGRkLCBkLiBNTU1NIHl5eXkiKQovKgpMT0NWQUwoTE9DQUxFX1NUSU1FRk9STUFUKQoqLwpMT0NWQUwoTE9DQUxFX0lEQVRFLCIxIikKLyoKTE9DVkFMKExPQ0FMRV9JTERBVEUpCiovCkxPQ1ZBTChMT0NBTEVfSVRJTUUsIjEiKQovKgpMT0NWQUwoTE9DQUxFX0lUSU1FTUFSS1BPU04pCkxPQ1ZBTChMT0NBTEVfSUNFTlRVUlkpCiovCkxPQ1ZBTChMT0NBTEVfSVRMWkVSTywiMSIpCi8qCkxPQ1ZBTChMT0NBTEVfSURBWUxaRVJPKQpMT0NWQUwoTE9DQUxFX0lNT05MWkVSTykKTE9DVkFMKExPQ0FMRV9TMTE1OSkKTE9DVkFMKExPQ0FMRV9TMjM1OSkKTE9DVkFMKExPQ0FMRV9JQ0FMRU5EQVJUWVBFKQpMT0NWQUwoTE9DQUxFX0lPUFRJT05BTENBTEVOREFSKQpMT0NWQUwoTE9DQUxFX0lGSVJTVERBWU9GV0VFSykKTE9DVkFMKExPQ0FMRV9JRklSU1RXRUVLT0ZZRUFSKQoqLwpMT0NWQUwoTE9DQUxFX1NEQVlOQU1FMSwiTW9udGFnIikKTE9DVkFMKExPQ0FMRV9TREFZTkFNRTIsIkRpZW5zdGFnIikKTE9DVkFMKExPQ0FMRV9TREFZTkFNRTMsIk1pdHR3b2NoIikKTE9DVkFMKExPQ0FMRV9TREFZTkFNRTQsIkRvbm5lcnN0YWciKQpMT0NWQUwoTE9DQUxFX1NEQVlOQU1FNSwiRnJlaXRhZyIpCkxPQ1ZBTChMT0NBTEVfU0RBWU5BTUU2LCJTb25uYWJlbmQiKQpMT0NWQUwoTE9DQUxFX1NEQVlOQU1FNywiU29ubnRhZyIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVkRBWU5BTUUxLCJNbyIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVkRBWU5BTUUyLCJEaSIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVkRBWU5BTUUzLCJNaSIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVkRBWU5BTUU0LCJEbyIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVkRBWU5BTUU1LCJGciIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVkRBWU5BTUU2LCJTYSIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVkRBWU5BTUU3LCJTbyIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTEsIkphbnVhciIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTIsIkZlYnJ1YXIiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUUzLCJN5HJ6IikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FNCwiQXByaWwiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUU1LCJNYWkiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUU2LCJKdW5pIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FNywiSnVsaSIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTgsIkF1Z3VzdCIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTksIlNlcHRlbWJlciIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTEwLCJPa3RvYmVyIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FMTEsIk5vdmVtYmVyIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FMTIsIkRlemVtYmVyIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FMTMsIiIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEsIkphbiIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTIsIkZlYiIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTMsIk3kciIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTQsIkFwciIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTUsIk1haSIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTYsIkp1biIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTcsIkp1bCIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTgsIkF1ZyIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTksIlNlcCIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEwLCJPa3QiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMSwiTm92IikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTIsIkRleiIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEzLCIiKQovKgpMT0NWQUwoTE9DQUxFX1NQT1NJVElWRVNJR04pCkxPQ1ZBTChMT0NBTEVfU05FR0FUSVZFU0lHTikKTE9DVkFMKExPQ0FMRV9JUE9TU0lHTlBPU04pCkxPQ1ZBTChMT0NBTEVfSU5FR1NJR05QT1NOKQpMT0NWQUwoTE9DQUxFX0lQT1NTWU1QUkVDRURFUykKTE9DVkFMKExPQ0FMRV9JUE9TU0VQQllTUEFDRSkKTE9DVkFMKExPQ0FMRV9JTkVHU1lNUFJFQ0VERVMpCkxPQ1ZBTChMT0NBTEVfSU5FR1NFUEJZU1BBQ0UpCiovCiAgICBicmVhazsgIC8qIExBTkcoRGUpICovCgogICAgY2FzZSBMQU5HX0RhOgovKiBMT0NWQUwoTE9DQUxFX0lMQU5HVUFHRSwiOSIpICovCkxPQ1ZBTChMT0NBTEVfU0xBTkdVQUdFLCJEYW5zayIpCkxPQ1ZBTChMT0NBTEVfU0VOR0xBTkdVQUdFLCJEYW5pc2giKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZMQU5HTkFNRSwiZGFuIikKTE9DVkFMKExPQ0FMRV9TTkFUSVZFTEFOR05BTUUsIkRhbnNrIikKTE9DVkFMKExPQ0FMRV9JQ09VTlRSWSwiNDUiKQpMT0NWQUwoTE9DQUxFX1NDT1VOVFJZLCJEYW5tYXJrIikKTE9DVkFMKExPQ0FMRV9TRU5HQ09VTlRSWSwiRGVubWFyayIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVkNUUllOQU1FLCJEYSIpCkxPQ1ZBTChMT0NBTEVfU05BVElWRUNUUllOQU1FLCJEYW5tYXJrIikKLyogTE9DVkFMKExPQ0FMRV9JREVGQVVMVExBTkdVQUdFLCI5IikgKi8KTE9DVkFMKExPQ0FMRV9JREVGQVVMVENPVU5UUlksIjQ1IikKLyogTE9DVkFMKExPQ0FMRV9JREVGQVVMVENPREVQQUdFKSAqLwovKiBMT0NWQUwoTE9DQUxFX0lERUZBVUxUQU5TSUNPREVQQUdFKSAqLwpMT0NWQUwoTE9DQUxFX1NMSVNULCI7IikKTE9DVkFMKExPQ0FMRV9JTUVBU1VSRSwiMCIpCkxPQ1ZBTChMT0NBTEVfU0RFQ0lNQUwsIiwiKQpMT0NWQUwoTE9DQUxFX1NUSE9VU0FORCwiLiIpCi8qIExPQ1ZBTChMT0NBTEVfU0dST1VQSU5HKSAqLwpMT0NWQUwoTE9DQUxFX0lESUdJVFMsIjIiKQpMT0NWQUwoTE9DQUxFX0lMWkVSTywiMSIpCi8qIExPQ1ZBTChMT0NBTEVfSU5FR05VTUJFUikgKi8KLyogTE9DVkFMKExPQ0FMRV9TTkFUSVZFRElHSVRTKSAqLwpMT0NWQUwoTE9DQUxFX1NDVVJSRU5DWSwia3IiKQovKiBMT0NWQUwoTE9DQUxFX1NJTlRMU1lNQk9MKSAqLwpMT0NWQUwoTE9DQUxFX1NNT05ERUNJTUFMU0VQLCIsIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhPVVNBTkRTRVAsIi4iKQovKiBMT0NWQUwoTE9DQUxFX1NNT05HUk9VUElORykgKi8KTE9DVkFMKExPQ0FMRV9JQ1VSUkRJR0lUUywiMiIpCi8qIExPQ1ZBTChMT0NBTEVfSUlOVExDVVJSRElHSVRTKSAqLwpMT0NWQUwoTE9DQUxFX0lDVVJSRU5DWSwiMyIpCkxPQ1ZBTChMT0NBTEVfSU5FR0NVUlIsIjgiKQpMT0NWQUwoTE9DQUxFX1NEQVRFLCIuIikKTE9DVkFMKExPQ0FMRV9TVElNRSwiOiIpCkxPQ1ZBTChMT0NBTEVfU1NIT1JUREFURSwiZGQvTU0teXl5eSIpCkxPQ1ZBTChMT0NBTEVfU0xPTkdEQVRFLCJkZGQsIGQuIE1NTU0geXl5eSIpCi8qIExPQ1ZBTChMT0NBTEVfU1RJTUVGT1JNQVQpICovCkxPQ1ZBTChMT0NBTEVfSURBVEUsIjEiKQovKiBMT0NWQUwoTE9DQUxFX0lMREFURSkgKi8KTE9DVkFMKExPQ0FMRV9JVElNRSwiMSIpCi8qIExPQ1ZBTChMT0NBTEVfSVRJTUVNQVJLUE9TTikgKi8KLyogTE9DVkFMKExPQ0FMRV9JQ0VOVFVSWSkgKi8KTE9DVkFMKExPQ0FMRV9JVExaRVJPLCIxIikKLyogTE9DVkFMKExPQ0FMRV9JREFZTFpFUk8pICovCi8qIExPQ1ZBTChMT0NBTEVfSU1PTkxaRVJPKSAqLwovKiBMT0NWQUwoTE9DQUxFX1MxMTU5KSAqLwovKiBMT0NWQUwoTE9DQUxFX1MyMzU5KSAqLwovKiBMT0NWQUwoTE9DQUxFX0lDQUxFTkRBUlRZUEUpICovCi8qIExPQ1ZBTChMT0NBTEVfSU9QVElPTkFMQ0FMRU5EQVIpICovCi8qIExPQ1ZBTChMT0NBTEVfSUZJUlNUREFZT0ZXRUVLKSAqLwovKiBMT0NWQUwoTE9DQUxFX0lGSVJTVFdFRUtPRllFQVIpICovCkxPQ1ZBTChMT0NBTEVfU0RBWU5BTUUxLCJNYW5kYWciKQpMT0NWQUwoTE9DQUxFX1NEQVlOQU1FMiwiVGlyc2RhZyIpCkxPQ1ZBTChMT0NBTEVfU0RBWU5BTUUzLCJPbnNkYWciKQpMT0NWQUwoTE9DQUxFX1NEQVlOQU1FNCwiVG9yc2RhZyIpCkxPQ1ZBTChMT0NBTEVfU0RBWU5BTUU1LCJGcmVkYWciKQpMT0NWQUwoTE9DQUxFX1NEQVlOQU1FNiwiTPhyZGFnIikKTE9DVkFMKExPQ0FMRV9TREFZTkFNRTcsIlP4bmRhZyIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVkRBWU5BTUUxLCJNYSIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVkRBWU5BTUUyLCJUaSIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVkRBWU5BTUUzLCJPbiIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVkRBWU5BTUU0LCJUbyIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVkRBWU5BTUU1LCJGciIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVkRBWU5BTUU2LCJM+CIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVkRBWU5BTUU3LCJT+CIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTEsIkphbnVhciIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTIsIkZlYnJ1YXIiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUUzLCJNYXJ0cyIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTQsIkFwcmlsIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FNSwiTWFqIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FNiwiSnVuaSIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTcsIkp1bGkiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUU4LCJBdWd1c3QiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUU5LCJTZXB0ZW1iZXIiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUUxMCwiT2t0b2JlciIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTExLCJOb3ZlbWJlciIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTEyLCJEZWNlbWJlciIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTEzLCIiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxLCJKYW4iKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUUyLCJGZWIiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUUzLCJNYXIiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUU0LCJBcHIiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUU1LCJNYWoiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUU2LCJKdW4iKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUU3LCJKdWwiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUU4LCJBdWciKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUU5LCJTZXAiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMCwiT2t0IikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTEsIk5vdiIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEyLCJEZWMiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMywiIikKLyogTE9DVkFMKExPQ0FMRV9TUE9TSVRJVkVTSUdOKSAqLwovKiBMT0NWQUwoTE9DQUxFX1NORUdBVElWRVNJR04pICovCi8qIExPQ1ZBTChMT0NBTEVfSVBPU1NJR05QT1NOKSAqLwovKiBMT0NWQUwoTE9DQUxFX0lORUdTSUdOUE9TTikgKi8KLyogTE9DVkFMKExPQ0FMRV9JUE9TU1lNUFJFQ0VERVMpICovCi8qIExPQ1ZBTChMT0NBTEVfSVBPU1NFUEJZU1BBQ0UpICovCi8qIExPQ1ZBTChMT0NBTEVfSU5FR1NZTVBSRUNFREVTKSAqLwovKiBMT0NWQUwoTE9DQUxFX0lORUdTRVBCWVNQQUNFKSAqLwogICAgYnJlYWs7IC8qIExBTkcoRGEpICovCgogICAgY2FzZSBMQU5HX0VuOgovKiBUaGlzIGRlZmluaXRpb25zIGFwcGx5IHRvIEdlcm1hbnkgb25seS4gVXNlcnMgaW4gQXVzdHJpYSAKICAgb3IgU3dpdHplcmxhbmQgbWlnaHQgd2FudCB0byBtb2RpZnkgdGhlbSAqLwpMT0NWQUwoTE9DQUxFX0lMQU5HVUFHRSwiOSIpCkxPQ1ZBTChMT0NBTEVfU0xBTkdVQUdFLCJFbmdsaXNoIikKTE9DVkFMKExPQ0FMRV9TRU5HTEFOR1VBR0UsIkVuZ2xpc2giKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZMQU5HTkFNRSwiZW51IikKTE9DVkFMKExPQ0FMRV9TTkFUSVZFTEFOR05BTUUsIkVuZ2xpc2giKQpMT0NWQUwoTE9DQUxFX0lDT1VOVFJZLCIxMSIpCkxPQ1ZBTChMT0NBTEVfU0NPVU5UUlksIkRldXRzY2hsYW5kIikKTE9DVkFMKExPQ0FMRV9TRU5HQ09VTlRSWSwiRGV1dHNjaGxhbmQiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZDVFJZTkFNRSwiRGUiKQpMT0NWQUwoTE9DQUxFX1NOQVRJVkVDVFJZTkFNRSwiRGV1dHNjaGxhbmQiKQpMT0NWQUwoTE9DQUxFX0lERUZBVUxUTEFOR1VBR0UsIjkiKQpMT0NWQUwoTE9DQUxFX0lERUZBVUxUQ09VTlRSWSwiNDkiKQovKiBEdW5ubwpMT0NWQUwoTE9DQUxFX0lERUZBVUxUQ09ERVBBR0UpCkxPQ1ZBTChMT0NBTEVfSURFRkFVTFRBTlNJQ09ERVBBR0UpCiovCkxPQ1ZBTChMT0NBTEVfU0xJU1QsIjsiKQpMT0NWQUwoTE9DQUxFX0lNRUFTVVJFLCIwIikKTE9DVkFMKExPQ0FMRV9TREVDSU1BTCwiLCIpCkxPQ1ZBTChMT0NBTEVfU1RIT1VTQU5ELCIuIikKLyoKTE9DVkFMKExPQ0FMRV9TR1JPVVBJTkcpCiovCkxPQ1ZBTChMT0NBTEVfSURJR0lUUywiMiIpCkxPQ1ZBTChMT0NBTEVfSUxaRVJPLCIxIikKLyoKTE9DVkFMKExPQ0FMRV9JTkVHTlVNQkVSKQpJcyB0aGlzICIwMTIzNDU2Nzg5IiA/PwpMT0NWQUwoTE9DQUxFX1NOQVRJVkVESUdJVFMpCiovCkxPQ1ZBTChMT0NBTEVfU0NVUlJFTkNZLCJETSIpCi8qCkxPQ1ZBTChMT0NBTEVfU0lOVExTWU1CT0wpCkxPQ1ZBTChMT0NBTEVfU01PTkRFQ0lNQUxTRVApCkxPQ1ZBTChMT0NBTEVfU01PTlRIT1VTQU5EU0VQKQpMT0NWQUwoTE9DQUxFX1NNT05HUk9VUElORykKKi8KTE9DVkFMKExPQ0FMRV9JQ1VSUkRJR0lUUywiMiIpCi8qCkxPQ1ZBTChMT0NBTEVfSUlOVExDVVJSRElHSVRTKQoqLwpMT0NWQUwoTE9DQUxFX0lDVVJSRU5DWSwiMyIpCkxPQ1ZBTChMT0NBTEVfSU5FR0NVUlIsIjgiKQpMT0NWQUwoTE9DQUxFX1NEQVRFLCIuIikKTE9DVkFMKExPQ0FMRV9TVElNRSwiOiIpCkxPQ1ZBTChMT0NBTEVfU1NIT1JUREFURSwiZGQuTU0ueXl5eSIpCkxPQ1ZBTChMT0NBTEVfU0xPTkdEQVRFLCJkZGQsIGQuIE1NTU0geXl5eSIpCi8qCkxPQ1ZBTChMT0NBTEVfU1RJTUVGT1JNQVQpCiovCkxPQ1ZBTChMT0NBTEVfSURBVEUsIjEiKQovKgpMT0NWQUwoTE9DQUxFX0lMREFURSkKKi8KTE9DVkFMKExPQ0FMRV9JVElNRSwiMSIpCi8qCkxPQ1ZBTChMT0NBTEVfSVRJTUVNQVJLUE9TTikKTE9DVkFMKExPQ0FMRV9JQ0VOVFVSWSkKKi8KTE9DVkFMKExPQ0FMRV9JVExaRVJPLCIxIikKLyoKTE9DVkFMKExPQ0FMRV9JREFZTFpFUk8pCkxPQ1ZBTChMT0NBTEVfSU1PTkxaRVJPKQpMT0NWQUwoTE9DQUxFX1MxMTU5KQpMT0NWQUwoTE9DQUxFX1MyMzU5KQpMT0NWQUwoTE9DQUxFX0lDQUxFTkRBUlRZUEUpCkxPQ1ZBTChMT0NBTEVfSU9QVElPTkFMQ0FMRU5EQVIpCkxPQ1ZBTChMT0NBTEVfSUZJUlNUREFZT0ZXRUVLKQpMT0NWQUwoTE9DQUxFX0lGSVJTVFdFRUtPRllFQVIpCiovCkxPQ1ZBTChMT0NBTEVfU0RBWU5BTUUxLCJNb250YWciKQpMT0NWQUwoTE9DQUxFX1NEQVlOQU1FMiwiRGllbnN0YWciKQpMT0NWQUwoTE9DQUxFX1NEQVlOQU1FMywiTWl0dHdvY2giKQpMT0NWQUwoTE9DQUxFX1NEQVlOQU1FNCwiRG9ubmVyc3RhZyIpCkxPQ1ZBTChMT0NBTEVfU0RBWU5BTUU1LCJGcmVpdGFnIikKTE9DVkFMKExPQ0FMRV9TREFZTkFNRTYsIlNvbm5hYmVuZCIpCkxPQ1ZBTChMT0NBTEVfU0RBWU5BTUU3LCJTb25udGFnIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWREFZTkFNRTEsIk1vIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWREFZTkFNRTIsIkRpIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWREFZTkFNRTMsIk1pIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWREFZTkFNRTQsIkRvIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWREFZTkFNRTUsIkZyIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWREFZTkFNRTYsIlNhIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWREFZTkFNRTcsIlNvIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FMSwiSmFudWFyIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FMiwiRmVicnVhciIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTMsIk3kcnoiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUU0LCJBcHJpbCIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTUsIk1haSIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTYsIkp1bmkiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUU3LCJKdWxpIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FOCwiQXVndXN0IikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FOSwiU2VwdGVtYmVyIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FMTAsIk9rdG9iZXIiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUUxMSwiTm92ZW1iZXIiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUUxMiwiRGV6ZW1iZXIiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUUxMywiIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMSwiSmFuIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMiwiRmViIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMywiTeRyIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNCwiQXByIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNSwiTWFpIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNiwiSnVuIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNywiSnVsIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FOCwiQXVnIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FOSwiU2VwIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTAsIk9rdCIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTExLCJOb3YiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMiwiRGV6IikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTMsIiIpCi8qCkxPQ1ZBTChMT0NBTEVfU1BPU0lUSVZFU0lHTikKTE9DVkFMKExPQ0FMRV9TTkVHQVRJVkVTSUdOKQpMT0NWQUwoTE9DQUxFX0lQT1NTSUdOUE9TTikKTE9DVkFMKExPQ0FMRV9JTkVHU0lHTlBPU04pCkxPQ1ZBTChMT0NBTEVfSVBPU1NZTVBSRUNFREVTKQpMT0NWQUwoTE9DQUxFX0lQT1NTRVBCWVNQQUNFKQpMT0NWQUwoTE9DQUxFX0lORUdTWU1QUkVDRURFUykKTE9DVkFMKExPQ0FMRV9JTkVHU0VQQllTUEFDRSkKKi8KICAgIGJyZWFrOyAgLyogTEFORyhFbikgKi8KCiAgICBjYXNlIExBTkdfRW86Ci8qIExPQ1ZBTChMT0NBTEVfSUxBTkdVQUdFLCI5IikgSVNPIG51bWVyaWNhbCBJRCBmb3IgbGFuZ3VhZ2UgVE9ETyAqLwpMT0NWQUwoTE9DQUxFX1NMQU5HVUFHRSwiRXNwZXJhbnRvIikKTE9DVkFMKExPQ0FMRV9TRU5HTEFOR1VBR0UsIkVzcGVyYW50byIpCi8qIExPQ1ZBTChMT0NBTEVfU0FCQlJFVkxBTkdOQU1FLCJkZXUiKSAqLwpMT0NWQUwoTE9DQUxFX1NOQVRJVkVMQU5HTkFNRSwiRXNwZXJhbnRvIikKLyogTE9DVkFMKExPQ0FMRV9JQ09VTlRSWSwiNDkiKSBub3Qgb2ZmaWNpYWwgaW4gYW55IG9uZSBjb3VudHJ5ICovCi8qIExPQ1ZBTChMT0NBTEVfU0NPVU5UUlksIkRldXRzY2hsYW5kIikgKi8KLyogTE9DVkFMKExPQ0FMRV9TRU5HQ09VTlRSWSwiR2VybWFueSIpICovCi8qIExPQ1ZBTChMT0NBTEVfU0FCQlJFVkNUUllOQU1FLCJEZSIpICovCi8qIExPQ1ZBTChMT0NBTEVfU05BVElWRUNUUllOQU1FLCJEZXV0c2NobGFuZCIpICovCi8qIExPQ1ZBTChMT0NBTEVfSURFRkFVTFRMQU5HVUFHRSwiOSIpIElTTyBJRCBvZiBsYW5nIFRPRE8gKi8KLyogTE9DVkFMKExPQ0FMRV9JREVGQVVMVENPVU5UUlksIjQ5IikgKi8KTE9DVkFMKExPQ0FMRV9JREVGQVVMVENPREVQQUdFLCIzIikgLyogaXMgdGhpcyByaWdodD8gVE9ETyAqLwpMT0NWQUwoTE9DQUxFX0lERUZBVUxUQU5TSUNPREVQQUdFLCIzIikgLyogaXMgdGhpcyByaWdodD8gVE9ETyAqLwpMT0NWQUwoTE9DQUxFX1NMSVNULCI7IikKTE9DVkFMKExPQ0FMRV9JTUVBU1VSRSwiMCIpCkxPQ1ZBTChMT0NBTEVfU0RFQ0lNQUwsIiwiKQpMT0NWQUwoTE9DQUxFX1NUSE9VU0FORCwiLiIpCi8qIExPQ1ZBTChMT0NBTEVfU0dST1VQSU5HKSAqLwpMT0NWQUwoTE9DQUxFX0lESUdJVFMsIjIiKQpMT0NWQUwoTE9DQUxFX0lMWkVSTywiMSIpCi8qIExPQ1ZBTChMT0NBTEVfSU5FR05VTUJFUikgKi8KLyogTE9DVkFMKExPQ0FMRV9TTkFUSVZFRElHSVRTKSAqLwpMT0NWQUwoTE9DQUxFX1NDVVJSRU5DWSwiTkxHIikgLyogYWNjb3VudGluZyBjdXJyZW5jeSBvZiBVRUEgKi8KLyogTE9DVkFMKExPQ0FMRV9TSU5UTFNZTUJPTCkgKi8KLyogTE9DVkFMKExPQ0FMRV9TTU9OREVDSU1BTFNFUCkgKi8KLyogTE9DVkFMKExPQ0FMRV9TTU9OVEhPVVNBTkRTRVApICovCi8qIExPQ1ZBTChMT0NBTEVfU01PTkdST1VQSU5HKSAqLwovKiBMT0NWQUwoTE9DQUxFX0lDVVJSRElHSVRTLCIyIikgKi8KLyogTE9DVkFMKExPQ0FMRV9JSU5UTENVUlJESUdJVFMpICovCkxPQ1ZBTChMT0NBTEVfSUNVUlJFTkNZLCIzIikKTE9DVkFMKExPQ0FMRV9JTkVHQ1VSUiwiOCIpCkxPQ1ZBTChMT0NBTEVfU0RBVEUsIi4iKQpMT0NWQUwoTE9DQUxFX1NUSU1FLCI6IikKTE9DVkFMKExPQ0FMRV9TU0hPUlREQVRFLCJ5eXl5Lm1tLmRkIikKTE9DVkFMKExPQ0FMRV9TTE9OR0RBVEUsImRkZCwgZC4gTU1NTSB5eXl5IikKLyogTE9DVkFMKExPQ0FMRV9TVElNRUZPUk1BVCkgKi8KTE9DVkFMKExPQ0FMRV9JREFURSwiMSIpCi8qIExPQ1ZBTChMT0NBTEVfSUxEQVRFKSAqLwpMT0NWQUwoTE9DQUxFX0lUSU1FLCIxIikKLyogTE9DVkFMKExPQ0FMRV9JVElNRU1BUktQT1NOKSAqLwovKiBMT0NWQUwoTE9DQUxFX0lDRU5UVVJZKSAqLwpMT0NWQUwoTE9DQUxFX0lUTFpFUk8sIjEiKQovKiBMT0NWQUwoTE9DQUxFX0lEQVlMWkVSTykgKi8KLyogTE9DVkFMKExPQ0FMRV9JTU9OTFpFUk8pICovCi8qIExPQ1ZBTChMT0NBTEVfUzExNTkpICovCi8qIExPQ1ZBTChMT0NBTEVfUzIzNTkpICovCi8qIExPQ1ZBTChMT0NBTEVfSUNBTEVOREFSVFlQRSkgKi8KLyogTE9DVkFMKExPQ0FMRV9JT1BUSU9OQUxDQUxFTkRBUikgKi8KLyogTE9DVkFMKExPQ0FMRV9JRklSU1REQVlPRldFRUspICovCi8qIExPQ1ZBTChMT0NBTEVfSUZJUlNUV0VFS09GWUVBUikgKi8KTE9DVkFMKExPQ0FMRV9TREFZTkFNRTEsImx1bmRvIikKTE9DVkFMKExPQ0FMRV9TREFZTkFNRTIsIm1hcmRvIikKTE9DVkFMKExPQ0FMRV9TREFZTkFNRTMsIm1lcmtyZWRvIikKTE9DVkFMKExPQ0FMRV9TREFZTkFNRTQsIrxh/WRvIikKTE9DVkFMKExPQ0FMRV9TREFZTkFNRTUsInZlbmRyZWRvIikKTE9DVkFMKExPQ0FMRV9TREFZTkFNRTYsInNhYmF0byIpCkxPQ1ZBTChMT0NBTEVfU0RBWU5BTUU3LCJkaW1hbuZvIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWREFZTkFNRTEsImx1IikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWREFZTkFNRTIsIm1hIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWREFZTkFNRTMsIm1lIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWREFZTkFNRTQsIrxhIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWREFZTkFNRTUsInZlIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWREFZTkFNRTYsInNhIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWREFZTkFNRTcsImRpIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FMSwiamFudWFybyIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTIsImZlYnJ1YXJvIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FMywibWFydG8iKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUU0LCJhcHJpbG8iKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUU1LCJtYWpvIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FNiwianVuaW8iKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUU3LCJqdWxpbyIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTgsImH9Z3VzdG8iKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUU5LCJzZXB0ZW1icm8iKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUUxMCwib2t0b2JybyIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTExLCJub3ZlbWJybyIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTEyLCJkZWNlbWJybyIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTEzLCIiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxLCJqYW4iKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUUyLCJmZWIiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUUzLCJtYXIiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUU0LCJhcHIiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUU1LCJtYWoiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUU2LCJqdW4iKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUU3LCJqdWwiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUU4LCJh/WciKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUU5LCJzZXAiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMCwib2t0IikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTEsIm5vdiIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEyLCJkZWMiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMywiIikKLyogTE9DVkFMKExPQ0FMRV9TUE9TSVRJVkVTSUdOKSAqLwovKiBMT0NWQUwoTE9DQUxFX1NORUdBVElWRVNJR04pICovCi8qIExPQ1ZBTChMT0NBTEVfSVBPU1NJR05QT1NOKSAqLwovKiBMT0NWQUwoTE9DQUxFX0lORUdTSUdOUE9TTikgKi8KLyogTE9DVkFMKExPQ0FMRV9JUE9TU1lNUFJFQ0VERVMpICovCi8qIExPQ1ZBTChMT0NBTEVfSVBPU1NFUEJZU1BBQ0UpICovCi8qIExPQ1ZBTChMT0NBTEVfSU5FR1NZTVBSRUNFREVTKSAqLwovKiBMT0NWQUwoTE9DQUxFX0lORUdTRVBCWVNQQUNFKSAqLwogICAgYnJlYWs7ICAvKiBMQU5HKEVvKSAqLwoKICAgIGNhc2UgTEFOR19GaToKTE9DVkFMKExPQ0FMRV9JTEFOR1VBR0UsIjExIikKTE9DVkFMKExPQ0FMRV9TTEFOR1VBR0UsIlN1b21pIikKTE9DVkFMKExPQ0FMRV9TRU5HTEFOR1VBR0UsIkZpbm5pc2giKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZMQU5HTkFNRSwiZmluIikKTE9DVkFMKExPQ0FMRV9TTkFUSVZFTEFOR05BTUUsInN1b21pIikKTE9DVkFMKExPQ0FMRV9JQ09VTlRSWSwiNDkiKQpMT0NWQUwoTE9DQUxFX1NDT1VOVFJZLCJTdW9taSIpCkxPQ1ZBTChMT0NBTEVfU0VOR0NPVU5UUlksIkZpbmxhbmQiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZDVFJZTkFNRSwiRmluIikKTE9DVkFMKExPQ0FMRV9TTkFUSVZFQ1RSWU5BTUUsIlN1b21pIikKTE9DVkFMKExPQ0FMRV9JREVGQVVMVExBTkdVQUdFLCIxMSIpCkxPQ1ZBTChMT0NBTEVfSURFRkFVTFRDT1VOVFJZLCIzNTgiKQovKiAKTE9DVkFMKExPQ0FMRV9JREVGQVVMVENPREVQQUdFKQpMT0NWQUwoTE9DQUxFX0lERUZBVUxUQU5TSUNPREVQQUdFKQoqLwpMT0NWQUwoTE9DQUxFX1NMSVNULCI7IikKTE9DVkFMKExPQ0FMRV9JTUVBU1VSRSwiMCIpCkxPQ1ZBTChMT0NBTEVfU0RFQ0lNQUwsIiwiKQpMT0NWQUwoTE9DQUxFX1NUSE9VU0FORCwiLiIpCi8qCkxPQ1ZBTChMT0NBTEVfU0dST1VQSU5HKQoqLwpMT0NWQUwoTE9DQUxFX0lESUdJVFMsIjIiKQpMT0NWQUwoTE9DQUxFX0lMWkVSTywiMSIpCi8qCkxPQ1ZBTChMT0NBTEVfSU5FR05VTUJFUikKSXMgdGhpcyAiMDEyMzQ1Njc4OSIgPz8KTE9DVkFMKExPQ0FMRV9TTkFUSVZFRElHSVRTKQoqLwpMT0NWQUwoTE9DQUxFX1NDVVJSRU5DWSwibWsiKQovKgpMT0NWQUwoTE9DQUxFX1NJTlRMU1lNQk9MKQpMT0NWQUwoTE9DQUxFX1NNT05ERUNJTUFMU0VQKQpMT0NWQUwoTE9DQUxFX1NNT05USE9VU0FORFNFUCkKTE9DVkFMKExPQ0FMRV9TTU9OR1JPVVBJTkcpCiovCkxPQ1ZBTChMT0NBTEVfSUNVUlJESUdJVFMsIjIiKQovKgpMT0NWQUwoTE9DQUxFX0lJTlRMQ1VSUkRJR0lUUykKKi8KTE9DVkFMKExPQ0FMRV9JQ1VSUkVOQ1ksIjMiKQpMT0NWQUwoTE9DQUxFX0lORUdDVVJSLCI4IikKTE9DVkFMKExPQ0FMRV9TREFURSwiLiIpCkxPQ1ZBTChMT0NBTEVfU1RJTUUsIjoiKQpMT0NWQUwoTE9DQUxFX1NTSE9SVERBVEUsImRkLk1NLnl5eXkiKQpMT0NWQUwoTE9DQUxFX1NMT05HREFURSwiZGRkLCBkLiBNTU1NIHl5eXkiKQovKgpMT0NWQUwoTE9DQUxFX1NUSU1FRk9STUFUKQoqLwpMT0NWQUwoTE9DQUxFX0lEQVRFLCIxIikKLyoKTE9DVkFMKExPQ0FMRV9JTERBVEUpCiovCkxPQ1ZBTChMT0NBTEVfSVRJTUUsIjEiKQovKgpMT0NWQUwoTE9DQUxFX0lUSU1FTUFSS1BPU04pCkxPQ1ZBTChMT0NBTEVfSUNFTlRVUlkpCiovCkxPQ1ZBTChMT0NBTEVfSVRMWkVSTywiMSIpCi8qCkxPQ1ZBTChMT0NBTEVfSURBWUxaRVJPKQpMT0NWQUwoTE9DQUxFX0lNT05MWkVSTykKTE9DVkFMKExPQ0FMRV9TMTE1OSkKTE9DVkFMKExPQ0FMRV9TMjM1OSkKTE9DVkFMKExPQ0FMRV9JQ0FMRU5EQVJUWVBFKQpMT0NWQUwoTE9DQUxFX0lPUFRJT05BTENBTEVOREFSKQpMT0NWQUwoTE9DQUxFX0lGSVJTVERBWU9GV0VFSykKTE9DVkFMKExPQ0FMRV9JRklSU1RXRUVLT0ZZRUFSKQoqLwpMT0NWQUwoTE9DQUxFX1NEQVlOQU1FMSwibWFhbmFudGFpIikKTE9DVkFMKExPQ0FMRV9TREFZTkFNRTIsInRpaXN0YWkiKQpMT0NWQUwoTE9DQUxFX1NEQVlOQU1FMywia2Vza2l2aWlra28iKQpMT0NWQUwoTE9DQUxFX1NEQVlOQU1FNCwidG9yc3RhaSIpCkxPQ1ZBTChMT0NBTEVfU0RBWU5BTUU1LCJwZXJqYW50YWkiKQpMT0NWQUwoTE9DQUxFX1NEQVlOQU1FNiwibGF1YW50YWkiKQpMT0NWQUwoTE9DQUxFX1NEQVlOQU1FNywic3VubnVudGFpIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWREFZTkFNRTEsIk1hIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWREFZTkFNRTIsIlRpIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWREFZTkFNRTMsIktlIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWREFZTkFNRTQsIlRvIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWREFZTkFNRTUsIlBlIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWREFZTkFNRTYsIkxhIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWREFZTkFNRTcsIlN1IikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FMSwidGFtbWlrdXUiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUUyLCJoZWxtaWt1dSIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTMsIm1hYWxpc2t1dSIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTQsImh1aHRpa3V1IikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FNSwidG91a29rdXUiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUU2LCJrZXPka3V1IikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FNywiaGVpbuRrdXUiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUU4LCJlbG9rdXUiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUU5LCJzeXlza3V1IikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FMTAsImxva2FrdXUiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUUxMSwibWFycmFza3V1IikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FMTIsImpvdWx1a3V1IikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FMTMsIiIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEsInRhbW1pIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMiwiaGVsbWkiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUUzLCJtYWFsaXMiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUU0LCJodWh0aSIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTUsInRvdWtvIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNiwia2Vz5CIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTcsImhlaW7kIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FOCwiZWxvIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FOSwic3l5cyIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEwLCJsb2thIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTEsIm1hcnJhcyIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEyLCJqb3VsdSIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEzLCIiKQovKgpMT0NWQUwoTE9DQUxFX1NQT1NJVElWRVNJR04pCkxPQ1ZBTChMT0NBTEVfU05FR0FUSVZFU0lHTikKTE9DVkFMKExPQ0FMRV9JUE9TU0lHTlBPU04pCkxPQ1ZBTChMT0NBTEVfSU5FR1NJR05QT1NOKQpMT0NWQUwoTE9DQUxFX0lQT1NTWU1QUkVDRURFUykKTE9DVkFMKExPQ0FMRV9JUE9TU0VQQllTUEFDRSkKTE9DVkFMKExPQ0FMRV9JTkVHU1lNUFJFQ0VERVMpCkxPQ1ZBTChMT0NBTEVfSU5FR1NFUEJZU1BBQ0UpCiovCiAgICBicmVhazsgIC8qIExBTkcoRmkpICovCgogICAgY2FzZSBMQU5HX0l0OgpMT0NWQUwoTE9DQUxFX0lMQU5HVUFHRSwiOSIpCkxPQ1ZBTChMT0NBTEVfU0xBTkdVQUdFLCJJdGFsaWFubyIpCkxPQ1ZBTChMT0NBTEVfU0VOR0xBTkdVQUdFLCJJdGFsaWFuIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTEFOR05BTUUsIml0YSIpCkxPQ1ZBTChMT0NBTEVfU05BVElWRUxBTkdOQU1FLCJJdGFsaWFubyIpCkxPQ1ZBTChMT0NBTEVfSUNPVU5UUlksIjM5IikKTE9DVkFMKExPQ0FMRV9TQ09VTlRSWSwiSXRhbGlhIikKTE9DVkFMKExPQ0FMRV9TRU5HQ09VTlRSWSwiSXRhbHkiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZDVFJZTkFNRSwiSXQiKQpMT0NWQUwoTE9DQUxFX1NOQVRJVkVDVFJZTkFNRSwiSXRhbGlhIikKTE9DVkFMKExPQ0FMRV9JREVGQVVMVExBTkdVQUdFLCI5IikKTE9DVkFMKExPQ0FMRV9JREVGQVVMVENPVU5UUlksIjM5IikKLyogRHVubm8KTE9DVkFMKExPQ0FMRV9JREVGQVVMVENPREVQQUdFKQpMT0NWQUwoTE9DQUxFX0lERUZBVUxUQU5TSUNPREVQQUdFKQoqLwpMT0NWQUwoTE9DQUxFX1NMSVNULCI7IikKTE9DVkFMKExPQ0FMRV9JTUVBU1VSRSwiMCIpCkxPQ1ZBTChMT0NBTEVfU0RFQ0lNQUwsIiwiKQpMT0NWQUwoTE9DQUxFX1NUSE9VU0FORCwiLiIpCi8qCkxPQ1ZBTChMT0NBTEVfU0dST1VQSU5HKQoqLwpMT0NWQUwoTE9DQUxFX0lESUdJVFMsIjIiKQpMT0NWQUwoTE9DQUxFX0lMWkVSTywiMSIpCi8qCkxPQ1ZBTChMT0NBTEVfSU5FR05VTUJFUikKSXMgdGhpcyAiMDEyMzQ1Njc4OSIgPz8KTE9DVkFMKExPQ0FMRV9TTkFUSVZFRElHSVRTKQoqLwpMT0NWQUwoTE9DQUxFX1NDVVJSRU5DWSwiTGl0LiIpCi8qCkxPQ1ZBTChMT0NBTEVfU0lOVExTWU1CT0wpCkxPQ1ZBTChMT0NBTEVfU01PTkRFQ0lNQUxTRVApCkxPQ1ZBTChMT0NBTEVfU01PTlRIT1VTQU5EU0VQKQpMT0NWQUwoTE9DQUxFX1NNT05HUk9VUElORykKKi8KTE9DVkFMKExPQ0FMRV9JQ1VSUkRJR0lUUywiMiIpCi8qCkxPQ1ZBTChMT0NBTEVfSUlOVExDVVJSRElHSVRTKQoqLwpMT0NWQUwoTE9DQUxFX0lDVVJSRU5DWSwiMyIpCkxPQ1ZBTChMT0NBTEVfSU5FR0NVUlIsIjgiKQpMT0NWQUwoTE9DQUxFX1NEQVRFLCIuIikKTE9DVkFMKExPQ0FMRV9TVElNRSwiOiIpCkxPQ1ZBTChMT0NBTEVfU1NIT1JUREFURSwiZGQuTU0ueXl5eSIpCkxPQ1ZBTChMT0NBTEVfU0xPTkdEQVRFLCJkZGQsIGQuIE1NTU0geXl5eSIpCi8qCkxPQ1ZBTChMT0NBTEVfU1RJTUVGT1JNQVQpCiovCkxPQ1ZBTChMT0NBTEVfSURBVEUsIjEiKQovKgpMT0NWQUwoTE9DQUxFX0lMREFURSkKKi8KTE9DVkFMKExPQ0FMRV9JVElNRSwiMSIpCi8qCkxPQ1ZBTChMT0NBTEVfSVRJTUVNQVJLUE9TTikKTE9DVkFMKExPQ0FMRV9JQ0VOVFVSWSkKKi8KTE9DVkFMKExPQ0FMRV9JVExaRVJPLCIxIikKLyoKTE9DVkFMKExPQ0FMRV9JREFZTFpFUk8pCkxPQ1ZBTChMT0NBTEVfSU1PTkxaRVJPKQpMT0NWQUwoTE9DQUxFX1MxMTU5KQpMT0NWQUwoTE9DQUxFX1MyMzU5KQpMT0NWQUwoTE9DQUxFX0lDQUxFTkRBUlRZUEUpCkxPQ1ZBTChMT0NBTEVfSU9QVElPTkFMQ0FMRU5EQVIpCkxPQ1ZBTChMT0NBTEVfSUZJUlNUREFZT0ZXRUVLKQpMT0NWQUwoTE9DQUxFX0lGSVJTVFdFRUtPRllFQVIpCiovCkxPQ1ZBTChMT0NBTEVfU0RBWU5BTUUxLCJMdW5lZGknIikKTE9DVkFMKExPQ0FMRV9TREFZTkFNRTIsIk1hcnRlZGknIikKTE9DVkFMKExPQ0FMRV9TREFZTkFNRTMsIk1lcmNvbGVkaSciKQpMT0NWQUwoTE9DQUxFX1NEQVlOQU1FNCwiR2lvdmVkaSciKQpMT0NWQUwoTE9DQUxFX1NEQVlOQU1FNSwiVmVuZXJkaSciKQpMT0NWQUwoTE9DQUxFX1NEQVlOQU1FNiwiU2FiYXRvIikKTE9DVkFMKExPQ0FMRV9TREFZTkFNRTcsIkRvbWVuaWNhIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWREFZTkFNRTEsIkx1IikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWREFZTkFNRTIsIk1hIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWREFZTkFNRTMsIk1lIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWREFZTkFNRTQsIkdpIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWREFZTkFNRTUsIlZlIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWREFZTkFNRTYsIlNhIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWREFZTkFNRTcsIkRvIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FMSwiR2VubmFpbyIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTIsIkZlYmJyYWlvIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FMywiTWFyem8iKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUU0LCJBcHJpbGUiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUU1LCJNYWdnaW8iKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUU2LCJHaXVnbm8iKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUU3LCJMdWdsaW8iKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUU4LCJBZ29zdG8iKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUU5LCJTZXR0ZW1icmUiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUUxMCwiT3R0b2JyZSIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTExLCJOb3ZlbWJyZSIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTEyLCJEaWNlbWJyZSIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTEzLCIiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxLCJHZW4iKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUUyLCJGZWIiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUUzLCJNYXIiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUU0LCJBcHIiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUU1LCJNYWciKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUU2LCJHaXUiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUU3LCJMdWciKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUU4LCJBZ28iKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUU5LCJTZXQiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMCwiT3R0IikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTEsIk5vdiIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEyLCJEaWMiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMywiIikKLyoKTE9DVkFMKExPQ0FMRV9TUE9TSVRJVkVTSUdOKQpMT0NWQUwoTE9DQUxFX1NORUdBVElWRVNJR04pCkxPQ1ZBTChMT0NBTEVfSVBPU1NJR05QT1NOKQpMT0NWQUwoTE9DQUxFX0lORUdTSUdOUE9TTikKTE9DVkFMKExPQ0FMRV9JUE9TU1lNUFJFQ0VERVMpCkxPQ1ZBTChMT0NBTEVfSVBPU1NFUEJZU1BBQ0UpCkxPQ1ZBTChMT0NBTEVfSU5FR1NZTVBSRUNFREVTKQpMT0NWQUwoTE9DQUxFX0lORUdTRVBCWVNQQUNFKQoqLwogICAgYnJlYWs7ICAvKiBMQU5HKEl0KSAqLwoKICAgIGNhc2UgMHgwNDA5OgpMT0NWQUwoTE9DQUxFX0lMQU5HVUFHRSwgIjA0MDkiKQpMT0NWQUwoTE9DQUxFX1NMQU5HVUFHRSwgIkVuZ2xpc2ggKFVuaXRlZCBTdGF0ZXMpIikKTE9DVkFMKExPQ0FMRV9TRU5HTEFOR1VBR0UsICJFbmdsaXNoIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTEFOR05BTUUsICJFTlUiKQpMT0NWQUwoTE9DQUxFX1NOQVRJVkVMQU5HTkFNRSwgIkVuZ2xpc2giKQpMT0NWQUwoTE9DQUxFX0lDT1VOVFJZLCAiMSIpCkxPQ1ZBTChMT0NBTEVfU0NPVU5UUlksICJVbml0ZWQgU3RhdGVzIikKTE9DVkFMKExPQ0FMRV9TRU5HQ09VTlRSWSwgIlVuaXRlZCBTdGF0ZXMiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZDVFJZTkFNRSwgIlVTQSIpCkxPQ1ZBTChMT0NBTEVfU05BVElWRUNUUllOQU1FLCAiVW5pdGVkIFN0YXRlcyIpCkxPQ1ZBTChMT0NBTEVfSURFRkFVTFRMQU5HVUFHRSwgIjA0MDkiKQpMT0NWQUwoTE9DQUxFX0lERUZBVUxUQ09VTlRSWSwgIjEiKQpMT0NWQUwoTE9DQUxFX0lERUZBVUxUQ09ERVBBR0UsICI0MzciKQpMT0NWQUwoTE9DQUxFX0lERUZBVUxUQU5TSUNPREVQQUdFLCAiMTI1MiIpCkxPQ1ZBTChMT0NBTEVfU0xJU1QsICIsIikKTE9DVkFMKExPQ0FMRV9JTUVBU1VSRSwgIjEiKQpMT0NWQUwoTE9DQUxFX1NERUNJTUFMLCAiLiIpCkxPQ1ZBTChMT0NBTEVfU1RIT1VTQU5ELCAiLCIpCkxPQ1ZBTChMT0NBTEVfU0dST1VQSU5HLCAiMzswIikKTE9DVkFMKExPQ0FMRV9JRElHSVRTLCAiMiIpCkxPQ1ZBTChMT0NBTEVfSUxaRVJPLCAiMSIpCkxPQ1ZBTChMT0NBTEVfSU5FR05VTUJFUiwgIjEiKQpMT0NWQUwoTE9DQUxFX1NOQVRJVkVESUdJVFMsICIwMTIzNDU2Nzg5IikKTE9DVkFMKExPQ0FMRV9TQ1VSUkVOQ1ksICIkIikKTE9DVkFMKExPQ0FMRV9TSU5UTFNZTUJPTCwgIlVTRCIpCkxPQ1ZBTChMT0NBTEVfU01PTkRFQ0lNQUxTRVAsICIuIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhPVVNBTkRTRVAsICIsIikKTE9DVkFMKExPQ0FMRV9TTU9OR1JPVVBJTkcsICIzOzAiKQpMT0NWQUwoTE9DQUxFX0lDVVJSRElHSVRTLCAiMiIpCkxPQ1ZBTChMT0NBTEVfSUlOVExDVVJSRElHSVRTLCAiMiIpCkxPQ1ZBTChMT0NBTEVfSUNVUlJFTkNZLCAiMCIpCkxPQ1ZBTChMT0NBTEVfSU5FR0NVUlIsICIwIikKTE9DVkFMKExPQ0FMRV9TREFURSwgIi8iKQpMT0NWQUwoTE9DQUxFX1NUSU1FLCAiOiIpCkxPQ1ZBTChMT0NBTEVfU1NIT1JUREFURSwgIk0vZC95eSIpCkxPQ1ZBTChMT0NBTEVfU0xPTkdEQVRFLCAiZGRkZCwgTU1NTSBkZCwgeXl5eSIpCkxPQ1ZBTChMT0NBTEVfU1RJTUVGT1JNQVQsICJoOm1tOnNzIHR0IikKTE9DVkFMKExPQ0FMRV9JREFURSwgIjAiKQpMT0NWQUwoTE9DQUxFX0lMREFURSwgIjAiKQpMT0NWQUwoTE9DQUxFX0lUSU1FLCAiMCIpCkxPQ1ZBTChMT0NBTEVfSVRJTUVNQVJLUE9TTiwgIjAiKQpMT0NWQUwoTE9DQUxFX0lDRU5UVVJZLCAiMCIpCkxPQ1ZBTChMT0NBTEVfSVRMWkVSTywgIjAiKQpMT0NWQUwoTE9DQUxFX0lEQVlMWkVSTywgIjAiKQpMT0NWQUwoTE9DQUxFX0lNT05MWkVSTywgIjAiKQpMT0NWQUwoTE9DQUxFX1MxMTU5LCAiQU0iKQpMT0NWQUwoTE9DQUxFX1MyMzU5LCAiUE0iKQpMT0NWQUwoTE9DQUxFX0lDQUxFTkRBUlRZUEUsICIxIikKTE9DVkFMKExPQ0FMRV9JT1BUSU9OQUxDQUxFTkRBUiwgIjAiKQpMT0NWQUwoTE9DQUxFX0lGSVJTVERBWU9GV0VFSywgIjYiKQpMT0NWQUwoTE9DQUxFX0lGSVJTVFdFRUtPRllFQVIsICIwIikKTE9DVkFMKExPQ0FMRV9TREFZTkFNRTEsICJNb25kYXkiKQpMT0NWQUwoTE9DQUxFX1NEQVlOQU1FMiwgIlR1ZXNkYXkiKQpMT0NWQUwoTE9DQUxFX1NEQVlOQU1FMywgIldlZG5lc2RheSIpCkxPQ1ZBTChMT0NBTEVfU0RBWU5BTUU0LCAiVGh1cnNkYXkiKQpMT0NWQUwoTE9DQUxFX1NEQVlOQU1FNSwgIkZyaWRheSIpCkxPQ1ZBTChMT0NBTEVfU0RBWU5BTUU2LCAiU2F0dXJkYXkiKQpMT0NWQUwoTE9DQUxFX1NEQVlOQU1FNywgIlN1bmRheSIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVkRBWU5BTUUxLCAiTW9uIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWREFZTkFNRTIsICJUdWUiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZEQVlOQU1FMywgIldlZCIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVkRBWU5BTUU0LCAiVGh1IikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWREFZTkFNRTUsICJGcmkiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZEQVlOQU1FNiwgIlNhdCIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVkRBWU5BTUU3LCAiU3VuIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FMSwgIkphbnVhcnkiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUUyLCAiRmVicnVhcnkiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUUzLCAiTWFyY2giKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUU0LCAiQXByaWwiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUU1LCAiTWF5IikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FNiwgIkp1bmUiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUU3LCAiSnVseSIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTgsICJBdWd1c3QiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUU5LCAiU2VwdGVtYmVyIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FMTAsICJPY3RvYmVyIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FMTEsICJOb3ZlbWJlciIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTEyLCAiRGVjZW1iZXIiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUUxMywgIiIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEsICJKYW4iKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUUyLCAiRmViIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMywgIk1hciIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTQsICJBcHIiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUU1LCAiTWF5IikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNiwgIkp1biIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTcsICJKdWwiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUU4LCAiQXVnIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FOSwgIlNlcCIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEwLCAiT2N0IikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTEsICJOb3YiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMiwgIkRlYyIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEzLCAiIikKTE9DVkFMKExPQ0FMRV9TUE9TSVRJVkVTSUdOLCAiIikKTE9DVkFMKExPQ0FMRV9TTkVHQVRJVkVTSUdOLCAiLSIpCkxPQ1ZBTChMT0NBTEVfSVBPU1NJR05QT1NOLCAiMyIpCkxPQ1ZBTChMT0NBTEVfSU5FR1NJR05QT1NOLCAiMCIpCkxPQ1ZBTChMT0NBTEVfSVBPU1NZTVBSRUNFREVTLCAiMSIpCkxPQ1ZBTChMT0NBTEVfSVBPU1NFUEJZU1BBQ0UsICIwIikKTE9DVkFMKExPQ0FMRV9JTkVHU1lNUFJFQ0VERVMsICIxIikKTE9DVkFMKExPQ0FMRV9JTkVHU0VQQllTUEFDRSwgIjAiKQogICAgYnJlYWs7IC8qIExBTkcoMHgwNDA5KSAoVS5TLiBFbmdsaXNoKSAqLwoKICAgIGNhc2UgMHgwODA5OgpMT0NWQUwoTE9DQUxFX0lMQU5HVUFHRSwgIjA4MDkiKQpMT0NWQUwoTE9DQUxFX1NMQU5HVUFHRSwgIkVuZ2xpc2ggKFVuaXRlZCBLaW5nZG9tKSIpCkxPQ1ZBTChMT0NBTEVfU0VOR0xBTkdVQUdFLCAiRW5nbGlzaCIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVkxBTkdOQU1FLCAiRU5HIikKTE9DVkFMKExPQ0FMRV9TTkFUSVZFTEFOR05BTUUsICJFbmdsaXNoIikKTE9DVkFMKExPQ0FMRV9JQ09VTlRSWSwgIjQ0IikKTE9DVkFMKExPQ0FMRV9TQ09VTlRSWSwgIlVuaXRlZCBLaW5nZG9tIikKTE9DVkFMKExPQ0FMRV9TRU5HQ09VTlRSWSwgIlVuaXRlZCBLaW5nZG9tIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWQ1RSWU5BTUUsICJHQlIiKQpMT0NWQUwoTE9DQUxFX1NOQVRJVkVDVFJZTkFNRSwgIlVuaXRlZCBLaW5nZG9tIikKTE9DVkFMKExPQ0FMRV9JREVGQVVMVExBTkdVQUdFLCAiMDgwOSIpCkxPQ1ZBTChMT0NBTEVfSURFRkFVTFRDT1VOVFJZLCAiNDQiKQpMT0NWQUwoTE9DQUxFX0lERUZBVUxUQ09ERVBBR0UsICI4NTAiKQpMT0NWQUwoTE9DQUxFX0lERUZBVUxUQU5TSUNPREVQQUdFLCAiMTI1MiIpCkxPQ1ZBTChMT0NBTEVfU0xJU1QsICIsIikKTE9DVkFMKExPQ0FMRV9JTUVBU1VSRSwgIjAiKQpMT0NWQUwoTE9DQUxFX1NERUNJTUFMLCAiLiIpCkxPQ1ZBTChMT0NBTEVfU1RIT1VTQU5ELCAiLCIpCkxPQ1ZBTChMT0NBTEVfU0dST1VQSU5HLCAiMzswIikKTE9DVkFMKExPQ0FMRV9JRElHSVRTLCAiMiIpCkxPQ1ZBTChMT0NBTEVfSUxaRVJPLCAiMSIpCkxPQ1ZBTChMT0NBTEVfSU5FR05VTUJFUiwgIjEiKQpMT0NWQUwoTE9DQUxFX1NOQVRJVkVESUdJVFMsICIwMTIzNDU2Nzg5IikKTE9DVkFMKExPQ0FMRV9TQ1VSUkVOQ1ksICKjIikKTE9DVkFMKExPQ0FMRV9TSU5UTFNZTUJPTCwgIkdCUCIpCkxPQ1ZBTChMT0NBTEVfU01PTkRFQ0lNQUxTRVAsICIuIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhPVVNBTkRTRVAsICIsIikKTE9DVkFMKExPQ0FMRV9TTU9OR1JPVVBJTkcsICIzOzAiKQpMT0NWQUwoTE9DQUxFX0lDVVJSRElHSVRTLCAiMiIpCkxPQ1ZBTChMT0NBTEVfSUlOVExDVVJSRElHSVRTLCAiMiIpCkxPQ1ZBTChMT0NBTEVfSUNVUlJFTkNZLCAiMCIpCkxPQ1ZBTChMT0NBTEVfSU5FR0NVUlIsICIxIikKTE9DVkFMKExPQ0FMRV9TREFURSwgIi8iKQpMT0NWQUwoTE9DQUxFX1NUSU1FLCAiOiIpCkxPQ1ZBTChMT0NBTEVfU1NIT1JUREFURSwgImRkL01NL3l5IikKTE9DVkFMKExPQ0FMRV9TTE9OR0RBVEUsICJkZCBNTU1NIHl5eXkiKQpMT0NWQUwoTE9DQUxFX1NUSU1FRk9STUFULCAiSEg6bW06c3MiKQpMT0NWQUwoTE9DQUxFX0lEQVRFLCAiMSIpCkxPQ1ZBTChMT0NBTEVfSUxEQVRFLCAiMSIpCkxPQ1ZBTChMT0NBTEVfSVRJTUUsICIxIikKTE9DVkFMKExPQ0FMRV9JVElNRU1BUktQT1NOLCAiMCIpCkxPQ1ZBTChMT0NBTEVfSUNFTlRVUlksICIwIikKTE9DVkFMKExPQ0FMRV9JVExaRVJPLCAiMSIpCkxPQ1ZBTChMT0NBTEVfSURBWUxaRVJPLCAiMSIpCkxPQ1ZBTChMT0NBTEVfSU1PTkxaRVJPLCAiMSIpCkxPQ1ZBTChMT0NBTEVfUzExNTksICIiKQpMT0NWQUwoTE9DQUxFX1MyMzU5LCAiIikKTE9DVkFMKExPQ0FMRV9JQ0FMRU5EQVJUWVBFLCAiMSIpCkxPQ1ZBTChMT0NBTEVfSU9QVElPTkFMQ0FMRU5EQVIsICIwIikKTE9DVkFMKExPQ0FMRV9JRklSU1REQVlPRldFRUssICIwIikKTE9DVkFMKExPQ0FMRV9JRklSU1RXRUVLT0ZZRUFSLCAiMCIpCkxPQ1ZBTChMT0NBTEVfU0RBWU5BTUUxLCAiTW9uZGF5IikKTE9DVkFMKExPQ0FMRV9TREFZTkFNRTIsICJUdWVzZGF5IikKTE9DVkFMKExPQ0FMRV9TREFZTkFNRTMsICJXZWRuZXNkYXkiKQpMT0NWQUwoTE9DQUxFX1NEQVlOQU1FNCwgIlRodXJzZGF5IikKTE9DVkFMKExPQ0FMRV9TREFZTkFNRTUsICJGcmlkYXkiKQpMT0NWQUwoTE9DQUxFX1NEQVlOQU1FNiwgIlNhdHVyZGF5IikKTE9DVkFMKExPQ0FMRV9TREFZTkFNRTcsICJTdW5kYXkiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZEQVlOQU1FMSwgIk1vbiIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVkRBWU5BTUUyLCAiVHVlIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWREFZTkFNRTMsICJXZWQiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZEQVlOQU1FNCwgIlRodSIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVkRBWU5BTUU1LCAiRnJpIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWREFZTkFNRTYsICJTYXQiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZEQVlOQU1FNywgIlN1biIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTEsICJKYW51YXJ5IikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FMiwgIkZlYnJ1YXJ5IikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FMywgIk1hcmNoIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FNCwgIkFwcmlsIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FNSwgIk1heSIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTYsICJKdW5lIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FNywgIkp1bHkiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUU4LCAiQXVndXN0IikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FOSwgIlNlcHRlbWJlciIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTEwLCAiT2N0b2JlciIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTExLCAiTm92ZW1iZXIiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUUxMiwgIkRlY2VtYmVyIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FMTMsICIiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxLCAiSmFuIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMiwgIkZlYiIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTMsICJNYXIiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUU0LCAiQXByIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNSwgIk1heSIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTYsICJKdW4iKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUU3LCAiSnVsIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FOCwgIkF1ZyIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTksICJTZXAiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMCwgIk9jdCIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTExLCAiTm92IikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTIsICJEZWMiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMywgIiIpCkxPQ1ZBTChMT0NBTEVfU1BPU0lUSVZFU0lHTiwgIiIpCkxPQ1ZBTChMT0NBTEVfU05FR0FUSVZFU0lHTiwgIi0iKQpMT0NWQUwoTE9DQUxFX0lQT1NTSUdOUE9TTiwgIjMiKQpMT0NWQUwoTE9DQUxFX0lORUdTSUdOUE9TTiwgIjMiKQpMT0NWQUwoTE9DQUxFX0lQT1NTWU1QUkVDRURFUywgIjEiKQpMT0NWQUwoTE9DQUxFX0lQT1NTRVBCWVNQQUNFLCAiMCIpCkxPQ1ZBTChMT0NBTEVfSU5FR1NZTVBSRUNFREVTLCAiMSIpCkxPQ1ZBTChMT0NBTEVfSU5FR1NFUEJZU1BBQ0UsICIwIikKICAgIGJyZWFrOyAvKiBMQU5HKDB4MDgwOSkgKFUuSy4gRW5nbGlzaCkgKi8KCi8qSW5zZXJ0IG90aGVyIGxhbmd1YWdlcyBoZXJlKi8KCiAgICBkZWZhdWx0OgoJYnJlYWs7CiAgICB9ICAvKiBzd2l0Y2ggKi8KCglpZighcmV0TGVuKQoJewoJCWlmKCFyZXRTdHJpbmcpZnByaW50ZihzdGRlcnIsIlVua293biBMQyB0eXBlICVsWFxuIixMQ1R5cGUpOwoJCWVsc2UgZnByaW50ZihzdGRlcnIsIiclcycgbm90IHN1cHBvcnRlZCBmb3IgeW91ciBsYW5ndWFnZS5cbiIsCgkJCXJldFN0cmluZyk7CgkJcmV0dXJuIDA7Cgl9CgoJaWYocmV0TGVuPmxlbilyZXRMZW49bGVuOwoJbHN0cmNweW4zMkEoYnVmLHJldFN0cmluZyxsZW4pOwoJcmV0dXJuIHJldExlbjsKfQoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqICAgICAgICAgR2V0TG9jYWxlSW5mbzMyVyAgICAgICAgICAgICAoS0VSTkVMMzIuMjMwKQogKiBJcyB0aGUgbGFzdCBwYXJhbWV0ZXIgcmVhbGx5IFdPUkQgZm9yIFdpbjE2PwogKi8KSU5UMzIgR2V0TG9jYWxlSW5mbzMyVyhMQ0lEIGxjaWQsTENUWVBFIExDVHlwZSxMUFdTVFIgd2J1ZixJTlQzMiBsZW4pCnsKCWludCBpOwoJTFBTVFIgYWJ1ZiA9IChMUFNUUikgd2J1ZjsKCUlOVDMyIG4gPSBHZXRMb2NhbGVJbmZvQShsY2lkLCBMQ1R5cGUsIGFidWYsIGxlbik7Cglmb3IgKGkgPSBuOyBpID4gMDsgLS1pKSB7CgkJd2J1ZltpXSA9IGFidWZbaV07Cgl9CglyZXR1cm4gbjsKfQoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqICAgICAgICAgICBDb21wYXJlU3RyaW5nMTYgICAgICAgKE9MRTJOTFMuOCkKICovClVJTlQxNiBDb21wYXJlU3RyaW5nMTYoRFdPUkQgbGNpZCxEV09SRCBmZHdTdHlsZSwKCUxQQ1NUUiBzMSxEV09SRCBsMSxMUENTVFIgczIsRFdPUkQgbDIpCnsKCXJldHVybiAoVUlOVDE2KUNvbXBhcmVTdHJpbmczMkEobGNpZCxmZHdTdHlsZSxzMSxsMSxzMixsMik7Cn0KCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiAgICAgICAgICAgQ29tcGFyZVN0cmluZzMyQSAgIChLRVJORUwzMi4yOSkKICogVGhpcyBpbXBsZW1lbnRhdGlvbiBpZ25vcmVzIHRoZSBsb2NhbGUKICogRklYTUUKICovClVJTlQzMiBDb21wYXJlU3RyaW5nMzJBKERXT1JEIGxjaWQsIERXT1JEIGZkd1N0eWxlLCAKCUxQQ1NUUiBzMSwgRFdPUkQgbDEsIExQQ1NUUiBzMixEV09SRCBsMikKewoJaW50IGxlbixyZXQ7CglpZihmZHdTdHlsZSAmIE5PUk1fSUdOT1JFTk9OU1BBQ0UpCgl7CgkJZnByaW50ZihzdGRuaW1wLCAiQ29tcGFyZVN0cmluZ0E6IElHTk9SRU5PTlNQQUNFIG5vdCBzdXBwcnRlZFxuIik7Cgl9CglpZihmZHdTdHlsZSAmIE5PUk1fSUdOT1JFU1lNQk9MUykKCQlmcHJpbnRmKHN0ZG5pbXAsICJDb21wYXJlU3RyaW5nQTogSUdOT1JFU1lNQk9MUyBub3Qgc3VwcG9ydGVkXG4iKTsKCS8qIElzIHN0cmNtcCBkZWZhdWx0aW5nIHRvIHN0cmluZyBzb3J0IG9yIHRvIHdvcmQgc29ydD8/ICovCgkvKiBGSVhNRTogSGFuZGxlIE5PUk1fU1RSSU5HU09SVCAqLwoJbDEgPSAobDE9PS0xKT9zdHJsZW4oczEpOmwxOwoJbDIgPSAobDI9PS0xKT9zdHJsZW4oczIpOmwyOwoJbGVuID0gbDE8bDIgPyBsMTpsMjsKCXJldCA9IChmZHdTdHlsZSAmIE5PUk1fSUdOT1JFQ0FTRSkgPwoJCWxzdHJuY21waTMyQShzMSxzMixsZW4pCTogbHN0cm5jbXAzMkEoczEsczIsbGVuKTsKCS8qIG5vdCBlcXVhbCwgcmV0dXJuIDEgb3IgMyAqLwoJaWYocmV0IT0wKXJldHVybiByZXQrMjsKCS8qIHNhbWUgbGVuLCByZXR1cm4gMiAqLwoJaWYobDE9PWwyKXJldHVybiAyOwoJLyogdGhlIGxvbmdlciBvbmUgaXMgbGV4aWNhbGx5IGdyZWF0ZXIgKi8KCXJldHVybiAobDE8bDIpPyAxIDogMzsKfQoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqICAgICAgICAgICBDb21wYXJlU3RyaW5nMzJXICAgICAgIChLRVJORUwzMi4zMCkKICogVGhpcyBpbXBsZW1lbnRhdGlvbiBpZ25vcmVzIHRoZSBsb2NhbGUKICogRklYTUUKICovClVJTlQzMiBDb21wYXJlU3RyaW5nMzJXKERXT1JEIGxjaWQsIERXT1JEIGZkd1N0eWxlLCAKCUxQQ1dTVFIgczEsIERXT1JEIGwxLCBMUENXU1RSIHMyLERXT1JEIGwyKQp7CglpbnQgbGVuLHJldDsKCWlmKGZkd1N0eWxlICYgTk9STV9JR05PUkVOT05TUEFDRSkKCQlmcHJpbnRmKHN0ZG5pbXAsIkNvbXBhcmVTdHJpbmdXOklHTk9SRU5PTlNQQUNFIG5vdCBzdXBwcnRlZFxuIik7CglpZihmZHdTdHlsZSAmIE5PUk1fSUdOT1JFU1lNQk9MUykKCQlmcHJpbnRmKHN0ZG5pbXAsIkNvbXBhcmVTdHJpbmdXOklHTk9SRVNZTUJPTFMgbm90IHN1cHBvcnRlZFxuIik7CgoJLyogSXMgc3RyY21wIGRlZmF1bHRpbmcgdG8gc3RyaW5nIHNvcnQgb3IgdG8gd29yZCBzb3J0Pz8gKi8KCS8qIEZJWE1FOiBIYW5kbGUgTk9STV9TVFJJTkdTT1JUICovCglsMSA9IChsMT09LTEpP2xzdHJsZW4zMlcoczEpOmwxOwoJbDIgPSAobDI9PS0xKT9sc3RybGVuMzJXKHMyKTpsMjsKCWxlbiA9IGwxPGwyID8gbDE6bDI7CglyZXQgPSAoZmR3U3R5bGUgJiBOT1JNX0lHTk9SRUNBU0UpID8KCQlsc3RybmNtcGkzMlcoczEsczIsbGVuKQk6IGxzdHJuY21wMzJXKHMxLHMyLGxlbik7CgkvKiBub3QgZXF1YWwsIHJldHVybiAxIG9yIDMgKi8KCWlmKHJldCE9MCkgcmV0dXJuIHJldCsyOwoJLyogc2FtZSBsZW4sIHJldHVybiAyICovCglpZihsMT09bDIpIHJldHVybiAyOwoJLyogdGhlIGxvbmdlciBvbmUgaXMgbGV4aWNhbGx5IGdyZWF0ZXIgKi8KCXJldHVybiAobDE8bDIpPyAxIDogMzsKfQoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqICAgICAgICAgICBTZXRMb2NhbEluZm9BICAgICAgIChLRVJORUwzMi40OTkpCiAqLwpCT09MIFNldExvY2FsZUluZm9BKERXT1JEIGxjaWQsIERXT1JEIGxjdHlwZSwgTFBDU1RSIGRhdGEpIHsKCWZwcmludGYoc3RkbmltcCwiU2V0TG9jYWxlSW5mb0EoJWxkLCVsZCwlcylcbiIsbGNpZCxsY3R5cGUsZGF0YSk7CglyZXR1cm4gVFJVRTsKfQoKQk9PTCBJc1ZhbGlkTG9jYWxlKERXT1JEIGxjaWQsRFdPUkQgZmxhZ3MpIHsKCWZwcmludGYoc3RkbmltcCwiSXNWYWxpZExvY2FsZSglbGQsJWxkKVxuIixsY2lkLGZsYWdzKTsKCXJldHVybiBUUlVFOwp9Cg==