Name: series-workflownrn55 Phase: Succeeded StartedAt: 2026-09-03 00:30:50 +0000 UTC FinishedAt: 2026-09-03 04:17:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflownrn55[0] Phase: Succeeded StartedAt: 2026-09-03 00:30:50 +0000 UTC FinishedAt: 2026-09-03 00:34:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflownrn55[0].run-triage Phase: Succeeded StartedAt: 2026-09-03 00:30:50 +0000 UTC FinishedAt: 2026-09-03 00:34:47 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "178b3d97bf1f15f598ea7cc615a40c115e528e1c", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DAMON", "DAMON_SYSFS", "DAMON_PADDR", "DAMON_VADDR", "SYSFS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "178b3d97bf1f15f598ea7cc615a40c115e528e1c", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DAMON", "DAMON_SYSFS", "DAMON_PADDR", "DAMON_VADDR", "SYSFS" ], "series_id": "dd257626-28f9-4c15-a268-cf8c2e5068bf" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "damon_start", "damon_commit_ctx", "damon_sysfs_add_schemes", "damon_set_schemes", "damon_new_scheme", "damon_add_scheme" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDAwOjMzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RBTU9OJiMzNDssCiAgICAmIzM0O0RBTU9OX1NZU0ZTJiMzNDssCiAgICAmIzM0O0RBTU9OX1BBRERSJiMzNDssCiAgICAmIzM0O0RBTU9OX1ZBRERSJiMzNDssCiAgICAmIzM0O1NZU0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZGFtb25fc3RhcnQmIzM0OywKICAgICYjMzQ7ZGFtb25fY29tbWl0X2N0eCYjMzQ7LAogICAgJiMzNDtkYW1vbl9zeXNmc19hZGRfc2NoZW1lcyYjMzQ7LAogICAgJiMzNDtkYW1vbl9zZXRfc2NoZW1lcyYjMzQ7LAogICAgJiMzNDtkYW1vbl9uZXdfc2NoZW1lJiMzNDssCiAgICAmIzM0O2RhbW9uX2FkZF9zY2hlbWUmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBxdW90YSBjaGVja2luZyBsb2dpYyBpbiBEQU1PTiAobW0vZGFtb24vY29yZS5jKSBieSBhZGRpbmcgZWFybHkgcmV0dXJuL2NvbnRpbnVlIGNoZWNrcyB3aGVuIHF1b3RhLVx1MDAzZWNoYXJnZWRfc3ogaXMgMCBpbiBkYW1vc19xdW90YV9pc19mdWxsKCkgYW5kIHdoZW4gcXVvdGEtXHUwMDNlZXN6IGlzIDAgaW4gZGFtb25fZG9fYXBwbHlfc2NoZW1lcygpLiBUaGVzZSBjaGFuZ2VzIHB1cmVseSBhZmZlY3QgaW50ZXJuYWwgY29udHJvbCBmbG93IGFuZCBhY2NvdW50aW5nIGluIERBTU9OLiBObyBuZXcgYWxsb2NhdGlvbnMsIHN0YWNrL2hlYXAgYnVmZmVycywgb3IgY29waWVzIHRvIHVzZXIgc3BhY2UgYXJlIGludHJvZHVjZWQsIG5vciBpcyB0aGVyZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcyBvciBpbmZvcm1hdGlvbiBsZWFrcy4gVGhlcmVmb3JlLCBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBpcyBub3QgcmVxdWlyZWQgYW5kIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcgaXMgc3VmZmljaWVudC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggdXBkYXRlcyBEQU1PTiBPcGVyYXRpb24gU2NoZW1lcyAoREFNT1MpIHF1b3RhIGhhbmRsaW5nIGxvZ2ljIHdpdGhpbiBtbS9kYW1vbi9jb3JlLmMgKHNwZWNpZmljYWxseSBpbiBkYW1vc19xdW90YV9pc19mdWxsIGFuZCBkYW1vbl9kb19hcHBseV9zY2hlbWVzKSBzbyB0aGF0IHNjaGVtZXMgYXJlIG5vdCBpbmNvcnJlY3RseSBjb25zaWRlcmVkIGZ1bGwgd2hlbiBubyBxdW90YSBoYXMgYmVlbiBjaGFyZ2VkIHlldCwgYW5kIGVtcHR5IHF1b3RhcyAoZXN6ID09IDApIGFyZSBza2lwcGVkIHByb3Blcmx5LiBUaGlzIGZ1bmN0aW9uYWxseSBhZmZlY3RzIERBTU9OIHNjaGVtZSBldmFsdWF0aW9uIGFuZCBjYW4gYmUgdGVzdGVkL2V4ZXJjaXNlZCB2aWEgdGhlIERBTU9OIHN5c2ZzIGludGVyZmFjZSBpbiB2aXJ0dWFsaXplZCB0ZXN0IGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAwMDozMzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGE5MmY4ZmIwNTA2YjQ0ZDAyNTBkNzQ5MjljMTU1NWM5NDRjNDkzMmFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IFNlcCAzIDAwOjMzOjIzIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL21tL2RhbW9uL2NvcmUuYyBiL21tL2RhbW9uL2NvcmUuY1xuaW5kZXggZGYyMjYyMTc2NTkxMS4uZjhjNzg0ZGYyNDYwMCAxMDA2NDRcbi0tLSBhL21tL2RhbW9uL2NvcmUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbW0vZGFtb24vY29yZS5jXG5AQCAtMjY1NSw2ICYjNDM7MjY1NSw4IEBAIHN0YXRpYyBib29sIGRhbW9zX3F1b3RhX2lzX2Z1bGwoc3RydWN0IGRhbW9zX3F1b3RhICpxdW90YSxcbiB7XG4gXHRpZiAoIWRhbW9zX3F1b3RhX2lzX3NldChxdW90YSkpXG4gXHRcdHJldHVybiBmYWxzZTtcbiYjNDM7XHRpZiAoIXF1b3RhLVx1MDAzZWNoYXJnZWRfc3opXG4mIzQzO1x0XHRyZXR1cm4gZmFsc2U7XG4gXHRpZiAocXVvdGEtXHUwMDNlY2hhcmdlZF9zeiBcdTAwM2U9IHF1b3RhLVx1MDAzZWVzeilcbiBcdFx0cmV0dXJuIHRydWU7XG4gXHQvKlxuQEAgLTI3NTAsNiAmIzQzOzI3NTIsOSBAQCBzdGF0aWMgdm9pZCBkYW1vbl9kb19hcHBseV9zY2hlbWVzKHN0cnVjdCBkYW1vbl9jdHggKmMsXG4gXHRcdGlmICghcy1cdTAwM2V3bWFya3MuYWN0aXZhdGVkKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFxuJiM0MztcdFx0aWYgKCFxdW90YS1cdTAwM2Vlc3opXG4mIzQzO1x0XHRcdGNvbnRpbnVlO1xuJiM0MztcbiBcdFx0LyogQ2hlY2sgdGhlIHF1b3RhICovXG4gXHRcdGlmIChkYW1vc19xdW90YV9pc19mdWxsKHF1b3RhLCBjLVx1MDAzZW1pbl9yZWdpb25fc3opKVxuIFx0XHRcdGNvbnRpbnVlO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDAwOjMzPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RBTU9OJiMzNDssCiAgICAmIzM0O0RBTU9OX1NZU0ZTJiMzNDssCiAgICAmIzM0O0RBTU9OX1BBRERSJiMzNDssCiAgICAmIzM0O0RBTU9OX1ZBRERSJiMzNDssCiAgICAmIzM0O1NZU0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZGFtb25fc3RhcnQmIzM0OywKICAgICYjMzQ7ZGFtb25fY29tbWl0X2N0eCYjMzQ7LAogICAgJiMzNDtkYW1vbl9zeXNmc19hZGRfc2NoZW1lcyYjMzQ7LAogICAgJiMzNDtkYW1vbl9zZXRfc2NoZW1lcyYjMzQ7LAogICAgJiMzNDtkYW1vbl9uZXdfc2NoZW1lJiMzNDssCiAgICAmIzM0O2RhbW9uX2FkZF9zY2hlbWUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggdXBkYXRlcyBEQU1PTiBPcGVyYXRpb24gU2NoZW1lcyAoREFNT1MpIHF1b3RhIGhhbmRsaW5nIGxvZ2ljIHdpdGhpbiBtbS9kYW1vbi9jb3JlLmMgKHNwZWNpZmljYWxseSBpbiBkYW1vc19xdW90YV9pc19mdWxsIGFuZCBkYW1vbl9kb19hcHBseV9zY2hlbWVzKSBzbyB0aGF0IHNjaGVtZXMgYXJlIG5vdCBpbmNvcnJlY3RseSBjb25zaWRlcmVkIGZ1bGwgd2hlbiBubyBxdW90YSBoYXMgYmVlbiBjaGFyZ2VkIHlldCwgYW5kIGVtcHR5IHF1b3RhcyAoZXN6ID09IDApIGFyZSBza2lwcGVkIHByb3Blcmx5LiBUaGlzIGZ1bmN0aW9uYWxseSBhZmZlY3RzIERBTU9OIHNjaGVtZSBldmFsdWF0aW9uIGFuZCBjYW4gYmUgdGVzdGVkL2V4ZXJjaXNlZCB2aWEgdGhlIERBTU9OIHN5c2ZzIGludGVyZmFjZSBpbiB2aXJ0dWFsaXplZCB0ZXN0IGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGE5MmY4ZmIwNTA2YjQ0ZDAyNTBkNzQ5MjljMTU1NWM5NDRjNDkzMmEKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IFNlcCAzIDAwOjMzOjIzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbW0vZGFtb24vY29yZS5jIGIvbW0vZGFtb24vY29yZS5jCmluZGV4IGRmMjI2MjE3NjU5MTEuLmY4Yzc4NGRmMjQ2MDAgMTAwNjQ0Ci0tLSBhL21tL2RhbW9uL2NvcmUuYwomIzQzOyYjNDM7JiM0MzsgYi9tbS9kYW1vbi9jb3JlLmMKQEAgLTI2NTUsNiAmIzQzOzI2NTUsOCBAQCBzdGF0aWMgYm9vbCBkYW1vc19xdW90YV9pc19mdWxsKHN0cnVjdCBkYW1vc19xdW90YSAqcXVvdGEsCiB7CiAJaWYgKCFkYW1vc19xdW90YV9pc19zZXQocXVvdGEpKQogCQlyZXR1cm4gZmFsc2U7CiYjNDM7CWlmICghcXVvdGEtJmd0O2NoYXJnZWRfc3opCiYjNDM7CQlyZXR1cm4gZmFsc2U7CiAJaWYgKHF1b3RhLSZndDtjaGFyZ2VkX3N6ICZndDs9IHF1b3RhLSZndDtlc3opCiAJCXJldHVybiB0cnVlOwogCS8qCkBAIC0yNzUwLDYgJiM0MzsyNzUyLDkgQEAgc3RhdGljIHZvaWQgZGFtb25fZG9fYXBwbHlfc2NoZW1lcyhzdHJ1Y3QgZGFtb25fY3R4ICpjLAogCQlpZiAoIXMtJmd0O3dtYXJrcy5hY3RpdmF0ZWQpCiAJCQljb250aW51ZTsKIAomIzQzOwkJaWYgKCFxdW90YS0mZ3Q7ZXN6KQomIzQzOwkJCWNvbnRpbnVlOwomIzQzOwogCQkvKiBDaGVjayB0aGUgcXVvdGEgKi8KIAkJaWYgKGRhbW9zX3F1b3RhX2lzX2Z1bGwocXVvdGEsIGMtJmd0O21pbl9yZWdpb25fc3opKQogCQkJY29udGludWU7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDAwOjMzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxNjIKCQkJCQkJCW91dHB1dDogNjUKCQkJCQkJCXRob3VnaHRzOiA5MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhbmFseXNpcyBvZiB0aGUgc2l0dWF0aW9uLCB0YWlsb3JlZCBmb3IgbXkgZmVsbG93IGV4cGVydHM6CgoqKkluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgREFNT04gUGF0Y2gqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW4uIEZpcnN0LCBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoaXMgcGF0Y2guIEl0IGxvb2tzIGxpa2UgdGhlIG1haW4gaW1wYWN0IGlzIG9uIGBtbS9kYW1vbi9jb3JlLmNgLiBObyBzdXJwcmlzZXMgdGhlcmU7IGNvcmUgREFNT04gZnVuY3Rpb25hbGl0eSBvZnRlbiByZXNpZGVzIGluIGZpbGVzIGxpa2UgdGhhdC4gTXkgaW1tZWRpYXRlIG5leHQgc3RlcCBpcyB0byBnZXQgYSBzb2xpZCBncmFzcCBvbiB3aGF0JiMzOTtzIGNoYW5nZWQgd2l0aGluIHRoYXQgY29yZSBmaWxlLCBhbmQgYWxzbyB0byBkb3VibGUgY2hlY2sgdGhlIEtjb25maWcgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBEQU1PTiBpdHNlbGYuIEFsd2F5cyBnb29kIHRvIHJ1bGUgb3V0IGFueSB1bmV4cGVjdGVkIGZlYXR1cmUgZmxhZ3Mgb3IgZGlzYWJsZWQgY29tcG9uZW50cy4KCkkmIzM5O20gdGhpbmtpbmcgSSYjMzk7bGwgcmVhY2ggZm9yIGBncmVwcGVyYCBvciBgcmVhZC1maWxlYCB0byB6ZXJvIGluIG9uIHNwZWNpZmljIHBhcnRzIG9mIGBtbS9kYW1vbi9jb3JlLmNgLiBJJiMzOTttIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiBsaW5lcyBhcm91bmQgMjY1NSBhbmQgMjc1MC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSB0aGUgcXVpY2sgaW5zaWdodCBJIG5lZWQgdG8gZnVsbHkgdW5kZXJzdGFuZCB0aGUgZWZmZWN0cyBvZiB0aGlzIHBhdGNoLiBUaW1lIHRvIGdldCB0byB3b3JrLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDAwOjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bW0vZGFtb24vY29yZS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjY1MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA2MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsyNjUwOlx0XHRcdFx0XHRxdW90YS1cdTAwM2VmYWlsX2NoYXJnZV9kZW5vbSk7XG4yNjUxOlx0fVxuMjY1MjpcdFxuMjY1MzpcdHN0YXRpYyBib29sIGRhbW9zX3F1b3RhX2lzX2Z1bGwoc3RydWN0IGRhbW9zX3F1b3RhICpxdW90YSxcbjI2NTQ6XHRcdFx0dW5zaWduZWQgbG9uZyBtaW5fcmVnaW9uX3N6KVxuMjY1NTpcdHtcbjI2NTY6XHRcdGlmICghZGFtb3NfcXVvdGFfaXNfc2V0KHF1b3RhKSlcbjI2NTc6XHRcdFx0cmV0dXJuIGZhbHNlO1xuMjY1ODpcdFx0aWYgKCFxdW90YS1cdTAwM2VjaGFyZ2VkX3N6KVxuMjY1OTpcdFx0XHRyZXR1cm4gZmFsc2U7XG4yNjYwOlx0XHRpZiAocXVvdGEtXHUwMDNlY2hhcmdlZF9zeiBcdTAwM2U9IHF1b3RhLVx1MDAzZWVzeilcbjI2NjE6XHRcdFx0cmV0dXJuIHRydWU7XG4yNjYyOlx0XHQvKlxuMjY2MzpcdFx0ICogREFNT1MgYWN0aW9uIGlzIGFwcGxpZWQgcGVyIHJlZ2lvbiwgc28gXHUwMDNjbWluX3JlZ2lvbl9zeiByZW1haW5pbmdcbjI2NjQ6XHRcdCAqIHF1b3RhIG1lYW5zIHRoZSBxdW90YSBpcyBlZmZlY3RpdmVseSBmdWxsLlxuMjY2NTpcdFx0ICovXG4yNjY2Olx0XHRyZXR1cm4gcXVvdGEtXHUwMDNlZXN6IC0gcXVvdGEtXHUwMDNlY2hhcmdlZF9zeiBcdTAwM2MgbWluX3JlZ2lvbl9zejtcbjI2Njc6XHR9XG4yNjY4Olx0XG4yNjY5Olx0c3RhdGljIHZvaWQgZGFtb3NfYXBwbHlfc2NoZW1lKHN0cnVjdCBkYW1vbl9jdHggKmMsIHN0cnVjdCBkYW1vbl90YXJnZXQgKnQsXG4yNjcwOlx0XHRcdHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsIHN0cnVjdCBkYW1vcyAqcylcbjI2NzE6XHR7XG4yNjcyOlx0XHRzdHJ1Y3QgZGFtb3NfcXVvdGEgKnF1b3RhID0gXHUwMDI2cy1cdTAwM2VxdW90YTtcbjI2NzM6XHRcdHVuc2lnbmVkIGxvbmcgc3ogPSBkYW1vbl9zel9yZWdpb24ocik7XG4yNjc0Olx0XHRzdHJ1Y3QgdGltZXNwZWM2NCBiZWdpbiwgZW5kO1xuMjY3NTpcdFx0dW5zaWduZWQgbG9uZyBzel9hcHBsaWVkID0gMDtcbjI2NzY6XHRcdHVuc2lnbmVkIGxvbmcgc3pfb3BzX2ZpbHRlcl9wYXNzZWQgPSAwO1xuMjY3NzpcdFx0LypcbjI2Nzg6XHRcdCAqIFdlIHBsYW4gdG8gc3VwcG9ydCBtdWx0aXBsZSBjb250ZXh0IHBlciBrZGFtb25kLCBhcyBEQU1PTiBzeXNmc1xuMjY3OTpcdFx0ICogaW1wbGllcyB3aXRoICYjMzk7bnJfY29udGV4dHMmIzM5OyBmaWxlLiAgTmV2ZXJ0aGVsZXNzLCBvbmx5IHNpbmdsZSBjb250ZXh0XG4yNjgwOlx0XHQgKiBwZXIga2RhbW9uZCBpcyBzdXBwb3J0ZWQgZm9yIG5vdy4gIFNvLCB3ZSBjYW4gc2ltcGx5IHVzZSAmIzM5OzAmIzM5OyBjb250ZXh0XG4yNjgxOlx0XHQgKiBpbmRleCBoZXJlLlxuMjY4MjpcdFx0ICovXG4yNjgzOlx0XHR1bnNpZ25lZCBpbnQgY2lkeCA9IDA7XG4yNjg0Olx0XHRzdHJ1Y3QgZGFtb3MgKnNpdGVyO1x0XHQvKiBzY2hlbWVzIGl0ZXJhdG9yICovXG4yNjg1Olx0XHR1bnNpZ25lZCBpbnQgc2lkeCA9IDA7XG4yNjg2Olx0XHRzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0aXRlcjtcdC8qIHRhcmdldHMgaXRlcmF0b3IgKi9cbjI2ODc6XHRcdHVuc2lnbmVkIGludCB0aWR4ID0gMCwgbnJfYWNjZXNzZXMgPSAwO1xuMjY4ODpcdFx0Ym9vbCBkb190cmFjZSA9IGZhbHNlO1xuMjY4OTpcdFxuMjY5MDpcdFx0LyogZ2V0IGluZGljZXMgZm9yIHRyYWNlX2RhbW9zX2JlZm9yZV9hcHBseSgpICovXG4yNjkxOlx0XHRpZiAodHJhY2VfZGFtb3NfYmVmb3JlX2FwcGx5X2VuYWJsZWQoKSkge1xuMjY5MjpcdFx0XHRkYW1vbl9mb3JfZWFjaF9zY2hlbWUoc2l0ZXIsIGMpIHtcbjI2OTM6XHRcdFx0XHRpZiAoc2l0ZXIgPT0gcylcbjI2OTQ6XHRcdFx0XHRcdGJyZWFrO1xuMjY5NTpcdFx0XHRcdHNpZHgmIzQzOyYjNDM7O1xuMjY5NjpcdFx0XHR9XG4yNjk3Olx0XHRcdGRhbW9uX2Zvcl9lYWNoX3RhcmdldCh0aXRlciwgYykge1xuMjY5ODpcdFx0XHRcdGlmICh0aXRlciA9PSB0KVxuMjY5OTpcdFx0XHRcdFx0YnJlYWs7XG4yNzAwOlx0XHRcdFx0dGlkeCYjNDM7JiM0Mzs7XG4yNzAxOlx0XHRcdH1cbjI3MDI6XHRcdFx0bnJfYWNjZXNzZXMgPSBkYW1vbl9ucl9hY2Nlc3Nlc19tdnN1bShyLCBjKTtcbjI3MDM6XHRcdFx0ZG9fdHJhY2UgPSB0cnVlO1xuMjcwNDpcdFx0fVxuMjcwNTpcdFxuMjcwNjpcdFx0aWYgKGMtXHUwMDNlb3BzLmFwcGx5X3NjaGVtZSkge1xuMjcwNzpcdFx0XHRpZiAoZGFtb3NfcXVvdGFfaXNfc2V0KHF1b3RhKSBcdTAwMjZcdTAwMjZcbjI3MDg6XHRcdFx0XHRcdHF1b3RhLVx1MDAzZWNoYXJnZWRfc3ogJiM0Mzsgc3ogXHUwMDNlIHF1b3RhLVx1MDAzZWVzeikge1xuMjcwOTpcdFx0XHRcdHN6ID0gQUxJR05fRE9XTihxdW90YS1cdTAwM2Vlc3ogLSBxdW90YS1cdTAwM2VjaGFyZ2VkX3N6LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDAwOjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWVudWNvbmZpZyBEQU1PTiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL2RhbW9uJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAwMDozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDgwCgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2Vzcywga2VlcGluZyBpbiBtaW5kIEkmIzM5O20gc3BlYWtpbmcgdG8gYSBmZWxsb3cgZXhwZXJ0OgoKKipJbnZlc3RpZ2F0aW5nIERBTU9OJiMzOTtzIEtjb25maWcgQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCB0aW1lIHRvIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBidWlsZCBjb25maWd1cmF0aW9uIGZvciBEQU1PTi4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gZGl2ZSBzdHJhaWdodCBpbnRvIHRoZSBLY29uZmlnIGZpbGVzLiBUaGlzIGlzIHdoZXJlIHRoZSBjb3JlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgZGVmaW5lZCwgYW5kIHdoZXJlIEkgY2FuIGZpbmQgb3V0IGV4YWN0bHkgaG93IERBTU9OIGlzIGVuYWJsZWQsIGFueSBkZXBlbmRlbmNpZXMgaXQgbWlnaHQgaGF2ZSwgYW5kIHdoYXQgZmVhdHVyZXMgYXJlIGV4cG9zZWQgYXMgY29uZmlndXJhYmxlIG9wdGlvbnMgZHVyaW5nIHRoZSBrZXJuZWwgYnVpbGQuIEkgd2FudCB0byBxdWlja2x5IHVuZGVyc3RhbmQgdGhlIGJ1aWxkIGZsYWdzLiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgYWN0dWFsbHkgZW5hYmxlZCBhbmQgd2hhdCYjMzk7cyBhdmFpbGFibGUuIFRoaXMgaXMgdGhlIGxvZ2ljYWwgc3RhcnRpbmcgcG9pbnQgZm9yIGFueSBpbi1kZXB0aCBhbmFseXNpcyBvZiBhIGtlcm5lbCBzdWJzeXN0ZW0sIHJpZ2h0PwoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDAwOjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0RBTU9OJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vZGFtb24vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9kYW1vbi9LY29uZmlnPTM9bWVudSBcJiMzNDtEYXRhIEFjY2VzcyBNb25pdG9yaW5nXCYjMzQ7XG5tbS9kYW1vbi9LY29uZmlnLTQtXG5tbS9kYW1vbi9LY29uZmlnOjU6Y29uZmlnIERBTU9OXG5tbS9kYW1vbi9LY29uZmlnOjY6XHRib29sIFwmIzM0O0RBTU9OOiBEYXRhIEFjY2VzcyBNb25pdG9yaW5nIEZyYW1ld29ya1wmIzM0O1xubW0vZGFtb24vS2NvbmZpZy03LVx0aGVscFxuLS1cbm1tL2RhbW9uL0tjb25maWctMTQtXG5tbS9kYW1vbi9LY29uZmlnOjE1OmNvbmZpZyBEQU1PTl9ERUJVR19TQU5JVFlcbm1tL2RhbW9uL0tjb25maWc6MTY6XHRib29sIFwmIzM0O0NoZWNrIHNhbml0eSBvZiBEQU1PTiBjb2RlXCYjMzQ7XG5tbS9kYW1vbi9LY29uZmlnOjE3Olx0ZGVwZW5kcyBvbiBEQU1PTlxubW0vZGFtb24vS2NvbmZpZy0xOC1cdGhlbHBcbm1tL2RhbW9uL0tjb25maWc6MTk6XHQgIFRoaXMgZW5hYmxlcyBhZGRpdGlvbmFsIERBTU9OIGRlYnVnZ2luZy1wdXJwb3NlIHNhbml0eSBjaGVja3MgaW5cbm1tL2RhbW9uL0tjb25maWc6MjA6XHQgIERBTU9OIGNvZGUuICBUaGlzIGNhbiBiZSB1c2VmdWwgZm9yIGZpbmRpbmcgYnVncywgYnV0IGltcG9zZVxubW0vZGFtb24vS2NvbmZpZy0yMS1cdCAgYWRkaXRpb25hbCBvdmVyaGVhZC4gIFRoaXMgaXMgdGhlcmVmb3JlIHJlY29tbWVuZGVkIHRvIGJlIGVuYWJsZWQgb25cbi0tXG5tbS9kYW1vbi9LY29uZmlnLTI1LVxubW0vZGFtb24vS2NvbmZpZzoyNjpjb25maWcgREFNT05fS1VOSVRfVEVTVFxubW0vZGFtb24vS2NvbmZpZy0yNy1cdGJvb2wgXCYjMzQ7VGVzdCBmb3IgZGFtb25cJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xubW0vZGFtb24vS2NvbmZpZzoyODpcdGRlcGVuZHMgb24gREFNT04gXHUwMDI2XHUwMDI2IEtVTklUPXlcbm1tL2RhbW9uL0tjb25maWctMjktXHRkZWZhdWx0IEtVTklUX0FMTF9URVNUU1xubW0vZGFtb24vS2NvbmZpZy0zMC1cdGhlbHBcbm1tL2RhbW9uL0tjb25maWc6MzE6XHQgIFRoaXMgYnVpbGRzIHRoZSBEQU1PTiBLdW5pdCB0ZXN0IHN1aXRlLlxubW0vZGFtb24vS2NvbmZpZy0zMi1cbi0tXG5tbS9kYW1vbi9LY29uZmlnLTM3LVxubW0vZGFtb24vS2NvbmZpZzozODpjb25maWcgREFNT05fVkFERFJcbm1tL2RhbW9uL0tjb25maWctMzktXHRib29sIFwmIzM0O0RhdGEgYWNjZXNzIG1vbml0b3Jpbmcgb3BlcmF0aW9ucyBmb3IgdmlydHVhbCBhZGRyZXNzIHNwYWNlc1wmIzM0O1xubW0vZGFtb24vS2NvbmZpZzo0MDpcdGRlcGVuZHMgb24gREFNT04gXHUwMDI2XHUwMDI2IE1NVVxubW0vZGFtb24vS2NvbmZpZy00MS1cdHNlbGVjdCBQQUdFX0lETEVfRkxBR1xubW0vZGFtb24vS2NvbmZpZzo0MjpcdGRlZmF1bHQgREFNT05cbm1tL2RhbW9uL0tjb25maWctNDMtXHRoZWxwXG5tbS9kYW1vbi9LY29uZmlnOjQ0Olx0ICBUaGlzIGJ1aWxkcyB0aGUgZGVmYXVsdCBkYXRhIGFjY2VzcyBtb25pdG9yaW5nIG9wZXJhdGlvbnMgZm9yIERBTU9OXG5tbS9kYW1vbi9LY29uZmlnLTQ1LVx0ICB0aGF0IHdvcmsgZm9yIHZpcnR1YWwgYWRkcmVzcyBzcGFjZXMuXG5tbS9kYW1vbi9LY29uZmlnLTQ2LVxubW0vZGFtb24vS2NvbmZpZzo0Nzpjb25maWcgREFNT05fUEFERFJcbm1tL2RhbW9uL0tjb25maWctNDgtXHRib29sIFwmIzM0O0RhdGEgYWNjZXNzIG1vbml0b3Jpbmcgb3BlcmF0aW9ucyBmb3IgdGhlIHBoeXNpY2FsIGFkZHJlc3Mgc3BhY2VcJiMzNDtcbm1tL2RhbW9uL0tjb25maWc6NDk6XHRkZXBlbmRzIG9uIERBTU9OIFx1MDAyNlx1MDAyNiBNTVVcbm1tL2RhbW9uL0tjb25maWctNTAtXHRzZWxlY3QgUEFHRV9JRExFX0ZMQUdcbm1tL2RhbW9uL0tjb25maWc6NTE6XHRkZWZhdWx0IERBTU9OXG5tbS9kYW1vbi9LY29uZmlnLTUyLVx0aGVscFxubW0vZGFtb24vS2NvbmZpZzo1MzpcdCAgVGhpcyBidWlsZHMgdGhlIGRlZmF1bHQgZGF0YSBhY2Nlc3MgbW9uaXRvcmluZyBvcGVyYXRpb25zIGZvciBEQU1PTlxubW0vZGFtb24vS2NvbmZpZy01NC1cdCAgdGhhdCB3b3JrcyBmb3IgdGhlIHBoeXNpY2FsIGFkZHJlc3Mgc3BhY2UuXG5tbS9kYW1vbi9LY29uZmlnLTU1LVxubW0vZGFtb24vS2NvbmZpZzo1Njpjb25maWcgREFNT05fVkFERFJfS1VOSVRfVEVTVFxubW0vZGFtb24vS2NvbmZpZzo1NzpcdGJvb2wgXCYjMzQ7VGVzdCBmb3IgREFNT04gb3BlcmF0aW9uc1wmIzM0OyBpZiAhS1VOSVRfQUxMX1RFU1RTXG5tbS9kYW1vbi9LY29uZmlnOjU4Olx0ZGVwZW5kcyBvbiBEQU1PTl9WQUREUiBcdTAwMjZcdTAwMjYgS1VOSVQ9eVxubW0vZGFtb24vS2NvbmZpZy01OS1cdGRlZmF1bHQgS1VOSVRfQUxMX1RFU1RTXG5tbS9kYW1vbi9LY29uZmlnLTYwLVx0aGVscFxubW0vZGFtb24vS2NvbmZpZzo2MTpcdCAgVGhpcyBidWlsZHMgdGhlIERBTU9OIHZpcnR1YWwgYWRkcmVzc2VzIG9wZXJhdGlvbnMgS3VuaXQgdGVzdCBzdWl0ZS5cbm1tL2RhbW9uL0tjb25maWctNjItXG4tLVxubW0vZGFtb24vS2NvbmZpZy02Ny1cbm1tL2RhbW9uL0tjb25maWc6Njg6Y29uZmlnIERBTU9OX1NZU0ZTXG5tbS9kYW1vbi9LY29uZmlnOjY5Olx0Ym9vbCBcJiMzNDtEQU1PTiBzeXNmcyBpbnRlcmZhY2VcJiMzNDtcbm1tL2RhbW9uL0tjb25maWc6NzA6XHRkZXBlbmRzIG9uIERBTU9OIFx1MDAyNlx1MDAyNiBTWVNGU1xubW0vZGFtb24vS2NvbmZpZzo3MTpcdGRlZmF1bHQgREFNT05cbm1tL2RhbW9uL0tjb25maWctNzItXHRoZWxwXG5tbS9kYW1vbi9LY29uZmlnOjczOlx0ICBUaGlzIGJ1aWxkcyB0aGUgc3lzZnMgaW50ZXJmYWNlIGZvciBEQU1PTi4gIFRoZSB1c2VyIHNwYWNlIGNhbiB1c2Vcbm1tL2RhbW9uL0tjb25maWctNzQtXHQgIHRoZSBpbnRlcmZhY2UgZm9yIGFyYml0cmFyeSBkYXRhIGFjY2VzcyBtb25pdG9yaW5nLlxubW0vZGFtb24vS2NvbmZpZy03NS1cbm1tL2RhbW9uL0tjb25maWc6NzY6Y29uZmlnIERBTU9OX1NZU0ZTX0tVTklUX1RFU1Rcbm1tL2RhbW9uL0tjb25maWctNzctXHRib29sIFwmIzM0O1Rlc3QgZm9yIGRhbW9uIHN5c2ZzIGludGVyZmFjZVwmIzM0OyBpZiAhS1VOSVRfQUxMX1RFU1RTXG5tbS9kYW1vbi9LY29uZmlnOjc4Olx0ZGVwZW5kcyBvbiBEQU1PTl9TWVNGUyBcdTAwMjZcdTAwMjYgS1VOSVQ9eVxubW0vZGFtb24vS2NvbmZpZy03OS1cdGRlZmF1bHQgS1VOSVRfQUxMX1RFU1RTXG5tbS9kYW1vbi9LY29uZmlnLTgwLVx0aGVscFxubW0vZGFtb24vS2NvbmZpZzo4MTpcdCAgVGhpcyBidWlsZHMgdGhlIERBTU9OIHN5c2ZzIGludGVyZmFjZSBLdW5pdCB0ZXN0IHN1aXRlLlxubW0vZGFtb24vS2NvbmZpZy04Mi1cbi0tXG5tbS9kYW1vbi9LY29uZmlnLTg3LVxubW0vZGFtb24vS2NvbmZpZzo4ODpjb25maWcgREFNT05fUkVDTEFJTVxubW0vZGFtb24vS2NvbmZpZzo4OTpcdGJvb2wgXCYjMzQ7QnVpbGQgREFNT04tYmFzZWQgcmVjbGFpbSAoREFNT05fUkVDTEFJTSlcJiMzNDtcbm1tL2RhbW9uL0tjb25maWc6OTA6XHRkZXBlbmRzIG9uIERBTU9OX1BBRERSXG5tbS9kYW1vbi9LY29uZmlnLTkxLVx0aGVscFxubW0vZGFtb24vS2NvbmZpZzo5MjpcdCAgVGhpcyBidWlsZHMgdGhlIERBTU9OLWJhc2VkIHJlY2xhbWF0aW9uIHN1YnN5c3RlbS4gIEl0IGZpbmRzIHBhZ2VzXG5tbS9kYW1vbi9LY29uZmlnOjkzOlx0ICB0aGF0IG5vdCBhY2Nlc3NlZCBmb3IgYSBsb25nIHRpbWUgKGNvbGQpIHVzaW5nIERBTU9OIGFuZCByZWNsYWltXG5tbS9kYW1vbi9LY29uZmlnLTk0LVx0ICB0aG9zZS5cbi0tXG5tbS9kYW1vbi9LY29uZmlnLTk5LVxubW0vZGFtb24vS2NvbmZpZzoxMDA6Y29uZmlnIERBTU9OX0xSVV9TT1JUXG5tbS9kYW1vbi9LY29uZmlnOjEwMTpcdGJvb2wgXCYjMzQ7QnVpbGQgREFNT04tYmFzZWQgTFJVLWxpc3RzIHNvcnRpbmcgKERBTU9OX0xSVV9TT1JUKVwmIzM0O1xubW0vZGFtb24vS2NvbmZpZzoxMDI6XHRkZXBlbmRzIG9uIERBTU9OX1BBRERSXG5tbS9kYW1vbi9LY29uZmlnLTEwMy1cdGhlbHBcbm1tL2RhbW9uL0tjb25maWc6MTA0Olx0ICBUaGlzIGJ1aWxkcyB0aGUgREFNT04tYmFzZWQgTFJVLWxpc3RzIHNvcnRpbmcgc3Vic3lzdGVtLiAgSXQgdHJpZXMgdG9cbm1tL2RhbW9uL0tjb25maWctMTA1LVx0ICBwcm90ZWN0IGZyZXF1ZW50bHkgYWNjZXNzZWQgKGhvdCkgcGFnZXMgd2hpbGUgcmFyZWx5IGFjY2Vzc2VkIChjb2xkKVxuLS1cbm1tL2RhbW9uL0tjb25maWctMTA3LVxubW0vZGFtb24vS2NvbmZpZzoxMDg6Y29uZmlnIERBTU9OX1NUQVRcbm1tL2RhbW9uL0tjb25maWc6MTA5Olx0Ym9vbCBcJiMzNDtCdWlsZCBkYXRhIGFjY2VzcyBtb25pdG9yaW5nIHN0YXQgKERBTU9OX1NUQVQpXCYjMzQ7XG5tbS9kYW1vbi9LY29uZmlnOjExMDpcdGRlcGVuZHMgb24gREFNT05fUEFERFJcbm1tL2RhbW9uL0tjb25maWctMTExLVx0aGVscFxubW0vZGFtb24vS2NvbmZpZzoxMTI6XHQgIFRoaXMgYnVpbGRzIHRoZSBEQU1PTi1iYXNlZCBhY2Nlc3MgbW9uaXRvcmluZyBzdGF0aXN0aWNzIHN1YnN5c3RlbS5cbm1tL2RhbW9uL0tjb25maWc6MTEzOlx0ICBJdCBydW5zIERBTU9OIGFuZCBleHBvc2UgYWNjZXNzIG1vbml0b3JpbmcgcmVzdWx0cyBpbiBzaW1wbGUgc3RhdFxubW0vZGFtb24vS2NvbmZpZy0xMTQtXHQgIG1ldHJpY3MuXG5tbS9kYW1vbi9LY29uZmlnLTExNS1cbm1tL2RhbW9uL0tjb25maWc6MTE2OmNvbmZpZyBEQU1PTl9TVEFUX0VOQUJMRURfREVGQVVMVFxubW0vZGFtb24vS2NvbmZpZzoxMTc6XHRib29sIFwmIzM0O0VuYWJsZSBEQU1PTl9TVEFUIGJ5IGRlZmF1bHRcJiMzNDtcbm1tL2RhbW9uL0tjb25maWc6MTE4Olx0ZGVwZW5kcyBvbiBEQU1PTl9TVEFUXG5tbS9kYW1vbi9LY29uZmlnOjExOTpcdGRlZmF1bHQgREFNT05fU1RBVFxubW0vZGFtb24vS2NvbmZpZy0xMjAtXHRoZWxwXG5tbS9kYW1vbi9LY29uZmlnOjEyMTpcdCAgV2hldGhlciB0byBlbmFibGUgREFNT05fU1RBVCBieSBkZWZhdWx0LiAgVXNlcnMgY2FuIGRpc2FibGUgaXQgaW5cbm1tL2RhbW9uL0tjb25maWctMTIyLVx0ICBib290IG9yIHJ1bnRpbWUgdXNpbmcgaXRzICYjMzk7ZW5hYmxlZCYjMzk7IHBhcmFtZXRlci5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAwMDozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NTkyCgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqTWFrZWZpbGUgQW5hbHlzaXMgZm9yIERBTU9OIEludGVncmF0aW9uKioKCkFscmlnaHQsIGxldCYjMzk7cyB0YWtlIGEgbG9vayBhdCB0aGUgY29tcGlsYXRpb24gcHJvY2VzcyBmb3IgYG1tL2RhbW9uL2NvcmUuY2AsIHNwZWNpZmljYWxseSBob3cgaXQmIzM5O3MgYmVpbmcgaGFuZGxlZCBpbiB0aGUgYE1ha2VmaWxlYC4gSSYjMzk7bSBnb2luZyB0byBuYXZpZ2F0ZSB0byBgbW0vZGFtb24vTWFrZWZpbGVgLiBJJiMzOTtsbCBiZSBsb29raW5nIHRvIHNlZSBob3cgdGhlIGNvbXBpbGF0aW9uIG9mIGBjb3JlLmNgIGlzIGludGVncmF0ZWQgaW50byB0aGUgbGFyZ2VyIGJ1aWxkIHN5c3RlbS4gSSB3YW50IHRvIHVuZGVyc3RhbmQgYW55IHNwZWNpZmljIGZsYWdzLCBkZXBlbmRlbmNpZXMsIG9yIGxpbmtpbmcgc3RlcHMgdGhhdCBhcmUgdW5pcXVlIHRvIHRoaXMgY29tcG9uZW50IHdpdGhpbiB0aGUgREFNT04gc3Vic3lzdGVtLiBIb3BlZnVsbHksIHRoZSBtYWtlZmlsZSB3aWxsIHByb3ZpZGUgY2xhcml0eSBvbiBhbnkgb3B0aW1pemF0aW9ucyBvciBjb25maWd1cmF0aW9ucyBiZWluZyBhcHBsaWVkLCBlc3BlY2lhbGx5IGlmIHRoZXkgYXJlIHNwZWNpZmljIHRvIHRoZSBEQU1PTiBjb3JlIGZ1bmN0aW9uYWxpdHkgb3IgcmVsYXRlZCBkYXRhIGFjY2VzcyBtb25pdG9yaW5nIHNjaGVtZXMuIEkgbmVlZCB0byBlbnN1cmUgdGhpcyBjb21wb25lbnQgaXNuJiMzOTt0IGludHJvZHVjaW5nIGFueSB1bmV4cGVjdGVkIGJ1aWxkIGNvbmZsaWN0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAwMDozMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O21tL2RhbW9uL01ha2VmaWxlJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuICAgMjpcdFxuICAgMzpcdG9iai15XHRcdFx0XHQ6PSBjb3JlLm9cbiAgIDQ6XHRvYmotJChDT05GSUdfREFNT05fVkFERFIpXHQmIzQzOz0gb3BzLWNvbW1vbi5vIHZhZGRyLm9cbiAgIDU6XHRvYmotJChDT05GSUdfREFNT05fUEFERFIpXHQmIzQzOz0gb3BzLWNvbW1vbi5vIHBhZGRyLm9cbiAgIDY6XHRvYmotJChDT05GSUdfREFNT05fU1lTRlMpXHQmIzQzOz0gc3lzZnMtY29tbW9uLm8gc3lzZnMtc2NoZW1lcy5vIHN5c2ZzLm9cbiAgIDc6XHRvYmotJChDT05GSUdfREFNT05fUkVDTEFJTSlcdCYjNDM7PSBtb2R1bGVzLWNvbW1vbi5vIHJlY2xhaW0ub1xuICAgODpcdG9iai0kKENPTkZJR19EQU1PTl9MUlVfU09SVClcdCYjNDM7PSBtb2R1bGVzLWNvbW1vbi5vIGxydV9zb3J0Lm9cbiAgIDk6XHRvYmotJChDT05GSUdfREFNT05fU1RBVClcdCYjNDM7PSBtb2R1bGVzLWNvbW1vbi5vIHN0YXQub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAwMDozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MDQ3CgkJCQkJCQlvdXRwdXQ6IDI1CgkJCQkJCQl0aG91Z2h0czogMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqSW52ZXN0aWdhdGluZyB0aGUgQnVpbGQgUHJvY2VzcyBmb3IgREFNT04qKgoKT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGJ1aWxkIHByb2Nlc3MgYW5kIHdoZW4gdGhlIERBTU9OIGNvbXBvbmVudHMgZ2V0IGJha2VkIGludG8gdGhlIGtlcm5lbC4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gZGl2ZSBpbnRvIHRoZSBgbW0vTWFrZWZpbGVgIHdpdGhpbiB0aGUga2VybmVsIHNvdXJjZSB0cmVlLiBUaGF0IGZpbGUmIzM5O3MgdXN1YWxseSB0aGUgb3JjaGVzdHJhdG9yIGZvciBhbnl0aGluZyBtZW1vcnktcmVsYXRlZCwgYW5kIGl0IHNob3VsZCBzaGVkIHNvbWUgbGlnaHQgb24gdGhlIGRlcGVuZGVuY2llcyBhbmQgYnVpbGQgb3JkZXIgZm9yIHRoZSBgbW0vZGFtb24vYCBkaXJlY3RvcnkuIEJ5IGV4YW1pbmluZyB0aGUgcnVsZXMgd2l0aGluIHRoYXQgTWFrZWZpbGUsIEkgc2hvdWxkIGJlIGFibGUgdG8gcGlucG9pbnQgZXhhY3RseSB3aGVuIGFuZCBob3cgdGhlIERBTU9OIG1vZHVsZXMsIG9yIGZlYXR1cmVzIGFyZSBpbmNvcnBvcmF0ZWQgaW50byB0aGUga2VybmVsIGltYWdlLiBJIG5lZWQgdG8gdHJhY2UgdGhlIGJ1aWxkIHByb2Nlc3Mgc3BlY2lmaWNhbGx5IGZvciB0aGlzIG1lbW9yeSBtb25pdG9yaW5nIHN5c3RlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDMgMDA6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGFtb24mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9NYWtlZmlsZT0xMzU9b2JqLSQoQ09ORklHX0RFQlVHX1BBR0VfUkVGKSAmIzQzOz0gZGVidWdfcGFnZV9yZWYub1xubW0vTWFrZWZpbGU6MTM2Om9iai0kKENPTkZJR19EQU1PTikgJiM0Mzs9IGRhbW9uL1xubW0vTWFrZWZpbGUtMTM3LW9iai0kKENPTkZJR19IQVJERU5FRF9VU0VSQ09QWSkgJiM0Mzs9IHVzZXJjb3B5Lm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDMgMDA6MzM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjMzNAoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDMzOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIERBTU9OIFF1b3RhIExvZ2ljKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBwYXRjaC4gSSYjMzk7bSBsb29raW5nIGF0IGBtbS9kYW1vbi9jb3JlLmNgLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGxpbmVzIDI2MzAtMjc3MCwgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCBhbmQgdGhlIHByb2JsZW0gdGhpcyBmaXhlcy4gSSBzZWUgdGhlIG1haW4gY29uY2VybiBpcyB3aXRoIHRoZSBgZGFtb3NfcXVvdGFfaXNfZnVsbGAgZnVuY3Rpb24gYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgREFNT04gcXVvdGEgc3lzdGVtLiBUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIGNoZWNrIGZvciBgcXVvdGEtJmd0O2NoYXJnZWRfc3pgIHdpdGhpbiBgZGFtb3NfcXVvdGFfaXNfZnVsbGAuIFRoYXQmIzM5O3MgaW50ZXJlc3Rpbmc7IEkmIzM5O20gYXNzdW1pbmcgdGhpcyBoYW5kbGVzIGEgc2NlbmFyaW8gd2hlcmUgc29tZXRoaW5nIGlzIHNldHRpbmcgdGhlIHF1b3RhIGJ1dCBoYXNuJiMzOTt0ICYjMzQ7Y2hhcmdlZCYjMzQ7IGFueSBzaXplIGFnYWluc3QgaXQgeWV0LiBJdCBzZWVtcyB0aGUgaW50ZW50aW9uIGlzIHRvIGF2b2lkIGluY29ycmVjdGx5IHJlcG9ydGluZyBhIGZ1bGwgcXVvdGEgaW4gdGhhdCBjYXNlLCB3aGVyZSBwZXJoYXBzIHRoZSBxdW90YSYjMzk7cyBlZmZlY3RpdmUgc2l6ZSAoYGVzemApIGNvdWxkIGJlIHplcm8uCgpUaGVuLCB0aGUgc2Vjb25kIGNoYW5nZSwgYWRkaW5nIGEgYHF1b3RhLSZndDtlc3pgIGNoZWNrIGluIGBkYW1vbl9kb19hcHBseV9zY2hlbWVzYCBjYXVnaHQgbXkgZXllLiBUaGlzIHN1Z2dlc3RzIHRoZXJlJiMzOTtzIGEgcG90ZW50aWFsIGZvciBhbiB1bmluaXRpYWxpemVkIG9yIHplcm8tdmFsdWVkIGBlc3pgIHRoYXQgY291bGQgbGVhZCB0byB1bmV4cGVjdGVkIGJlaGF2aW9yIGluIGhvdyBzY2hlbWVzIGFyZSBhcHBsaWVkLiBXaXRob3V0IHRoaXMgY2hlY2ssIHRoZSBxdW90YSBsb2dpYyBjb3VsZCBjYXVzZSBpc3N1ZXMgd2l0aCBob3cgd2UgaGFuZGxlIHRoZSBhcHBsaWNhdGlvbiBvZiBEQU1PTiBzY2hlbWVzLiBJdCBzZWVtcyB0aGlzIGNoZWNrIGVuc3VyZXMgdGhhdCB3ZSBkb24mIzM5O3QgcHJvY2VlZCB3aXRoIHNjaGVtZXMgaWYgdGhlcmUmIzM5O3Mgbm8gZGVmaW5lZCBlZmZlY3RpdmUgc2l6ZSBmb3IgdGhlIHF1b3RhLiBHb29kIGNhdGNoLiBPdmVyYWxsLCB0aGlzIHBhdGNoIHNlZW1zIGxpa2UgYSByZWFzb25hYmxlIHNhZmV0eSBjaGVjayB0byBwcmV2ZW50IHBvdGVudGlhbCBpbnRlZ2VyIG92ZXJmbG93cyBvciBvdGhlciB1bmV4cGVjdGVkIGJlaGF2aW91ciB3aGVyZSB0aGUgYGVzemAgb3IgYGNoYXJnZWRfc3pgIGFyZSBub3QgaW5pdGlhbGl6ZWQuIEkmIzM5O2xsIG5lZWQgdG8gbG9vayBhdCB0aGUgc3Vycm91bmRpbmcgY29kZSB0byBlbnN1cmUgdGhpcyBkb2VzbiYjMzk7dCBtYXNrIGEgZGVlcGVyIHJvb3QgY2F1c2UsIGJ1dCBvbiB0aGUgc3VyZmFjZSwgdGhpcyBsb29rcyBsaWtlIGEgc29saWQgY29udHJpYnV0aW9uIHRvIGltcHJvdmluZyB0aGUgcm9idXN0bmVzcyBvZiBEQU1PTiYjMzk7cyBxdW90YSBoYW5kbGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDMgMDA6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDttbS9kYW1vbi9jb3JlLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyNjMwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsyNjMwOlx0XHRjb21wbGV0ZShcdTAwMjZjb250cm9sLVx1MDAzZWNvbXBsZXRpb24pO1xuMjYzMTpcdFx0bXV0ZXhfbG9jayhcdTAwMjZjdHgtXHUwMDNld2Fsa19jb250cm9sX2xvY2spO1xuMjYzMjpcdFx0Y3R4LVx1MDAzZXdhbGtfY29udHJvbCA9IE5VTEw7XG4yNjMzOlx0XHRtdXRleF91bmxvY2soXHUwMDI2Y3R4LVx1MDAzZXdhbGtfY29udHJvbF9sb2NrKTtcbjI2MzQ6XHR9XG4yNjM1Olx0XG4yNjM2Olx0c3RhdGljIHZvaWQgZGFtb3NfY2hhcmdlX3F1b3RhKHN0cnVjdCBkYW1vc19xdW90YSAqcXVvdGEsXG4yNjM3Olx0XHRcdHVuc2lnbmVkIGxvbmcgc3pfcmVnaW9uLCB1bnNpZ25lZCBsb25nIHN6X2FwcGxpZWQpXG4yNjM4Olx0e1xuMjYzOTpcdFx0LypcbjI2NDA6XHRcdCAqIHN6X2FwcGxpZWQgY291bGQgYmUgYmlnZ2VyIHRoYW4gc3pfcmVnaW9uLCBkZXBlbmRpbmcgb24gb3BzXG4yNjQxOlx0XHQgKiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYWN0aW9uLCBlLmcuLCBkYW1vc19wYV9wYWdlb3V0KCkuICBDaGFyZ2Ugb25seVxuMjY0MjpcdFx0ICogdGhlIHJlZ2lvbiBzaXplIGluIHRoZSBjYXNlLlxuMjY0MzpcdFx0ICovXG4yNjQ0Olx0XHRpZiAoIXF1b3RhLVx1MDAzZWZhaWxfY2hhcmdlX2Rlbm9tIHx8IHN6X2FwcGxpZWQgXHUwMDNlIHN6X3JlZ2lvbilcbjI2NDU6XHRcdFx0cXVvdGEtXHUwMDNlY2hhcmdlZF9zeiAmIzQzOz0gc3pfcmVnaW9uO1xuMjY0NjpcdFx0ZWxzZVxuMjY0NzpcdFx0XHRxdW90YS1cdTAwM2VjaGFyZ2VkX3N6ICYjNDM7PSBzel9hcHBsaWVkICYjNDM7IG11bHRfZnJhYyhcbjI2NDg6XHRcdFx0XHRcdChzel9yZWdpb24gLSBzel9hcHBsaWVkKSxcbjI2NDk6XHRcdFx0XHRcdHF1b3RhLVx1MDAzZWZhaWxfY2hhcmdlX251bSxcbjI2NTA6XHRcdFx0XHRcdHF1b3RhLVx1MDAzZWZhaWxfY2hhcmdlX2Rlbm9tKTtcbjI2NTE6XHR9XG4yNjUyOlx0XG4yNjUzOlx0c3RhdGljIGJvb2wgZGFtb3NfcXVvdGFfaXNfZnVsbChzdHJ1Y3QgZGFtb3NfcXVvdGEgKnF1b3RhLFxuMjY1NDpcdFx0XHR1bnNpZ25lZCBsb25nIG1pbl9yZWdpb25fc3opXG4yNjU1Olx0e1xuMjY1NjpcdFx0aWYgKCFkYW1vc19xdW90YV9pc19zZXQocXVvdGEpKVxuMjY1NzpcdFx0XHRyZXR1cm4gZmFsc2U7XG4yNjU4Olx0XHRpZiAoIXF1b3RhLVx1MDAzZWNoYXJnZWRfc3opXG4yNjU5Olx0XHRcdHJldHVybiBmYWxzZTtcbjI2NjA6XHRcdGlmIChxdW90YS1cdTAwM2VjaGFyZ2VkX3N6IFx1MDAzZT0gcXVvdGEtXHUwMDNlZXN6KVxuMjY2MTpcdFx0XHRyZXR1cm4gdHJ1ZTtcbjI2NjI6XHRcdC8qXG4yNjYzOlx0XHQgKiBEQU1PUyBhY3Rpb24gaXMgYXBwbGllZCBwZXIgcmVnaW9uLCBzbyBcdTAwM2NtaW5fcmVnaW9uX3N6IHJlbWFpbmluZ1xuMjY2NDpcdFx0ICogcXVvdGEgbWVhbnMgdGhlIHF1b3RhIGlzIGVmZmVjdGl2ZWx5IGZ1bGwuXG4yNjY1Olx0XHQgKi9cbjI2NjY6XHRcdHJldHVybiBxdW90YS1cdTAwM2Vlc3ogLSBxdW90YS1cdTAwM2VjaGFyZ2VkX3N6IFx1MDAzYyBtaW5fcmVnaW9uX3N6O1xuMjY2NzpcdH1cbjI2Njg6XHRcbjI2Njk6XHRzdGF0aWMgdm9pZCBkYW1vc19hcHBseV9zY2hlbWUoc3RydWN0IGRhbW9uX2N0eCAqYywgc3RydWN0IGRhbW9uX3RhcmdldCAqdCxcbjI2NzA6XHRcdFx0c3RydWN0IGRhbW9uX3JlZ2lvbiAqciwgc3RydWN0IGRhbW9zICpzKVxuMjY3MTpcdHtcbjI2NzI6XHRcdHN0cnVjdCBkYW1vc19xdW90YSAqcXVvdGEgPSBcdTAwMjZzLVx1MDAzZXF1b3RhO1xuMjY3MzpcdFx0dW5zaWduZWQgbG9uZyBzeiA9IGRhbW9uX3N6X3JlZ2lvbihyKTtcbjI2NzQ6XHRcdHN0cnVjdCB0aW1lc3BlYzY0IGJlZ2luLCBlbmQ7XG4yNjc1Olx0XHR1bnNpZ25lZCBsb25nIHN6X2FwcGxpZWQgPSAwO1xuMjY3NjpcdFx0dW5zaWduZWQgbG9uZyBzel9vcHNfZmlsdGVyX3Bhc3NlZCA9IDA7XG4yNjc3Olx0XHQvKlxuMjY3ODpcdFx0ICogV2UgcGxhbiB0byBzdXBwb3J0IG11bHRpcGxlIGNvbnRleHQgcGVyIGtkYW1vbmQsIGFzIERBTU9OIHN5c2ZzXG4yNjc5Olx0XHQgKiBpbXBsaWVzIHdpdGggJiMzOTtucl9jb250ZXh0cyYjMzk7IGZpbGUuICBOZXZlcnRoZWxlc3MsIG9ubHkgc2luZ2xlIGNvbnRleHRcbjI2ODA6XHRcdCAqIHBlciBrZGFtb25kIGlzIHN1cHBvcnRlZCBmb3Igbm93LiAgU28sIHdlIGNhbiBzaW1wbHkgdXNlICYjMzk7MCYjMzk7IGNvbnRleHRcbjI2ODE6XHRcdCAqIGluZGV4IGhlcmUuXG4yNjgyOlx0XHQgKi9cbjI2ODM6XHRcdHVuc2lnbmVkIGludCBjaWR4ID0gMDtcbjI2ODQ6XHRcdHN0cnVjdCBkYW1vcyAqc2l0ZXI7XHRcdC8qIHNjaGVtZXMgaXRlcmF0b3IgKi9cbjI2ODU6XHRcdHVuc2lnbmVkIGludCBzaWR4ID0gMDtcbjI2ODY6XHRcdHN0cnVjdCBkYW1vbl90YXJnZXQgKnRpdGVyO1x0LyogdGFyZ2V0cyBpdGVyYXRvciAqL1xuMjY4NzpcdFx0dW5zaWduZWQgaW50IHRpZHggPSAwLCBucl9hY2Nlc3NlcyA9IDA7XG4yNjg4Olx0XHRib29sIGRvX3RyYWNlID0gZmFsc2U7XG4yNjg5Olx0XG4yNjkwOlx0XHQvKiBnZXQgaW5kaWNlcyBmb3IgdHJhY2VfZGFtb3NfYmVmb3JlX2FwcGx5KCkgKi9cbjI2OTE6XHRcdGlmICh0cmFjZV9kYW1vc19iZWZvcmVfYXBwbHlfZW5hYmxlZCgpKSB7XG4yNjkyOlx0XHRcdGRhbW9uX2Zvcl9lYWNoX3NjaGVtZShzaXRlciwgYykge1xuMjY5MzpcdFx0XHRcdGlmIChzaXRlciA9PSBzKVxuMjY5NDpcdFx0XHRcdFx0YnJlYWs7XG4yNjk1Olx0XHRcdFx0c2lkeCYjNDM7JiM0Mzs7XG4yNjk2Olx0XHRcdH1cbjI2OTc6XHRcdFx0ZGFtb25fZm9yX2VhY2hfdGFyZ2V0KHRpdGVyLCBjKSB7XG4yNjk4Olx0XHRcdFx0aWYgKHRpdGVyID09IHQpXG4yNjk5Olx0XHRcdFx0XHRicmVhaztcbjI3MDA6XHRcdFx0XHR0aWR4JiM0MzsmIzQzOztcbjI3MDE6XHRcdFx0fVxuMjcwMjpcdFx0XHRucl9hY2Nlc3NlcyA9IGRhbW9uX25yX2FjY2Vzc2VzX212c3VtKHIsIGMpO1xuMjcwMzpcdFx0XHRkb190cmFjZSA9IHRydWU7XG4yNzA0Olx0XHR9XG4yNzA1Olx0XG4yNzA2Olx0XHRpZiAoYy1cdTAwM2VvcHMuYXBwbHlfc2NoZW1lKSB7XG4yNzA3Olx0XHRcdGlmIChkYW1vc19xdW90YV9pc19zZXQocXVvdGEpIFx1MDAyNlx1MDAyNlxuMjcwODpcdFx0XHRcdFx0cXVvdGEtXHUwMDNlY2hhcmdlZF9zeiAmIzQzOyBzeiBcdTAwM2UgcXVvdGEtXHUwMDNlZXN6KSB7XG4yNzA5Olx0XHRcdFx0c3ogPSBBTElHTl9ET1dOKHF1b3RhLVx1MDAzZWVzeiAtIHF1b3RhLVx1MDAzZWNoYXJnZWRfc3osXG4yNzEwOlx0XHRcdFx0XHRcdGMtXHUwMDNlbWluX3JlZ2lvbl9zeik7XG4yNzExOlx0XHRcdFx0aWYgKCFzeilcbjI3MTI6XHRcdFx0XHRcdGdvdG8gdXBkYXRlX3N0YXQ7XG4yNzEzOlx0XHRcdFx0aWYgKGRhbW9uX3NwbGl0X3JlZ2lvbl9hdCh0LCByLCBzeikpXG4yNzE0Olx0XHRcdFx0XHRnb3RvIHVwZGF0ZV9zdGF0O1xuMjcxNTpcdFx0XHR9XG4yNzE2Olx0XHRcdGlmIChkYW1vc19jb3JlX2ZpbHRlcl9vdXQoYywgdCwgciwgcykpXG4yNzE3Olx0XHRcdFx0cmV0dXJuO1xuMjcxODpcdFx0XHRrdGltZV9nZXRfY29hcnNlX3RzNjQoXHUwMDI2YmVnaW4pO1xuMjcxOTpcdFx0XHR0cmFjZV9kYW1vc19iZWZvcmVfYXBwbHkoY2lkeCwgc2lkeCwgdGlkeCwgciwgbnJfYWNjZXNzZXMsXG4yNzIwOlx0XHRcdFx0XHRkYW1vbl9ucl9yZWdpb25zKHQpLCBkb190cmFjZSk7XG4yNzIxOlx0XHRcdHN6X2FwcGxpZWQgPSBjLVx1MDAzZW9wcy5hcHBseV9zY2hlbWUoYywgdCwgciwgcyxcbjI3MjI6XHRcdFx0XHRcdFx1MDAyNnN6X29wc19maWx0ZXJfcGFzc2VkKTtcbjI3MjM6XHRcdFx0ZGFtb3Nfd2Fsa19jYWxsX3dhbGsoYywgdCwgciwgcywgc3pfb3BzX2ZpbHRlcl9wYXNzZWQpO1xuMjcyNDpcdFx0XHRrdGltZV9nZXRfY29hcnNlX3RzNjQoXHUwMDI2ZW5kKTtcbjI3MjU6XHRcdFx0cXVvdGEtXHUwMDNldG90YWxfY2hhcmdlZF9ucyAmIzQzOz0gdGltZXNwZWM2NF90b19ucyhcdTAwMjZlbmQpIC1cbjI3MjY6XHRcdFx0XHR0aW1lc3BlYzY0X3RvX25zKFx1MDAyNmJlZ2luKTtcbjI3Mjc6XHRcdFx0ZGFtb3NfY2hhcmdlX3F1b3RhKHF1b3RhLCBzeiwgc3pfYXBwbGllZCk7XG4yNzI4Olx0XHRcdGlmIChkYW1vc19xdW90YV9pc19mdWxsKHF1b3RhLCBjLVx1MDAzZW1pbl9yZWdpb25fc3opKSB7XG4yNzI5Olx0XHRcdFx0cXVvdGEtXHUwMDNlY2hhcmdlX3RhcmdldF9mcm9tID0gdDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDMgMDA6MzM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODcyNwoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkLCBpbiB0aGUgZmlyc3QgcGVyc29uLCBhc3N1bWluZyBhIGZpZWxkIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBSZWxldmFudCBTZWN0aW9uKioKClJpZ2h0LCBsZXQmIzM5O3MgdGFrZSBhIGxvb2sgYXQgbGluZXMgMjczMC0yNzcwLiBJIG5lZWQgdG8gYmUgc3VyZSBJJiMzOTttIG5vdCBtaXNzaW5nIGFueXRoaW5nIGNyaXRpY2FsIGluIHRoaXMgc2VjdGlvbi4gSSB3YW50IHRvIHplcm8gaW4gb24gdGhlIGNvcmUgb2YgdGhlIGlkZWEuIFdoYXQgYXJlIHRoZSBrZXkgYXJndW1lbnRzIGJlaW5nIG1hZGUgaGVyZT8gQXJlIHRoZXkgc3VwcG9ydGluZyB0aGUgY3VycmVudCB3b3JrLCBvciBkbyB0aGV5IG9mZmVyIHNvbWUgY2hhbGxlbmdpbmcgaWRlYXM/IEkgbmVlZCB0byBiZSBvYmplY3RpdmUsIGFuZCB0aGF0IGFsc28gbWVhbnMgYmVpbmcgY2FyZWZ1bCBub3QgdG8gZ2V0IGNhdWdodCBpbiBhIG5lZ2F0aXZlIGZlZWRiYWNrIGxvb3AgaWYgaXQgaGFwcGVucyB0byBiZSBjaGFsbGVuZ2luZy4gT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byBpdCBhbmQgc2VlIHdoYXQgd2UgaGF2ZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDMgMDA6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDttbS9kYW1vbi9jb3JlLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyNzMwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQ1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzI3MzA6XHRcdFx0XHRxdW90YS1cdTAwM2VjaGFyZ2VfYWRkcl9mcm9tID0gci1cdTAwM2Vhci5lbmQ7XG4yNzMxOlx0XHRcdH1cbjI3MzI6XHRcdH1cbjI3MzM6XHRcdGlmIChzLVx1MDAzZWFjdGlvbiAhPSBEQU1PU19TVEFUKVxuMjczNDpcdFx0XHRyLVx1MDAzZWFnZSA9IDA7XG4yNzM1Olx0XG4yNzM2Olx0dXBkYXRlX3N0YXQ6XG4yNzM3Olx0XHRkYW1vc191cGRhdGVfc3RhdChzLCBzeiwgc3pfYXBwbGllZCwgc3pfb3BzX2ZpbHRlcl9wYXNzZWQpO1xuMjczODpcdH1cbjI3Mzk6XHRcbjI3NDA6XHRzdGF0aWMgdm9pZCBkYW1vbl9kb19hcHBseV9zY2hlbWVzKHN0cnVjdCBkYW1vbl9jdHggKmMsXG4yNzQxOlx0XHRcdFx0XHQgICBzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0LFxuMjc0MjpcdFx0XHRcdFx0ICAgc3RydWN0IGRhbW9uX3JlZ2lvbiAqcilcbjI3NDM6XHR7XG4yNzQ0Olx0XHRzdHJ1Y3QgZGFtb3MgKnM7XG4yNzQ1Olx0XG4yNzQ2Olx0XHRkYW1vbl9mb3JfZWFjaF9zY2hlbWUocywgYykge1xuMjc0NzpcdFx0XHRzdHJ1Y3QgZGFtb3NfcXVvdGEgKnF1b3RhID0gXHUwMDI2cy1cdTAwM2VxdW90YTtcbjI3NDg6XHRcbjI3NDk6XHRcdFx0aWYgKHRpbWVfYmVmb3JlKGMtXHUwMDNlcGFzc2VkX3NhbXBsZV9pbnRlcnZhbHMsIHMtXHUwMDNlbmV4dF9hcHBseV9zaXMpKVxuMjc1MDpcdFx0XHRcdGNvbnRpbnVlO1xuMjc1MTpcdFxuMjc1MjpcdFx0XHRpZiAoIXMtXHUwMDNld21hcmtzLmFjdGl2YXRlZClcbjI3NTM6XHRcdFx0XHRjb250aW51ZTtcbjI3NTQ6XHRcbjI3NTU6XHRcdFx0aWYgKCFxdW90YS1cdTAwM2Vlc3opXG4yNzU2Olx0XHRcdFx0Y29udGludWU7XG4yNzU3Olx0XG4yNzU4Olx0XHRcdC8qIENoZWNrIHRoZSBxdW90YSAqL1xuMjc1OTpcdFx0XHRpZiAoZGFtb3NfcXVvdGFfaXNfZnVsbChxdW90YSwgYy1cdTAwM2VtaW5fcmVnaW9uX3N6KSlcbjI3NjA6XHRcdFx0XHRjb250aW51ZTtcbjI3NjE6XHRcbjI3NjI6XHRcdFx0aWYgKGRhbW9zX3NraXBfY2hhcmdlZF9yZWdpb24odCwgciwgcywgYy1cdTAwM2VtaW5fcmVnaW9uX3N6KSlcbjI3NjM6XHRcdFx0XHRjb250aW51ZTtcbjI3NjQ6XHRcbjI3NjU6XHRcdFx0aWYgKHMtXHUwMDNlbWF4X25yX3NuYXBzaG90cyBcdTAwMjZcdTAwMjZcbjI3NjY6XHRcdFx0XHRcdHMtXHUwMDNlbWF4X25yX3NuYXBzaG90cyBcdTAwM2M9IHMtXHUwMDNlc3RhdC5ucl9zbmFwc2hvdHMpXG4yNzY3Olx0XHRcdFx0Y29udGludWU7XG4yNzY4Olx0XG4yNzY5Olx0XHRcdGlmIChkYW1vc192YWxpZF90YXJnZXQoYywgciwgcykpXG4yNzcwOlx0XHRcdFx0ZGFtb3NfYXBwbHlfc2NoZW1lKGMsIHQsIHIsIHMpO1xuMjc3MTpcdFxuMjc3MjpcdFx0XHRpZiAoZGFtb25faXNfbGFzdF9yZWdpb24ociwgdCkpXG4yNzczOlx0XHRcdFx0cy1cdTAwM2VzdGF0Lm5yX3NuYXBzaG90cyYjNDM7JiM0Mzs7XG4yNzc0Olx0XHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDAwOjMzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk1NzIKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiA0NjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIERBTU9OIFF1b3RhIEJlaGF2aW9yKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFdlJiMzOTtyZSBsb29raW5nIGF0IGhvdyBEQU1PUywgd2hpY2ggaXMgYmFzZWQgb24gREFNT04gb3BlcmF0aW9uIHNjaGVtZXMsIGhhbmRsZXMgcXVvdGFzLCBzcGVjaWZpY2FsbHkgdGhlIGNhc2VzIHdoZXJlIHRoZSBlZmZlY3RpdmUgc2l6ZSAoYHF1b3RhLSZndDtlc3pgKSBvciB0aGUgY2hhcmdlZCBzaXplIChgcXVvdGEtJmd0O2NoYXJnZWRfc3pgKSBpcyB6ZXJvLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgbG9naWMgZmxvdyBoZXJlLCBwYXJ0aWN1bGFybHkgYmVmb3JlIHRoaXMgcGF0Y2ggd2FzIGFwcGxpZWQuCgpMb29raW5nIGF0IHRoZSBgZGFtb3NfcXVvdGFfaXNfZnVsbGAgZnVuY3Rpb24sIHRoZXJlIGFyZSBhIGZldyBpbnRlcmVzdGluZyBjb25kaXRpb25zLiBJZiB0aGUgcXVvdGEgaXNuJiMzOTt0IHNldCwgZmluZSwgaXQgcmV0dXJucyBgZmFsc2VgLiBJZiBgY2hhcmdlZF9zemAgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIGBlc3pgLCBpdCBhbHNvIHJldHVybnMgdHJ1ZSwgbWFraW5nIHNlbnNlLiBCdXQgdGhpcyBuZXh0IGNvbmRpdGlvbiBpcyB3aGVyZSB0aGluZ3MgZ2V0IGEgbGl0dGxlIHRyaWNreTogYHF1b3RhLSZndDtlc3ogLSBxdW90YS0mZ3Q7Y2hhcmdlZF9zeiAmbHQ7IG1pbl9yZWdpb25fc3pgLgoKV2FpdCBhIG1pbnV0ZSwgd2hhdCBoYXBwZW5zIGlmIGBlc3pgIGlzIHplcm8/IE9yLCBpZiBgZXN6YCBpcyBsZXNzIHRoYW4gYG1pbl9yZWdpb25fc3pgIHdoaWxlIGBjaGFyZ2VkX3N6YCBpcyB6ZXJvPyBNeSBpbml0aWFsIHRob3VnaHQgaXMgaXQgd291bGQgZmFpbCBlYXJseSwgYnV0IGxldCBtZSBjaGVjayB0aGF0Li4uIE9rYXksIElmIGBlc3pgIGlzIGxlc3MgdGhhbiBgbWluX3JlZ2lvbl9zemAgYW5kIGBjaGFyZ2VkX3N6YCBpcyB6ZXJvLCB3ZSBnZXQgYGVzeiAtIDAgJmx0OyBtaW5fcmVnaW9uX3N6YCB3aGljaCwgKnllcyosIHJldHVybnMgYHRydWVgLCBpbmRpY2F0aW5nIHRoZSBxdW90YSBpcyBmdWxsIGV2ZW4gYmVmb3JlIGl0JiMzOTtzIGJlZW4gdXNlZC4gQnV0IGlmIGBlc3pgIGlzICplcXVhbCogdG8gemVybywgdGhlIGNvbXBhcmlzb24gYDAgJmd0Oz0gMGAgd291bGQgcmV0dXJuIHRydWUgYXMgd2VsbC4KClRoZW4sIGluIGBkYW1vbl9kb19hcHBseV9zY2hlbWVzYCwgd2UmIzM5O3JlIHNraXBwaW5nIHRoZSBxdW90YSBpZiBgIXF1b3RhLSZndDtlc3pgLiBBbmQsIGJhY2sgaW4gYGRhbW9zX3F1b3RhX2lzX2Z1bGxgLCB0aGVyZSYjMzk7cyBhIGNoZWNrIGZvciBgIXF1b3RhLSZndDtjaGFyZ2VkX3N6YCwgd2hpY2ggd291bGQgcmV0dXJuIGBmYWxzZWAuCgpTbywgaXQgc2VlbXMgdGhhdCB0aGVyZSYjMzk7cyBhIHBvdGVudGlhbCBxdWlyayBpbiB0aGUgbG9naWMgYXJvdW5kIGhvdyBEQU1PUyBoYW5kbGVzIHplcm8tc2l6ZWQgcXVvdGFzIG9yIHF1b3RhcyB0aGF0IGFyZSBzbWFsbGVyIHRoYW4gdGhlIG1pbmltYWwgcmVnaW9uIHNpemUuCgpOb3csIGEgY29tcGxldGVseSBzZXBhcmF0ZSB0aG91Z2h0OiBJcyBEQU1PTiBldmVuIGFjY2Vzc2libGUgYW5kIGZ1enplZCB3aXRoaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVT8gR29vZCBuZXdzLCBpdCBsb29rcyBsaWtlIERBTU9OIGlzIGluZGVlZCByZWFjaGFibGUgdGhyb3VnaCB0aGUgc3lzZnMgaW50ZXJmYWNlIGluIHVzZXIgc3BhY2UuIFRoaXMgbWVhbnMgdGhhdCB1c2Vyc3BhY2UgdG9vbHMgbGlrZSBzeXprYWxsZXIgY2FuIGludGVyYWN0IHdpdGggREFNT04sIGFsbG93aW5nIGZvciB0aGUgY3JlYXRpb24gb2YgY29udGV4dHMsIHNjaGVtZXMsIHF1b3RhcywgYW5kIHRhcmdldHMuIEkgc2hvdWxkIHNlZSBpZiBzeXprYWxsZXIgb3IgdGhlIHN5c2ZzIGFyZSBwcm9wZXJseSBpbnZva2luZyB0aGUgREFNT04gZnVuY3Rpb25zIGluIHRlc3RpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDAwOjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RhbW9uX3N5c2ZzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vZGFtb24mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDM2ODcgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTktXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYzoxMDpERUZJTkVfTVVURVgoZGFtb25fc3lzZnNfbG9jayk7XG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy0xMS1cbi0tXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy0xNS1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jOjE2OnN0cnVjdCBkYW1vbl9zeXNmc191bF9yYW5nZSAqZGFtb25fc3lzZnNfdWxfcmFuZ2VfYWxsb2MoXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy0xNy1cdFx0dW5zaWduZWQgbG9uZyBtaW4sXG4tLVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmMtMTkte1xubW0vZGFtb24vc3lzZnMtY29tbW9uLmM6MjA6XHRzdHJ1Y3QgZGFtb25fc3lzZnNfdWxfcmFuZ2UgKnJhbmdlID0ga21hbGxvY19vYmooKnJhbmdlKTtcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTIxLVxuLS1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jPTMxPXN0YXRpYyBzc2l6ZV90IG1pbl9zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLCBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgKmF0dHIsXG4tLVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmMtMzMte1xubW0vZGFtb24vc3lzZnMtY29tbW9uLmM6MzQ6XHRzdHJ1Y3QgZGFtb25fc3lzZnNfdWxfcmFuZ2UgKnJhbmdlID0gY29udGFpbmVyX29mKGtvYmosXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYzozNTpcdFx0XHRzdHJ1Y3QgZGFtb25fc3lzZnNfdWxfcmFuZ2UsIGtvYmopO1xubW0vZGFtb24vc3lzZnMtY29tbW9uLmMtMzYtXG4tLVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM9NDA9c3RhdGljIHNzaXplX3QgbWluX3N0b3JlKHN0cnVjdCBrb2JqZWN0ICprb2JqLCBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgKmF0dHIsXG4tLVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmMtNDIte1xubW0vZGFtb24vc3lzZnMtY29tbW9uLmM6NDM6XHRzdHJ1Y3QgZGFtb25fc3lzZnNfdWxfcmFuZ2UgKnJhbmdlID0gY29udGFpbmVyX29mKGtvYmosXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYzo0NDpcdFx0XHRzdHJ1Y3QgZGFtb25fc3lzZnNfdWxfcmFuZ2UsIGtvYmopO1xubW0vZGFtb24vc3lzZnMtY29tbW9uLmMtNDUtXHR1bnNpZ25lZCBsb25nIG1pbjtcbi0tXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYz01Nj1zdGF0aWMgc3NpemVfdCBtYXhfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaiwgc3RydWN0IGtvYmpfYXR0cmlidXRlICphdHRyLFxuLS1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTU4LXtcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jOjU5Olx0c3RydWN0IGRhbW9uX3N5c2ZzX3VsX3JhbmdlICpyYW5nZSA9IGNvbnRhaW5lcl9vZihrb2JqLFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM6NjA6XHRcdFx0c3RydWN0IGRhbW9uX3N5c2ZzX3VsX3JhbmdlLCBrb2JqKTtcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTYxLVxuLS1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jPTY1PXN0YXRpYyBzc2l6ZV90IG1heF9zdG9yZShzdHJ1Y3Qga29iamVjdCAqa29iaiwgc3RydWN0IGtvYmpfYXR0cmlidXRlICphdHRyLFxuLS1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTY3LXtcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jOjY4Olx0c3RydWN0IGRhbW9uX3N5c2ZzX3VsX3JhbmdlICpyYW5nZSA9IGNvbnRhaW5lcl9vZihrb2JqLFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM6Njk6XHRcdFx0c3RydWN0IGRhbW9uX3N5c2ZzX3VsX3JhbmdlLCBrb2JqKTtcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTcwLVx0dW5zaWduZWQgbG9uZyBtYXg7XG4tLVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmMtODAtXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYzo4MTp2b2lkIGRhbW9uX3N5c2ZzX3VsX3JhbmdlX3JlbGVhc2Uoc3RydWN0IGtvYmplY3QgKmtvYmopXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy04Mi17XG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYzo4MzpcdGtmcmVlKGNvbnRhaW5lcl9vZihrb2JqLCBzdHJ1Y3QgZGFtb25fc3lzZnNfdWxfcmFuZ2UsIGtvYmopKTtcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTg0LX1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTg1LVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM6ODY6c3RhdGljIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSBkYW1vbl9zeXNmc191bF9yYW5nZV9taW5fYXR0ciA9XG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy04Ny1cdFx0X19BVFRSX1JXX01PREUobWluLCAwNjAwKTtcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTg4LVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM6ODk6c3RhdGljIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSBkYW1vbl9zeXNmc191bF9yYW5nZV9tYXhfYXR0ciA9XG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy05MC1cdFx0X19BVFRSX1JXX01PREUobWF4LCAwNjAwKTtcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTkxLVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM6OTI6c3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmRhbW9uX3N5c2ZzX3VsX3JhbmdlX2F0dHJzW10gPSB7XG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYzo5MzpcdFx1MDAyNmRhbW9uX3N5c2ZzX3VsX3JhbmdlX21pbl9hdHRyLmF0dHIsXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYzo5NDpcdFx1MDAyNmRhbW9uX3N5c2ZzX3VsX3JhbmdlX21heF9hdHRyLmF0dHIsXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy05NS1cdE5VTEwsXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy05Ni19O1xubW0vZGFtb24vc3lzZnMtY29tbW9uLmM6OTc6QVRUUklCVVRFX0dST1VQUyhkYW1vbl9zeXNmc191bF9yYW5nZSk7XG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy05OC1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jOjk5OmNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfdWxfcmFuZ2Vfa3R5cGUgPSB7XG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYzoxMDA6XHQucmVsZWFzZSA9IGRhbW9uX3N5c2ZzX3VsX3JhbmdlX3JlbGVhc2UsXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy0xMDEtXHQuc3lzZnNfb3BzID0gXHUwMDI2a29ial9zeXNmc19vcHMsXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYzoxMDI6XHQuZGVmYXVsdF9ncm91cHMgPSBkYW1vbl9zeXNmc191bF9yYW5nZV9ncm91cHMsXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy0xMDMtfTtcbi0tXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy0xMDUtXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYzoxMDY6c3RhdGljIGJvb2wgZGFtb25fc3lzZnNfbWVtY2dfcGF0aF9lcShzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy0xMDctXHRcdGNoYXIgKm1lbWNnX3BhdGhfYnVmLCBjaGFyICpwYXRoKVxuLS1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTExNi1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jOjExNzppbnQgZGFtb25fc3lzZnNfbWVtY2dfcGF0aF90b19pZChjaGFyICptZW1jZ19wYXRoLCB1NjQgKmlkKVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmMtMTE4LXtcbi0tXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy0xMzQtXHRcdFx0Y29udGludWU7XG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYzoxMzU6XHRcdGlmIChkYW1vbl9zeXNmc19tZW1jZ19wYXRoX2VxKG1lbWNnLCBwYXRoLCBtZW1jZ19wYXRoKSkge1xubW0vZGFtb24vc3lzZnMtY29tbW9uLmMtMTM2LVx0XHRcdCppZCA9IG1lbV9jZ3JvdXBfaWQobWVtY2cpO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTgtXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaDo5OmV4dGVybiBzdHJ1Y3QgbXV0ZXggZGFtb25fc3lzZnNfbG9jaztcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTEwLVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6MTE6c3RydWN0IGRhbW9uX3N5c2ZzX3VsX3JhbmdlIHtcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTEyLVx0c3RydWN0IGtvYmplY3Qga29iajtcbi0tXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC0xNi1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oOjE3OnN0cnVjdCBkYW1vbl9zeXNmc191bF9yYW5nZSAqZGFtb25fc3lzZnNfdWxfcmFuZ2VfYWxsb2MoXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC0xOC1cdFx0dW5zaWduZWQgbG9uZyBtaW4sXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC0xOS1cdFx0dW5zaWduZWQgbG9uZyBtYXgpO1xubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6MjA6dm9pZCBkYW1vbl9zeXNmc191bF9yYW5nZV9yZWxlYXNlKHN0cnVjdCBrb2JqZWN0ICprb2JqKTtcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTIxLVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6MjI6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfdWxfcmFuZ2Vfa3R5cGU7XG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC0yMy1cbi0tXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC0yNy1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oOjI4OnN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVzIHtcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTI5LVx0c3RydWN0IGtvYmplY3Qga29iajtcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oOjMwOlx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZSAqKnNjaGVtZXNfYXJyO1xubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtMzEtXHRpbnQgbnI7XG4tLVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtMzMtXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaDozNDpzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lcyAqZGFtb25fc3lzZnNfc2NoZW1lc19hbGxvYyh2b2lkKTtcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oOjM1OnZvaWQgZGFtb25fc3lzZnNfc2NoZW1lc19ybV9kaXJzKHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVzICpzY2hlbWVzKTtcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTM2LVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6Mzc6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfc2NoZW1lc19rdHlwZTtcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTM4LVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6Mzk6aW50IGRhbW9uX3N5c2ZzX2FkZF9zY2hlbWVzKHN0cnVjdCBkYW1vbl9jdHggKmN0eCxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oOjQwOlx0XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lcyAqc3lzZnNfc2NoZW1lcyk7XG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC00MS1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oOjQyOnZvaWQgZGFtb25fc3lzZnNfc2NoZW1lc191cGRhdGVfc3RhdHMoXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaDo0MzpcdFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZXMgKnN5c2ZzX3NjaGVtZXMsXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC00NC1cdFx0c3RydWN0IGRhbW9uX2N0eCAqY3R4KTtcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTQ1LVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6NDY6dm9pZCBkYW1vc19zeXNmc19wb3B1bGF0ZV9yZWdpb25fZGlyKHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVzICpzeXNmc19zY2hlbWVzLFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtNDctXHRcdHN0cnVjdCBkYW1vbl9jdHggKmN0eCwgc3RydWN0IGRhbW9uX3RhcmdldCAqdCxcbi0tXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC01MC1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oOjUxOmludCBkYW1vbl9zeXNmc19zY2hlbWVzX2NsZWFyX3JlZ2lvbnMoXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaDo1MjpcdFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZXMgKnN5c2ZzX3NjaGVtZXMpO1xubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtNTMtXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaDo1NDppbnQgZGFtb3Nfc3lzZnNfc2V0X3F1b3RhX3Njb3JlcyhzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lcyAqc3lzZnNfc2NoZW1lcyxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTU1LVx0XHRzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oPTU3PXZvaWQgZGFtb3Nfc3lzZnNfdXBkYXRlX2VmZmVjdGl2ZV9xdW90YXMoXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaDo1ODpcdFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZXMgKnN5c2ZzX3NjaGVtZXMsXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC01OS1cdFx0c3RydWN0IGRhbW9uX2N0eCAqY3R4KTtcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTYwLVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6NjE6aW50IGRhbW9uX3N5c2ZzX21lbWNnX3BhdGhfdG9faWQoY2hhciAqbWVtY2dfcGF0aCwgdTY0ICppZCk7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTE0MT1zdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vc19zeXNmc19wcm9iZXNfa3R5cGUgPSB7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE0OS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNTA6c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb24ge1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE1MS1cdHN0cnVjdCBrb2JqZWN0IGtvYmo7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE1OS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNjA6c3RhdGljIHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uICpkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uX2FsbG9jKFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE2MS1cdFx0c3RydWN0IGRhbW9uX3JlZ2lvbiAqcmVnaW9uLCBzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTYyLXtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNjM6XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbiAqc3lzZnNfcmVnaW9uID0ga21hbGxvY19vYmooKnN5c2ZzX3JlZ2lvbik7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTY0LVxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0xNzY9c3RhdGljIGludCBkYW1vc19zeXNmc19yZWdpb25fYWRkX2RpcnMoXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTc3Olx0XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbiAqcmVnaW9uLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE3OC1cdFx0c3RydWN0IGRhbW9uX2N0eCAqY3R4LFxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0yMDI9c3RhdGljIHZvaWQgZGFtb3Nfc3lzZnNfcmVnaW9uX3JtX2RpcnMoXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MjAzOlx0XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbiAqcmVnaW9uKVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTIwNC17XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTIwOT1zdGF0aWMgc3NpemVfdCBzdGFydF9zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLCBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgKmF0dHIsXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTIxMS17XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MjEyOlx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb24gKnJlZ2lvbiA9IGNvbnRhaW5lcl9vZihrb2JqLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjIxMzpcdFx0XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbiwga29iaik7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjE0LVxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0yMTg9c3RhdGljIHNzaXplX3QgZW5kX3Nob3coc3RydWN0IGtvYmplY3QgKmtvYmosIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSAqYXR0cixcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjIwLXtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyMjE6XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbiAqcmVnaW9uID0gY29udGFpbmVyX29mKGtvYmosXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MjIyOlx0XHRcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uLCBrb2JqKTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yMjMtXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTIyNz1zdGF0aWMgc3NpemVfdCBucl9hY2Nlc3Nlc19zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLFxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yMjkte1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjIzMDpcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uICpyZWdpb24gPSBjb250YWluZXJfb2Yoa29iaixcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyMzE6XHRcdFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb24sIGtvYmopO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTIzMi1cbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MjM2PXN0YXRpYyBzc2l6ZV90IGFnZV9zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLCBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgKmF0dHIsXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTIzOC17XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MjM5Olx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb24gKnJlZ2lvbiA9IGNvbnRhaW5lcl9vZihrb2JqLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjI0MDpcdFx0XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbiwga29iaik7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjQxLVxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0yNDU9c3RhdGljIHNzaXplX3Qgc3pfZmlsdGVyX3Bhc3NlZF9zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLFxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yNDcte1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjI0ODpcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uICpyZWdpb24gPSBjb250YWluZXJfb2Yoa29iaixcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyNDk6XHRcdFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb24sIGtvYmopO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTI1MC1cbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjUzLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjI1NDpzdGF0aWMgdm9pZCBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uX3JlbGVhc2Uoc3RydWN0IGtvYmplY3QgKmtvYmopXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjU1LXtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyNTY6XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbiAqcmVnaW9uID0gY29udGFpbmVyX29mKGtvYmosXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MjU3Olx0XHRcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uLCBrb2JqKTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yNTgtXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTI2MS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyNjI6c3RhdGljIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uX3N0YXJ0X2F0dHIgPVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTI2My1cdFx0X19BVFRSX1JPX01PREUoc3RhcnQsIDA0MDApO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTI2NC1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyNjU6c3RhdGljIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uX2VuZF9hdHRyID1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yNjYtXHRcdF9fQVRUUl9ST19NT0RFKGVuZCwgMDQwMCk7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjY3LVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjI2ODpzdGF0aWMgc3RydWN0IGtvYmpfYXR0cmlidXRlIGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb25fbnJfYWNjZXNzZXNfYXR0ciA9XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjY5LVx0XHRfX0FUVFJfUk9fTU9ERShucl9hY2Nlc3NlcywgMDQwMCk7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjcwLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjI3MTpzdGF0aWMgc3RydWN0IGtvYmpfYXR0cmlidXRlIGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb25fYWdlX2F0dHIgPVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTI3Mi1cdFx0X19BVFRSX1JPX01PREUoYWdlLCAwNDAwKTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yNzMtXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6Mjc0OnN0YXRpYyBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbl9zel9maWx0ZXJfcGFzc2VkX2F0dHIgPVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTI3NS1cdFx0X19BVFRSX1JPX01PREUoc3pfZmlsdGVyX3Bhc3NlZCwgMDQwMCk7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjc2LVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjI3NzpzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbl9hdHRyc1tdID0ge1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjI3ODpcdFx1MDAyNmRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb25fc3RhcnRfYXR0ci5hdHRyLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjI3OTpcdFx1MDAyNmRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb25fZW5kX2F0dHIuYXR0cixcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyODA6XHRcdTAwMjZkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uX25yX2FjY2Vzc2VzX2F0dHIuYXR0cixcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyODE6XHRcdTAwMjZkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uX2FnZV9hdHRyLmF0dHIsXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MjgyOlx0XHUwMDI2ZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbl9zel9maWx0ZXJfcGFzc2VkX2F0dHIuYXR0cixcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yODMtXHROVUxMLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTI4NC19O1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjI4NTpBVFRSSUJVVEVfR1JPVVBTKGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb24pO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTI4Ni1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyODc6c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbl9rdHlwZSA9IHtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyODg6XHQucmVsZWFzZSA9IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb25fcmVsZWFzZSxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yODktXHQuc3lzZnNfb3BzID0gXHUwMDI2a29ial9zeXNmc19vcHMsXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MjkwOlx0LmRlZmF1bHRfZ3JvdXBzID0gZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbl9ncm91cHMsXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjkxLX07XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTI5Ni1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyOTc6c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb25zIHtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yOTgtXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zMDMtXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MzA0OnN0YXRpYyBzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbnMgKlxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjMwNTpkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uc19hbGxvYyh2b2lkKVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTMwNi17XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MzA3Olx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb25zICpyZWdpb25zID0ga21hbGxvY19vYmooKnJlZ2lvbnMpO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTMwOC1cbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MzE5PXN0YXRpYyBzc2l6ZV90IHRvdGFsX2J5dGVzX3Nob3coc3RydWN0IGtvYmplY3QgKmtvYmosXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTMyMS17XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MzIyOlx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb25zICpyZWdpb25zID0gY29udGFpbmVyX29mKGtvYmosXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MzIzOlx0XHRcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9ucywga29iaik7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzI0LVxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zMjctXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MzI4OnN0YXRpYyB2b2lkIGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb25zX3JtX2RpcnMoXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MzI5Olx0XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbnMgKnJlZ2lvbnMpXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzMwLXtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzozMzE6XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbiAqciwgKm5leHQ7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzMyLVxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zNDEtXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MzQyOnN0YXRpYyB2b2lkIGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb25zX3JlbGVhc2Uoc3RydWN0IGtvYmplY3QgKmtvYmopXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzQzLXtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzozNDQ6XHRrZnJlZShjb250YWluZXJfb2Yoa29iaiwgc3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb25zLCBrb2JqKSk7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzQ1LX1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zNDYtXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MzQ3OnN0YXRpYyBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbnNfdG90YWxfYnl0ZXNfYXR0ciA9XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzQ4LVx0XHRfX0FUVFJfUk9fTU9ERSh0b3RhbF9ieXRlcywgMDQwMCk7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzQ5LVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjM1MDpzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbnNfYXR0cnNbXSA9IHtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzozNTE6XHRcdTAwMjZkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uc190b3RhbF9ieXRlc19hdHRyLmF0dHIsXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzUyLVx0TlVMTCxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zNTMtfTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzozNTQ6QVRUUklCVVRFX0dST1VQUyhkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9ucyk7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzU1LVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjM1NjpzdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uc19rdHlwZSA9IHtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzozNTc6XHQucmVsZWFzZSA9IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb25zX3JlbGVhc2UsXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzU4LVx0LnN5c2ZzX29wcyA9IFx1MDAyNmtvYmpfc3lzZnNfb3BzLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjM1OTpcdC5kZWZhdWx0X2dyb3VwcyA9IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb25zX2dyb3Vwcyxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zNjAtfTtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzY1LVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjM2NjpzdHJ1Y3QgZGFtb25fc3lzZnNfc3RhdHMge1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTM2Ny1cdHN0cnVjdCBrb2JqZWN0IGtvYmo7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTM3Ny1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzozNzg6c3RhdGljIHN0cnVjdCBkYW1vbl9zeXNmc19zdGF0cyAqZGFtb25fc3lzZnNfc3RhdHNfYWxsb2Modm9pZClcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zNzkte1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjM4MDpcdHJldHVybiBremFsbG9jX29iaihzdHJ1Y3QgZGFtb25fc3lzZnNfc3RhdHMpO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTM4MS19XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTM4Mz1zdGF0aWMgc3NpemVfdCBucl90cmllZF9zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLCBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgKmF0dHIsXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTM4NS17XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6Mzg2Olx0c3RydWN0IGRhbW9uX3N5c2ZzX3N0YXRzICpzdGF0cyA9IGNvbnRhaW5lcl9vZihrb2JqLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjM4NzpcdFx0XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc3RhdHMsIGtvYmopO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTM4OC1cbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MzkyPXN0YXRpYyBzc2l6ZV90IHN6X3RyaWVkX3Nob3coc3RydWN0IGtvYmplY3QgKmtvYmosIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSAqYXR0cixcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzk0LXtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzozOTU6XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc3RhdHMgKnN0YXRzID0gY29udGFpbmVyX29mKGtvYmosXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6Mzk2Olx0XHRcdHN0cnVjdCBkYW1vbl9zeXNmc19zdGF0cywga29iaik7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzk3LVxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz00MDE9c3RhdGljIHNzaXplX3QgbnJfYXBwbGllZF9zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLFxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy00MDMte1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjQwNDpcdHN0cnVjdCBkYW1vbl9zeXNmc19zdGF0cyAqc3RhdHMgPSBjb250YWluZXJfb2Yoa29iaixcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo0MDU6XHRcdFx0c3RydWN0IGRhbW9uX3N5c2ZzX3N0YXRzLCBrb2JqKTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy00MDYtXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTQxMD1zdGF0aWMgc3NpemVfdCBzel9hcHBsaWVkX3Nob3coc3RydWN0IGtvYmplY3QgKmtvYmosXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTQxMi17XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NDEzOlx0c3RydWN0IGRhbW9uX3N5c2ZzX3N0YXRzICpzdGF0cyA9IGNvbnRhaW5lcl9vZihrb2JqLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjQxNDpcdFx0XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc3RhdHMsIGtvYmopO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTQxNS1cbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9NDE5PXN0YXRpYyBzc2l6ZV90IHN6X29wc19maWx0ZXJfcGFzc2VkX3Nob3coc3RydWN0IGtvYmplY3QgKmtvYmosXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTQyMS17XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NDIyOlx0c3RydWN0IGRhbW9uX3N5c2ZzX3N0YXRzICpzdGF0cyA9IGNvbnRhaW5lcl9vZihrb2JqLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjQyMzpcdFx0XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc3RhdHMsIGtvYmopO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTQyNC1cbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9NDI4PXN0YXRpYyBzc2l6ZV90IHF0X2V4Y2VlZHNfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaixcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNDMwLXtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo0MzE6XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc3RhdHMgKnN0YXRzID0gY29udGFpbmVyX29mKGtvYmosXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NDMyOlx0XHRcdHN0cnVjdCBkYW1vbl9zeXNmc19zdGF0cywga29iaik7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNDMzLVxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz00Mzc9c3RhdGljIHNzaXplX3QgbnJfc25hcHNob3RzX3Nob3coc3RydWN0IGtvYmplY3QgKmtvYmosXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTQzOS17XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NDQwOlx0c3RydWN0IGRhbW9uX3N5c2ZzX3N0YXRzICpzdGF0cyA9IGNvbnRhaW5lcl9vZihrb2JqLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjQ0MTpcdFx0XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc3RhdHMsIGtvYmopO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTQ0Mi1cbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9NDQ2PXN0YXRpYyBzc2l6ZV90IG1heF9ucl9zbmFwc2hvdHNfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaixcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNDQ4LXtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo0NDk6XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc3RhdHMgKnN0YXRzID0gY29udGFpbmVyX29mKGtvYmosXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NDUwOlx0XHRcdHN0cnVjdCBkYW1vbl9zeXNmc19zdGF0cywga29iaik7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNDUxLVxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz00NTU9c3RhdGljIHNzaXplX3QgbWF4X25yX3NuYXBzaG90c19zdG9yZShzdHJ1Y3Qga29iamVjdCAqa29iaixcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNDU3LXtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo0NTg6XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc3RhdHMgKnN0YXRzID0gY29udGFpbmVyX29mKGtvYmosXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NDU5Olx0XHRcdHN0cnVjdCBkYW1vbl9zeXNmc19zdGF0cywga29iaik7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNDYwLVx0dW5zaWduZWQgbG9uZyBtYXhfbnJfc25hcHNob3RzLCBlcnIgPSBrc3RydG91bChidWYsIDAsIFx1MDAyNm1heF9ucl9zbmFwc2hvdHMpO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy00NjctXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NDY4OnN0YXRpYyB2b2lkIGRhbW9uX3N5c2ZzX3N0YXRzX3JlbGVhc2Uoc3RydWN0IGtvYmplY3QgKmtvYmopXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNDY5LXtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo0NzA6XHRrZnJlZShjb250YWluZXJfb2Yoa29iaiwgc3RydWN0IGRhbW9uX3N5c2ZzX3N0YXRzLCBrb2JqKSk7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNDcxLX1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy00NzItXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NDczOnN0YXRpYyBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgZGFtb25fc3lzZnNfc3RhdHNfbnJfdHJpZWRfYXR0ciA9XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNDc0LVx0XHRfX0FUVFJfUk9fTU9ERShucl90cmllZCwgMDQwMCk7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNDc1LVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjQ3NjpzdGF0aWMgc3RydWN0IGtvYmpfYXR0cmlidXRlIGRhbW9uX3N5c2ZzX3N0YXRzX3N6X3RyaWVkX2F0dHIgPVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTQ3Ny1cdFx0X19BVFRSX1JPX01PREUoc3pfdHJpZWQsIDA0MDApO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTQ3OC1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo0Nzk6c3RhdGljIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSBkYW1vbl9zeXNmc19zdGF0c19ucl9hcHBsaWVkX2F0dHIgPVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTQ4MC1cdFx0X19BVFRSX1JPX01PREUobnJfYXBwbGllZCwgMDQwMCk7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNDgxLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjQ4MjpzdGF0aWMgc3RydWN0IGtvYmpfYXR0cmlidXRlIGRhbW9uX3N5c2ZzX3N0YXRzX3N6X2FwcGxpZWRfYXR0ciA9XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNDgzLVx0XHRfX0FUVFJfUk9fTU9ERShzel9hcHBsaWVkLCAwNDAwKTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy00ODQtXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NDg1OnN0YXRpYyBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgZGFtb25fc3lzZnNfc3RhdHNfc3pfb3BzX2ZpbHRlcl9wYXNzZWRfYXR0ciA9XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNDg2LVx0XHRfX0FUVFJfUk9fTU9ERShzel9vcHNfZmlsdGVyX3Bhc3NlZCwgMDQwMCk7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNDg3LVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjQ4ODpzdGF0aWMgc3RydWN0IGtvYmpfYXR0cmlidXRlIGRhbW9uX3N5c2ZzX3N0YXRzX3F0X2V4Y2VlZHNfYXR0ciA9XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNDg5LVx0XHRfX0FUVFJfUk9fTU9ERShxdF9leGNlZWRzLCAwNDAwKTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy00OTAtXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NDkxOnN0YXRpYyBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgZGFtb25fc3lzZnNfc3RhdHNfbnJfc25hcHNob3RzX2F0dHIgPVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTQ5Mi1cdFx0X19BVFRSX1JPX01PREUobnJfc25hcHNob3RzLCAwNDAwKTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy00OTMtXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NDk0OnN0YXRpYyBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgZGFtb25fc3lzZnNfc3RhdHNfbWF4X25yX3NuYXBzaG90c19hdHRyID1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy00OTUtXHRcdF9fQVRUUl9SV19NT0RFKG1heF9ucl9zbmFwc2hvdHMsIDA2MDApO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTQ5Ni1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo0OTc6c3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmRhbW9uX3N5c2ZzX3N0YXRzX2F0dHJzW10gPSB7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NDk4Olx0XHUwMDI2ZGFtb25fc3lzZnNfc3RhdHNfbnJfdHJpZWRfYXR0ci5hdHRyLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjQ5OTpcdFx1MDAyNmRhbW9uX3N5c2ZzX3N0YXRzX3N6X3RyaWVkX2F0dHIuYXR0cixcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo1MDA6XHRcdTAwMjZkYW1vbl9zeXNmc19zdGF0c19ucl9hcHBsaWVkX2F0dHIuYXR0cixcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo1MDE6XHRcdTAwMjZkYW1vbl9zeXNmc19zdGF0c19zel9hcHBsaWVkX2F0dHIuYXR0cixcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo1MDI6XHRcdTAwMjZkYW1vbl9zeXNmc19zdGF0c19zel9vcHNfZmlsdGVyX3Bhc3NlZF9hdHRyLmF0dHIsXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NTAzOlx0XHUwMDI2ZGFtb25fc3lzZnNfc3RhdHNfcXRfZXhjZWVkc19hdHRyLmF0dHIsXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NTA0Olx0XHUwMDI2ZGFtb25fc3lzZnNfc3RhdHNfbnJfc25hcHNob3RzX2F0dHIuYXR0cixcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo1MDU6XHRcdTAwMjZkYW1vbl9zeXNmc19zdGF0c19tYXhfbnJfc25hcHNob3RzX2F0dHIuYXR0cixcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy01MDYtXHROVUxMLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTUwNy19O1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjUwODpBVFRSSUJVVEVfR1JPVVBTKGRhbW9uX3N5c2ZzX3N0YXRzKTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy01MDktXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NTEwOnN0YXRpYyBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9uX3N5c2ZzX3N0YXRzX2t0eXBlID0ge1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjUxMTpcdC5yZWxlYXNlID0gZGFtb25fc3lzZnNfc3RhdHNfcmVsZWFzZSxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy01MTItXHQuc3lzZnNfb3BzID0gXHUwMDI2a29ial9zeXNmc19vcHMsXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NTEzOlx0LmRlZmF1bHRfZ3JvdXBzID0gZGFtb25fc3lzZnNfc3RhdHNfZ3JvdXBzLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTUxNC19O1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz01MjM9ZW51bSBkYW1vc19zeXNmc19maWx0ZXJfaGFuZGxlX2xheWVyIHtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNTI4LVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjUyOTpzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlciB7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNTMwLVx0c3RydWN0IGtvYmplY3Qga29iajtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNTQwLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjU0MTpzdGF0aWMgc3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9maWx0ZXIgKmRhbW9uX3N5c2ZzX3NjaGVtZV9maWx0ZXJfYWxsb2MoXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNTQyLVx0XHRlbnVtIGRhbW9zX3N5c2ZzX2ZpbHRlcl9oYW5kbGVfbGF5ZXIgbGF5ZXIpXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNTQzLXtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo1NDQ6XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlciAqZmlsdGVyO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTU0NS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo1NDY6XHRmaWx0ZXIgPSBremFsbG9jX29iaihzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlcik7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNTQ3LVx0aWYgKGZpbHRlcilcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9NTkzPXN0YXRpYyBzc2l6ZV90IHR5cGVfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaixcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNTk1LXtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo1OTY6XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlciAqZmlsdGVyID0gY29udGFpbmVyX29mKGtvYmosXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NTk3Olx0XHRcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfZmlsdGVyLCBrb2JqKTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy01OTgtXHRpbnQgaTtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9NjI3PXN0YXRpYyBzc2l6ZV90IHR5cGVfc3RvcmUoc3RydWN0IGtvYmplY3QgKmtvYmosXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTYyOS17XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NjMwOlx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9maWx0ZXIgKmZpbHRlciA9IGNvbnRhaW5lcl9vZihrb2JqLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjYzMTpcdFx0XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlciwga29iaik7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNjMyLVx0c3NpemVfdCByZXQgPSAtRUlOVkFMO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz02NTI9c3RhdGljIHNzaXplX3QgbWF0Y2hpbmdfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaixcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNjU0LXtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo2NTU6XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlciAqZmlsdGVyID0gY29udGFpbmVyX29mKGtvYmosXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NjU2Olx0XHRcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfZmlsdGVyLCBrb2JqKTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy02NTctXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTY2MT1zdGF0aWMgc3NpemVfdCBtYXRjaGluZ19zdG9yZShzdHJ1Y3Qga29iamVjdCAqa29iaixcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNjYzLXtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo2NjQ6XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlciAqZmlsdGVyID0gY29udGFpbmVyX29mKGtvYmosXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NjY1Olx0XHRcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfZmlsdGVyLCBrb2JqKTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy02NjYtXHRib29sIG1hdGNoaW5nO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz02NzY9c3RhdGljIHNzaXplX3QgYWxsb3dfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaixcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNjc4LXtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo2Nzk6XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlciAqZmlsdGVyID0gY29udGFpbmVyX29mKGtvYmosXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NjgwOlx0XHRcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfZmlsdGVyLCBrb2JqKTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy02ODEtXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTY4NT1zdGF0aWMgc3NpemVfdCBhbGxvd19zdG9yZShzdHJ1Y3Qga29iamVjdCAqa29iaixcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNjg3LXtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo2ODg6XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlciAqZmlsdGVyID0gY29udGFpbmVyX29mKGtvYmosXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6Njg5Olx0XHRcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfZmlsdGVyLCBrb2JqKTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy02OTAtXHRib29sIGFsbG93O1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz03MDA9c3RhdGljIHNzaXplX3QgbWVtY2dfcGF0aF9zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLFxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy03MDIte1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjcwMzpcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfZmlsdGVyICpmaWx0ZXIgPSBjb250YWluZXJfb2Yoa29iaixcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo3MDQ6XHRcdFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9maWx0ZXIsIGtvYmopO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTcwNS1cdGludCBsZW47XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNzA2LVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjcwNzpcdGlmICghbXV0ZXhfdHJ5bG9jayhcdTAwMjZkYW1vbl9zeXNmc19sb2NrKSlcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy03MDgtXHRcdHJldHVybiAtRUJVU1k7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTcxMC1cdFx0XHRmaWx0ZXItXHUwMDNlbWVtY2dfcGF0aCA/IGZpbHRlci1cdTAwM2VtZW1jZ19wYXRoIDogXCYjMzQ7XCYjMzQ7KTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo3MTE6XHRtdXRleF91bmxvY2soXHUwMDI2ZGFtb25fc3lzZnNfbG9jayk7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNzEyLVx0cmV0dXJuIGxlbjtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9NzE1PXN0YXRpYyBzc2l6ZV90IG1lbWNnX3BhdGhfc3RvcmUoc3RydWN0IGtvYmplY3QgKmtvYmosXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTcxNy17XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NzE4Olx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9maWx0ZXIgKmZpbHRlciA9IGNvbnRhaW5lcl9vZihrb2JqLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjcxOTpcdFx0XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlciwga29iaik7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNzIwLVx0Y2hhciAqcGF0aCA9IGttYWxsb2NfYXJyYXkoc2l6ZV9hZGQoY291bnQsIDEpLCBzaXplb2YoKnBhdGgpLFxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy03MjYtXHRzdHJzY3B5KHBhdGgsIGJ1ZiwgY291bnQgJiM0MzsgMSk7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NzI3Olx0aWYgKCFtdXRleF90cnlsb2NrKFx1MDAyNmRhbW9uX3N5c2ZzX2xvY2spKSB7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNzI4LVx0XHRrZnJlZShwYXRoKTtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNzMyLVx0ZmlsdGVyLVx1MDAzZW1lbWNnX3BhdGggPSBwYXRoO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjczMzpcdG11dGV4X3VubG9jayhcdTAwMjZkYW1vbl9zeXNmc19sb2NrKTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy03MzQtXHRyZXR1cm4gY291bnQ7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTczNz1zdGF0aWMgc3NpemVfdCBhZGRyX3N0YXJ0X3Nob3coc3RydWN0IGtvYmplY3QgKmtvYmosXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTczOS17XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NzQwOlx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9maWx0ZXIgKmZpbHRlciA9IGNvbnRhaW5lcl9vZihrb2JqLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjc0MTpcdFx0XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlciwga29iaik7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNzQyLVxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz03NDY9c3RhdGljIHNzaXplX3QgYWRkcl9zdGFydF9zdG9yZShzdHJ1Y3Qga29iamVjdCAqa29iaixcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNzQ4LXtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo3NDk6XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlciAqZmlsdGVyID0gY29udGFpbmVyX29mKGtvYmosXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NzUwOlx0XHRcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfZmlsdGVyLCBrb2JqKTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy03NTEtXHRpbnQgZXJyID0ga3N0cnRvdWwoYnVmLCAwLCBcdTAwMjZmaWx0ZXItXHUwMDNlYWRkcl9yYW5nZS5zdGFydCk7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTc1Nj1zdGF0aWMgc3NpemVfdCBhZGRyX2VuZF9zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLFxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy03NTgte1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjc1OTpcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfZmlsdGVyICpmaWx0ZXIgPSBjb250YWluZXJfb2Yoa29iaixcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo3NjA6XHRcdFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9maWx0ZXIsIGtvYmopO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTc2MS1cbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9NzY1PXN0YXRpYyBzc2l6ZV90IGFkZHJfZW5kX3N0b3JlKHN0cnVjdCBrb2JqZWN0ICprb2JqLFxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy03Njcte1xuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDAwOjMzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyMzkyCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMTIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBEQU1PUyBTY2hlbWUgRXhlY3V0aW9uKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEl0IGxvb2tzIGxpa2Ugd2UmIzM5O3JlIGRpdmluZyBpbnRvIHRoZSBpbm5lciB3b3JraW5ncyBvZiBEQU1PUyAoRGF0YSBBY2Nlc3MgTW9uaXRvcmluZyBhbmQgT3BlcmF0aW9ucykgc2NoZW1lcywgd2hpY2ggYXJlIGNydWNpYWwgZm9yIHRoaW5ncyBsaWtlIHF1b3RhIGVuZm9yY2VtZW50LCBtZW1vcnkgcmVjbGFtYXRpb24sIExSVSBzb3J0aW5nLCBhbmQgc3RhdGlzdGljYWwgdHJhY2tpbmcuIFRoZSBjb21taXQgc3BlY2lmaWNhbGx5IHRvdWNoZXMgYG1tL2RhbW9uL2NvcmUuY2AsIGZvY3VzaW5nIG9uIHRoZSBmdW5jdGlvbnMgYGRhbW9zX3F1b3RhX2lzX2Z1bGxgIGFuZCBgZGFtb25fZG9fYXBwbHlfc2NoZW1lc2AuCgpNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB0cmFjZSB0aGUgZXhlY3V0aW9uIGZsb3cuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgb3RoZXIgZnVuY3Rpb25zIGluIGBtbS9kYW1vbi9jb3JlLmNgIGFyZSBpbnZva2VkIGR1cmluZyB0aGUgZXhlY3V0aW9uIG9mIGEgREFNT1Mgc2NoZW1lIG9yIHdoZW4gYSBjb250ZXh0IGlzIGJlaW5nIHByb2Nlc3NlZCB3aXRoaW4gdGhpcyBtb2R1bGUuIFRoZSBnb2FsIGlzIGEgY2xlYXIgcGljdHVyZSBvZiBob3cgdGhlc2Ugc2NoZW1lcyBhcmUgdHJpZ2dlcmVkIGFuZCB3aGF0IHRoZWlyIGRlcGVuZGVuY2llcyBhcmUuCgpUbyBzdGFydCwgSSYjMzk7bGwgaWRlbnRpZnkgdGhlIG5vbi1zdGF0aWMgZW50cnkgcG9pbnRzIHdpdGhpbiBgbW0vZGFtb24vY29yZS5jYC4gS25vd2luZyB0aGUgZXh0ZXJuYWxseSBhY2Nlc3NpYmxlIGZ1bmN0aW9ucyB3aWxsIGdpdmUgbWUgdGhlIGJlc3Qgb3ZlcnZpZXcgb2YgaG93IHRoZSBEQU1PUyBjb3JlIGlzIGludGVyYWN0ZWQgd2l0aCBieSBvdGhlciBtb2R1bGVzIG9yIHRoZSBrZXJuZWwgYXMgYSB3aG9sZS4gVGhpcyBpcyB0aGUgZmlyc3Qgc3RlcCB0b3dhcmRzIHVuZGVyc3RhbmRpbmcgdGhlIGZ1bGwgZXhlY3V0aW9uIHBhdGguCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDAwOjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O15bYS16QS1aX10uKlxcKCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL2RhbW9uL2NvcmUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgODA2IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5tbS9kYW1vbi9jb3JlLmMtMjUtXG5tbS9kYW1vbi9jb3JlLmM6MjY6c3RhdGljIERFRklORV9NVVRFWChkYW1vbl9sb2NrKTtcbm1tL2RhbW9uL2NvcmUuYy0yNy1zdGF0aWMgaW50IG5yX3J1bm5pbmdfY3R4cztcbm1tL2RhbW9uL2NvcmUuYz0yOD1zdGF0aWMgYm9vbCBydW5uaW5nX2V4Y2x1c2l2ZV9jdHhzO1xubW0vZGFtb24vY29yZS5jLTI5LVxubW0vZGFtb24vY29yZS5jOjMwOnN0YXRpYyBERUZJTkVfTVVURVgoZGFtb25fb3BzX2xvY2spO1xubW0vZGFtb24vY29yZS5jLTMxLXN0YXRpYyBzdHJ1Y3QgZGFtb25fb3BlcmF0aW9ucyBkYW1vbl9yZWdpc3RlcmVkX29wc1tOUl9EQU1PTl9PUFNdO1xuLS1cbm1tL2RhbW9uL2NvcmUuYz0zMz1zdGF0aWMgc3RydWN0IGttZW1fY2FjaGUgKmRhbW9uX3JlZ2lvbl9jYWNoZSBfX3JvX2FmdGVyX2luaXQ7XG4tLVxubW0vZGFtb24vY29yZS5jLTM1LS8qIFNob3VsZCBiZSBjYWxsZWQgdW5kZXIgZGFtb25fb3BzX2xvY2sgd2l0aCBpZCBzbWFsbGVyIHRoYW4gTlJfREFNT05fT1BTICovXG5tbS9kYW1vbi9jb3JlLmM6MzY6c3RhdGljIGJvb2wgX19kYW1vbl9pc19yZWdpc3RlcmVkX29wcyhlbnVtIGRhbW9uX29wc19pZCBpZClcbm1tL2RhbW9uL2NvcmUuYy0zNy17XG4tLVxubW0vZGFtb24vY29yZS5jLTUwLSAqL1xubW0vZGFtb24vY29yZS5jOjUxOmJvb2wgZGFtb25faXNfcmVnaXN0ZXJlZF9vcHMoZW51bSBkYW1vbl9vcHNfaWQgaWQpXG5tbS9kYW1vbi9jb3JlLmMtNTIte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy03MS0gKi9cbm1tL2RhbW9uL2NvcmUuYzo3MjppbnQgZGFtb25fcmVnaXN0ZXJfb3BzKHN0cnVjdCBkYW1vbl9vcGVyYXRpb25zICpvcHMpXG5tbS9kYW1vbi9jb3JlLmMtNzMte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy05OC0gKi9cbm1tL2RhbW9uL2NvcmUuYzo5OTppbnQgZGFtb25fc2VsZWN0X29wcyhzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsIGVudW0gZGFtb25fb3BzX2lkIGlkKVxubW0vZGFtb24vY29yZS5jLTEwMC17XG4tLVxubW0vZGFtb24vY29yZS5jLTExNC1cbm1tL2RhbW9uL2NvcmUuYzoxMTU6c3RydWN0IGRhbW9uX3ByZXAgKmRhbW9uX25ld19wcmVwKGVudW0gZGFtb25fcHJlcF9hY3Rpb24gYWN0aW9uKVxubW0vZGFtb24vY29yZS5jLTExNi17XG4tLVxubW0vZGFtb24vY29yZS5jLTEyNi1cbm1tL2RhbW9uL2NvcmUuYzoxMjc6dm9pZCBkYW1vbl9hZGRfcHJlcChzdHJ1Y3QgZGFtb25fcHJvYmUgKnAsIHN0cnVjdCBkYW1vbl9wcmVwICpwcmVwKVxubW0vZGFtb24vY29yZS5jLTEyOC17XG4tLVxubW0vZGFtb24vY29yZS5jLTEzMS1cbm1tL2RhbW9uL2NvcmUuYzoxMzI6c3RhdGljIHZvaWQgZGFtb25fZGVsX3ByZXAoc3RydWN0IGRhbW9uX3ByZXAgKnApXG5tbS9kYW1vbi9jb3JlLmMtMTMzLXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTM2LVxubW0vZGFtb24vY29yZS5jOjEzNzpzdGF0aWMgdm9pZCBkYW1vbl9mcmVlX3ByZXAoc3RydWN0IGRhbW9uX3ByZXAgKnApXG5tbS9kYW1vbi9jb3JlLmMtMTM4LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTQxLVxubW0vZGFtb24vY29yZS5jOjE0MjpzdGF0aWMgdm9pZCBkYW1vbl9kZXN0cm95X3ByZXAoc3RydWN0IGRhbW9uX3ByZXAgKnApXG5tbS9kYW1vbi9jb3JlLmMtMTQzLXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTQ3LVxubW0vZGFtb24vY29yZS5jOjE0ODpzdGF0aWMgc3RydWN0IGRhbW9uX3ByZXAgKmRhbW9uX250aF9wcmVwKGludCBuLCBzdHJ1Y3QgZGFtb25fcHJvYmUgKnApXG5tbS9kYW1vbi9jb3JlLmMtMTQ5LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTU5LVxubW0vZGFtb24vY29yZS5jOjE2MDpzdGF0aWMgYm9vbCBkYW1vbl9oYXNfcHJlcChzdHJ1Y3QgZGFtb25fY3R4ICpjKVxubW0vZGFtb24vY29yZS5jLTE2MS17XG4tLVxubW0vZGFtb24vY29yZS5jLTE3MS1cbm1tL2RhbW9uL2NvcmUuYzoxNzI6c3RydWN0IGRhbW9uX2ZpbHRlciAqZGFtb25fbmV3X2ZpbHRlcihlbnVtIGRhbW9uX2ZpbHRlcl90eXBlIHR5cGUsXG5tbS9kYW1vbi9jb3JlLmMtMTczLVx0XHRib29sIG1hdGNoaW5nLCBib29sIGFsbG93KVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xODYtXG5tbS9kYW1vbi9jb3JlLmM6MTg3OnZvaWQgZGFtb25fYWRkX2ZpbHRlcihzdHJ1Y3QgZGFtb25fcHJvYmUgKnAsIHN0cnVjdCBkYW1vbl9maWx0ZXIgKmYpXG5tbS9kYW1vbi9jb3JlLmMtMTg4LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTkxLVxubW0vZGFtb24vY29yZS5jOjE5MjpzdGF0aWMgdm9pZCBkYW1vbl9kZWxfZmlsdGVyKHN0cnVjdCBkYW1vbl9maWx0ZXIgKmYpXG5tbS9kYW1vbi9jb3JlLmMtMTkzLXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTk2LVxubW0vZGFtb24vY29yZS5jOjE5NzpzdGF0aWMgdm9pZCBkYW1vbl9mcmVlX2ZpbHRlcihzdHJ1Y3QgZGFtb25fZmlsdGVyICpmKVxubW0vZGFtb24vY29yZS5jLTE5OC17XG4tLVxubW0vZGFtb24vY29yZS5jLTIwMS1cbm1tL2RhbW9uL2NvcmUuYzoyMDI6dm9pZCBkYW1vbl9kZXN0cm95X2ZpbHRlcihzdHJ1Y3QgZGFtb25fZmlsdGVyICpmKVxubW0vZGFtb24vY29yZS5jLTIwMy17XG4tLVxubW0vZGFtb24vY29yZS5jLTIwNy1cbm1tL2RhbW9uL2NvcmUuYzoyMDg6c3RhdGljIHN0cnVjdCBkYW1vbl9maWx0ZXIgKmRhbW9uX250aF9maWx0ZXIoaW50IG4sIHN0cnVjdCBkYW1vbl9wcm9iZSAqcClcbm1tL2RhbW9uL2NvcmUuYy0yMDkte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0yMTktXG5tbS9kYW1vbi9jb3JlLmM6MjIwOnN0cnVjdCBkYW1vbl9wcm9iZSAqZGFtb25fbmV3X3Byb2JlKHZvaWQpXG5tbS9kYW1vbi9jb3JlLmMtMjIxLXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMjMzLVxubW0vZGFtb24vY29yZS5jOjIzNDp2b2lkIGRhbW9uX2FkZF9wcm9iZShzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsIHN0cnVjdCBkYW1vbl9wcm9iZSAqcHJvYmUpXG5tbS9kYW1vbi9jb3JlLmMtMjM1LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMjM4LVxubW0vZGFtb24vY29yZS5jOjIzOTpzdGF0aWMgdm9pZCBkYW1vbl9kZWxfcHJvYmUoc3RydWN0IGRhbW9uX3Byb2JlICpwKVxubW0vZGFtb24vY29yZS5jLTI0MC17XG4tLVxubW0vZGFtb24vY29yZS5jLTI0My1cbm1tL2RhbW9uL2NvcmUuYzoyNDQ6c3RhdGljIHZvaWQgZGFtb25fZnJlZV9wcm9iZShzdHJ1Y3QgZGFtb25fcHJvYmUgKnApXG5tbS9kYW1vbi9jb3JlLmMtMjQ1LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMjU1LVxubW0vZGFtb24vY29yZS5jOjI1NjpzdGF0aWMgdm9pZCBkYW1vbl9kZXN0cm95X3Byb2JlKHN0cnVjdCBkYW1vbl9wcm9iZSAqcClcbm1tL2RhbW9uL2NvcmUuYy0yNTcte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0yNjEtXG5tbS9kYW1vbi9jb3JlLmM6MjYyOnN0YXRpYyBzdHJ1Y3QgZGFtb25fcHJvYmUgKmRhbW9uX250aF9wcm9iZShpbnQgbiwgc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxubW0vZGFtb24vY29yZS5jLTI2My17XG4tLVxubW0vZGFtb24vY29yZS5jLTI3My1cbm1tL2RhbW9uL2NvcmUuYzoyNzQ6c3RhdGljIGJvb2wgZGFtb25faGFzX3Byb2JlX3dlaWdodHMoc3RydWN0IGRhbW9uX2N0eCAqYylcbm1tL2RhbW9uL2NvcmUuYy0yNzUte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0zMDUtICovXG5tbS9kYW1vbi9jb3JlLmM6MzA2OnN0YXRpYyB1bnNpZ25lZCBsb25nIGRhbW9uX212c3VtKHVuc2lnbmVkIGxvbmcgY3VycmVudF9ucixcbm1tL2RhbW9uL2NvcmUuYy0zMDctXHRcdHVuc2lnbmVkIGxvbmcgbGFzdF9uciwgdW5zaWduZWQgbG9uZyBsZWZ0X3dpbmRvd19icClcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMzI1LSAqL1xubW0vZGFtb24vY29yZS5jOjMyNjp1bnNpZ25lZCBpbnQgZGFtb25fbnJfYWNjZXNzZXNfbXZzdW0oc3RydWN0IGRhbW9uX3JlZ2lvbiAqcixcbm1tL2RhbW9uL2NvcmUuYy0zMjctXHRcdHN0cnVjdCBkYW1vbl9jdHggKmN0eClcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMzQ5LVxubW0vZGFtb24vY29yZS5jOjM1MDp1bnNpZ25lZCBjaGFyIGRhbW9uX3Byb2JlX2hpdHNfbXZzdW0oaW50IHByb2JlX2lkeCwgc3RydWN0IGRhbW9uX3JlZ2lvbiAqcixcbm1tL2RhbW9uL2NvcmUuYy0zNTEtXHRcdHN0cnVjdCBkYW1vbl9jdHggKmN0eClcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMzc0LSNpZmRlZiBDT05GSUdfREFNT05fREVCVUdfU0FOSVRZXG5tbS9kYW1vbi9jb3JlLmM6Mzc1OnN0YXRpYyB2b2lkIGRhbW9uX3ZlcmlmeV9uZXdfcmVnaW9uKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kKVxubW0vZGFtb24vY29yZS5jLTM3Ni17XG4tLVxubW0vZGFtb24vY29yZS5jLTM3OS0jZWxzZVxubW0vZGFtb24vY29yZS5jOjM4MDpzdGF0aWMgdm9pZCBkYW1vbl92ZXJpZnlfbmV3X3JlZ2lvbih1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZClcbm1tL2RhbW9uL2NvcmUuYy0zODEte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0zODktICovXG5tbS9kYW1vbi9jb3JlLmM6MzkwOnN0cnVjdCBkYW1vbl9yZWdpb24gKmRhbW9uX25ld19yZWdpb24odW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQpXG5tbS9kYW1vbi9jb3JlLmMtMzkxLXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtNDE0LVxubW0vZGFtb24vY29yZS5jOjQxNTpzdGF0aWMgdm9pZCBkYW1vbl9hZGRfcmVnaW9uKHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsIHN0cnVjdCBkYW1vbl90YXJnZXQgKnQpXG5tbS9kYW1vbi9jb3JlLmMtNDE2LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtNDIzLSAqL1xubW0vZGFtb24vY29yZS5jOjQyNDpzdGF0aWMgaW5saW5lIHZvaWQgZGFtb25faW5zZXJ0X3JlZ2lvbihzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLFxubW0vZGFtb24vY29yZS5jLTQyNS1cdFx0c3RydWN0IGRhbW9uX3JlZ2lvbiAqcHJldiwgc3RydWN0IGRhbW9uX3JlZ2lvbiAqbmV4dCxcbi0tXG5tbS9kYW1vbi9jb3JlLmMtNDMyLSNpZmRlZiBDT05GSUdfREFNT05fREVCVUdfU0FOSVRZXG5tbS9kYW1vbi9jb3JlLmM6NDMzOnN0YXRpYyB2b2lkIGRhbW9uX3ZlcmlmeV9kZWxfcmVnaW9uKHN0cnVjdCBkYW1vbl90YXJnZXQgKnQpXG5tbS9kYW1vbi9jb3JlLmMtNDM0LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtNDM3LSNlbHNlXG5tbS9kYW1vbi9jb3JlLmM6NDM4OnN0YXRpYyB2b2lkIGRhbW9uX3ZlcmlmeV9kZWxfcmVnaW9uKHN0cnVjdCBkYW1vbl90YXJnZXQgKnQpXG5tbS9kYW1vbi9jb3JlLmMtNDM5LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtNDQyLVxubW0vZGFtb24vY29yZS5jOjQ0MzpzdGF0aWMgdm9pZCBkYW1vbl9kZWxfcmVnaW9uKHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsIHN0cnVjdCBkYW1vbl90YXJnZXQgKnQpXG5tbS9kYW1vbi9jb3JlLmMtNDQ0LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtNDUwLVxubW0vZGFtb24vY29yZS5jOjQ1MTpzdGF0aWMgdm9pZCBkYW1vbl9mcmVlX3JlZ2lvbihzdHJ1Y3QgZGFtb25fcmVnaW9uICpyKVxubW0vZGFtb24vY29yZS5jLTQ1Mi17XG4tLVxubW0vZGFtb24vY29yZS5jLTQ1NS1cbm1tL2RhbW9uL2NvcmUuYzo0NTY6c3RhdGljIHZvaWQgZGFtb25fZGVzdHJveV9yZWdpb24oc3RydWN0IGRhbW9uX3JlZ2lvbiAqcixcbm1tL2RhbW9uL2NvcmUuYy00NTctXHRcdHN0cnVjdCBkYW1vbl90YXJnZXQgKnQpXG4tLVxubW0vZGFtb24vY29yZS5jLTQ2Mi1cbm1tL2RhbW9uL2NvcmUuYzo0NjM6c3RhdGljIGJvb2wgZGFtb25faXNfbGFzdF9yZWdpb24oc3RydWN0IGRhbW9uX3JlZ2lvbiAqcixcbm1tL2RhbW9uL2NvcmUuYy00NjQtXHRcdHN0cnVjdCBkYW1vbl90YXJnZXQgKnQpXG4tLVxubW0vZGFtb24vY29yZS5jLTQ3Ni0gKi9cbm1tL2RhbW9uL2NvcmUuYzo0Nzc6dW5zaWduZWQgaW50IGRhbW9uX3Byb2JlX2hpdHNfd3N1bShzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLCBib29sIGxhc3QsXG5tbS9kYW1vbi9jb3JlLmMtNDc4LVx0XHRzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXG4tLVxubW0vZGFtb24vY29yZS5jLTQ5Ny0gKi9cbm1tL2RhbW9uL2NvcmUuYzo0OTg6c3RhdGljIGJvb2wgZGFtb25faW50ZXJzZWN0KHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsXG5tbS9kYW1vbi9jb3JlLmMtNDk5LVx0XHRzdHJ1Y3QgZGFtb25fYWRkcl9yYW5nZSAqcmUpXG4tLVxubW0vZGFtb24vY29yZS5jLTUwNi0gKi9cbm1tL2RhbW9uL2NvcmUuYzo1MDc6c3RhdGljIGludCBkYW1vbl9maWxsX3JlZ2lvbnNfaG9sZXMoc3RydWN0IGRhbW9uX3JlZ2lvbiAqZmlyc3QsXG5tbS9kYW1vbi9jb3JlLmMtNTA4LVx0XHRzdHJ1Y3QgZGFtb25fcmVnaW9uICpsYXN0LCBzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0KVxuLS1cbm1tL2RhbW9uL2NvcmUuYy01MzktICovXG5tbS9kYW1vbi9jb3JlLmM6NTQwOmludCBkYW1vbl9zZXRfcmVnaW9ucyhzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0LCBzdHJ1Y3QgZGFtb25fYWRkcl9yYW5nZSAqcmFuZ2VzLFxubW0vZGFtb24vY29yZS5jLTU0MS1cdFx0dW5zaWduZWQgaW50IG5yX3JhbmdlcywgdW5zaWduZWQgbG9uZyBtaW5fcmVnaW9uX3N6KVxuLS1cbm1tL2RhbW9uL2NvcmUuYy02MzAtXG5tbS9kYW1vbi9jb3JlLmM6NjMxOnN0cnVjdCBkYW1vc19maWx0ZXIgKmRhbW9zX25ld19maWx0ZXIoZW51bSBkYW1vc19maWx0ZXJfdHlwZSB0eXBlLFxubW0vZGFtb24vY29yZS5jLTYzMi1cdFx0Ym9vbCBtYXRjaGluZywgYm9vbCBhbGxvdylcbi0tXG5tbS9kYW1vbi9jb3JlLmMtNjUyLSAqL1xubW0vZGFtb24vY29yZS5jOjY1Mzpib29sIGRhbW9zX2ZpbHRlcl9mb3Jfb3BzKGVudW0gZGFtb3NfZmlsdGVyX3R5cGUgdHlwZSlcbm1tL2RhbW9uL2NvcmUuYy02NTQte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy02NjQtXG5tbS9kYW1vbi9jb3JlLmM6NjY1OnZvaWQgZGFtb3NfYWRkX2ZpbHRlcihzdHJ1Y3QgZGFtb3MgKnMsIHN0cnVjdCBkYW1vc19maWx0ZXIgKmYpXG5tbS9kYW1vbi9jb3JlLmMtNjY2LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtNjcyLVxubW0vZGFtb24vY29yZS5jOjY3MzpzdGF0aWMgdm9pZCBkYW1vc19kZWxfZmlsdGVyKHN0cnVjdCBkYW1vc19maWx0ZXIgKmYpXG5tbS9kYW1vbi9jb3JlLmMtNjc0LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtNjc3LVxubW0vZGFtb24vY29yZS5jOjY3ODpzdGF0aWMgdm9pZCBkYW1vc19mcmVlX2ZpbHRlcihzdHJ1Y3QgZGFtb3NfZmlsdGVyICpmKVxubW0vZGFtb24vY29yZS5jLTY3OS17XG4tLVxubW0vZGFtb24vY29yZS5jLTY4Mi1cbm1tL2RhbW9uL2NvcmUuYzo2ODM6dm9pZCBkYW1vc19kZXN0cm95X2ZpbHRlcihzdHJ1Y3QgZGFtb3NfZmlsdGVyICpmKVxubW0vZGFtb24vY29yZS5jLTY4NC17XG4tLVxubW0vZGFtb24vY29yZS5jLTY4OC1cbm1tL2RhbW9uL2NvcmUuYzo2ODk6c3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKmRhbW9zX25ld19xdW90YV9nb2FsKFxubW0vZGFtb24vY29yZS5jLTY5MC1cdFx0ZW51bSBkYW1vc19xdW90YV9nb2FsX21ldHJpYyBtZXRyaWMsXG4tLVxubW0vZGFtb24vY29yZS5jLTcwNS1cbm1tL2RhbW9uL2NvcmUuYzo3MDY6dm9pZCBkYW1vc19hZGRfcXVvdGFfZ29hbChzdHJ1Y3QgZGFtb3NfcXVvdGEgKnEsIHN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpnKVxubW0vZGFtb24vY29yZS5jLTcwNy17XG4tLVxubW0vZGFtb24vY29yZS5jLTcxMC1cbm1tL2RhbW9uL2NvcmUuYzo3MTE6c3RhdGljIHZvaWQgZGFtb3NfZGVsX3F1b3RhX2dvYWwoc3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKmcpXG5tbS9kYW1vbi9jb3JlLmMtNzEyLXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtNzE1LVxubW0vZGFtb24vY29yZS5jOjcxNjpzdGF0aWMgdm9pZCBkYW1vc19mcmVlX3F1b3RhX2dvYWwoc3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKmcpXG5tbS9kYW1vbi9jb3JlLmMtNzE3LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtNzIwLVxubW0vZGFtb24vY29yZS5jOjcyMTp2b2lkIGRhbW9zX2Rlc3Ryb3lfcXVvdGFfZ29hbChzdHJ1Y3QgZGFtb3NfcXVvdGFfZ29hbCAqZylcbm1tL2RhbW9uL2NvcmUuYy03MjIte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy03MjYtXG5tbS9kYW1vbi9jb3JlLmM6NzI3OnN0YXRpYyBib29sIGRhbW9zX3F1b3RhX2dvYWxzX2VtcHR5KHN0cnVjdCBkYW1vc19xdW90YSAqcSlcbm1tL2RhbW9uL2NvcmUuYy03Mjgte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy03MzItLyogaW5pdGlhbGl6ZSBmaWVsZHMgb2YgQHF1b3RhIHRoYXQgbm9ybWFsbHkgQVBJIHVzZXJzIHdvdWxkbiYjMzk7dCBzZXQgKi9cbm1tL2RhbW9uL2NvcmUuYzo3MzM6c3RhdGljIHN0cnVjdCBkYW1vc19xdW90YSAqZGFtb3NfcXVvdGFfaW5pdChzdHJ1Y3QgZGFtb3NfcXVvdGEgKnF1b3RhKVxubW0vZGFtb24vY29yZS5jLTczNC17XG4tLVxubW0vZGFtb24vY29yZS5jLTc0NS1cbm1tL2RhbW9uL2NvcmUuYzo3NDY6c3RydWN0IGRhbW9zICpkYW1vbl9uZXdfc2NoZW1lKHN0cnVjdCBkYW1vc19hY2Nlc3NfcGF0dGVybiAqcGF0dGVybixcbm1tL2RhbW9uL2NvcmUuYy03NDctXHRcdFx0ZW51bSBkYW1vc19hY3Rpb24gYWN0aW9uLFxuLS1cbm1tL2RhbW9uL2NvcmUuYy03ODctXG5tbS9kYW1vbi9jb3JlLmM6Nzg4OnN0YXRpYyB2b2lkIGRhbW9zX3NldF9uZXh0X2FwcGx5X3NpcyhzdHJ1Y3QgZGFtb3MgKnMsIHN0cnVjdCBkYW1vbl9jdHggKmN0eClcbm1tL2RhbW9uL2NvcmUuYy03ODkte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy03OTgtXG5tbS9kYW1vbi9jb3JlLmM6Nzk5OnZvaWQgZGFtb25fYWRkX3NjaGVtZShzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsIHN0cnVjdCBkYW1vcyAqcylcbm1tL2RhbW9uL2NvcmUuYy04MDAte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy04MDQtXG5tbS9kYW1vbi9jb3JlLmM6ODA1OnN0YXRpYyB2b2lkIGRhbW9uX2RlbF9zY2hlbWUoc3RydWN0IGRhbW9zICpzKVxubW0vZGFtb24vY29yZS5jLTgwNi17XG4tLVxubW0vZGFtb24vY29yZS5jLTgwOS1cbm1tL2RhbW9uL2NvcmUuYzo4MTA6c3RhdGljIHZvaWQgZGFtb25fZnJlZV9zY2hlbWUoc3RydWN0IGRhbW9zICpzKVxubW0vZGFtb24vY29yZS5jLTgxMS17XG4tLVxubW0vZGFtb24vY29yZS5jLTgxNC1cbm1tL2RhbW9uL2NvcmUuYzo4MTU6dm9pZCBkYW1vbl9kZXN0cm95X3NjaGVtZShzdHJ1Y3QgZGFtb3MgKnMpXG5tbS9kYW1vbi9jb3JlLmMtODE2LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtODM5LSAqL1xubW0vZGFtb24vY29yZS5jOjg0MDpzdHJ1Y3QgZGFtb25fdGFyZ2V0ICpkYW1vbl9uZXdfdGFyZ2V0KHZvaWQpXG5tbS9kYW1vbi9jb3JlLmMtODQxLXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtODU2LVxubW0vZGFtb24vY29yZS5jOjg1Nzp2b2lkIGRhbW9uX2FkZF90YXJnZXQoc3RydWN0IGRhbW9uX2N0eCAqY3R4LCBzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0KVxubW0vZGFtb24vY29yZS5jLTg1OC17XG4tLVxubW0vZGFtb24vY29yZS5jLTg2NC0gKi9cbm1tL2RhbW9uL2NvcmUuYzo4NjU6aW50IGRhbW9uX3NldF90YXJnZXRfcGlkKHN0cnVjdCBkYW1vbl90YXJnZXQgKnQsIGludCBwaWQpXG5tbS9kYW1vbi9jb3JlLmMtODY2LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtODcyLVxubW0vZGFtb24vY29yZS5jOjg3MzpzdGF0aWMgdm9pZCBkYW1vbl9kZWxfdGFyZ2V0KHN0cnVjdCBkYW1vbl90YXJnZXQgKnQpXG5tbS9kYW1vbi9jb3JlLmMtODc0LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtODc3LVxubW0vZGFtb24vY29yZS5jOjg3ODp2b2lkIGRhbW9uX2ZyZWVfdGFyZ2V0KHN0cnVjdCBkYW1vbl90YXJnZXQgKnQpXG5tbS9kYW1vbi9jb3JlLmMtODc5LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtODg2LVxubW0vZGFtb24vY29yZS5jOjg4Nzp2b2lkIGRhbW9uX2Rlc3Ryb3lfdGFyZ2V0KHN0cnVjdCBkYW1vbl90YXJnZXQgKnQsIHN0cnVjdCBkYW1vbl9jdHggKmN0eClcbm1tL2RhbW9uL2NvcmUuYy04ODgte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy04OTYtXG5tbS9kYW1vbi9jb3JlLmM6ODk3OnVuc2lnbmVkIGludCBkYW1vbl9ucl9yZWdpb25zKHN0cnVjdCBkYW1vbl90YXJnZXQgKnQpXG5tbS9kYW1vbi9jb3JlLmMtODk4LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtOTAxLVxubW0vZGFtb24vY29yZS5jOjkwMjpzdHJ1Y3QgZGFtb25fY3R4ICpkYW1vbl9uZXdfY3R4KHZvaWQpXG5tbS9kYW1vbi9jb3JlLmMtOTAzLXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtOTQxLVxubW0vZGFtb24vY29yZS5jOjk0MjpzdGF0aWMgdm9pZCBkYW1vbl9kZXN0cm95X3RhcmdldHMoc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxubW0vZGFtb24vY29yZS5jLTk0My17XG4tLVxubW0vZGFtb24vY29yZS5jLTk0OS1cbm1tL2RhbW9uL2NvcmUuYzo5NTA6dm9pZCBkYW1vbl9kZXN0cm95X2N0eChzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXG5tbS9kYW1vbi9jb3JlLmMtOTUxLXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtOTY1LVxubW0vZGFtb24vY29yZS5jOjk2NjpzdGF0aWMgYm9vbCBkYW1vbl9hdHRyc19lcXVhbHMoY29uc3Qgc3RydWN0IGRhbW9uX2F0dHJzICphdHRyczEsXG5tbS9kYW1vbi9jb3JlLmMtOTY3LVx0XHRjb25zdCBzdHJ1Y3QgZGFtb25fYXR0cnMgKmF0dHJzMilcbi0tXG5tbS9kYW1vbi9jb3JlLmMtOTgyLVxubW0vZGFtb24vY29yZS5jOjk4MzpzdGF0aWMgdW5zaWduZWQgaW50IGRhbW9uX2FnZV9mb3JfbmV3X2F0dHJzKHVuc2lnbmVkIGludCBhZ2UsXG5tbS9kYW1vbi9jb3JlLmMtOTg0LVx0XHRzdHJ1Y3QgZGFtb25fYXR0cnMgKm9sZF9hdHRycywgc3RydWN0IGRhbW9uX2F0dHJzICpuZXdfYXR0cnMpXG4tLVxubW0vZGFtb24vY29yZS5jLTk4OS0vKiBjb252ZXJ0IHNhbXBsZSByYXRpbyBpbiBicCAocGVyIDEwLDAwMCkgdG8gY291bnQgKi9cbm1tL2RhbW9uL2NvcmUuYzo5OTA6c3RhdGljIHVuc2lnbmVkIGludCBkYW1vbl9zYW1wbGVfYnBfdG9fY291bnQoXG5tbS9kYW1vbi9jb3JlLmMtOTkxLVx0XHR1bnNpZ25lZCBpbnQgYnAsIHN0cnVjdCBkYW1vbl9hdHRycyAqYXR0cnMpXG4tLVxubW0vZGFtb24vY29yZS5jLTk5Ni0vKiBjb252ZXJ0IHNhbXBsZSBjb3VudCB0byByYXRpbyBpbiBicCAocGVyIDEwLDAwMCkgKi9cbm1tL2RhbW9uL2NvcmUuYzo5OTc6c3RhdGljIHVuc2lnbmVkIGludCBkYW1vbl9zYW1wbGVfY291bnRfdG9fYnAoXG5tbS9kYW1vbi9jb3JlLmMtOTk4LVx0XHR1bnNpZ25lZCBpbnQgY291bnQsIHN0cnVjdCBkYW1vbl9hdHRycyAqYXR0cnMpXG4tLVxubW0vZGFtb24vY29yZS5jLTEwMDItXG5tbS9kYW1vbi9jb3JlLmM6MTAwMzpzdGF0aWMgdW5zaWduZWQgaW50IGRhbW9uX25yX3NhbXBsZXNfZm9yX25ld19hdHRycyh1bnNpZ25lZCBpbnQgbnIsXG5tbS9kYW1vbi9jb3JlLmMtMTAwNC1cdFx0c3RydWN0IGRhbW9uX2F0dHJzICpvbGRfYXR0cnMsIHN0cnVjdCBkYW1vbl9hdHRycyAqbmV3X2F0dHJzKVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xMDA5LVxubW0vZGFtb24vY29yZS5jOjEwMTA6c3RhdGljIHZvaWQgZGFtb25fdXBkYXRlX3Byb2JlX2hpdHMoc3RydWN0IGRhbW9uX3JlZ2lvbiAqcixcbm1tL2RhbW9uL2NvcmUuYy0xMDExLVx0XHRzdHJ1Y3QgZGFtb25fYXR0cnMgKm9sZF9hdHRycywgc3RydWN0IGRhbW9uX2F0dHJzICpuZXdfYXR0cnMsXG4tLVxubW0vZGFtb24vY29yZS5jLTEwMjktXG5tbS9kYW1vbi9jb3JlLmM6MTAzMDpzdGF0aWMgdm9pZCBkYW1vbl91cGRhdGVfbW9uaXRvcmluZ19yZXN1bHQoc3RydWN0IGRhbW9uX3JlZ2lvbiAqcixcbm1tL2RhbW9uL2NvcmUuYy0xMDMxLVx0XHRzdHJ1Y3QgZGFtb25fYXR0cnMgKm9sZF9hdHRycywgc3RydWN0IGRhbW9uX2F0dHJzICpuZXdfYXR0cnMsXG4tLVxubW0vZGFtb24vY29yZS5jLTEwNTktICovXG5tbS9kYW1vbi9jb3JlLmM6MTA2MDpzdGF0aWMgdm9pZCBkYW1vbl91cGRhdGVfbW9uaXRvcmluZ19yZXN1bHRzKHN0cnVjdCBkYW1vbl9jdHggKmN0eCxcbm1tL2RhbW9uL2NvcmUuYy0xMDYxLVx0XHRzdHJ1Y3QgZGFtb25fYXR0cnMgKm5ld19hdHRycywgYm9vbCBhZ2dyZWdhdGluZylcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTA4Mi0gKi9cbm1tL2RhbW9uL2NvcmUuYzoxMDgzOnN0YXRpYyBib29sIGRhbW9uX3ZhbGlkX2ludGVydmFsc19nb2FsKHN0cnVjdCBkYW1vbl9hdHRycyAqYXR0cnMpXG5tbS9kYW1vbi9jb3JlLmMtMTA4NC17XG4tLVxubW0vZGFtb24vY29yZS5jLTExMTctICovXG5tbS9kYW1vbi9jb3JlLmM6MTExODppbnQgZGFtb25fc2V0X2F0dHJzKHN0cnVjdCBkYW1vbl9jdHggKmN0eCwgc3RydWN0IGRhbW9uX2F0dHJzICphdHRycylcbm1tL2RhbW9uL2NvcmUuYy0xMTE5LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTE2NS0gKi9cbm1tL2RhbW9uL2NvcmUuYzoxMTY2OnZvaWQgZGFtb25fc2V0X3NjaGVtZXMoc3RydWN0IGRhbW9uX2N0eCAqY3R4LCBzdHJ1Y3QgZGFtb3MgKipzY2hlbWVzLFxubW0vZGFtb24vY29yZS5jLTExNjctXHRcdFx0c3NpemVfdCBucl9zY2hlbWVzKVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xMTc3LVxubW0vZGFtb24vY29yZS5jOjExNzg6c3RhdGljIHN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpkYW1vc19udGhfcXVvdGFfZ29hbChcbm1tL2RhbW9uL2NvcmUuYy0xMTc5LVx0XHRpbnQgbiwgc3RydWN0IGRhbW9zX3F1b3RhICpxKVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xMTkwLVxubW0vZGFtb24vY29yZS5jOjExOTE6c3RhdGljIHZvaWQgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxfdW5pb24oXG5tbS9kYW1vbi9jb3JlLmMtMTE5Mi1cdFx0c3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKmRzdCwgc3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKnNyYylcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTIxNC1cbm1tL2RhbW9uL2NvcmUuYzoxMjE1OnN0YXRpYyB2b2lkIGRhbW9zX2NvbW1pdF9xdW90YV9nb2FsKFxubW0vZGFtb24vY29yZS5jLTEyMTYtXHRcdHN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpkc3QsIHN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpzcmMpXG4tLVxubW0vZGFtb24vY29yZS5jLTEyMzYtICovXG5tbS9kYW1vbi9jb3JlLmM6MTIzNzppbnQgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxzKHN0cnVjdCBkYW1vc19xdW90YSAqZHN0LCBzdHJ1Y3QgZGFtb3NfcXVvdGEgKnNyYylcbm1tL2RhbW9uL2NvcmUuYy0xMjM4LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTI2MS1cbm1tL2RhbW9uL2NvcmUuYzoxMjYyOnN0YXRpYyBpbnQgZGFtb3NfY29tbWl0X3F1b3RhKHN0cnVjdCBkYW1vc19xdW90YSAqZHN0LCBzdHJ1Y3QgZGFtb3NfcXVvdGEgKnNyYylcbm1tL2RhbW9uL2NvcmUuYy0xMjYzLXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTI4MC1cbm1tL2RhbW9uL2NvcmUuYzoxMjgxOnN0YXRpYyBzdHJ1Y3QgZGFtb3NfZmlsdGVyICpkYW1vc19udGhfY29yZV9maWx0ZXIoaW50IG4sIHN0cnVjdCBkYW1vcyAqcylcbm1tL2RhbW9uL2NvcmUuYy0xMjgyLXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTI5Mi1cbm1tL2RhbW9uL2NvcmUuYzoxMjkzOnN0YXRpYyBzdHJ1Y3QgZGFtb3NfZmlsdGVyICpkYW1vc19udGhfb3BzX2ZpbHRlcihpbnQgbiwgc3RydWN0IGRhbW9zICpzKVxubW0vZGFtb24vY29yZS5jLTEyOTQte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0xMzA0LVxubW0vZGFtb24vY29yZS5jOjEzMDU6c3RhdGljIHZvaWQgZGFtb3NfY29tbWl0X2ZpbHRlcl9hcmcoXG5tbS9kYW1vbi9jb3JlLmMtMTMwNi1cdFx0c3RydWN0IGRhbW9zX2ZpbHRlciAqZHN0LCBzdHJ1Y3QgZGFtb3NfZmlsdGVyICpzcmMpXG4tLVxubW0vZGFtb24vY29yZS5jLTEzMjUtXG5tbS9kYW1vbi9jb3JlLmM6MTMyNjpzdGF0aWMgdm9pZCBkYW1vc19jb21taXRfZmlsdGVyKFxubW0vZGFtb24vY29yZS5jLTEzMjctXHRcdHN0cnVjdCBkYW1vc19maWx0ZXIgKmRzdCwgc3RydWN0IGRhbW9zX2ZpbHRlciAqc3JjKVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xMzM0LVxubW0vZGFtb24vY29yZS5jOjEzMzU6c3RhdGljIGludCBkYW1vc19jb21taXRfY29yZV9maWx0ZXJzKHN0cnVjdCBkYW1vcyAqZHN0LCBzdHJ1Y3QgZGFtb3MgKnNyYylcbm1tL2RhbW9uL2NvcmUuYy0xMzM2LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTM2Mi1cbm1tL2RhbW9uL2NvcmUuYzoxMzYzOnN0YXRpYyBpbnQgZGFtb3NfY29tbWl0X29wc19maWx0ZXJzKHN0cnVjdCBkYW1vcyAqZHN0LCBzdHJ1Y3QgZGFtb3MgKnNyYylcbm1tL2RhbW9uL2NvcmUuYy0xMzY0LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTM5NS0gKi9cbm1tL2RhbW9uL2NvcmUuYzoxMzk2OnN0YXRpYyBib29sIGRhbW9zX2ZpbHRlcnNfZGVmYXVsdF9yZWplY3Qoc3RydWN0IGxpc3RfaGVhZCAqZmlsdGVycylcbm1tL2RhbW9uL2NvcmUuYy0xMzk3LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTQwNS1cbm1tL2RhbW9uL2NvcmUuYzoxNDA2OnN0YXRpYyB2b2lkIGRhbW9zX3NldF9maWx0ZXJzX2RlZmF1bHRfcmVqZWN0KHN0cnVjdCBkYW1vcyAqcylcbm1tL2RhbW9uL2NvcmUuYy0xNDA3LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTQxNi1cbm1tL2RhbW9uL2NvcmUuYzoxNDE3OnN0YXRpYyBib29sIGRhbW9uX3ZhbGlkX3Byb2JlX3BhcmFtcyhzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXG5tbS9kYW1vbi9jb3JlLmMtMTQxOC17XG4tLVxubW0vZGFtb24vY29yZS5jLTE0NjEtICovXG5tbS9kYW1vbi9jb3JlLmM6MTQ2MjpzdGF0aWMgaW50IGRhbW9zX2NvbW1pdF9kZXN0cyhzdHJ1Y3QgZGFtb3NfbWlncmF0ZV9kZXN0cyAqZHN0LFxubW0vZGFtb24vY29yZS5jLTE0NjMtXHRcdHN0cnVjdCBkYW1vc19taWdyYXRlX2Rlc3RzICpzcmMpXG4tLVxubW0vZGFtb24vY29yZS5jLTE0OTItXG5tbS9kYW1vbi9jb3JlLmM6MTQ5MzpzdGF0aWMgaW50IGRhbW9zX2NvbW1pdF9maWx0ZXJzKHN0cnVjdCBkYW1vcyAqZHN0LCBzdHJ1Y3QgZGFtb3MgKnNyYylcbm1tL2RhbW9uL2NvcmUuYy0xNDk0LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTUwNi1cbm1tL2RhbW9uL2NvcmUuYzoxNTA3OnN0YXRpYyBzdHJ1Y3QgZGFtb3MgKmRhbW9uX250aF9zY2hlbWUoaW50IG4sIHN0cnVjdCBkYW1vbl9jdHggKmN0eClcbm1tL2RhbW9uL2NvcmUuYy0xNTA4LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTUxOC1cbm1tL2RhbW9uL2NvcmUuYzoxNTE5OnN0YXRpYyBpbnQgZGFtb3NfY29tbWl0KHN0cnVjdCBkYW1vcyAqZHN0LCBzdHJ1Y3QgZGFtb3MgKnNyYylcbm1tL2RhbW9uL2NvcmUuYy0xNTIwLXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTU0NS1cbm1tL2RhbW9uL2NvcmUuYzoxNTQ2OnN0YXRpYyBpbnQgZGFtb25fY29tbWl0X3NjaGVtZXMoc3RydWN0IGRhbW9uX2N0eCAqZHN0LCBzdHJ1Y3QgZGFtb25fY3R4ICpzcmMpXG5tbS9kYW1vbi9jb3JlLmMtMTU0Ny17XG4tLVxubW0vZGFtb24vY29yZS5jLTE1ODEtXG5tbS9kYW1vbi9jb3JlLmM6MTU4MjpzdGF0aWMgc3RydWN0IGRhbW9uX3RhcmdldCAqZGFtb25fbnRoX3RhcmdldChpbnQgbiwgc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxubW0vZGFtb24vY29yZS5jLTE1ODMte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0xNjAwLSAqL1xubW0vZGFtb24vY29yZS5jOjE2MDE6c3RhdGljIGludCBkYW1vbl9jb21taXRfdGFyZ2V0X3JlZ2lvbnMoc3RydWN0IGRhbW9uX3RhcmdldCAqZHN0LFxubW0vZGFtb24vY29yZS5jLTE2MDItXHRcdHN0cnVjdCBkYW1vbl90YXJnZXQgKnNyYywgdW5zaWduZWQgbG9uZyBzcmNfbWluX3JlZ2lvbl9zeilcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTYzNS1cbm1tL2RhbW9uL2NvcmUuYzoxNjM2OnN0YXRpYyBpbnQgZGFtb25fY29tbWl0X3RhcmdldChcbm1tL2RhbW9uL2NvcmUuYy0xNjM3LVx0XHRzdHJ1Y3QgZGFtb25fdGFyZ2V0ICpkc3QsIGJvb2wgZHN0X2hhc19waWQsXG4tLVxubW0vZGFtb24vY29yZS5jLTE2NjItICovXG5tbS9kYW1vbi9jb3JlLmM6MTY2MzpzdGF0aWMgdm9pZCBkYW1vbl9yZXZlcnRfdGFyZ2V0X2NvbW1pdHMoc3RydWN0IGRhbW9uX2N0eCAqZHN0LFxubW0vZGFtb24vY29yZS5jLTE2NjQtXHRcdHN0cnVjdCBkYW1vbl90YXJnZXQgKmZhaWxlZCwgc3RydWN0IGRhbW9uX2N0eCAqc3JjKVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xNjc4LVxubW0vZGFtb24vY29yZS5jOjE2Nzk6c3RhdGljIGludCBkYW1vbl9jb21taXRfdGFyZ2V0cyhcbm1tL2RhbW9uL2NvcmUuYy0xNjgwLVx0XHRzdHJ1Y3QgZGFtb25fY3R4ICpkc3QsIHN0cnVjdCBkYW1vbl9jdHggKnNyYylcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTc0My1cbm1tL2RhbW9uL2NvcmUuYzoxNzQ0OnN0YXRpYyB2b2lkIGRhbW9uX2NvbW1pdF9wcmVwKHN0cnVjdCBkYW1vbl9wcmVwICpkc3QsIHN0cnVjdCBkYW1vbl9wcmVwICpzcmMpXG5tbS9kYW1vbi9jb3JlLmMtMTc0NS17XG4tLVxubW0vZGFtb24vY29yZS5jLTE3NDgtXG5tbS9kYW1vbi9jb3JlLmM6MTc0OTpzdGF0aWMgaW50IGRhbW9uX2NvbW1pdF9wcmVwcyhzdHJ1Y3QgZGFtb25fcHJvYmUgKmRzdCwgc3RydWN0IGRhbW9uX3Byb2JlICpzcmMpXG5tbS9kYW1vbi9jb3JlLmMtMTc1MC17XG4tLVxubW0vZGFtb24vY29yZS5jLTE3NzMtXG5tbS9kYW1vbi9jb3JlLmM6MTc3NDpzdGF0aWMgdm9pZCBkYW1vbl9jb21taXRfZmlsdGVyKHN0cnVjdCBkYW1vbl9maWx0ZXIgKmRzdCxcbm1tL2RhbW9uL2NvcmUuYy0xNzc1LVx0XHRzdHJ1Y3QgZGFtb25fZmlsdGVyICpzcmMpXG4tLVxubW0vZGFtb24vY29yZS5jLTE3ODgtXG5tbS9kYW1vbi9jb3JlLmM6MTc4OTpzdGF0aWMgaW50IGRhbW9uX2NvbW1pdF9maWx0ZXJzKHN0cnVjdCBkYW1vbl9wcm9iZSAqZHN0LFxubW0vZGFtb24vY29yZS5jLTE3OTAtXHRcdHN0cnVjdCBkYW1vbl9wcm9iZSAqc3JjKVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xODIyLVxubW0vZGFtb24vY29yZS5jOjE4MjM6c3RhdGljIGludCBkYW1vbl9jb21taXRfcHJvYmVzKHN0cnVjdCBkYW1vbl9jdHggKmRzdCwgc3RydWN0IGRhbW9uX2N0eCAqc3JjKVxubW0vZGFtb24vY29yZS5jLTE4MjQte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0xODYxLVxubW0vZGFtb24vY29yZS5jOjE4NjI6c3RhdGljIGludCBfX2RhbW9uX2NvbW1pdF9jdHgoc3RydWN0IGRhbW9uX2N0eCAqZHN0LCBzdHJ1Y3QgZGFtb25fY3R4ICpzcmMpXG5tbS9kYW1vbi9jb3JlLmMtMTg2My17XG4tLVxubW0vZGFtb24vY29yZS5jLTE5MTktXG5tbS9kYW1vbi9jb3JlLmM6MTkyMDpzdGF0aWMgc3RydWN0IGRhbW9uX2N0eCAqZGFtb25fbmV3X3Rlc3RfY3R4KHN0cnVjdCBkYW1vbl9jdHggKmRzdClcbm1tL2RhbW9uL2NvcmUuYy0xOTIxLXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTk0OC0gKi9cbm1tL2RhbW9uL2NvcmUuYzoxOTQ5OmludCBkYW1vbl9jb21taXRfY3R4KHN0cnVjdCBkYW1vbl9jdHggKmRzdCwgc3RydWN0IGRhbW9uX2N0eCAqc3JjKVxubW0vZGFtb24vY29yZS5jLTE5NTAte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0xOTY2LS8qIFJldHVybnMgdGhlIHNpemUgdXBwZXIgbGltaXQgZm9yIGVhY2ggbW9uaXRvcmluZyByZWdpb24gKi9cbm1tL2RhbW9uL2NvcmUuYzoxOTY3OnN0YXRpYyB1bnNpZ25lZCBsb25nIGRhbW9uX3JlZ2lvbl9zel9saW1pdChzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXG5tbS9kYW1vbi9jb3JlLmMtMTk2OC17XG4tLVxubW0vZGFtb24vY29yZS5jLTE5ODUtXG5tbS9kYW1vbi9jb3JlLmM6MTk4NjpzdGF0aWMgaW50IGRhbW9uX3NwbGl0X3JlZ2lvbl9hdChzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0LFxubW0vZGFtb24vY29yZS5jLTE5ODctXHRcdFx0XHQgIHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsIHVuc2lnbmVkIGxvbmcgc3pfcik7XG4tLVxubW0vZGFtb24vY29yZS5jLTIwMDEtICovXG5tbS9kYW1vbi9jb3JlLmM6MjAwMjpzdGF0aWMgdW5zaWduZWQgbG9uZyBkYW1vbl9hcHBseV9taW5fbnJfcmVnaW9ucyhzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXG5tbS9kYW1vbi9jb3JlLmMtMjAwMy17XG4tLVxubW0vZGFtb24vY29yZS5jLTIwMjEtXG5tbS9kYW1vbi9jb3JlLmM6MjAyMjpzdGF0aWMgaW50IGtkYW1vbmRfZm4odm9pZCAqZGF0YSk7XG5tbS9kYW1vbi9jb3JlLmMtMjAyMy1cbi0tXG5tbS9kYW1vbi9jb3JlLmMtMjAzMS0gKi9cbm1tL2RhbW9uL2NvcmUuYzoyMDMyOnN0YXRpYyBpbnQgX19kYW1vbl9zdGFydChzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXG5tbS9kYW1vbi9jb3JlLmMtMjAzMy17XG4tLVxubW0vZGFtb24vY29yZS5jLTIwNjgtICovXG5tbS9kYW1vbi9jb3JlLmM6MjA2OTppbnQgZGFtb25fc3RhcnQoc3RydWN0IGRhbW9uX2N0eCAqKmN0eHMsIGludCBucl9jdHhzLCBib29sIGV4Y2x1c2l2ZSlcbm1tL2RhbW9uL2NvcmUuYy0yMDcwLXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMjExMy0gKi9cbm1tL2RhbW9uL2NvcmUuYzoyMTE0OnN0YXRpYyB2b2lkIF9fZGFtb25fc3RvcChzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXG5tbS9kYW1vbi9jb3JlLmMtMjExNS17XG4tLVxubW0vZGFtb24vY29yZS5jLTIxMzMtICovXG5tbS9kYW1vbi9jb3JlLmM6MjEzNDp2b2lkIGRhbW9uX3N0b3Aoc3RydWN0IGRhbW9uX2N0eCAqKmN0eHMsIGludCBucl9jdHhzKVxubW0vZGFtb24vY29yZS5jLTIxMzUte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0yMTQ4LSAqL1xubW0vZGFtb24vY29yZS5jOjIxNDk6Ym9vbCBkYW1vbl9pc19ydW5uaW5nKHN0cnVjdCBkYW1vbl9jdHggKmN0eClcblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAwMDozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTUxOAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDg4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGFuYWx5emluZyB0aGlzIGNvZGU6CgoqKkRpdmluZyBpbnRvIHRoZSBEQU1PTiBJbXBsZW1lbnRhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgREFNT04mIzM5O3MgY29yZSBmdW5jdGlvbmFsaXR5LiBJJiMzOTttIHNlZWluZyBhIHNlcXVlbmNlIG9mIGZ1bmN0aW9ucyBoZXJlOiBgZGFtb25fc3RhcnRgLCBgZGFtb25fc3RvcGAsIGBkYW1vbl9jb21taXRfY3R4YCwgYGRhbW9uX3NldF9hdHRyc2AsIGBkYW1vbl9zZXRfc2NoZW1lc2AsIGBkYW1vbl9zZXRfcmVnaW9uc2AsIGBkYW1vbl9jYWxsYCwgZXRjLiBUaGlzIGdpdmVzIG1lIGEgZ29vZCBvdmVydmlldyBvZiB0aGUgdHlwaWNhbCBvcGVyYXRpb25hbCBmbG93LiBJIGNhbiBzZWUgdGhlIGhpZ2gtbGV2ZWwgc3RlcHMgaW52b2x2ZWQgLSBzdGFydGluZywgc3RvcHBpbmcsIGNvbW1pdHRpbmcgY29udGV4dCwgc2V0dGluZyBhdHRyaWJ1dGVzLCBjb25maWd1cmluZyBzY2hlbWVzIGFuZCByZWdpb25zLCBhbmQgZmluYWxseSB0aGUgYWN0dWFsICYjMzQ7ZGFtb25fY2FsbCYjMzQ7IGl0c2VsZi4gVGhpcyBzdWdnZXN0cyBhIHBhdHRlcm4gb2YgaW5pdGlhbGl6YXRpb24sIGNvbmZpZ3VyYXRpb24sIGFuZCB0aGVuIGFjdGl2ZSBtb25pdG9yaW5nLgoKTm93LCBJIHdhbnQgdG8gdHJhY2UgaG93IHRoZSBzY2hlbWVzIGFyZSBhcHBsaWVkLiBJJiMzOTttIGdvaW5nIHRvIGRpZyBpbnRvIHRoZSBgZGFtb25fZG9fYXBwbHlfc2NoZW1lc2AgZnVuY3Rpb24uIFRoaXMgaXMgd2hlcmUgdGhlIHNjaGVtZXMgZGVmaW5lZCBieSBgZGFtb25fc2V0X3NjaGVtZXNgIGdldCBpbXBsZW1lbnRlZCwgc28gdGhpcyBpcyBjcml0aWNhbC4gSSYjMzk7bGwgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIGFuZCBob3cgdGhhdCBmdW5jdGlvbiBpcyAqY2FsbGVkKiBpbiBgbW0vZGFtb24vY29yZS5jYC4gS25vd2luZyB0aGUgY2FsbCBjaGFpbiB3aWxsIGlsbHVtaW5hdGUgaG93IERBTU9OIGFjdHVhbGx5IHVzZXMgdGhlIHNjaGVtZXMgSSYjMzk7dmUgZGVmaW5lZCB0byBvcHRpbWl6ZSBtZW1vcnkgYWNjZXNzLiBJJiMzOTtsbCBmb2N1cyBvbiB0aGUgY2FsbGluZyBjb250ZXh0IHdpdGhpbiB0aGUgREFNT04gY29yZSB0byB1bmRlcnN0YW5kIGhvdyBpdCBmaXRzIGludG8gdGhlIG92ZXJhbGwgbW9uaXRvcmluZyBhbmQgb3B0aW1pemF0aW9uIHByb2Nlc3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDAwOjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RhbW9uX2RvX2FwcGx5X3NjaGVtZXMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9kYW1vbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9kYW1vbi9jb3JlLmM9MjY2OT1zdGF0aWMgdm9pZCBkYW1vc19hcHBseV9zY2hlbWUoc3RydWN0IGRhbW9uX2N0eCAqYywgc3RydWN0IGRhbW9uX3RhcmdldCAqdCxcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMjczOS1cbm1tL2RhbW9uL2NvcmUuYzoyNzQwOnN0YXRpYyB2b2lkIGRhbW9uX2RvX2FwcGx5X3NjaGVtZXMoc3RydWN0IGRhbW9uX2N0eCAqYyxcbm1tL2RhbW9uL2NvcmUuYy0yNzQxLVx0XHRcdFx0ICAgc3RydWN0IGRhbW9uX3RhcmdldCAqdCxcbi0tXG5tbS9kYW1vbi9jb3JlLmM9Mjc5NT1zdGF0aWMgdm9pZCBkYW1vc19hcHBseV90YXJnZXQoc3RydWN0IGRhbW9uX2N0eCAqYywgc3RydWN0IGRhbW9uX3RhcmdldCAqdCxcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMjgwMi1cbm1tL2RhbW9uL2NvcmUuYzoyODAzOlx0XHRkYW1vbl9kb19hcHBseV9zY2hlbWVzKGMsIHQsIHIpO1xubW0vZGFtb24vY29yZS5jLTI4MDQtXHRcdC8qXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDAwOjMzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMyMTc1CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogNDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uCgoqKlRyYWNpbmcgdGhlIENhbGwgQ2hhaW46IGBkYW1vc19hcHBseV90YXJnZXRgKioKClJpZ2h0LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYGRhbW9zX2FwcGx5X3RhcmdldGAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCB3aGVyZSYjMzk7cyB0aGlzIGJlaW5nIGNhbGxlZCBmcm9tPyAgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGNvbnRleHQuIEtub3dpbmcgdGhlIGVudHJ5IHBvaW50cywgdGhlIGZ1bmN0aW9ucyB0aGF0IGZlZWQgaW50byBgZGFtb3NfYXBwbHlfdGFyZ2V0YCwgaXMgY3JpdGljYWwgZm9yIGdyYXNwaW5nIGl0cyBwdXJwb3NlIGFuZCBwb3RlbnRpYWwgc2lkZSBlZmZlY3RzLiBUaGUgY29kZSBzdWdnZXN0cyBpdCYjMzk7cyBjb25uZWN0ZWQgdG8gYGtkYW1vbmRfZm5gLCBga2RhbW9uZF9hcHBseV9zY2hlbWVzYCwgb3Igc29tZSBvdGhlciBzaW1pbGFyIG1vZHVsZXMgb3IgZnVuY3Rpb25zLiBJIHNob3VsZCBleGFtaW5lIHRoZSBjYWxsIGdyYXBoIOKAkyBzZWUgd2hhdCYjMzk7cyBpbnZva2luZyBgZGFtb3NfYXBwbHlfdGFyZ2V0YC4gVGhhdCYjMzk7bGwgZ2l2ZSBtZSBhIHNvbGlkIHBpY3R1cmUuIExldCYjMzk7cyBkaWcgaW50byB0aGUgY2FsbGVycyBhbmQgc2VlIHdoYXQgd2UgY2FuIGZpbmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDAwOjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RhbW9zX2FwcGx5X3RhcmdldCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL2RhbW9uJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL2RhbW9uL2NvcmUuYz0yNzQwPXN0YXRpYyB2b2lkIGRhbW9uX2RvX2FwcGx5X3NjaGVtZXMoc3RydWN0IGRhbW9uX2N0eCAqYyxcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMjc3Ny0vKlxubW0vZGFtb24vY29yZS5jOjI3Nzg6ICogZGFtb3NfYXBwbHlfdGFyZ2V0KCkgLSBBcHBseSBEQU1PUyBzY2hlbWVzIHRvIGEgZ2l2ZW4gdGFyZ2V0LlxubW0vZGFtb24vY29yZS5jLTI3NzktICogQGM6XHRcdFx0bW9uaXRvcmluZyBjb250ZXh0IHRvIGFwcGx5IGl0cyBEQU1PUyBzY2hlbWVzIHRvLi5cbi0tXG5tbS9kYW1vbi9jb3JlLmMtMjc5NC0gKi9cbm1tL2RhbW9uL2NvcmUuYzoyNzk1OnN0YXRpYyB2b2lkIGRhbW9zX2FwcGx5X3RhcmdldChzdHJ1Y3QgZGFtb25fY3R4ICpjLCBzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0LFxubW0vZGFtb24vY29yZS5jLTI3OTYtXHRcdHVuc2lnbmVkIGxvbmcgbWF4X3JlZ2lvbl9zeilcbi0tXG5tbS9kYW1vbi9jb3JlLmM9MzM1Nz1zdGF0aWMgdm9pZCBrZGFtb25kX2FwcGx5X3NjaGVtZXMoc3RydWN0IGRhbW9uX2N0eCAqYylcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMzM4My1cdFx0XHRjb250aW51ZTtcbm1tL2RhbW9uL2NvcmUuYzozMzg0Olx0XHRkYW1vc19hcHBseV90YXJnZXQoYywgdCwgbWF4X3JlZ2lvbl9zeik7XG5tbS9kYW1vbi9jb3JlLmMtMzM4NS1cdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDMgMDA6MzQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzI3MzcKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA1NjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgREFNT04gRnV6emluZyBTdHJhdGVneSoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBnb2FsIGlzIHRvIGRldGVybWluZSBpZiBhbmQgaG93IHRvIGZ1enogREFNT04uIEZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgY29yZSBmdW5jdGlvbiwgc28gSSYjMzk7bGwgZm9sbG93IHRoZSBleGVjdXRpb24gcGF0aCB3aXRoaW4gdGhlIGBrZGFtb25kYCBsb29wOiBga2RhbW9uZF9mbmAgLSZndDsgYGtkYW1vbmRfYXBwbHlfc2NoZW1lc2AgLSZndDsgYGRhbW9zX2FwcGx5X3RhcmdldGAgLSZndDsgYGRhbW9uX2RvX2FwcGx5X3NjaGVtZXNgIC0mZ3Q7IGBkYW1vc19xdW90YV9pc19mdWxsYCBhbmQgYGRhbW9zX2FwcGx5X3NjaGVtZWAuIFRoaXMgZ2l2ZXMgbWUgYSBnb29kIHN0YXJ0aW5nIHBvaW50IGZvciBpZGVudGlmeWluZyBjcml0aWNhbCBjb2RlIHBhdGhzLgoKTmV4dCwgSSYjMzk7bGwgY29uZmlybSBEQU1PTiYjMzk7cyBLY29uZmlnIGRlcGVuZGVuY2llcy4gTG9va2luZyBhdCBgbW0vZGFtb24vS2NvbmZpZ2AsIEkgc2VlIGl0JiMzOTtzIGNvbnRyb2xsZWQgYnkgdGhlIGBjb25maWcgREFNT05gIG9wdGlvbiwgd2l0aCBhZGRpdGlvbmFsIG9wdGlvbnMgZm9yIGBEQU1PTl9TWVNGU2AsIGBEQU1PTl9WQUREUmAsIGFuZCBgREFNT05fUEFERFJgLiBUaGlzIHRlbGxzIG1lIGhvdyBEQU1PTiBjYW4gYmUgY29uZmlndXJlZCBhbmQgYWN0aXZhdGVkLgoKTm93LCB0aGUgY3J1Y2lhbCBxdWVzdGlvbjogaXMgREFNT04gZnV6emFibGU/IEFic29sdXRlbHkuIEl04oCZcyBmdW5jdGlvbmFsIGtlcm5lbCBjb2RlLCBwYXJ0IG9mIHRoZSBtZW1vcnkgbWFuYWdlbWVudCBzdWJzeXN0ZW0uIFRoZSBwYXRjaCBmaXhlcyBxdW90YSBsb2dpYyB0aGF0IGNvdWxkIGJlIGEgc291cmNlIG9mIHZ1bG5lcmFiaWxpdGllcy4gSSYjMzk7bSBhbHJlYWR5IHNlZWluZyBgZGFtb3NfcXVvdGFfaXNfZnVsbGAgYW5kIGBkYW1vbl9kb19hcHBseV9zY2hlbWVzYCBhcyBwb3RlbnRpYWwgYXJlYXMgdG8gdGFyZ2V0LiBJdCYjMzk7cyBhbHNvIGZ1bGx5IHJlYWNoYWJsZSB0aHJvdWdoIHN5c2ZzIChgL3N5cy9rZXJuZWwvbW0vZGFtb24vLi4uYCksIG1ha2luZyBpdCBlYXNpbHkgYWNjZXNzaWJsZSBpbiBhIHN0YW5kYXJkIFFFTVUgb3IgR0NFIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBXb3J0aEZ1enppbmc9dHJ1ZSwgZGVmaW5pdGVseS4KCkZpbmFsbHksIEkgbmVlZCB0byBwaW5wb2ludCB0aGUgcmlnaHQgZm9jdXMgc3ltYm9scy4gSSYjMzk7bGwgY29uY2VudHJhdGUgb24gbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnRzLiBMZXQmIzM5O3Mgc2VlLi4uIGBkYW1vbl9zdGFydGAsIGBkYW1vbl9zdG9wYCwgYGRhbW9uX2NvbW1pdF9jdHhgLCBgZGFtb25fc2V0X2F0dHJzYCwgYGRhbW9uX3NldF9zY2hlbWVzYCwgYGRhbW9uX3NldF9yZWdpb25zYCwgYGRhbW9uX3N5c2ZzX2FkZF9zY2hlbWVzYCBsb29rIHByb21pc2luZy4gSSYjMzk7bGwgZG91YmxlLWNoZWNrIGBtbS9kYW1vbi9jb3JlLmNgLCBgbW0vZGFtb24vc3lzZnMuY2AgYW5kIGBtbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmNgIHRvIGlkZW50aWZ5IGFueSBvdGhlciByZWxldmFudCBmdW5jdGlvbnMuIFRoaXMgaXMgYSBzb2xpZCBzdGFydGluZyBwb2ludCBmb3IgYSBmdXp6aW5nIGNhbXBhaWduLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAwMDozNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteaW50IGRhbW9uX3xedm9pZCBkYW1vbl98XnN0cnVjdCBkYW1vbl8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9kYW1vbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9kYW1vbi9jb3JlLmM9NTE9Ym9vbCBkYW1vbl9pc19yZWdpc3RlcmVkX29wcyhlbnVtIGRhbW9uX29wc19pZCBpZClcbi0tXG5tbS9kYW1vbi9jb3JlLmMtNzEtICovXG5tbS9kYW1vbi9jb3JlLmM6NzI6aW50IGRhbW9uX3JlZ2lzdGVyX29wcyhzdHJ1Y3QgZGFtb25fb3BlcmF0aW9ucyAqb3BzKVxubW0vZGFtb24vY29yZS5jLTczLXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtOTgtICovXG5tbS9kYW1vbi9jb3JlLmM6OTk6aW50IGRhbW9uX3NlbGVjdF9vcHMoc3RydWN0IGRhbW9uX2N0eCAqY3R4LCBlbnVtIGRhbW9uX29wc19pZCBpZClcbm1tL2RhbW9uL2NvcmUuYy0xMDAte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0xMTQtXG5tbS9kYW1vbi9jb3JlLmM6MTE1OnN0cnVjdCBkYW1vbl9wcmVwICpkYW1vbl9uZXdfcHJlcChlbnVtIGRhbW9uX3ByZXBfYWN0aW9uIGFjdGlvbilcbm1tL2RhbW9uL2NvcmUuYy0xMTYte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0xMjYtXG5tbS9kYW1vbi9jb3JlLmM6MTI3OnZvaWQgZGFtb25fYWRkX3ByZXAoc3RydWN0IGRhbW9uX3Byb2JlICpwLCBzdHJ1Y3QgZGFtb25fcHJlcCAqcHJlcClcbm1tL2RhbW9uL2NvcmUuYy0xMjgte1xuLS1cbm1tL2RhbW9uL2NvcmUuYz0xNjA9c3RhdGljIGJvb2wgZGFtb25faGFzX3ByZXAoc3RydWN0IGRhbW9uX2N0eCAqYylcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTcxLVxubW0vZGFtb24vY29yZS5jOjE3MjpzdHJ1Y3QgZGFtb25fZmlsdGVyICpkYW1vbl9uZXdfZmlsdGVyKGVudW0gZGFtb25fZmlsdGVyX3R5cGUgdHlwZSxcbm1tL2RhbW9uL2NvcmUuYy0xNzMtXHRcdGJvb2wgbWF0Y2hpbmcsIGJvb2wgYWxsb3cpXG4tLVxubW0vZGFtb24vY29yZS5jLTE4Ni1cbm1tL2RhbW9uL2NvcmUuYzoxODc6dm9pZCBkYW1vbl9hZGRfZmlsdGVyKHN0cnVjdCBkYW1vbl9wcm9iZSAqcCwgc3RydWN0IGRhbW9uX2ZpbHRlciAqZilcbm1tL2RhbW9uL2NvcmUuYy0xODgte1xuLS1cbm1tL2RhbW9uL2NvcmUuYz0xOTc9c3RhdGljIHZvaWQgZGFtb25fZnJlZV9maWx0ZXIoc3RydWN0IGRhbW9uX2ZpbHRlciAqZilcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMjAxLVxubW0vZGFtb24vY29yZS5jOjIwMjp2b2lkIGRhbW9uX2Rlc3Ryb3lfZmlsdGVyKHN0cnVjdCBkYW1vbl9maWx0ZXIgKmYpXG5tbS9kYW1vbi9jb3JlLmMtMjAzLXtcbi0tXG5tbS9kYW1vbi9jb3JlLmM9MjA4PXN0YXRpYyBzdHJ1Y3QgZGFtb25fZmlsdGVyICpkYW1vbl9udGhfZmlsdGVyKGludCBuLCBzdHJ1Y3QgZGFtb25fcHJvYmUgKnApXG4tLVxubW0vZGFtb24vY29yZS5jLTIxOS1cbm1tL2RhbW9uL2NvcmUuYzoyMjA6c3RydWN0IGRhbW9uX3Byb2JlICpkYW1vbl9uZXdfcHJvYmUodm9pZClcbm1tL2RhbW9uL2NvcmUuYy0yMjEte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0yMzMtXG5tbS9kYW1vbi9jb3JlLmM6MjM0OnZvaWQgZGFtb25fYWRkX3Byb2JlKHN0cnVjdCBkYW1vbl9jdHggKmN0eCwgc3RydWN0IGRhbW9uX3Byb2JlICpwcm9iZSlcbm1tL2RhbW9uL2NvcmUuYy0yMzUte1xuLS1cbm1tL2RhbW9uL2NvcmUuYz0zODA9c3RhdGljIHZvaWQgZGFtb25fdmVyaWZ5X25ld19yZWdpb24odW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQpXG4tLVxubW0vZGFtb24vY29yZS5jLTM4OS0gKi9cbm1tL2RhbW9uL2NvcmUuYzozOTA6c3RydWN0IGRhbW9uX3JlZ2lvbiAqZGFtb25fbmV3X3JlZ2lvbih1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZClcbm1tL2RhbW9uL2NvcmUuYy0zOTEte1xuLS1cbm1tL2RhbW9uL2NvcmUuYz01MDc9c3RhdGljIGludCBkYW1vbl9maWxsX3JlZ2lvbnNfaG9sZXMoc3RydWN0IGRhbW9uX3JlZ2lvbiAqZmlyc3QsXG4tLVxubW0vZGFtb24vY29yZS5jLTUzOS0gKi9cbm1tL2RhbW9uL2NvcmUuYzo1NDA6aW50IGRhbW9uX3NldF9yZWdpb25zKHN0cnVjdCBkYW1vbl90YXJnZXQgKnQsIHN0cnVjdCBkYW1vbl9hZGRyX3JhbmdlICpyYW5nZXMsXG5tbS9kYW1vbi9jb3JlLmMtNTQxLVx0XHR1bnNpZ25lZCBpbnQgbnJfcmFuZ2VzLCB1bnNpZ25lZCBsb25nIG1pbl9yZWdpb25fc3opXG4tLVxubW0vZGFtb24vY29yZS5jPTc4OD1zdGF0aWMgdm9pZCBkYW1vc19zZXRfbmV4dF9hcHBseV9zaXMoc3RydWN0IGRhbW9zICpzLCBzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXG4tLVxubW0vZGFtb24vY29yZS5jLTc5OC1cbm1tL2RhbW9uL2NvcmUuYzo3OTk6dm9pZCBkYW1vbl9hZGRfc2NoZW1lKHN0cnVjdCBkYW1vbl9jdHggKmN0eCwgc3RydWN0IGRhbW9zICpzKVxubW0vZGFtb24vY29yZS5jLTgwMC17XG4tLVxubW0vZGFtb24vY29yZS5jPTgxMD1zdGF0aWMgdm9pZCBkYW1vbl9mcmVlX3NjaGVtZShzdHJ1Y3QgZGFtb3MgKnMpXG4tLVxubW0vZGFtb24vY29yZS5jLTgxNC1cbm1tL2RhbW9uL2NvcmUuYzo4MTU6dm9pZCBkYW1vbl9kZXN0cm95X3NjaGVtZShzdHJ1Y3QgZGFtb3MgKnMpXG5tbS9kYW1vbi9jb3JlLmMtODE2LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtODM5LSAqL1xubW0vZGFtb24vY29yZS5jOjg0MDpzdHJ1Y3QgZGFtb25fdGFyZ2V0ICpkYW1vbl9uZXdfdGFyZ2V0KHZvaWQpXG5tbS9kYW1vbi9jb3JlLmMtODQxLXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtODU2LVxubW0vZGFtb24vY29yZS5jOjg1Nzp2b2lkIGRhbW9uX2FkZF90YXJnZXQoc3RydWN0IGRhbW9uX2N0eCAqY3R4LCBzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0KVxubW0vZGFtb24vY29yZS5jLTg1OC17XG4tLVxubW0vZGFtb24vY29yZS5jLTg2NC0gKi9cbm1tL2RhbW9uL2NvcmUuYzo4NjU6aW50IGRhbW9uX3NldF90YXJnZXRfcGlkKHN0cnVjdCBkYW1vbl90YXJnZXQgKnQsIGludCBwaWQpXG5tbS9kYW1vbi9jb3JlLmMtODY2LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmM9ODczPXN0YXRpYyB2b2lkIGRhbW9uX2RlbF90YXJnZXQoc3RydWN0IGRhbW9uX3RhcmdldCAqdClcbi0tXG5tbS9kYW1vbi9jb3JlLmMtODc3LVxubW0vZGFtb24vY29yZS5jOjg3ODp2b2lkIGRhbW9uX2ZyZWVfdGFyZ2V0KHN0cnVjdCBkYW1vbl90YXJnZXQgKnQpXG5tbS9kYW1vbi9jb3JlLmMtODc5LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtODg2LVxubW0vZGFtb24vY29yZS5jOjg4Nzp2b2lkIGRhbW9uX2Rlc3Ryb3lfdGFyZ2V0KHN0cnVjdCBkYW1vbl90YXJnZXQgKnQsIHN0cnVjdCBkYW1vbl9jdHggKmN0eClcbm1tL2RhbW9uL2NvcmUuYy04ODgte1xuLS1cbm1tL2RhbW9uL2NvcmUuYz04OTc9dW5zaWduZWQgaW50IGRhbW9uX25yX3JlZ2lvbnMoc3RydWN0IGRhbW9uX3RhcmdldCAqdClcbi0tXG5tbS9kYW1vbi9jb3JlLmMtOTAxLVxubW0vZGFtb24vY29yZS5jOjkwMjpzdHJ1Y3QgZGFtb25fY3R4ICpkYW1vbl9uZXdfY3R4KHZvaWQpXG5tbS9kYW1vbi9jb3JlLmMtOTAzLXtcbi0tXG5tbS9kYW1vbi9jb3JlLmM9OTQyPXN0YXRpYyB2b2lkIGRhbW9uX2Rlc3Ryb3lfdGFyZ2V0cyhzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXG4tLVxubW0vZGFtb24vY29yZS5jLTk0OS1cbm1tL2RhbW9uL2NvcmUuYzo5NTA6dm9pZCBkYW1vbl9kZXN0cm95X2N0eChzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXG5tbS9kYW1vbi9jb3JlLmMtOTUxLXtcbi0tXG5tbS9kYW1vbi9jb3JlLmM9MTA4Mz1zdGF0aWMgYm9vbCBkYW1vbl92YWxpZF9pbnRlcnZhbHNfZ29hbChzdHJ1Y3QgZGFtb25fYXR0cnMgKmF0dHJzKVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xMTE3LSAqL1xubW0vZGFtb24vY29yZS5jOjExMTg6aW50IGRhbW9uX3NldF9hdHRycyhzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsIHN0cnVjdCBkYW1vbl9hdHRycyAqYXR0cnMpXG5tbS9kYW1vbi9jb3JlLmMtMTExOS17XG4tLVxubW0vZGFtb24vY29yZS5jLTExNjUtICovXG5tbS9kYW1vbi9jb3JlLmM6MTE2Njp2b2lkIGRhbW9uX3NldF9zY2hlbWVzKHN0cnVjdCBkYW1vbl9jdHggKmN0eCwgc3RydWN0IGRhbW9zICoqc2NoZW1lcyxcbm1tL2RhbW9uL2NvcmUuYy0xMTY3LVx0XHRcdHNzaXplX3QgbnJfc2NoZW1lcylcbi0tXG5tbS9kYW1vbi9jb3JlLmM9MTkyMD1zdGF0aWMgc3RydWN0IGRhbW9uX2N0eCAqZGFtb25fbmV3X3Rlc3RfY3R4KHN0cnVjdCBkYW1vbl9jdHggKmRzdClcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTk0OC0gKi9cbm1tL2RhbW9uL2NvcmUuYzoxOTQ5OmludCBkYW1vbl9jb21taXRfY3R4KHN0cnVjdCBkYW1vbl9jdHggKmRzdCwgc3RydWN0IGRhbW9uX2N0eCAqc3JjKVxubW0vZGFtb24vY29yZS5jLTE5NTAte1xuLS1cbm1tL2RhbW9uL2NvcmUuYz0yMDMyPXN0YXRpYyBpbnQgX19kYW1vbl9zdGFydChzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXG4tLVxubW0vZGFtb24vY29yZS5jLTIwNjgtICovXG5tbS9kYW1vbi9jb3JlLmM6MjA2OTppbnQgZGFtb25fc3RhcnQoc3RydWN0IGRhbW9uX2N0eCAqKmN0eHMsIGludCBucl9jdHhzLCBib29sIGV4Y2x1c2l2ZSlcbm1tL2RhbW9uL2NvcmUuYy0yMDcwLXtcbi0tXG5tbS9kYW1vbi9jb3JlLmM9MjExND1zdGF0aWMgdm9pZCBfX2RhbW9uX3N0b3Aoc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0yMTMzLSAqL1xubW0vZGFtb24vY29yZS5jOjIxMzQ6dm9pZCBkYW1vbl9zdG9wKHN0cnVjdCBkYW1vbl9jdHggKipjdHhzLCBpbnQgbnJfY3R4cylcbm1tL2RhbW9uL2NvcmUuYy0yMTM1LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmM9MjE0OT1ib29sIGRhbW9uX2lzX3J1bm5pbmcoc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0yMTY0LSAqL1xubW0vZGFtb24vY29yZS5jOjIxNjU6aW50IGRhbW9uX2tkYW1vbmRfcGlkKHN0cnVjdCBkYW1vbl9jdHggKmN0eClcbm1tL2RhbW9uL2NvcmUuYy0yMTY2LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMjIwMC0gKi9cbm1tL2RhbW9uL2NvcmUuYzoyMjAxOmludCBkYW1vbl9jYWxsKHN0cnVjdCBkYW1vbl9jdHggKmN0eCwgc3RydWN0IGRhbW9uX2NhbGxfY29udHJvbCAqY29udHJvbClcbm1tL2RhbW9uL2NvcmUuYy0yMjAyLXtcbi0tXG5tbS9kYW1vbi9jb3JlLmM9Mzg5MD1zdGF0aWMgaW50IGtkYW1vbmRfZm4odm9pZCAqZGF0YSlcbi0tXG5tbS9kYW1vbi9jb3JlLmMtNDA2My1cbm1tL2RhbW9uL2NvcmUuYzo0MDY0OnN0cnVjdCBkYW1vbl9zeXN0ZW1fcmFtX3JhbmdlX3dhbGtfYXJnIHtcbm1tL2RhbW9uL2NvcmUuYy00MDY1LVx0Ym9vbCB3YWxrZWQ7XG4tLVxubW0vZGFtb24vY29yZS5jPTQwOTQ9c3RhdGljIGJvb2wgZGFtb25fZmluZF9zeXN0ZW1fcmFtc19yYW5nZSh1bnNpZ25lZCBsb25nICpzdGFydCxcbi0tXG5tbS9kYW1vbi9jb3JlLmMtNDEyNS0gKi9cbm1tL2RhbW9uL2NvcmUuYzo0MTI2OmludCBkYW1vbl9zZXRfcmVnaW9uX3N5c3RlbV9yYW1zX2RlZmF1bHQoc3RydWN0IGRhbW9uX3RhcmdldCAqdCxcbm1tL2RhbW9uL2NvcmUuYy00MTI3LVx0XHRcdHVuc2lnbmVkIGxvbmcgKnN0YXJ0LCB1bnNpZ25lZCBsb25nICplbmQsXG4tLVxubW0vZGFtb24vY29yZS5jLTQxNTAtICovXG5tbS9kYW1vbi9jb3JlLmM6NDE1MTp2b2lkIGRhbW9uX3VwZGF0ZV9yZWdpb25fYWNjZXNzX3JhdGUoc3RydWN0IGRhbW9uX3JlZ2lvbiAqciwgYm9vbCBhY2Nlc3NlZClcbm1tL2RhbW9uL2NvcmUuYy00MTUyLXtcbi0tXG5tbS9kYW1vbi9tb2R1bGVzLWNvbW1vbi5jLTE0LSAqL1xubW0vZGFtb24vbW9kdWxlcy1jb21tb24uYzoxNTppbnQgZGFtb25fbW9kdWxlc19uZXdfcGFkZHJfY3R4X3RhcmdldChzdHJ1Y3QgZGFtb25fY3R4ICoqY3R4cCxcbm1tL2RhbW9uL21vZHVsZXMtY29tbW9uLmMtMTYtXHRcdHN0cnVjdCBkYW1vbl90YXJnZXQgKip0YXJnZXRwKVxuLS1cbm1tL2RhbW9uL21vZHVsZXMtY29tbW9uLmgtNDUtXG5tbS9kYW1vbi9tb2R1bGVzLWNvbW1vbi5oOjQ2OmludCBkYW1vbl9tb2R1bGVzX25ld19wYWRkcl9jdHhfdGFyZ2V0KHN0cnVjdCBkYW1vbl9jdHggKipjdHhwLFxubW0vZGFtb24vbW9kdWxlcy1jb21tb24uaC00Ny1cdFx0c3RydWN0IGRhbW9uX3RhcmdldCAqKnRhcmdldHApO1xuLS1cbm1tL2RhbW9uL29wcy1jb21tb24uYz0yND1zdHJ1Y3QgZm9saW8gKmRhbW9uX2dldF9mb2xpbyh1bnNpZ25lZCBsb25nIHBmbilcbi0tXG5tbS9kYW1vbi9vcHMtY29tbW9uLmMtNDEtXG5tbS9kYW1vbi9vcHMtY29tbW9uLmM6NDI6dm9pZCBkYW1vbl9wdGVwX21rb2xkKHB0ZV90ICpwdGUsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHIpXG5tbS9kYW1vbi9vcHMtY29tbW9uLmMtNDMte1xuLS1cbm1tL2RhbW9uL29wcy1jb21tb24uYy03Mi1cbm1tL2RhbW9uL29wcy1jb21tb24uYzo3Mzp2b2lkIGRhbW9uX3BtZHBfbWtvbGQocG1kX3QgKnBtZCwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgYWRkcilcbm1tL2RhbW9uL29wcy1jb21tb24uYy03NC17XG4tLVxubW0vZGFtb24vb3BzLWNvbW1vbi5jLTEwMy1cbm1tL2RhbW9uL29wcy1jb21tb24uYzoxMDQ6aW50IGRhbW9uX2hvdF9zY29yZShzdHJ1Y3QgZGFtb25fY3R4ICpjLCBzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLFxubW0vZGFtb24vb3BzLWNvbW1vbi5jLTEwNS1cdFx0XHRzdHJ1Y3QgZGFtb3MgKnMpXG4tLVxubW0vZGFtb24vb3BzLWNvbW1vbi5jLTE0OS1cbm1tL2RhbW9uL29wcy1jb21tb24uYzoxNTA6aW50IGRhbW9uX2NvbGRfc2NvcmUoc3RydWN0IGRhbW9uX2N0eCAqYywgc3RydWN0IGRhbW9uX3JlZ2lvbiAqcixcbm1tL2RhbW9uL29wcy1jb21tb24uYy0xNTEtXHRcdFx0c3RydWN0IGRhbW9zICpzKVxuLS1cbm1tL2RhbW9uL29wcy1jb21tb24uYz0xNTk9c3RhdGljIGJvb2wgZGFtb25fZm9saW9fbWtvbGRfb25lKHN0cnVjdCBmb2xpbyAqZm9saW8sXG4tLVxubW0vZGFtb24vb3BzLWNvbW1vbi5jLTE3My1cbm1tL2RhbW9uL29wcy1jb21tb24uYzoxNzQ6dm9pZCBkYW1vbl9mb2xpb19ta29sZChzdHJ1Y3QgZm9saW8gKmZvbGlvKVxubW0vZGFtb24vb3BzLWNvbW1vbi5jLTE3NS17XG4tLVxubW0vZGFtb24vb3BzLWNvbW1vbi5oPTg9c3RydWN0IGZvbGlvICpkYW1vbl9nZXRfZm9saW8odW5zaWduZWQgbG9uZyBwZm4pO1xubW0vZGFtb24vb3BzLWNvbW1vbi5oLTktXG5tbS9kYW1vbi9vcHMtY29tbW9uLmg6MTA6dm9pZCBkYW1vbl9wdGVwX21rb2xkKHB0ZV90ICpwdGUsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHIpO1xubW0vZGFtb24vb3BzLWNvbW1vbi5oOjExOnZvaWQgZGFtb25fcG1kcF9ta29sZChwbWRfdCAqcG1kLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBhZGRyKTtcbm1tL2RhbW9uL29wcy1jb21tb24uaDoxMjp2b2lkIGRhbW9uX2ZvbGlvX21rb2xkKHN0cnVjdCBmb2xpbyAqZm9saW8pO1xubW0vZGFtb24vb3BzLWNvbW1vbi5oLTEzLWJvb2wgZGFtb25fZm9saW9feW91bmcoc3RydWN0IGZvbGlvICpmb2xpbyk7XG5tbS9kYW1vbi9vcHMtY29tbW9uLmgtMTQtXG5tbS9kYW1vbi9vcHMtY29tbW9uLmg6MTU6aW50IGRhbW9uX2NvbGRfc2NvcmUoc3RydWN0IGRhbW9uX2N0eCAqYywgc3RydWN0IGRhbW9uX3JlZ2lvbiAqcixcbm1tL2RhbW9uL29wcy1jb21tb24uaC0xNi1cdFx0XHRzdHJ1Y3QgZGFtb3MgKnMpO1xubW0vZGFtb24vb3BzLWNvbW1vbi5oOjE3OmludCBkYW1vbl9ob3Rfc2NvcmUoc3RydWN0IGRhbW9uX2N0eCAqYywgc3RydWN0IGRhbW9uX3JlZ2lvbiAqcixcbm1tL2RhbW9uL29wcy1jb21tb24uaC0xOC1cdFx0XHRzdHJ1Y3QgZGFtb3MgKnMpO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jPTEwPURFRklORV9NVVRFWChkYW1vbl9zeXNmc19sb2NrKTtcbi0tXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy0xNS1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jOjE2OnN0cnVjdCBkYW1vbl9zeXNmc191bF9yYW5nZSAqZGFtb25fc3lzZnNfdWxfcmFuZ2VfYWxsb2MoXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy0xNy1cdFx0dW5zaWduZWQgbG9uZyBtaW4sXG4tLVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM9NjU9c3RhdGljIHNzaXplX3QgbWF4X3N0b3JlKHN0cnVjdCBrb2JqZWN0ICprb2JqLCBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgKmF0dHIsXG4tLVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmMtODAtXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYzo4MTp2b2lkIGRhbW9uX3N5c2ZzX3VsX3JhbmdlX3JlbGVhc2Uoc3RydWN0IGtvYmplY3QgKmtvYmopXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy04Mi17XG4tLVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM9MTA2PXN0YXRpYyBib29sIGRhbW9uX3N5c2ZzX21lbWNnX3BhdGhfZXEoc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnLFxuLS1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTExNi1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jOjExNzppbnQgZGFtb25fc3lzZnNfbWVtY2dfcGF0aF90b19pZChjaGFyICptZW1jZ19wYXRoLCB1NjQgKmlkKVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmMtMTE4LXtcbi0tXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaD05PWV4dGVybiBzdHJ1Y3QgbXV0ZXggZGFtb25fc3lzZnNfbG9jaztcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTEwLVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6MTE6c3RydWN0IGRhbW9uX3N5c2ZzX3VsX3JhbmdlIHtcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTEyLVx0c3RydWN0IGtvYmplY3Qga29iajtcbi0tXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC0xNi1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oOjE3OnN0cnVjdCBkYW1vbl9zeXNmc191bF9yYW5nZSAqZGFtb25fc3lzZnNfdWxfcmFuZ2VfYWxsb2MoXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC0xOC1cdFx0dW5zaWduZWQgbG9uZyBtaW4sXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC0xOS1cdFx0dW5zaWduZWQgbG9uZyBtYXgpO1xubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6MjA6dm9pZCBkYW1vbl9zeXNmc191bF9yYW5nZV9yZWxlYXNlKHN0cnVjdCBrb2JqZWN0ICprb2JqKTtcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTIxLVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg9MjI9ZXh0ZXJuIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfdWxfcmFuZ2Vfa3R5cGU7XG4tLVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtMjctXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaDoyODpzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lcyB7XG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC0yOS1cdHN0cnVjdCBrb2JqZWN0IGtvYmo7XG4tLVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtMzMtXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaDozNDpzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lcyAqZGFtb25fc3lzZnNfc2NoZW1lc19hbGxvYyh2b2lkKTtcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oOjM1OnZvaWQgZGFtb25fc3lzZnNfc2NoZW1lc19ybV9kaXJzKHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVzICpzY2hlbWVzKTtcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTM2LVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg9Mzc9ZXh0ZXJuIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfc2NoZW1lc19rdHlwZTtcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTM4LVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6Mzk6aW50IGRhbW9uX3N5c2ZzX2FkZF9zY2hlbWVzKHN0cnVjdCBkYW1vbl9jdHggKmN0eCxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTQwLVx0XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lcyAqc3lzZnNfc2NoZW1lcyk7XG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC00MS1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oOjQyOnZvaWQgZGFtb25fc3lzZnNfc2NoZW1lc191cGRhdGVfc3RhdHMoXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC00My1cdFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZXMgKnN5c2ZzX3NjaGVtZXMsXG4tLVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg9NDY9dm9pZCBkYW1vc19zeXNmc19wb3B1bGF0ZV9yZWdpb25fZGlyKHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVzICpzeXNmc19zY2hlbWVzLFxuLS1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTUwLVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6NTE6aW50IGRhbW9uX3N5c2ZzX3NjaGVtZXNfY2xlYXJfcmVnaW9ucyhcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTUyLVx0XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lcyAqc3lzZnNfc2NoZW1lcyk7XG4tLVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg9NTc9dm9pZCBkYW1vc19zeXNmc191cGRhdGVfZWZmZWN0aXZlX3F1b3Rhcyhcbi0tXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC02MC1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oOjYxOmludCBkYW1vbl9zeXNmc19tZW1jZ19wYXRoX3RvX2lkKGNoYXIgKm1lbWNnX3BhdGgsIHU2NCAqaWQpO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0xNDE9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb3Nfc3lzZnNfcHJvYmVzX2t0eXBlID0ge1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNDktXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTUwOnN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uIHtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNTEtXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0yODc9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbl9rdHlwZSA9IHtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjk2LVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjI5NzpzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbnMge1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTI5OC1cdHN0cnVjdCBrb2JqZWN0IGtvYmo7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTM1Nj1zdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uc19rdHlwZSA9IHtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzY1LVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjM2NjpzdHJ1Y3QgZGFtb25fc3lzZnNfc3RhdHMge1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTM2Ny1cdHN0cnVjdCBrb2JqZWN0IGtvYmo7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTUyMz1lbnVtIGRhbW9zX3N5c2ZzX2ZpbHRlcl9oYW5kbGVfbGF5ZXIge1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy01MjgtXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NTI5OnN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfZmlsdGVyIHtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy01MzAtXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz04ODI9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlcl9rdHlwZSA9IHtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtODkxLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjg5MjpzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlcnMge1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTg5My1cdHN0cnVjdCBrb2JqZWN0IGtvYmo7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTEwMTA9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlcnNfa3R5cGUgPSB7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEwMTktXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTAyMDpzdHJ1Y3QgZGFtb25fc3lzZnNfd2F0ZXJtYXJrcyB7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTAyMS1cdHN0cnVjdCBrb2JqZWN0IGtvYmo7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTE1NjQ9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbHNfa3R5cGUgPSB7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE1NzMtXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTU3NDpzdHJ1Y3QgZGFtb25fc3lzZnNfd2VpZ2h0cyB7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTU3NS1cdHN0cnVjdCBrb2JqZWN0IGtvYmo7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTE2NzQ9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfd2VpZ2h0c19rdHlwZSA9IHtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTY4My1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNjg0OnN0cnVjdCBkYW1vbl9zeXNmc19xdW90YXMge1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE2ODUtXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0xOTQ5PXN0YXRpYyBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9uX3N5c2ZzX3F1b3Rhc19rdHlwZSA9IHtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTk1OC1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxOTU5OnN0cnVjdCBkYW1vbl9zeXNmc19hY2Nlc3NfcGF0dGVybiB7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTk2MC1cdHN0cnVjdCBrb2JqZWN0IGtvYmo7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTE5NjY9c3RhdGljXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTk2NzpzdHJ1Y3QgZGFtb25fc3lzZnNfYWNjZXNzX3BhdHRlcm4gKmRhbW9uX3N5c2ZzX2FjY2Vzc19wYXR0ZXJuX2FsbG9jKHZvaWQpXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTk2OC17XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTIyNDQ9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb3Nfc3lzZnNfZGVzdHNfa3R5cGUgPSB7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTIyNTMtXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MjI1NDpzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lIHtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yMjU1LVx0c3RydWN0IGtvYmplY3Qga29iajtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MjY3ND1zdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vbl9zeXNmc19zY2hlbWVfa3R5cGUgPSB7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTI2ODMtXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MjY4NDpzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lcyAqZGFtb25fc3lzZnNfc2NoZW1lc19hbGxvYyh2b2lkKVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTI2ODUte1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yNjg4LVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjI2ODk6dm9pZCBkYW1vbl9zeXNmc19zY2hlbWVzX3JtX2RpcnMoc3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZXMgKnNjaGVtZXMpXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjY5MC17XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTI5NzQ9c3RhdGljIHN0cnVjdCBkYW1vcyAqZGFtb25fc3lzZnNfbWtfc2NoZW1lKFxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zMDQ3LVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjMwNDg6aW50IGRhbW9uX3N5c2ZzX2FkZF9zY2hlbWVzKHN0cnVjdCBkYW1vbl9jdHggKmN0eCxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zMDQ5LVx0XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lcyAqc3lzZnNfc2NoZW1lcylcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzA2Ni1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzozMDY3OnZvaWQgZGFtb25fc3lzZnNfc2NoZW1lc191cGRhdGVfc3RhdHMoXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzA2OC1cdFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZXMgKnN5c2ZzX3NjaGVtZXMsXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTMxMDU9dm9pZCBkYW1vc19zeXNmc19wb3B1bGF0ZV9yZWdpb25fZGlyKHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVzICpzeXNmc19zY2hlbWVzLFxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zMTUxLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjMxNTI6aW50IGRhbW9uX3N5c2ZzX3NjaGVtZXNfY2xlYXJfcmVnaW9ucyhcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zMTUzLVx0XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lcyAqc3lzZnNfc2NoZW1lcylcbi0tXG5tbS9kYW1vbi9zeXNmcy5jLTE0LVxubW0vZGFtb24vc3lzZnMuYzoxNTpzdHJ1Y3QgZGFtb25fc3lzZnNfcmVnaW9uIHtcbm1tL2RhbW9uL3N5c2ZzLmMtMTYtXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLmM9ODE9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfcmVnaW9uX2t0eXBlID0ge1xuLS1cbm1tL2RhbW9uL3N5c2ZzLmMtOTAtXG5tbS9kYW1vbi9zeXNmcy5jOjkxOnN0cnVjdCBkYW1vbl9zeXNmc19yZWdpb25zIHtcbm1tL2RhbW9uL3N5c2ZzLmMtOTItXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLmM9MjAwPXN0YXRpYyBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9uX3N5c2ZzX3JlZ2lvbnNfa3R5cGUgPSB7XG4tLVxubW0vZGFtb24vc3lzZnMuYy0yMDktXG5tbS9kYW1vbi9zeXNmcy5jOjIxMDpzdHJ1Y3QgZGFtb25fc3lzZnNfdGFyZ2V0IHtcbm1tL2RhbW9uL3N5c2ZzLmMtMjExLVx0c3RydWN0IGtvYmplY3Qga29iajtcbi0tXG5tbS9kYW1vbi9zeXNmcy5jPTMwNz1zdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vbl9zeXNmc190YXJnZXRfa3R5cGUgPSB7XG4tLVxubW0vZGFtb24vc3lzZnMuYy0zMTYtXG5tbS9kYW1vbi9zeXNmcy5jOjMxNzpzdHJ1Y3QgZGFtb25fc3lzZnNfdGFyZ2V0cyB7XG5tbS9kYW1vbi9zeXNmcy5jLTMxOC1cdHN0cnVjdCBrb2JqZWN0IGtvYmo7XG4tLVxubW0vZGFtb24vc3lzZnMuYz00MzU9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfdGFyZ2V0c19rdHlwZSA9IHtcbi0tXG5tbS9kYW1vbi9zeXNmcy5jLTQ0NC1cbm1tL2RhbW9uL3N5c2ZzLmM6NDQ1OnN0cnVjdCBkYW1vbl9zeXNmc19pbnRlcnZhbHNfZ29hbCB7XG5tbS9kYW1vbi9zeXNmcy5jLTQ0Ni1cdHN0cnVjdCBrb2JqZWN0IGtvYmo7XG4tLVxubW0vZGFtb24vc3lzZnMuYz01OTI9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfaW50ZXJ2YWxzX2dvYWxfa3R5cGUgPSB7XG4tLVxubW0vZGFtb24vc3lzZnMuYy02MDEtXG5tbS9kYW1vbi9zeXNmcy5jOjYwMjpzdHJ1Y3QgZGFtb25fc3lzZnNfaW50ZXJ2YWxzIHtcbm1tL2RhbW9uL3N5c2ZzLmMtNjAzLVx0c3RydWN0IGtvYmplY3Qga29iajtcbi0tXG5tbS9kYW1vbi9zeXNmcy5jPTc0Nj1zdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vbl9zeXNmc19pbnRlcnZhbHNfa3R5cGUgPSB7XG4tLVxubW0vZGFtb24vc3lzZnMuYy03NTUtXG5tbS9kYW1vbi9zeXNmcy5jOjc1NjpzdHJ1Y3QgZGFtb25fc3lzZnNfcHJlcCB7XG5tbS9kYW1vbi9zeXNmcy5jLTc1Ny1cdHN0cnVjdCBrb2JqZWN0IGtvYmo7XG4tLVxubW0vZGFtb24vc3lzZnMuYz03NjE9c3RhdGljIHN0cnVjdCBkYW1vbl9zeXNmc19wcmVwICpkYW1vbl9zeXNmc19wcmVwX2FsbG9jKHZvaWQpXG4tLVxubW0vZGFtb24vc3lzZnMuYy03NzEtXG5tbS9kYW1vbi9zeXNmcy5jOjc3MjpzdHJ1Y3QgZGFtb25fc3lzZnNfcHJlcF9hY3Rpb25fbmFtZSB7XG5tbS9kYW1vbi9zeXNmcy5jLTc3My1cdGNvbnN0IGVudW0gZGFtb25fcHJlcF9hY3Rpb24gYWN0aW9uO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLmM9ODQzPXN0YXRpYyBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9uX3N5c2ZzX3ByZXBfa3R5cGUgPSB7XG4tLVxubW0vZGFtb24vc3lzZnMuYy04NTItXG5tbS9kYW1vbi9zeXNmcy5jOjg1MzpzdHJ1Y3QgZGFtb25fc3lzZnNfcHJlcHMge1xubW0vZGFtb24vc3lzZnMuYy04NTQtXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLmM9OTYyPXN0YXRpYyBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9uX3N5c2ZzX3ByZXBzX2t0eXBlID0ge1xuLS1cbm1tL2RhbW9uL3N5c2ZzLmMtOTcxLVxubW0vZGFtb24vc3lzZnMuYzo5NzI6c3RydWN0IGRhbW9uX3N5c2ZzX2ZpbHRlciB7XG5tbS9kYW1vbi9zeXNmcy5jLTk3My1cdHN0cnVjdCBrb2JqZWN0IGtvYmo7XG4tLVxubW0vZGFtb24vc3lzZnMuYz05ODA9c3RhdGljIHN0cnVjdCBkYW1vbl9zeXNmc19maWx0ZXIgKmRhbW9uX3N5c2ZzX2ZpbHRlcl9hbGxvYyh2b2lkKVxuLS1cbm1tL2RhbW9uL3N5c2ZzLmMtOTg0LVxubW0vZGFtb24vc3lzZnMuYzo5ODU6c3RydWN0IGRhbW9uX3N5c2ZzX2ZpbHRlcl90eXBlX25hbWUge1xubW0vZGFtb24vc3lzZnMuYy05ODYtXHRlbnVtIGRhbW9uX2ZpbHRlcl90eXBlIHR5cGU7XG4tLVxubW0vZGFtb24vc3lzZnMuYz0xMTU2PXN0YXRpYyBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9uX3N5c2ZzX2ZpbHRlcl9rdHlwZSA9IHtcbi0tXG5tbS9kYW1vbi9zeXNmcy5jLTExNjUtXG5tbS9kYW1vbi9zeXNmcy5jOjExNjY6c3RydWN0IGRhbW9uX3N5c2ZzX2ZpbHRlcnMge1xubW0vZGFtb24vc3lzZnMuYy0xMTY3LVx0c3RydWN0IGtvYmplY3Qga29iajtcbi0tXG5tbS9kYW1vbi9zeXNmcy5jPTEyNzU9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfZmlsdGVyc19rdHlwZSA9IHtcbi0tXG5tbS9kYW1vbi9zeXNmcy5jLTEyODQtXG5tbS9kYW1vbi9zeXNmcy5jOjEyODU6c3RydWN0IGRhbW9uX3N5c2ZzX3Byb2JlIHtcbm1tL2RhbW9uL3N5c2ZzLmMtMTI4Ni1cdHN0cnVjdCBrb2JqZWN0IGtvYmo7XG4tLVxubW0vZGFtb24vc3lzZnMuYz0xMzgyPXN0YXRpYyBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9uX3N5c2ZzX3Byb2JlX2t0eXBlID0ge1xuLS1cbm1tL2RhbW9uL3N5c2ZzLmMtMTM5MS1cbm1tL2RhbW9uL3N5c2ZzLmM6MTM5MjpzdHJ1Y3QgZGFtb25fc3lzZnNfcHJvYmVzIHtcbm1tL2RhbW9uL3N5c2ZzLmMtMTM5My1cdHN0cnVjdCBrb2JqZWN0IGtvYmo7XG4tLVxubW0vZGFtb24vc3lzZnMuYz0xNTExPXN0YXRpYyBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9uX3N5c2ZzX3Byb2Jlc19rdHlwZSA9IHtcbi0tXG5tbS9kYW1vbi9zeXNmcy5jLTE1MjAtXG5tbS9kYW1vbi9zeXNmcy5jOjE1MjE6c3RydWN0IGRhbW9uX3N5c2ZzX2F0dHJzIHtcbm1tL2RhbW9uL3N5c2ZzLmMtMTUyMi1cdHN0cnVjdCBrb2JqZWN0IGtvYmo7XG4tLVxubW0vZGFtb24vc3lzZnMuYz0xNjE3PXN0YXRpYyBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9uX3N5c2ZzX2F0dHJzX2t0eXBlID0ge1xuLS1cbm1tL2RhbW9uL3N5c2ZzLmMtMTYyNi1cbm1tL2RhbW9uL3N5c2ZzLmM6MTYyNzpzdHJ1Y3QgZGFtb25fc3lzZnNfb3BzX25hbWUge1xubW0vZGFtb24vc3lzZnMuYy0xNjI4LVx0ZW51bSBkYW1vbl9vcHNfaWQgb3BzX2lkO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLmM9MTYzMj1zdGF0aWMgY29uc3Qgc3RydWN0IGRhbW9uX3N5c2ZzX29wc19uYW1lIGRhbW9uX3N5c2ZzX29wc19uYW1lc1tdID0ge1xuLS1cbm1tL2RhbW9uL3N5c2ZzLmMtMTY0Ni1cbm1tL2RhbW9uL3N5c2ZzLmM6MTY0NzpzdHJ1Y3QgZGFtb25fc3lzZnNfY29udGV4dCB7XG5tbS9kYW1vbi9zeXNmcy5jLTE2NDgtXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLmM9MTg5Mz1zdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vbl9zeXNmc19jb250ZXh0X2t0eXBlID0ge1xuLS1cbm1tL2RhbW9uL3N5c2ZzLmMtMTkwMi1cbm1tL2RhbW9uL3N5c2ZzLmM6MTkwMzpzdHJ1Y3QgZGFtb25fc3lzZnNfY29udGV4dHMge1xubW0vZGFtb24vc3lzZnMuYy0xOTA0LVx0c3RydWN0IGtvYmplY3Qga29iajtcbi0tXG5tbS9kYW1vbi9zeXNmcy5jPTIwMjI9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfY29udGV4dHNfa3R5cGUgPSB7XG4tLVxubW0vZGFtb24vc3lzZnMuYy0yMDMxLVxubW0vZGFtb24vc3lzZnMuYzoyMDMyOnN0cnVjdCBkYW1vbl9zeXNmc19rZGFtb25kIHtcbm1tL2RhbW9uL3N5c2ZzLmMtMjAzMy1cdHN0cnVjdCBrb2JqZWN0IGtvYmo7XG4tLVxubW0vZGFtb24vc3lzZnMuYz0yNTY5PXN0YXRpYyBpbnQgZGFtb25fc3lzZnNfZGFtb25fY2FsbChpbnQgKCpmbikodm9pZCAqZGF0YSksXG4tLVxubW0vZGFtb24vc3lzZnMuYy0yNTgyLVxubW0vZGFtb24vc3lzZnMuYzoyNTgzOnN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVzX3dhbGtfZGF0YSB7XG5tbS9kYW1vbi9zeXNmcy5jLTI1ODQtXHRzdHJ1Y3QgZGFtb25fc3lzZnNfa2RhbW9uZCAqc3lzZnNfa2RhbW9uZDtcbi0tXG5tbS9kYW1vbi9zeXNmcy5jPTI3Njc9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfa2RhbW9uZF9rdHlwZSA9IHtcbi0tXG5tbS9kYW1vbi9zeXNmcy5jLTI3NzYtXG5tbS9kYW1vbi9zeXNmcy5jOjI3Nzc6c3RydWN0IGRhbW9uX3N5c2ZzX2tkYW1vbmRzIHtcbm1tL2RhbW9uL3N5c2ZzLmMtMjc3OC1cdHN0cnVjdCBrb2JqZWN0IGtvYmo7XG4tLVxubW0vZGFtb24vc3lzZnMuYz0yOTEyPXN0YXRpYyBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9uX3N5c2ZzX2tkYW1vbmRzX2t0eXBlID0ge1xuLS1cbm1tL2RhbW9uL3N5c2ZzLmMtMjkyMS1cbm1tL2RhbW9uL3N5c2ZzLmM6MjkyMjpzdHJ1Y3QgZGFtb25fc3lzZnNfdWlfZGlyIHtcbm1tL2RhbW9uL3N5c2ZzLmMtMjkyMy1cdHN0cnVjdCBrb2JqZWN0IGtvYmo7XG4tLVxubW0vZGFtb24vdmFkZHIuYz0zNjk9c3RhdGljIHZvaWQgZGFtb25fdmFfcHJlcGFyZV9hY2Nlc3NfY2hlY2tzKHN0cnVjdCBkYW1vbl9jdHggKmN0eClcbi0tXG5tbS9kYW1vbi92YWRkci5jLTM4NC1cbm1tL2RhbW9uL3ZhZGRyLmM6Mzg1OnN0cnVjdCBkYW1vbl95b3VuZ193YWxrX3ByaXZhdGUge1xubW0vZGFtb24vdmFkZHIuYy0zODYtXHRib29sIHlvdW5nO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAwMDozNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MjgwMQoJCQkJCQkJb3V0cHV0OiAyMjAKCQkJCQkJCXRob3VnaHRzOiAzMzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiBUaGlzIERBTU9OIFBhdGNoKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgREFNT1MsIHdoaWNoIGFzIEkgcmVjYWxsLCBpcyB0aGUgc2V0IG9mIERBTU9OLWJhc2VkIE9wZXJhdGlvbiBTY2hlbWVzIHdpdGhpbiBEQU1PTiBpdHNlbGYuIFdlIG5lZWQgdG8gYmUgc3VyZSB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb25zIGFyZSBzZXQ6IGBEQU1PTmAsIGBEQU1PTl9QQUREUmAgb3IgYERBTU9OX1ZBRERSYCwgYERBTU9OX1NZU0ZTYCwgYW5kIGBTWVNGU2AuIFRob3NlIGFyZSB0aGUgY29yZSBidWlsZGluZyBibG9ja3MgZm9yIHRoaXMgdG8gZXZlbiAqZnVuY3Rpb24qLgoKSSBzZWUgd2UmIzM5O3JlIGZvY3VzZWQgb24gdGhlc2Ugc3ltYm9sczogYGRhbW9uX3N0YXJ0YCwgYGRhbW9uX2NvbW1pdF9jdHhgLCBgZGFtb25fc3lzZnNfYWRkX3NjaGVtZXNgLCBgZGFtb25fc2V0X3NjaGVtZXNgLCBgZGFtb25fbmV3X3NjaGVtZWAsIGFuZCBgZGFtb25fYWRkX3NjaGVtZWAuIENsZWFybHksIHRoaXMgcGF0Y2ggaXMgZGlnZ2luZyBkZWVwIGludG8gdGhlIGluaXRpYWxpemF0aW9uIGFuZCBzY2hlbWUgbWFuYWdlbWVudCBvZiBEQU1PTi4KCldlIG5lZWQgdG8gdmVyaWZ5IHRoaXMgY2FyZWZ1bGx5LiBJdCBsb29rcyBsaWtlIGl0JiMzOTtzIHdvcnRoIGZ1enppbmcgYW5kIHRob3NlIGFyZSBvdXIgZW5hYmxlZCBjb25maWdzLgoKVGhlIHJlYXNvbmluZyBoZXJlIGlzIGNyaXRpY2FsLiBUaGlzIHBhdGNoIGlzIGNoYW5naW5nIHRoZSBxdW90YSBjaGVjayBsb2dpYyDigJMgc3BlY2lmaWNhbGx5LCBob3cgYGRhbW9zX3F1b3RhX2lzX2Z1bGxgIGFuZCBgZGFtb25fZG9fYXBwbHlfc2NoZW1lc2AgaGFuZGxlIHNpdHVhdGlvbnMgd2hlcmUgdGhlIGNoYXJnZWQgc2l6ZSBvciBlZmZlY3RpdmUgc2l6ZSBpcyB6ZXJvLiBUaGlzIGNvdWxkIGhhdmUgc2lnbmlmaWNhbnQgaW1wbGljYXRpb25zIGZvciBtZW1vcnkgbWFuYWdlbWVudCwgcGFydGljdWxhcmx5IGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB3aGVyZSBEQU1PTiBpcyBvZnRlbiBlbXBsb3llZCB0aHJvdWdoIHRoZSBzeXNmcyBpbnRlcmZhY2UuIFdlJiMzOTtyZSB0YWxraW5nIGFib3V0IHByZXZlbnRpbmcgcHJlbWF0dXJlIHF1b3RhIGV4aGF1c3Rpb24gYW5kIGVuc3VyaW5nIHRoZSBzY2hlbWVzIGFyZSBhcHBsaWVkICpjb3JyZWN0bHkqIG5vdy4gVGhpcyBkaXJlY3RseSBpbXBhY3RzIHRoZSBjb3JlIGxvZ2ljIG9mIHNjaGVtZSBhcHBsaWNhdGlvbiBhbmQgbWVtb3J5IG1hbmFnZW1lbnQgd2l0aGluIERBTU9OLgoKQWxyaWdodCwgSSYjMzk7bSByZWFkeSB0byBgc2V0LXJlc3VsdHNgLiBJIG5lZWQgYSBkZWVwZXIgZGl2ZSBpbnRvIHRoZXNlIHNjaGVtZSBhcHBsaWNhdGlvbiBjaGFuZ2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAwMDozNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7REFNT04mIzM0OywKICAgICYjMzQ7REFNT05fU1lTRlMmIzM0OywKICAgICYjMzQ7REFNT05fUEFERFImIzM0OywKICAgICYjMzQ7REFNT05fVkFERFImIzM0OywKICAgICYjMzQ7U1lTRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkYW1vbl9zdGFydCYjMzQ7LAogICAgJiMzNDtkYW1vbl9jb21taXRfY3R4JiMzNDssCiAgICAmIzM0O2RhbW9uX3N5c2ZzX2FkZF9zY2hlbWVzJiMzNDssCiAgICAmIzM0O2RhbW9uX3NldF9zY2hlbWVzJiMzNDssCiAgICAmIzM0O2RhbW9uX25ld19zY2hlbWUmIzM0OywKICAgICYjMzQ7ZGFtb25fYWRkX3NjaGVtZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCB1cGRhdGVzIERBTU9OIE9wZXJhdGlvbiBTY2hlbWVzIChEQU1PUykgcXVvdGEgaGFuZGxpbmcgbG9naWMgd2l0aGluIG1tL2RhbW9uL2NvcmUuYyAoc3BlY2lmaWNhbGx5IGluIGRhbW9zX3F1b3RhX2lzX2Z1bGwgYW5kIGRhbW9uX2RvX2FwcGx5X3NjaGVtZXMpIHNvIHRoYXQgc2NoZW1lcyBhcmUgbm90IGluY29ycmVjdGx5IGNvbnNpZGVyZWQgZnVsbCB3aGVuIG5vIHF1b3RhIGhhcyBiZWVuIGNoYXJnZWQgeWV0LCBhbmQgZW1wdHkgcXVvdGFzIChlc3ogPT0gMCkgYXJlIHNraXBwZWQgcHJvcGVybHkuIFRoaXMgZnVuY3Rpb25hbGx5IGFmZmVjdHMgREFNT04gc2NoZW1lIGV2YWx1YXRpb24gYW5kIGNhbiBiZSB0ZXN0ZWQvZXhlcmNpc2VkIHZpYSB0aGUgREFNT04gc3lzZnMgaW50ZXJmYWNlIGluIHZpcnR1YWxpemVkIHRlc3QgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtEQU1PTiYjMzQ7LAogICAgJiMzNDtEQU1PTl9TWVNGUyYjMzQ7LAogICAgJiMzNDtEQU1PTl9QQUREUiYjMzQ7LAogICAgJiMzNDtEQU1PTl9WQUREUiYjMzQ7LAogICAgJiMzNDtTWVNGUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2RhbW9uX3N0YXJ0JiMzNDssCiAgICAmIzM0O2RhbW9uX2NvbW1pdF9jdHgmIzM0OywKICAgICYjMzQ7ZGFtb25fc3lzZnNfYWRkX3NjaGVtZXMmIzM0OywKICAgICYjMzQ7ZGFtb25fc2V0X3NjaGVtZXMmIzM0OywKICAgICYjMzQ7ZGFtb25fbmV3X3NjaGVtZSYjMzQ7LAogICAgJiMzNDtkYW1vbl9hZGRfc2NoZW1lJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHVwZGF0ZXMgREFNT04gT3BlcmF0aW9uIFNjaGVtZXMgKERBTU9TKSBxdW90YSBoYW5kbGluZyBsb2dpYyB3aXRoaW4gbW0vZGFtb24vY29yZS5jIChzcGVjaWZpY2FsbHkgaW4gZGFtb3NfcXVvdGFfaXNfZnVsbCBhbmQgZGFtb25fZG9fYXBwbHlfc2NoZW1lcykgc28gdGhhdCBzY2hlbWVzIGFyZSBub3QgaW5jb3JyZWN0bHkgY29uc2lkZXJlZCBmdWxsIHdoZW4gbm8gcXVvdGEgaGFzIGJlZW4gY2hhcmdlZCB5ZXQsIGFuZCBlbXB0eSBxdW90YXMgKGVzeiA9PSAwKSBhcmUgc2tpcHBlZCBwcm9wZXJseS4gVGhpcyBmdW5jdGlvbmFsbHkgYWZmZWN0cyBEQU1PTiBzY2hlbWUgZXZhbHVhdGlvbiBhbmQgY2FuIGJlIHRlc3RlZC9leGVyY2lzZWQgdmlhIHRoZSBEQU1PTiBzeXNmcyBpbnRlcmZhY2UgaW4gdmlydHVhbGl6ZWQgdGVzdCBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDAwOjM0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDMgMDA6MzQ8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBxdW90YSBjaGVja2luZyBsb2dpYyBpbiBEQU1PTiAobW0vZGFtb24vY29yZS5jKSBieSBhZGRpbmcgZWFybHkgcmV0dXJuL2NvbnRpbnVlIGNoZWNrcyB3aGVuIHF1b3RhLVx1MDAzZWNoYXJnZWRfc3ogaXMgMCBpbiBkYW1vc19xdW90YV9pc19mdWxsKCkgYW5kIHdoZW4gcXVvdGEtXHUwMDNlZXN6IGlzIDAgaW4gZGFtb25fZG9fYXBwbHlfc2NoZW1lcygpLiBUaGVzZSBjaGFuZ2VzIHB1cmVseSBhZmZlY3QgaW50ZXJuYWwgY29udHJvbCBmbG93IGFuZCBhY2NvdW50aW5nIGluIERBTU9OLiBObyBuZXcgYWxsb2NhdGlvbnMsIHN0YWNrL2hlYXAgYnVmZmVycywgb3IgY29waWVzIHRvIHVzZXIgc3BhY2UgYXJlIGludHJvZHVjZWQsIG5vciBpcyB0aGVyZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcyBvciBpbmZvcm1hdGlvbiBsZWFrcy4gVGhlcmVmb3JlLCBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBpcyBub3QgcmVxdWlyZWQgYW5kIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcgaXMgc3VmZmljaWVudC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYTkyZjhmYjA1MDZiNDRkMDI1MGQ3NDkyOWMxNTU1Yzk0NGM0OTMyYQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgU2VwIDMgMDA6MzM6MjMgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9tbS9kYW1vbi9jb3JlLmMgYi9tbS9kYW1vbi9jb3JlLmMKaW5kZXggZGYyMjYyMTc2NTkxMS4uZjhjNzg0ZGYyNDYwMCAxMDA2NDQKLS0tIGEvbW0vZGFtb24vY29yZS5jCiYjNDM7JiM0MzsmIzQzOyBiL21tL2RhbW9uL2NvcmUuYwpAQCAtMjY1NSw2ICYjNDM7MjY1NSw4IEBAIHN0YXRpYyBib29sIGRhbW9zX3F1b3RhX2lzX2Z1bGwoc3RydWN0IGRhbW9zX3F1b3RhICpxdW90YSwKIHsKIAlpZiAoIWRhbW9zX3F1b3RhX2lzX3NldChxdW90YSkpCiAJCXJldHVybiBmYWxzZTsKJiM0MzsJaWYgKCFxdW90YS0mZ3Q7Y2hhcmdlZF9zeikKJiM0MzsJCXJldHVybiBmYWxzZTsKIAlpZiAocXVvdGEtJmd0O2NoYXJnZWRfc3ogJmd0Oz0gcXVvdGEtJmd0O2VzeikKIAkJcmV0dXJuIHRydWU7CiAJLyoKQEAgLTI3NTAsNiAmIzQzOzI3NTIsOSBAQCBzdGF0aWMgdm9pZCBkYW1vbl9kb19hcHBseV9zY2hlbWVzKHN0cnVjdCBkYW1vbl9jdHggKmMsCiAJCWlmICghcy0mZ3Q7d21hcmtzLmFjdGl2YXRlZCkKIAkJCWNvbnRpbnVlOwogCiYjNDM7CQlpZiAoIXF1b3RhLSZndDtlc3opCiYjNDM7CQkJY29udGludWU7CiYjNDM7CiAJCS8qIENoZWNrIHRoZSBxdW90YSAqLwogCQlpZiAoZGFtb3NfcXVvdGFfaXNfZnVsbChxdW90YSwgYy0mZ3Q7bWluX3JlZ2lvbl9zeikpCiAJCQljb250aW51ZTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDAwOjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxNTkKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiA0OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIERBTU9OIFBhdGNoKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gTXkgZmlyc3QgbW92ZSBpcyBhbHdheXMgdG8gZ2V0IGEgc29saWQgZ3Jhc3Agb2YgdGhlIHN1cnJvdW5kaW5nIGNvbnRleHQuIFNvLCBJJiMzOTttIGdvaW5nIHRvIHB1bGwgdXAgdGhlIGBtbS9kYW1vbi9jb3JlLmNgIGZpbGUgYW5kIHN0YXJ0IGJ5IGdldHRpbmcgYSBicm9hZCB2aWV3IHdpdGggYHJlYWQtZmlsZWAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb2RlYmFzZSBhcm91bmQgdGhlIHBhdGNoIGJlZm9yZSBJIHN0YXJ0IHRvIHBhcnNlIHRoZSBzcGVjaWZpYyBjaGFuZ2VzLiBUaGF0IGdpdmVzIG1lIHRoZSBuZWNlc3NhcnkgZm91bmRhdGlvbiB0byBlZmZlY3RpdmVseSBjcml0aXF1ZSB0aGlzIHdvcmsuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDAwOjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bW0vZGFtb24vY29yZS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjY0NSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MjY0NTpcdFx0XHRxdW90YS1cdTAwM2VjaGFyZ2VkX3N6ICYjNDM7PSBzel9yZWdpb247XG4yNjQ2Olx0XHRlbHNlXG4yNjQ3Olx0XHRcdHF1b3RhLVx1MDAzZWNoYXJnZWRfc3ogJiM0Mzs9IHN6X2FwcGxpZWQgJiM0MzsgbXVsdF9mcmFjKFxuMjY0ODpcdFx0XHRcdFx0KHN6X3JlZ2lvbiAtIHN6X2FwcGxpZWQpLFxuMjY0OTpcdFx0XHRcdFx0cXVvdGEtXHUwMDNlZmFpbF9jaGFyZ2VfbnVtLFxuMjY1MDpcdFx0XHRcdFx0cXVvdGEtXHUwMDNlZmFpbF9jaGFyZ2VfZGVub20pO1xuMjY1MTpcdH1cbjI2NTI6XHRcbjI2NTM6XHRzdGF0aWMgYm9vbCBkYW1vc19xdW90YV9pc19mdWxsKHN0cnVjdCBkYW1vc19xdW90YSAqcXVvdGEsXG4yNjU0Olx0XHRcdHVuc2lnbmVkIGxvbmcgbWluX3JlZ2lvbl9zeilcbjI2NTU6XHR7XG4yNjU2Olx0XHRpZiAoIWRhbW9zX3F1b3RhX2lzX3NldChxdW90YSkpXG4yNjU3Olx0XHRcdHJldHVybiBmYWxzZTtcbjI2NTg6XHRcdGlmICghcXVvdGEtXHUwMDNlY2hhcmdlZF9zeilcbjI2NTk6XHRcdFx0cmV0dXJuIGZhbHNlO1xuMjY2MDpcdFx0aWYgKHF1b3RhLVx1MDAzZWNoYXJnZWRfc3ogXHUwMDNlPSBxdW90YS1cdTAwM2Vlc3opXG4yNjYxOlx0XHRcdHJldHVybiB0cnVlO1xuMjY2MjpcdFx0LypcbjI2NjM6XHRcdCAqIERBTU9TIGFjdGlvbiBpcyBhcHBsaWVkIHBlciByZWdpb24sIHNvIFx1MDAzY21pbl9yZWdpb25fc3ogcmVtYWluaW5nXG4yNjY0Olx0XHQgKiBxdW90YSBtZWFucyB0aGUgcXVvdGEgaXMgZWZmZWN0aXZlbHkgZnVsbC5cbjI2NjU6XHRcdCAqL1xuMjY2NjpcdFx0cmV0dXJuIHF1b3RhLVx1MDAzZWVzeiAtIHF1b3RhLVx1MDAzZWNoYXJnZWRfc3ogXHUwMDNjIG1pbl9yZWdpb25fc3o7XG4yNjY3Olx0fVxuMjY2ODpcdFxuMjY2OTpcdHN0YXRpYyB2b2lkIGRhbW9zX2FwcGx5X3NjaGVtZShzdHJ1Y3QgZGFtb25fY3R4ICpjLCBzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0LFxuMjY3MDpcdFx0XHRzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLCBzdHJ1Y3QgZGFtb3MgKnMpXG4yNjcxOlx0e1xuMjY3MjpcdFx0c3RydWN0IGRhbW9zX3F1b3RhICpxdW90YSA9IFx1MDAyNnMtXHUwMDNlcXVvdGE7XG4yNjczOlx0XHR1bnNpZ25lZCBsb25nIHN6ID0gZGFtb25fc3pfcmVnaW9uKHIpO1xuMjY3NDpcdFx0c3RydWN0IHRpbWVzcGVjNjQgYmVnaW4sIGVuZDtcbjI2NzU6XHRcdHVuc2lnbmVkIGxvbmcgc3pfYXBwbGllZCA9IDA7XG4yNjc2Olx0XHR1bnNpZ25lZCBsb25nIHN6X29wc19maWx0ZXJfcGFzc2VkID0gMDtcbjI2Nzc6XHRcdC8qXG4yNjc4Olx0XHQgKiBXZSBwbGFuIHRvIHN1cHBvcnQgbXVsdGlwbGUgY29udGV4dCBwZXIga2RhbW9uZCwgYXMgREFNT04gc3lzZnNcbjI2Nzk6XHRcdCAqIGltcGxpZXMgd2l0aCAmIzM5O25yX2NvbnRleHRzJiMzOTsgZmlsZS4gIE5ldmVydGhlbGVzcywgb25seSBzaW5nbGUgY29udGV4dFxuMjY4MDpcdFx0ICogcGVyIGtkYW1vbmQgaXMgc3VwcG9ydGVkIGZvciBub3cuICBTbywgd2UgY2FuIHNpbXBseSB1c2UgJiMzOTswJiMzOTsgY29udGV4dFxuMjY4MTpcdFx0ICogaW5kZXggaGVyZS5cbjI2ODI6XHRcdCAqL1xuMjY4MzpcdFx0dW5zaWduZWQgaW50IGNpZHggPSAwO1xuMjY4NDpcdFx0c3RydWN0IGRhbW9zICpzaXRlcjtcdFx0Lyogc2NoZW1lcyBpdGVyYXRvciAqL1xuMjY4NTpcdFx0dW5zaWduZWQgaW50IHNpZHggPSAwO1xuMjY4NjpcdFx0c3RydWN0IGRhbW9uX3RhcmdldCAqdGl0ZXI7XHQvKiB0YXJnZXRzIGl0ZXJhdG9yICovXG4yNjg3Olx0XHR1bnNpZ25lZCBpbnQgdGlkeCA9IDAsIG5yX2FjY2Vzc2VzID0gMDtcbjI2ODg6XHRcdGJvb2wgZG9fdHJhY2UgPSBmYWxzZTtcbjI2ODk6XHRcbjI2OTA6XHRcdC8qIGdldCBpbmRpY2VzIGZvciB0cmFjZV9kYW1vc19iZWZvcmVfYXBwbHkoKSAqL1xuMjY5MTpcdFx0aWYgKHRyYWNlX2RhbW9zX2JlZm9yZV9hcHBseV9lbmFibGVkKCkpIHtcbjI2OTI6XHRcdFx0ZGFtb25fZm9yX2VhY2hfc2NoZW1lKHNpdGVyLCBjKSB7XG4yNjkzOlx0XHRcdFx0aWYgKHNpdGVyID09IHMpXG4yNjk0Olx0XHRcdFx0XHRicmVhaztcbjI2OTU6XHRcdFx0XHRzaWR4JiM0MzsmIzQzOztcbjI2OTY6XHRcdFx0fVxuMjY5NzpcdFx0XHRkYW1vbl9mb3JfZWFjaF90YXJnZXQodGl0ZXIsIGMpIHtcbjI2OTg6XHRcdFx0XHRpZiAodGl0ZXIgPT0gdClcbjI2OTk6XHRcdFx0XHRcdGJyZWFrO1xuMjcwMDpcdFx0XHRcdHRpZHgmIzQzOyYjNDM7O1xuMjcwMTpcdFx0XHR9XG4yNzAyOlx0XHRcdG5yX2FjY2Vzc2VzID0gZGFtb25fbnJfYWNjZXNzZXNfbXZzdW0ociwgYyk7XG4yNzAzOlx0XHRcdGRvX3RyYWNlID0gdHJ1ZTtcbjI3MDQ6XHRcdH1cbjI3MDU6XHRcbjI3MDY6XHRcdGlmIChjLVx1MDAzZW9wcy5hcHBseV9zY2hlbWUpIHtcbjI3MDc6XHRcdFx0aWYgKGRhbW9zX3F1b3RhX2lzX3NldChxdW90YSkgXHUwMDI2XHUwMDI2XG4yNzA4Olx0XHRcdFx0XHRxdW90YS1cdTAwM2VjaGFyZ2VkX3N6ICYjNDM7IHN6IFx1MDAzZSBxdW90YS1cdTAwM2Vlc3opIHtcbjI3MDk6XHRcdFx0XHRzeiA9IEFMSUdOX0RPV04ocXVvdGEtXHUwMDNlZXN6IC0gcXVvdGEtXHUwMDNlY2hhcmdlZF9zeixcbjI3MTA6XHRcdFx0XHRcdFx0Yy1cdTAwM2VtaW5fcmVnaW9uX3N6KTtcbjI3MTE6XHRcdFx0XHRpZiAoIXN6KVxuMjcxMjpcdFx0XHRcdFx0Z290byB1cGRhdGVfc3RhdDtcbjI3MTM6XHRcdFx0XHRpZiAoZGFtb25fc3BsaXRfcmVnaW9uX2F0KHQsIHIsIHN6KSlcbjI3MTQ6XHRcdFx0XHRcdGdvdG8gdXBkYXRlX3N0YXQ7XG4yNzE1Olx0XHRcdH1cbjI3MTY6XHRcdFx0aWYgKGRhbW9zX2NvcmVfZmlsdGVyX291dChjLCB0LCByLCBzKSlcbjI3MTc6XHRcdFx0XHRyZXR1cm47XG4yNzE4Olx0XHRcdGt0aW1lX2dldF9jb2Fyc2VfdHM2NChcdTAwMjZiZWdpbik7XG4yNzE5Olx0XHRcdHRyYWNlX2RhbW9zX2JlZm9yZV9hcHBseShjaWR4LCBzaWR4LCB0aWR4LCByLCBucl9hY2Nlc3NlcyxcbjI3MjA6XHRcdFx0XHRcdGRhbW9uX25yX3JlZ2lvbnModCksIGRvX3RyYWNlKTtcbjI3MjE6XHRcdFx0c3pfYXBwbGllZCA9IGMtXHUwMDNlb3BzLmFwcGx5X3NjaGVtZShjLCB0LCByLCBzLFxuMjcyMjpcdFx0XHRcdFx0XHUwMDI2c3pfb3BzX2ZpbHRlcl9wYXNzZWQpO1xuMjcyMzpcdFx0XHRkYW1vc193YWxrX2NhbGxfd2FsayhjLCB0LCByLCBzLCBzel9vcHNfZmlsdGVyX3Bhc3NlZCk7XG4yNzI0Olx0XHRcdGt0aW1lX2dldF9jb2Fyc2VfdHM2NChcdTAwMjZlbmQpO1xuMjcyNTpcdFx0XHRxdW90YS1cdTAwM2V0b3RhbF9jaGFyZ2VkX25zICYjNDM7PSB0aW1lc3BlYzY0X3RvX25zKFx1MDAyNmVuZCkgLVxuMjcyNjpcdFx0XHRcdHRpbWVzcGVjNjRfdG9fbnMoXHUwMDI2YmVnaW4pO1xuMjcyNzpcdFx0XHRkYW1vc19jaGFyZ2VfcXVvdGEocXVvdGEsIHN6LCBzel9hcHBsaWVkKTtcbjI3Mjg6XHRcdFx0aWYgKGRhbW9zX3F1b3RhX2lzX2Z1bGwocXVvdGEsIGMtXHUwMDNlbWluX3JlZ2lvbl9zeikpIHtcbjI3Mjk6XHRcdFx0XHRxdW90YS1cdTAwM2VjaGFyZ2VfdGFyZ2V0X2Zyb20gPSB0O1xuMjczMDpcdFx0XHRcdHF1b3RhLVx1MDAzZWNoYXJnZV9hZGRyX2Zyb20gPSByLVx1MDAzZWFyLmVuZDtcbjI3MzE6XHRcdFx0fVxuMjczMjpcdFx0fVxuMjczMzpcdFx0aWYgKHMtXHUwMDNlYWN0aW9uICE9IERBTU9TX1NUQVQpXG4yNzM0Olx0XHRcdHItXHUwMDNlYWdlID0gMDtcbjI3MzU6XHRcbjI3MzY6XHR1cGRhdGVfc3RhdDpcbjI3Mzc6XHRcdGRhbW9zX3VwZGF0ZV9zdGF0KHMsIHN6LCBzel9hcHBsaWVkLCBzel9vcHNfZmlsdGVyX3Bhc3NlZCk7XG4yNzM4Olx0fVxuMjczOTpcdFxuMjc0MDpcdHN0YXRpYyB2b2lkIGRhbW9uX2RvX2FwcGx5X3NjaGVtZXMoc3RydWN0IGRhbW9uX2N0eCAqYyxcbjI3NDE6XHRcdFx0XHRcdCAgIHN0cnVjdCBkYW1vbl90YXJnZXQgKnQsXG4yNzQyOlx0XHRcdFx0XHQgICBzdHJ1Y3QgZGFtb25fcmVnaW9uICpyKVxuMjc0MzpcdHtcbjI3NDQ6XHRcdHN0cnVjdCBkYW1vcyAqcztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDMgMDA6MzQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzk3MAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBJJiMzOTttIHJlYWR5IHRvIGRpdmUgaW50byB0aGlzLiBMZXQmIzM5O3Mgc2VlLi4uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByZW1haW5pbmcgcGllY2VzIG9mIHRoZSBgZGFtb25fZG9fYXBwbHlfc2NoZW1lc2AgZnVuY3Rpb24uIEkgYWxyZWFkeSBoYXZlIGEgZ29vZCBncmFzcCBvZiB0aGUgZm91bmRhdGlvbmFsIHBhcnRzIG9mIHRoaXMgc3lzdGVtLCBidXQgSSYjMzk7bSBwcm9iYWJseSBtaXNzaW5nIHNvbWUgY3JpdGljYWwgbnVhbmNlcyB0byBmdWxseSBncm9rIGhvdyBpdCYjMzk7cyBhbGwgd29ya2luZy4gSSYjMzk7bSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gaG93IGl0IGhhbmRsZXMgZWRnZSBjYXNlcyBvciBvcHRpbWl6YXRpb25zLCBhcyB0aG9zZSBhcmUgdXN1YWxseSB0aGUga2V5IHRvIHJlYWxseSB1bmRlcnN0YW5kaW5nIHRoZSBkZXNpZ24gcGhpbG9zb3BoeSBiZWhpbmQgYW4gaW1wbGVtZW50YXRpb24uIEkmIzM5O20gYW50aWNpcGF0aW5nIHRoYXQgdGhlc2UgcmVtYWluaW5nIGNvbXBvbmVudHMgd2lsbCBjbGFyaWZ5IHRoZSBvdmVyYWxsIHB1cnBvc2UgYW5kIGV4cGVjdGVkIG91dGNvbWVzIGZvciB0aGUgZGlmZmVyZW50IG1ldGhvZHMuIFRoaXMgd2lsbCBwcm9iYWJseSB0b3VjaCBvbiB0aGUgaW50ZWdyYXRpb24gd2l0aCB0aGUgbGFyZ2VyIHN5c3RlbS4gVGltZSB0byBkaWcgaW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDAwOjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bW0vZGFtb24vY29yZS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjc0MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsyNzQwOlx0c3RhdGljIHZvaWQgZGFtb25fZG9fYXBwbHlfc2NoZW1lcyhzdHJ1Y3QgZGFtb25fY3R4ICpjLFxuMjc0MTpcdFx0XHRcdFx0ICAgc3RydWN0IGRhbW9uX3RhcmdldCAqdCxcbjI3NDI6XHRcdFx0XHRcdCAgIHN0cnVjdCBkYW1vbl9yZWdpb24gKnIpXG4yNzQzOlx0e1xuMjc0NDpcdFx0c3RydWN0IGRhbW9zICpzO1xuMjc0NTpcdFxuMjc0NjpcdFx0ZGFtb25fZm9yX2VhY2hfc2NoZW1lKHMsIGMpIHtcbjI3NDc6XHRcdFx0c3RydWN0IGRhbW9zX3F1b3RhICpxdW90YSA9IFx1MDAyNnMtXHUwMDNlcXVvdGE7XG4yNzQ4Olx0XG4yNzQ5Olx0XHRcdGlmICh0aW1lX2JlZm9yZShjLVx1MDAzZXBhc3NlZF9zYW1wbGVfaW50ZXJ2YWxzLCBzLVx1MDAzZW5leHRfYXBwbHlfc2lzKSlcbjI3NTA6XHRcdFx0XHRjb250aW51ZTtcbjI3NTE6XHRcbjI3NTI6XHRcdFx0aWYgKCFzLVx1MDAzZXdtYXJrcy5hY3RpdmF0ZWQpXG4yNzUzOlx0XHRcdFx0Y29udGludWU7XG4yNzU0Olx0XG4yNzU1Olx0XHRcdGlmICghcXVvdGEtXHUwMDNlZXN6KVxuMjc1NjpcdFx0XHRcdGNvbnRpbnVlO1xuMjc1NzpcdFxuMjc1ODpcdFx0XHQvKiBDaGVjayB0aGUgcXVvdGEgKi9cbjI3NTk6XHRcdFx0aWYgKGRhbW9zX3F1b3RhX2lzX2Z1bGwocXVvdGEsIGMtXHUwMDNlbWluX3JlZ2lvbl9zeikpXG4yNzYwOlx0XHRcdFx0Y29udGludWU7XG4yNzYxOlx0XG4yNzYyOlx0XHRcdGlmIChkYW1vc19za2lwX2NoYXJnZWRfcmVnaW9uKHQsIHIsIHMsIGMtXHUwMDNlbWluX3JlZ2lvbl9zeikpXG4yNzYzOlx0XHRcdFx0Y29udGludWU7XG4yNzY0Olx0XG4yNzY1Olx0XHRcdGlmIChzLVx1MDAzZW1heF9ucl9zbmFwc2hvdHMgXHUwMDI2XHUwMDI2XG4yNzY2Olx0XHRcdFx0XHRzLVx1MDAzZW1heF9ucl9zbmFwc2hvdHMgXHUwMDNjPSBzLVx1MDAzZXN0YXQubnJfc25hcHNob3RzKVxuMjc2NzpcdFx0XHRcdGNvbnRpbnVlO1xuMjc2ODpcdFxuMjc2OTpcdFx0XHRpZiAoZGFtb3NfdmFsaWRfdGFyZ2V0KGMsIHIsIHMpKVxuMjc3MDpcdFx0XHRcdGRhbW9zX2FwcGx5X3NjaGVtZShjLCB0LCByLCBzKTtcbjI3NzE6XHRcbjI3NzI6XHRcdFx0aWYgKGRhbW9uX2lzX2xhc3RfcmVnaW9uKHIsIHQpKVxuMjc3MzpcdFx0XHRcdHMtXHUwMDNlc3RhdC5ucl9zbmFwc2hvdHMmIzQzOyYjNDM7O1xuMjc3NDpcdFx0fVxuMjc3NTpcdH1cbjI3NzY6XHRcbjI3Nzc6XHQvKlxuMjc3ODpcdCAqIGRhbW9zX2FwcGx5X3RhcmdldCgpIC0gQXBwbHkgREFNT1Mgc2NoZW1lcyB0byBhIGdpdmVuIHRhcmdldC5cbjI3Nzk6XHQgKiBAYzpcdFx0XHRtb25pdG9yaW5nIGNvbnRleHQgdG8gYXBwbHkgaXRzIERBTU9TIHNjaGVtZXMgdG8uLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAwMDozNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NzQzCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMjg2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBUaGlzIFBhdGNoOiBEQU1PUyBRdW90YSBDb25zaWRlcmF0aW9ucyoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2ggYW5kIHVuZGVyc3RhbmQgdGhlIGludGVudCBhbmQgaXRzIGltcGFjdCBvbiB0aGUgREFNT1MgcXVvdGEgbWFuYWdlbWVudC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGV4YW1pbmUgdGhlIHNwZWNpZmljIGNvZGUgbW9kaWZpY2F0aW9ucyB3aXRoaW4gdGhlIGBkYW1vc19xdW90YV9pc19mdWxsYCBhbmQgYGRhbW9uX2RvX2FwcGx5X3NjaGVtZXNgIGZ1bmN0aW9ucy4KCkZpcnN0LCBsb29raW5nIGF0IGBkYW1vc19xdW90YV9pc19mdWxsYCwgSSBpbW1lZGlhdGVseSBzZWUgdGhlIGFkZGVkIGNvbmRpdGlvbmFsIGNoZWNrcy4gSXQgc2VlbXMgdGhlIGNvZGUgbm93IGV4cGxpY2l0bHkgaGFuZGxlcyBjYXNlcyB3aGVyZSBgcXVvdGEtJmd0O2NoYXJnZWRfc3pgIGlzIHplcm8gKm9yKiBgcXVvdGEtJmd0O2VzemAgKHRoZSAqZSp4dGVuc2libGUgKnMqaXplKSBpcyB6ZXJvLiAgVGhlIG9yaWdpbmFsIGxvZ2ljIGFscmVhZHkgaGFuZGxlZCB0aGUgdW5zZXQgcXVvdGEgY2hlY2sgKGAhZGFtb3NfcXVvdGFfaXNfc2V0KHF1b3RhKWApLiAgSXQgbWFrZXMgc2Vuc2U7IHdlIGRvbiYjMzk7dCB3YW50IHRvIGRlY2xhcmUgYSBxdW90YSBhcyAmIzM0O2Z1bGwmIzM0OyBpZiBub3RoaW5nIGhhcyBiZWVuIGNoYXJnZWQgb3IgdGhlIHNpemUgaXMgemVyby4gVGhlIGNvbW1lbnQgYWJvdXQgJiMzNDtlZmZlY3RpdmUgZnVsbG5lc3MmIzM0OyByZWxhdGVkIHRvIGBtaW5fcmVnaW9uX3N6YCBpcyBzb21ldGhpbmcgSSBuZWVkIHRvIGtlZXAgaW4gbWluZCwgdG9vLgoKTW92aW5nIG9uIHRvIGBkYW1vbl9kb19hcHBseV9zY2hlbWVzYCwgaXQgbG9va3MgbGlrZSB0aGUgbmV3IGNoZWNrIGBpZiAoIXF1b3RhLSZndDtlc3opYCBub3cgcHJldmVudHMgcXVvdGEgY2hlY2tzIGZyb20gb2NjdXJyaW5nIGlmIHRoZSBxdW90YSBzaXplIGhhcyBub3QgYmVlbiBzZXQuIFdpdGhvdXQgdGhpcywgdGhlc2UgcXVvdGEgY2hlY2tzIHdvdWxkIGxpa2VseSBoYXZlIGJlZW4gdHJpZ2dlcmluZyBpbmNvcnJlY3QgYmVoYXZpb3IsIGFuZCB0aGUgY2hlY2tzIGNhbiBub3cgc2FmZWx5IGJlIHNraXBwZWQuCgpUbyBnZXQgYSBmdWxsIGdyYXNwIG9mIHRoZSBwcm9ibGVtIHRoaXMgaXMgc29sdmluZywgSSBuZWVkIHRvIHNlZSBob3cgYGRhbW9zX3F1b3RhYCBvYmplY3RzIGFyZSBpbml0aWFsaXplZCwgaG93IGBlc3pgIGFuZCBgY2hhcmdlZF9zemAgYXJlIG1hbmFnZWQsIGFuZCB3aGVyZSBgZGFtb3NfcXVvdGFfaXNfc2V0YCBpcyB1c2VkLiBJJiMzOTtsbCBuZWVkIHRvIHJ1biBhIHF1aWNrIGBncmVwYCBmb3IgdGhlIGBkYW1vc19xdW90YV9pc19zZXRgIGFuZCBgZXN6YCBtZW1iZXJzIHRvIGdldCBhIGJyb2FkZXIgdmlldyBvZiB0aGUgcXVvdGEmIzM5O3MgbGlmZWN5Y2xlLiBUaGlzIGlzIGxpa2VseSBhZGRyZXNzaW5nIGEgc2NlbmFyaW8gd2hlcmUgdGhlIHF1b3RhIG1pZ2h0IG5vdCBiZSBwcm9wZXJseSBpbml0aWFsaXplZCwgY2F1c2luZyBzcHVyaW91cyAmIzM0O2Z1bGwmIzM0OyBhbGVydHMgb3IgaW5jb3JyZWN0IGNhbGN1bGF0aW9ucywgb3IgbWF5YmUgaXQmIzM5O3MganVzdCBhYm91dCBlbnN1cmluZyB0aGVyZSYjMzk7cyBhIGRlZmluZWQgcXVvdGEgKmJlZm9yZSogd2Ugc3RhcnQgZW5mb3JjaW5nIGl0LiBVbmRlcnN0YW5kaW5nIHRoZSBpbml0aWFsaXphdGlvbiBhbmQgdXNhZ2Ugd2lsbCBjbGFyaWZ5IHdoZXRoZXIgdGhpcyBpcyBhIHJvYnVzdG5lc3MgZml4IG9yIGEgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uLCBvciBwZXJoYXBzIGEgY29tYmluYXRpb24gb2YgYm90aC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDMgMDA6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGFtb3NfcXVvdGFfaXNfc2V0fGVzeiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL2RhbW9uLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9kYW1vbi9jb3JlLmM9NzMzPXN0YXRpYyBzdHJ1Y3QgZGFtb3NfcXVvdGEgKmRhbW9zX3F1b3RhX2luaXQoc3RydWN0IGRhbW9zX3F1b3RhICpxdW90YSlcbm1tL2RhbW9uL2NvcmUuYy03MzQte1xubW0vZGFtb24vY29yZS5jOjczNTpcdHF1b3RhLVx1MDAzZWVzeiA9IDA7XG5tbS9kYW1vbi9jb3JlLmMtNzM2LVx0cXVvdGEtXHUwMDNldG90YWxfY2hhcmdlZF9zeiA9IDA7XG4tLVxubW0vZGFtb24vY29yZS5jLTc0MS1cdHF1b3RhLVx1MDAzZWNoYXJnZV9hZGRyX2Zyb20gPSAwO1xubW0vZGFtb24vY29yZS5jOjc0MjpcdHF1b3RhLVx1MDAzZWVzel9icCA9IDA7XG5tbS9kYW1vbi9jb3JlLmMtNzQzLVx0cmV0dXJuIHF1b3RhO1xuLS1cbm1tL2RhbW9uL2NvcmUuYz0yMzcxPXN0YXRpYyBib29sIF9fZGFtb3NfdmFsaWRfdGFyZ2V0KHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsIHN0cnVjdCBkYW1vcyAqcyxcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMjM4Ni0vKlxubW0vZGFtb24vY29yZS5jOjIzODc6ICogZGFtb3NfcXVvdGFfaXNfc2V0KCkgLSBSZXR1cm4gaWYgdGhlIGdpdmVuIHF1b3RhIGlzIGFjdHVhbGx5IHNldC5cbm1tL2RhbW9uL2NvcmUuYy0yMzg4LSAqIEBxdW90YTpcdFRoZSBxdW90YSB0byBjaGVjay5cbi0tXG5tbS9kYW1vbi9jb3JlLmMtMjM5MS0gKi9cbm1tL2RhbW9uL2NvcmUuYzoyMzkyOnN0YXRpYyBib29sIGRhbW9zX3F1b3RhX2lzX3NldChzdHJ1Y3QgZGFtb3NfcXVvdGEgKnF1b3RhKVxubW0vZGFtb24vY29yZS5jLTIzOTMte1xubW0vZGFtb24vY29yZS5jOjIzOTQ6XHRyZXR1cm4gcXVvdGEtXHUwMDNlZXN6IHx8IHF1b3RhLVx1MDAzZXN6IHx8IHF1b3RhLVx1MDAzZW1zIHx8XG5tbS9kYW1vbi9jb3JlLmMtMjM5NS1cdFx0IWRhbW9zX3F1b3RhX2dvYWxzX2VtcHR5KHF1b3RhKTtcbi0tXG5tbS9kYW1vbi9jb3JlLmM9MjM5OD1zdGF0aWMgYm9vbCBkYW1vc192YWxpZF90YXJnZXQoc3RydWN0IGRhbW9uX2N0eCAqYywgc3RydWN0IGRhbW9uX3JlZ2lvbiAqcixcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMjQwMi1cbm1tL2RhbW9uL2NvcmUuYzoyNDAzOlx0aWYgKCFyZXQgfHwgIWRhbW9zX3F1b3RhX2lzX3NldChcdTAwMjZzLVx1MDAzZXF1b3RhKSB8fCAhYy1cdTAwM2VvcHMuZ2V0X3NjaGVtZV9zY29yZSlcbm1tL2RhbW9uL2NvcmUuYy0yNDA0LVx0XHRyZXR1cm4gcmV0O1xuLS1cbm1tL2RhbW9uL2NvcmUuYz0yNjUzPXN0YXRpYyBib29sIGRhbW9zX3F1b3RhX2lzX2Z1bGwoc3RydWN0IGRhbW9zX3F1b3RhICpxdW90YSxcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMjY1NS17XG5tbS9kYW1vbi9jb3JlLmM6MjY1NjpcdGlmICghZGFtb3NfcXVvdGFfaXNfc2V0KHF1b3RhKSlcbm1tL2RhbW9uL2NvcmUuYy0yNjU3LVx0XHRyZXR1cm4gZmFsc2U7XG4tLVxubW0vZGFtb24vY29yZS5jLTI2NTktXHRcdHJldHVybiBmYWxzZTtcbm1tL2RhbW9uL2NvcmUuYzoyNjYwOlx0aWYgKHF1b3RhLVx1MDAzZWNoYXJnZWRfc3ogXHUwMDNlPSBxdW90YS1cdTAwM2Vlc3opXG5tbS9kYW1vbi9jb3JlLmMtMjY2MS1cdFx0cmV0dXJuIHRydWU7XG4tLVxubW0vZGFtb24vY29yZS5jLTI2NjUtXHQgKi9cbm1tL2RhbW9uL2NvcmUuYzoyNjY2Olx0cmV0dXJuIHF1b3RhLVx1MDAzZWVzeiAtIHF1b3RhLVx1MDAzZWNoYXJnZWRfc3ogXHUwMDNjIG1pbl9yZWdpb25fc3o7XG5tbS9kYW1vbi9jb3JlLmMtMjY2Ny19XG4tLVxubW0vZGFtb24vY29yZS5jPTI2Njk9c3RhdGljIHZvaWQgZGFtb3NfYXBwbHlfc2NoZW1lKHN0cnVjdCBkYW1vbl9jdHggKmMsIHN0cnVjdCBkYW1vbl90YXJnZXQgKnQsXG4tLVxubW0vZGFtb24vY29yZS5jLTI3MDYtXHRpZiAoYy1cdTAwM2VvcHMuYXBwbHlfc2NoZW1lKSB7XG5tbS9kYW1vbi9jb3JlLmM6MjcwNzpcdFx0aWYgKGRhbW9zX3F1b3RhX2lzX3NldChxdW90YSkgXHUwMDI2XHUwMDI2XG5tbS9kYW1vbi9jb3JlLmM6MjcwODpcdFx0XHRcdHF1b3RhLVx1MDAzZWNoYXJnZWRfc3ogJiM0Mzsgc3ogXHUwMDNlIHF1b3RhLVx1MDAzZWVzeikge1xubW0vZGFtb24vY29yZS5jOjI3MDk6XHRcdFx0c3ogPSBBTElHTl9ET1dOKHF1b3RhLVx1MDAzZWVzeiAtIHF1b3RhLVx1MDAzZWNoYXJnZWRfc3osXG5tbS9kYW1vbi9jb3JlLmMtMjcxMC1cdFx0XHRcdFx0Yy1cdTAwM2VtaW5fcmVnaW9uX3N6KTtcbi0tXG5tbS9kYW1vbi9jb3JlLmM9Mjc0MD1zdGF0aWMgdm9pZCBkYW1vbl9kb19hcHBseV9zY2hlbWVzKHN0cnVjdCBkYW1vbl9jdHggKmMsXG4tLVxubW0vZGFtb24vY29yZS5jLTI3NTQtXG5tbS9kYW1vbi9jb3JlLmM6Mjc1NTpcdFx0aWYgKCFxdW90YS1cdTAwM2Vlc3opXG5tbS9kYW1vbi9jb3JlLmMtMjc1Ni1cdFx0XHRjb250aW51ZTtcbi0tXG5tbS9kYW1vbi9jb3JlLmM9MzE4NT1zdGF0aWMgdW5zaWduZWQgbG9uZyBkYW1vc19xdW90YV9zY29yZShzdHJ1Y3QgZGFtb25fY3R4ICpjLCBzdHJ1Y3QgZGFtb3MgKnMpXG4tLVxubW0vZGFtb24vY29yZS5jLTMyMDAtXG5tbS9kYW1vbi9jb3JlLmM6MzIwMTpzdGF0aWMgdm9pZCBkYW1vc19nb2FsX3R1bmVfZXN6X2JwX2NvbnNpc3Qoc3RydWN0IGRhbW9uX2N0eCAqYywgc3RydWN0IGRhbW9zICpzKVxubW0vZGFtb24vY29yZS5jLTMyMDIte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0zMjA1LVxubW0vZGFtb24vY29yZS5jOjMyMDY6XHRxdW90YS1cdTAwM2Vlc3pfYnAgPSBkYW1vbl9mZWVkX2xvb3BfbmV4dF9pbnB1dChcbm1tL2RhbW9uL2NvcmUuYzozMjA3Olx0XHRcdG1heChxdW90YS1cdTAwM2Vlc3pfYnAsIDEwMDAwVUwpLCBzY29yZSk7XG5tbS9kYW1vbi9jb3JlLmMtMzIwOC19XG5tbS9kYW1vbi9jb3JlLmMtMzIwOS1cbm1tL2RhbW9uL2NvcmUuYzozMjEwOnN0YXRpYyB2b2lkIGRhbW9zX2dvYWxfdHVuZV9lc3pfYnBfdGVtcG9yYWwoc3RydWN0IGRhbW9uX2N0eCAqYyxcbm1tL2RhbW9uL2NvcmUuYy0zMjExLVx0XHRzdHJ1Y3QgZGFtb3MgKnMpXG4tLVxubW0vZGFtb24vY29yZS5jLTMyMTYtXHRpZiAoc2NvcmUgXHUwMDNlPSAxMDAwMClcbm1tL2RhbW9uL2NvcmUuYzozMjE3Olx0XHRxdW90YS1cdTAwM2Vlc3pfYnAgPSAwO1xubW0vZGFtb24vY29yZS5jLTMyMTgtXHRlbHNlIGlmIChxdW90YS1cdTAwM2Vzeilcbm1tL2RhbW9uL2NvcmUuYzozMjE5Olx0XHRxdW90YS1cdTAwM2Vlc3pfYnAgPSBxdW90YS1cdTAwM2VzeiAqIDEwMDAwO1xubW0vZGFtb24vY29yZS5jLTMyMjAtXHRlbHNlXG5tbS9kYW1vbi9jb3JlLmM6MzIyMTpcdFx0cXVvdGEtXHUwMDNlZXN6X2JwID0gVUxPTkdfTUFYO1xubW0vZGFtb24vY29yZS5jLTMyMjItfVxuLS1cbm1tL2RhbW9uL2NvcmUuYz0zMjI3PXN0YXRpYyB2b2lkIGRhbW9zX3NldF9lZmZlY3RpdmVfcXVvdGEoc3RydWN0IGRhbW9uX2N0eCAqY3R4LCBzdHJ1Y3QgZGFtb3MgKnMpXG4tLVxubW0vZGFtb24vY29yZS5jLTMyMzAtXHR1bnNpZ25lZCBsb25nIHRocm91Z2hwdXQ7XG5tbS9kYW1vbi9jb3JlLmM6MzIzMTpcdHVuc2lnbmVkIGxvbmcgZXN6ID0gVUxPTkdfTUFYO1xubW0vZGFtb24vY29yZS5jLTMyMzItXG5tbS9kYW1vbi9jb3JlLmMtMzIzMy1cdGlmICghcXVvdGEtXHUwMDNlbXMgXHUwMDI2XHUwMDI2IGxpc3RfZW1wdHkoXHUwMDI2cXVvdGEtXHUwMDNlZ29hbHMpKSB7XG5tbS9kYW1vbi9jb3JlLmM6MzIzNDpcdFx0cXVvdGEtXHUwMDNlZXN6ID0gcXVvdGEtXHUwMDNlc3o7XG5tbS9kYW1vbi9jb3JlLmMtMzIzNS1cdFx0cmV0dXJuO1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0zMjM5LVx0XHRpZiAocXVvdGEtXHUwMDNlZ29hbF90dW5lciA9PSBEQU1PU19RVU9UQV9HT0FMX1RVTkVSX0NPTlNJU1QpXG5tbS9kYW1vbi9jb3JlLmM6MzI0MDpcdFx0XHRkYW1vc19nb2FsX3R1bmVfZXN6X2JwX2NvbnNpc3QoY3R4LCBzKTtcbm1tL2RhbW9uL2NvcmUuYy0zMjQxLVx0XHRlbHNlIGlmIChxdW90YS1cdTAwM2Vnb2FsX3R1bmVyID09IERBTU9TX1FVT1RBX0dPQUxfVFVORVJfVEVNUE9SQUwpXG5tbS9kYW1vbi9jb3JlLmM6MzI0MjpcdFx0XHRkYW1vc19nb2FsX3R1bmVfZXN6X2JwX3RlbXBvcmFsKGN0eCwgcyk7XG5tbS9kYW1vbi9jb3JlLmM6MzI0MzpcdFx0ZXN6ID0gcXVvdGEtXHUwMDNlZXN6X2JwIC8gMTAwMDA7XG5tbS9kYW1vbi9jb3JlLmMtMzI0NC1cdH1cbi0tXG5tbS9kYW1vbi9jb3JlLmMtMzI1MS1cdFx0XHR0aHJvdWdocHV0ID0gUEFHRV9TSVpFICogMTAyNDtcbm1tL2RhbW9uL2NvcmUuYzozMjUyOlx0XHRlc3ogPSBtaW4odGhyb3VnaHB1dCAqIHF1b3RhLVx1MDAzZW1zLCBlc3opO1xubW0vZGFtb24vY29yZS5jOjMyNTM6XHRcdGVzeiA9IG1heChjdHgtXHUwMDNlbWluX3JlZ2lvbl9zeiwgZXN6KTtcbm1tL2RhbW9uL2NvcmUuYy0zMjU0LVx0fVxubW0vZGFtb24vY29yZS5jLTMyNTUtXG5tbS9kYW1vbi9jb3JlLmM6MzI1NjpcdGlmIChxdW90YS1cdTAwM2VzeiBcdTAwMjZcdTAwMjYgcXVvdGEtXHUwMDNlc3ogXHUwMDNjIGVzeilcbm1tL2RhbW9uL2NvcmUuYzozMjU3Olx0XHRlc3ogPSBxdW90YS1cdTAwM2Vzejtcbm1tL2RhbW9uL2NvcmUuYy0zMjU4LVxubW0vZGFtb24vY29yZS5jOjMyNTk6XHRxdW90YS1cdTAwM2Vlc3ogPSBlc3o7XG5tbS9kYW1vbi9jb3JlLmMtMzI2MC19XG5tbS9kYW1vbi9jb3JlLmMtMzI2MS1cbm1tL2RhbW9uL2NvcmUuYzozMjYyOnN0YXRpYyB2b2lkIGRhbW9zX3RyYWNlX2VzeihzdHJ1Y3QgZGFtb25fY3R4ICpjLCBzdHJ1Y3QgZGFtb3MgKnMsXG5tbS9kYW1vbi9jb3JlLmMtMzI2My1cdFx0c3RydWN0IGRhbW9zX3F1b3RhICpxdW90YSlcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMzI3Mi1cdH1cbm1tL2RhbW9uL2NvcmUuYzozMjczOlx0dHJhY2VfZGFtb3NfZXN6KGNpZHgsIHNpZHgsIHF1b3RhLVx1MDAzZWVzeik7XG5tbS9kYW1vbi9jb3JlLmMtMzI3NC19XG4tLVxubW0vZGFtb24vY29yZS5jPTMyNzY9c3RhdGljIHZvaWQgZGFtb3NfYWRqdXN0X3F1b3RhKHN0cnVjdCBkYW1vbl9jdHggKmMsIHN0cnVjdCBkYW1vcyAqcylcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMzI4MC1cdHN0cnVjdCBkYW1vbl9yZWdpb24gKnI7XG5tbS9kYW1vbi9jb3JlLmM6MzI4MTpcdHVuc2lnbmVkIGxvbmcgY3VtdWxhdGVkX3N6LCBjYWNoZWRfZXN6O1xubW0vZGFtb24vY29yZS5jLTMyODItXHR1bnNpZ25lZCBpbnQgc2NvcmUsIG1heF9zY29yZSA9IDA7XG4tLVxubW0vZGFtb24vY29yZS5jLTMyOTAtXHRcdGRhbW9zX3NldF9lZmZlY3RpdmVfcXVvdGEoYywgcyk7XG5tbS9kYW1vbi9jb3JlLmM6MzI5MTpcdFx0aWYgKHRyYWNlX2RhbW9zX2Vzel9lbmFibGVkKCkpXG5tbS9kYW1vbi9jb3JlLmM6MzI5MjpcdFx0XHRkYW1vc190cmFjZV9lc3ooYywgcywgcXVvdGEpO1xubW0vZGFtb24vY29yZS5jLTMyOTMtXHR9XG4tLVxubW0vZGFtb24vY29yZS5jLTMzMDMtXHRcdHF1b3RhLVx1MDAzZWNoYXJnZWRfc3ogPSAwO1xubW0vZGFtb24vY29yZS5jOjMzMDQ6XHRcdGlmICh0cmFjZV9kYW1vc19lc3pfZW5hYmxlZCgpKVxubW0vZGFtb24vY29yZS5jOjMzMDU6XHRcdFx0Y2FjaGVkX2VzeiA9IHF1b3RhLVx1MDAzZWVzejtcbm1tL2RhbW9uL2NvcmUuYy0zMzA2LVx0XHRkYW1vc19zZXRfZWZmZWN0aXZlX3F1b3RhKGMsIHMpO1xubW0vZGFtb24vY29yZS5jOjMzMDc6XHRcdGlmICh0cmFjZV9kYW1vc19lc3pfZW5hYmxlZCgpIFx1MDAyNlx1MDAyNiBxdW90YS1cdTAwM2Vlc3ogIT0gY2FjaGVkX2Vzeilcbm1tL2RhbW9uL2NvcmUuYzozMzA4Olx0XHRcdGRhbW9zX3RyYWNlX2VzeihjLCBzLCBxdW90YSk7XG5tbS9kYW1vbi9jb3JlLmMtMzMwOS1cdH1cbi0tXG5tbS9kYW1vbi9jb3JlLmMtMzMzNC1cdFx0Y3VtdWxhdGVkX3N6ICYjNDM7PSBjLVx1MDAzZXJlZ2lvbnNfc2NvcmVfaGlzdG9ncmFtW3Njb3JlXTtcbm1tL2RhbW9uL2NvcmUuYzozMzM1Olx0XHRpZiAoY3VtdWxhdGVkX3N6IFx1MDAzZT0gcXVvdGEtXHUwMDNlZXN6IHx8ICFzY29yZSlcbm1tL2RhbW9uL2NvcmUuYy0zMzM2LVx0XHRcdGJyZWFrO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0yOTMzPXZvaWQgZGFtb3Nfc3lzZnNfdXBkYXRlX2VmZmVjdGl2ZV9xdW90YXMoXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTI5NDgtXHRcdFx0c3lzZnNfc2NoZW1lcy1cdTAwM2VzY2hlbWVzX2FycltzY2hlbWVzX2lkeCYjNDM7JiM0MztdLVx1MDAzZXF1b3Rhcztcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyOTQ5Olx0XHRzeXNmc19xdW90YXMtXHUwMDNlZWZmZWN0aXZlX3N6ID0gc2NoZW1lLVx1MDAzZXF1b3RhLmVzejtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yOTUwLVx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAwMDozNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MzkwCgkJCQkJCQlvdXRwdXQ6IDE1MwoJCQkJCQkJdGhvdWdodHM6IDUzMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipQYXRjaCBBbmFseXNpcyBhbmQgS01TQU4gQXNzZXNzbWVudCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgZG93biB0aGlzIHBhdGNoLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCBpdCBsb29rcyBsaWtlIGEgdGFyZ2V0ZWQgZml4IHdpdGhpbiB0aGUgREFNT04gcXVvdGEgbG9naWMuIEZpcnN0LCB0aGUgYGRhbW9zX3F1b3RhX2lzX2Z1bGxgIGZ1bmN0aW9uLiBJIHNlZSB0aGF0IHRoZXJlJiMzOTtzIGEgbmV3IGNoZWNrOiBgaWYgKCFxdW90YS0mZ3Q7Y2hhcmdlZF9zeikgcmV0dXJuIGZhbHNlO2AuIFJpZ2h0LCBwcmV2aW91c2x5LCBpZiB0aGUgYGNoYXJnZWRfc3pgIHdhcyB6ZXJvLCBvciBwb3RlbnRpYWxseSBpZiB0aGVyZSB3YXMgYSBzdWJ0bGUgdW5kZXJmbG93IGlzc3VlLCB0aGUgbG9naWMgY291bGQgaW5jb3JyZWN0bHkgZmxhZyB0aGUgcXVvdGEgYXMgZnVsbCB3aGVuIGl0IHdhc24mIzM5O3QuIFRoZSBzdWJzZXF1ZW50IGNoZWNrIGZvciBgcXVvdGEtJmd0O2VzeiAtIHF1b3RhLSZndDtjaGFyZ2VkX3N6ICZsdDsgbWluX3JlZ2lvbl9zemAgd2FzIHRoZSBjdWxwcml0LiBUaGlzIG5ldyBjb25kaXRpb25hbCBndWFyZHMgYWdhaW5zdCB0aGF0LgoKVGhlbiwgaW4gYGRhbW9uX2RvX2FwcGx5X3NjaGVtZXNgLCB3ZSYjMzk7cmUgYWRkaW5nIGFub3RoZXIgc2FmZWd1YXJkOiBgaWYgKCFxdW90YS0mZ3Q7ZXN6KSBjb250aW51ZTtgLiAgTWFrZXMgc2Vuc2UuIFdlJiMzOTtyZSBub3cgc2tpcHBpbmcgc2NoZW1lIGFwcGxpY2F0aW9uIGlmIHRoZSBlZmZlY3RpdmUgc2l6ZSAoYGVzemApIGlzIHplcm8uIFRoaXMgcHJldmVudHMgcG90ZW50aWFsIGlzc3VlcyBmdXJ0aGVyIGRvd24gdGhlIGxpbmUgaWYgdGhlcmUmIzM5O3Mgbm8gZGVmaW5lZCBxdW90YSBzaXplLgoKTm93LCB0aGUgY3J1Y2lhbCBxdWVzdGlvbjogdW5pbml0aWFsaXplZCBtZW1vcnkuIElzIHRoaXMgcGF0Y2ggaW50cm9kdWNpbmcgYSB2dWxuZXJhYmlsaXR5PyBObywgSSBkb24mIzM5O3QgdGhpbmsgc28uIFRoZXJlJiMzOTtzIG5vIGludHJvZHVjdGlvbiBvZiBuZXcga2VybmVsIHN0cnVjdHVyZXMgd2l0aCB1bmluaXRpYWxpemVkIGRhdGEuIE5vIGNvcHlpbmcgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdG8gdXNlciBzcGFjZS4gTm8gbmV3IGFsbG9jYXRpb25zIG9uIHRoZSBzdGFjayBvciBoZWFwLiBJdCYjMzk7cyBhbGwgaW50ZXJuYWwgbG9naWMgd2l0aGluIHRoZSBEQU1PTiBxdW90YSBjYWxjdWxhdGlvbnMuIE5vIGJyYW5jaGluZyBvbiB1bml0aWFsaXplZCB2YXJpYWJsZXMsIG5vIHVuc2FmZSBwb2ludGVyIG1hbmlwdWxhdGlvbiBvciBvdXQtb2YtYm91bmRzIHJlYWRzLiBUaGUgYHF1b3RhYCBzdHJ1Y3R1cmUgaXRzZWxmIHNob3VsZCBiZSBmdWxseSBpbml0aWFsaXplZCwgYW5kIHdlJiMzOTtyZSBqdXN0IGFsdGVyaW5nIHRoZSBjb25kaXRpb25zIHVuZGVyIHdoaWNoIHRoZSBxdW90YSBpcyBjb25zaWRlcmVkICYjMzQ7ZnVsbCYjMzQ7IG9yICYjMzQ7YXBwbGljYWJsZS4mIzM0OwoKU28sIGdpdmVuIGFsbCB0aGF0LCBLTVNBTiBpc24mIzM5O3QgbmVlZGVkIGhlcmUuIFRoZSBwYXRjaCBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgYW55IG5ldyBhdmVudWVzIGZvciBtZW1vcnkgc2FmZXR5IGlzc3VlcyByZWxhdGVkIHRvIHVuaXRpYWxpemVkIG1lbW9yeS4gQW55IGV4aXN0aW5nIG1lbW9yeSBzYWZldHkgaXNzdWVzIHdpdGhpbiBEQU1PTiBvciBpdHMgcmVsYXRlZCBsb2dpYyB3aWxsIGJlIGFkZXF1YXRlbHkgaGFuZGxlZCBieSBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nIGFuZCB0aGUgZXhpc3RpbmcgYnVnIGRldGVjdG9ycy4gVGhpcyBwYXRjaCBpcyBwdXJlbHkgYSBsb2dpYyBjb3JyZWN0aW9uIHdpdGhpbiBhbiBleGlzdGluZyBhcmVhLgoKQWxyaWdodCwgSSYjMzk7bSBjb25maWRlbnQgaW4gdGhhdCBhbmFseXNpcy4gVGltZSB0byByZWNvcmQgdGhlIHJlc3VsdHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDAwOjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHF1b3RhIGNoZWNraW5nIGxvZ2ljIGluIERBTU9OIChtbS9kYW1vbi9jb3JlLmMpIGJ5IGFkZGluZyBlYXJseSByZXR1cm4vY29udGludWUgY2hlY2tzIHdoZW4gcXVvdGEtXHUwMDNlY2hhcmdlZF9zeiBpcyAwIGluIGRhbW9zX3F1b3RhX2lzX2Z1bGwoKSBhbmQgd2hlbiBxdW90YS1cdTAwM2Vlc3ogaXMgMCBpbiBkYW1vbl9kb19hcHBseV9zY2hlbWVzKCkuIFRoZXNlIGNoYW5nZXMgcHVyZWx5IGFmZmVjdCBpbnRlcm5hbCBjb250cm9sIGZsb3cgYW5kIGFjY291bnRpbmcgaW4gREFNT04uIE5vIG5ldyBhbGxvY2F0aW9ucywgc3RhY2svaGVhcCBidWZmZXJzLCBvciBjb3BpZXMgdG8gdXNlciBzcGFjZSBhcmUgaW50cm9kdWNlZCwgbm9yIGlzIHRoZXJlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIG9yIGluZm9ybWF0aW9uIGxlYWtzLiBUaGVyZWZvcmUsIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIGlzIG5vdCByZXF1aXJlZCBhbmQgc3RhbmRhcmQgS0FTQU4gZnV6emluZyBpcyBzdWZmaWNpZW50LiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgcXVvdGEgY2hlY2tpbmcgbG9naWMgaW4gREFNT04gKG1tL2RhbW9uL2NvcmUuYykgYnkgYWRkaW5nIGVhcmx5IHJldHVybi9jb250aW51ZSBjaGVja3Mgd2hlbiBxdW90YS1cdTAwM2VjaGFyZ2VkX3N6IGlzIDAgaW4gZGFtb3NfcXVvdGFfaXNfZnVsbCgpIGFuZCB3aGVuIHF1b3RhLVx1MDAzZWVzeiBpcyAwIGluIGRhbW9uX2RvX2FwcGx5X3NjaGVtZXMoKS4gVGhlc2UgY2hhbmdlcyBwdXJlbHkgYWZmZWN0IGludGVybmFsIGNvbnRyb2wgZmxvdyBhbmQgYWNjb3VudGluZyBpbiBEQU1PTi4gTm8gbmV3IGFsbG9jYXRpb25zLCBzdGFjay9oZWFwIGJ1ZmZlcnMsIG9yIGNvcGllcyB0byB1c2VyIHNwYWNlIGFyZSBpbnRyb2R1Y2VkLCBub3IgaXMgdGhlcmUgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgb3IgaW5mb3JtYXRpb24gbGVha3MuIFRoZXJlZm9yZSwgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgaXMgbm90IHJlcXVpcmVkIGFuZCBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nIGlzIHN1ZmZpY2llbnQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDAwOjMzOjI0LjA0NjMwNDM4OVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcxMzg4OTEyNTk1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkRBTU9OXCIsXG4gICAgXCJEQU1PTl9TWVNGU1wiLFxuICAgIFwiREFNT05fUEFERFJcIixcbiAgICBcIkRBTU9OX1ZBRERSXCIsXG4gICAgXCJTWVNGU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRhbW9uX3N0YXJ0XCIsXG4gICAgXCJkYW1vbl9jb21taXRfY3R4XCIsXG4gICAgXCJkYW1vbl9zeXNmc19hZGRfc2NoZW1lc1wiLFxuICAgIFwiZGFtb25fc2V0X3NjaGVtZXNcIixcbiAgICBcImRhbW9uX25ld19zY2hlbWVcIixcbiAgICBcImRhbW9uX2FkZF9zY2hlbWVcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHF1b3RhIGNoZWNraW5nIGxvZ2ljIGluIERBTU9OIChtbS9kYW1vbi9jb3JlLmMpIGJ5IGFkZGluZyBlYXJseSByZXR1cm4vY29udGludWUgY2hlY2tzIHdoZW4gcXVvdGEtXFx1MDAzZWNoYXJnZWRfc3ogaXMgMCBpbiBkYW1vc19xdW90YV9pc19mdWxsKCkgYW5kIHdoZW4gcXVvdGEtXFx1MDAzZWVzeiBpcyAwIGluIGRhbW9uX2RvX2FwcGx5X3NjaGVtZXMoKS4gVGhlc2UgY2hhbmdlcyBwdXJlbHkgYWZmZWN0IGludGVybmFsIGNvbnRyb2wgZmxvdyBhbmQgYWNjb3VudGluZyBpbiBEQU1PTi4gTm8gbmV3IGFsbG9jYXRpb25zLCBzdGFjay9oZWFwIGJ1ZmZlcnMsIG9yIGNvcGllcyB0byB1c2VyIHNwYWNlIGFyZSBpbnRyb2R1Y2VkLCBub3IgaXMgdGhlcmUgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgb3IgaW5mb3JtYXRpb24gbGVha3MuIFRoZXJlZm9yZSwgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgaXMgbm90IHJlcXVpcmVkIGFuZCBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nIGlzIHN1ZmZpY2llbnQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggdXBkYXRlcyBEQU1PTiBPcGVyYXRpb24gU2NoZW1lcyAoREFNT1MpIHF1b3RhIGhhbmRsaW5nIGxvZ2ljIHdpdGhpbiBtbS9kYW1vbi9jb3JlLmMgKHNwZWNpZmljYWxseSBpbiBkYW1vc19xdW90YV9pc19mdWxsIGFuZCBkYW1vbl9kb19hcHBseV9zY2hlbWVzKSBzbyB0aGF0IHNjaGVtZXMgYXJlIG5vdCBpbmNvcnJlY3RseSBjb25zaWRlcmVkIGZ1bGwgd2hlbiBubyBxdW90YSBoYXMgYmVlbiBjaGFyZ2VkIHlldCwgYW5kIGVtcHR5IHF1b3RhcyAoZXN6ID09IDApIGFyZSBza2lwcGVkIHByb3Blcmx5LiBUaGlzIGZ1bmN0aW9uYWxseSBhZmZlY3RzIERBTU9OIHNjaGVtZSBldmFsdWF0aW9uIGFuZCBjYW4gYmUgdGVzdGVkL2V4ZXJjaXNlZCB2aWEgdGhlIERBTU9OIHN5c2ZzIGludGVyZmFjZSBpbiB2aXJ0dWFsaXplZCB0ZXN0IGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMDA6MzM6MjQuMDQ2MzEwMzE5WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzIxMTgzMTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBhOTJmOGZiMDUwNmI0NGQwMjUwZDc0OTI5YzE1NTVjOTQ0YzQ5MzJhXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgU2VwIDMgMDA6MzM6MjMgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbW0vZGFtb24vY29yZS5jIGIvbW0vZGFtb24vY29yZS5jXFxuaW5kZXggZGYyMjYyMTc2NTkxMS4uZjhjNzg0ZGYyNDYwMCAxMDA2NDRcXG4tLS0gYS9tbS9kYW1vbi9jb3JlLmNcXG4rKysgYi9tbS9kYW1vbi9jb3JlLmNcXG5AQCAtMjY1NSw2ICsyNjU1LDggQEAgc3RhdGljIGJvb2wgZGFtb3NfcXVvdGFfaXNfZnVsbChzdHJ1Y3QgZGFtb3NfcXVvdGEgKnF1b3RhLFxcbiB7XFxuIFxcdGlmICghZGFtb3NfcXVvdGFfaXNfc2V0KHF1b3RhKSlcXG4gXFx0XFx0cmV0dXJuIGZhbHNlO1xcbitcXHRpZiAoIXF1b3RhLVxcdTAwM2VjaGFyZ2VkX3N6KVxcbitcXHRcXHRyZXR1cm4gZmFsc2U7XFxuIFxcdGlmIChxdW90YS1cXHUwMDNlY2hhcmdlZF9zeiBcXHUwMDNlPSBxdW90YS1cXHUwMDNlZXN6KVxcbiBcXHRcXHRyZXR1cm4gdHJ1ZTtcXG4gXFx0LypcXG5AQCAtMjc1MCw2ICsyNzUyLDkgQEAgc3RhdGljIHZvaWQgZGFtb25fZG9fYXBwbHlfc2NoZW1lcyhzdHJ1Y3QgZGFtb25fY3R4ICpjLFxcbiBcXHRcXHRpZiAoIXMtXFx1MDAzZXdtYXJrcy5hY3RpdmF0ZWQpXFxuIFxcdFxcdFxcdGNvbnRpbnVlO1xcbiBcXG4rXFx0XFx0aWYgKCFxdW90YS1cXHUwMDNlZXN6KVxcbitcXHRcXHRcXHRjb250aW51ZTtcXG4rXFxuIFxcdFxcdC8qIENoZWNrIHRoZSBxdW90YSAqL1xcbiBcXHRcXHRpZiAoZGFtb3NfcXVvdGFfaXNfZnVsbChxdW90YSwgYy1cXHUwMDNlbWluX3JlZ2lvbl9zeikpXFxuIFxcdFxcdFxcdGNvbnRpbnVlO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wM1QwMDozMzoyNC42MTg5OTAzODVaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjQ1NTEyMjMyNjA5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkRBTU9OXCIsXG4gICAgXCJEQU1PTl9TWVNGU1wiLFxuICAgIFwiREFNT05fUEFERFJcIixcbiAgICBcIkRBTU9OX1ZBRERSXCIsXG4gICAgXCJTWVNGU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRhbW9uX3N0YXJ0XCIsXG4gICAgXCJkYW1vbl9jb21taXRfY3R4XCIsXG4gICAgXCJkYW1vbl9zeXNmc19hZGRfc2NoZW1lc1wiLFxuICAgIFwiZGFtb25fc2V0X3NjaGVtZXNcIixcbiAgICBcImRhbW9uX25ld19zY2hlbWVcIixcbiAgICBcImRhbW9uX2FkZF9zY2hlbWVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCB1cGRhdGVzIERBTU9OIE9wZXJhdGlvbiBTY2hlbWVzIChEQU1PUykgcXVvdGEgaGFuZGxpbmcgbG9naWMgd2l0aGluIG1tL2RhbW9uL2NvcmUuYyAoc3BlY2lmaWNhbGx5IGluIGRhbW9zX3F1b3RhX2lzX2Z1bGwgYW5kIGRhbW9uX2RvX2FwcGx5X3NjaGVtZXMpIHNvIHRoYXQgc2NoZW1lcyBhcmUgbm90IGluY29ycmVjdGx5IGNvbnNpZGVyZWQgZnVsbCB3aGVuIG5vIHF1b3RhIGhhcyBiZWVuIGNoYXJnZWQgeWV0LCBhbmQgZW1wdHkgcXVvdGFzIChlc3ogPT0gMCkgYXJlIHNraXBwZWQgcHJvcGVybHkuIFRoaXMgZnVuY3Rpb25hbGx5IGFmZmVjdHMgREFNT04gc2NoZW1lIGV2YWx1YXRpb24gYW5kIGNhbiBiZSB0ZXN0ZWQvZXhlcmNpc2VkIHZpYSB0aGUgREFNT04gc3lzZnMgaW50ZXJmYWNlIGluIHZpcnR1YWxpemVkIHRlc3QgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBhOTJmOGZiMDUwNmI0NGQwMjUwZDc0OTI5YzE1NTVjOTQ0YzQ5MzJhXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBTZXAgMyAwMDozMzoyMyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL21tL2RhbW9uL2NvcmUuYyBiL21tL2RhbW9uL2NvcmUuY1xuaW5kZXggZGYyMjYyMTc2NTkxMS4uZjhjNzg0ZGYyNDYwMCAxMDA2NDRcbi0tLSBhL21tL2RhbW9uL2NvcmUuY1xuKysrIGIvbW0vZGFtb24vY29yZS5jXG5AQCAtMjY1NSw2ICsyNjU1LDggQEAgc3RhdGljIGJvb2wgZGFtb3NfcXVvdGFfaXNfZnVsbChzdHJ1Y3QgZGFtb3NfcXVvdGEgKnF1b3RhLFxuIHtcbiBcdGlmICghZGFtb3NfcXVvdGFfaXNfc2V0KHF1b3RhKSlcbiBcdFx0cmV0dXJuIGZhbHNlO1xuK1x0aWYgKCFxdW90YS1cdTAwM2VjaGFyZ2VkX3N6KVxuK1x0XHRyZXR1cm4gZmFsc2U7XG4gXHRpZiAocXVvdGEtXHUwMDNlY2hhcmdlZF9zeiBcdTAwM2U9IHF1b3RhLVx1MDAzZWVzeilcbiBcdFx0cmV0dXJuIHRydWU7XG4gXHQvKlxuQEAgLTI3NTAsNiArMjc1Miw5IEBAIHN0YXRpYyB2b2lkIGRhbW9uX2RvX2FwcGx5X3NjaGVtZXMoc3RydWN0IGRhbW9uX2N0eCAqYyxcbiBcdFx0aWYgKCFzLVx1MDAzZXdtYXJrcy5hY3RpdmF0ZWQpXG4gXHRcdFx0Y29udGludWU7XG4gXG4rXHRcdGlmICghcXVvdGEtXHUwMDNlZXN6KVxuK1x0XHRcdGNvbnRpbnVlO1xuK1xuIFx0XHQvKiBDaGVjayB0aGUgcXVvdGEgKi9cbiBcdFx0aWYgKGRhbW9zX3F1b3RhX2lzX2Z1bGwocXVvdGEsIGMtXHUwMDNlbWluX3JlZ2lvbl9zeikpXG4gXHRcdFx0Y29udGludWU7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wM1QwMDozMzoyNC42MTg5OTE1NzZaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0NzUyNTU5MzYxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYW5hbHlzaXMgb2YgdGhlIHNpdHVhdGlvbiwgdGFpbG9yZWQgZm9yIG15IGZlbGxvdyBleHBlcnRzOlxuXG4qKkluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgREFNT04gUGF0Y2gqKlxuXG5BbHJpZ2h0LCBsZXQncyBkaXZlIGluLiBGaXJzdCwgSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGlzIHBhdGNoLiBJdCBsb29rcyBsaWtlIHRoZSBtYWluIGltcGFjdCBpcyBvbiBgbW0vZGFtb24vY29yZS5jYC4gTm8gc3VycHJpc2VzIHRoZXJlOyBjb3JlIERBTU9OIGZ1bmN0aW9uYWxpdHkgb2Z0ZW4gcmVzaWRlcyBpbiBmaWxlcyBsaWtlIHRoYXQuIE15IGltbWVkaWF0ZSBuZXh0IHN0ZXAgaXMgdG8gZ2V0IGEgc29saWQgZ3Jhc3Agb24gd2hhdCdzIGNoYW5nZWQgd2l0aGluIHRoYXQgY29yZSBmaWxlLCBhbmQgYWxzbyB0byBkb3VibGUgY2hlY2sgdGhlIEtjb25maWcgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBEQU1PTiBpdHNlbGYuIEFsd2F5cyBnb29kIHRvIHJ1bGUgb3V0IGFueSB1bmV4cGVjdGVkIGZlYXR1cmUgZmxhZ3Mgb3IgZGlzYWJsZWQgY29tcG9uZW50cy5cblxuSSdtIHRoaW5raW5nIEknbGwgcmVhY2ggZm9yIGBncmVwcGVyYCBvciBgcmVhZC1maWxlYCB0byB6ZXJvIGluIG9uIHNwZWNpZmljIHBhcnRzIG9mIGBtbS9kYW1vbi9jb3JlLmNgLiBJJ20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIGxpbmVzIGFyb3VuZCAyNjU1IGFuZCAyNzUwLiBUaGF0IHNob3VsZCBnaXZlIG1lIHRoZSBxdWljayBpbnNpZ2h0IEkgbmVlZCB0byBmdWxseSB1bmRlcnN0YW5kIHRoZSBlZmZlY3RzIG9mIHRoaXMgcGF0Y2guIFRpbWUgdG8gZ2V0IHRvIHdvcmsuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxNjIsIk91dHB1dFRva2VucyI6NjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDAwOjMzOjI5LjM3MTU1NDAwN1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxNjUxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJtbS9kYW1vbi9jb3JlLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMjY1MCxcbiAgXCJMaW5lQ291bnRcIjogNjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMjY1MDpcXHRcXHRcXHRcXHRcXHRxdW90YS1cXHUwMDNlZmFpbF9jaGFyZ2VfZGVub20pO1xcbjI2NTE6XFx0fVxcbjI2NTI6XFx0XFxuMjY1MzpcXHRzdGF0aWMgYm9vbCBkYW1vc19xdW90YV9pc19mdWxsKHN0cnVjdCBkYW1vc19xdW90YSAqcXVvdGEsXFxuMjY1NDpcXHRcXHRcXHR1bnNpZ25lZCBsb25nIG1pbl9yZWdpb25fc3opXFxuMjY1NTpcXHR7XFxuMjY1NjpcXHRcXHRpZiAoIWRhbW9zX3F1b3RhX2lzX3NldChxdW90YSkpXFxuMjY1NzpcXHRcXHRcXHRyZXR1cm4gZmFsc2U7XFxuMjY1ODpcXHRcXHRpZiAoIXF1b3RhLVxcdTAwM2VjaGFyZ2VkX3N6KVxcbjI2NTk6XFx0XFx0XFx0cmV0dXJuIGZhbHNlO1xcbjI2NjA6XFx0XFx0aWYgKHF1b3RhLVxcdTAwM2VjaGFyZ2VkX3N6IFxcdTAwM2U9IHF1b3RhLVxcdTAwM2Vlc3opXFxuMjY2MTpcXHRcXHRcXHRyZXR1cm4gdHJ1ZTtcXG4yNjYyOlxcdFxcdC8qXFxuMjY2MzpcXHRcXHQgKiBEQU1PUyBhY3Rpb24gaXMgYXBwbGllZCBwZXIgcmVnaW9uLCBzbyBcXHUwMDNjbWluX3JlZ2lvbl9zeiByZW1haW5pbmdcXG4yNjY0OlxcdFxcdCAqIHF1b3RhIG1lYW5zIHRoZSBxdW90YSBpcyBlZmZlY3RpdmVseSBmdWxsLlxcbjI2NjU6XFx0XFx0ICovXFxuMjY2NjpcXHRcXHRyZXR1cm4gcXVvdGEtXFx1MDAzZWVzeiAtIHF1b3RhLVxcdTAwM2VjaGFyZ2VkX3N6IFxcdTAwM2MgbWluX3JlZ2lvbl9zejtcXG4yNjY3OlxcdH1cXG4yNjY4OlxcdFxcbjI2Njk6XFx0c3RhdGljIHZvaWQgZGFtb3NfYXBwbHlfc2NoZW1lKHN0cnVjdCBkYW1vbl9jdHggKmMsIHN0cnVjdCBkYW1vbl90YXJnZXQgKnQsXFxuMjY3MDpcXHRcXHRcXHRzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLCBzdHJ1Y3QgZGFtb3MgKnMpXFxuMjY3MTpcXHR7XFxuMjY3MjpcXHRcXHRzdHJ1Y3QgZGFtb3NfcXVvdGEgKnF1b3RhID0gXFx1MDAyNnMtXFx1MDAzZXF1b3RhO1xcbjI2NzM6XFx0XFx0dW5zaWduZWQgbG9uZyBzeiA9IGRhbW9uX3N6X3JlZ2lvbihyKTtcXG4yNjc0OlxcdFxcdHN0cnVjdCB0aW1lc3BlYzY0IGJlZ2luLCBlbmQ7XFxuMjY3NTpcXHRcXHR1bnNpZ25lZCBsb25nIHN6X2FwcGxpZWQgPSAwO1xcbjI2NzY6XFx0XFx0dW5zaWduZWQgbG9uZyBzel9vcHNfZmlsdGVyX3Bhc3NlZCA9IDA7XFxuMjY3NzpcXHRcXHQvKlxcbjI2Nzg6XFx0XFx0ICogV2UgcGxhbiB0byBzdXBwb3J0IG11bHRpcGxlIGNvbnRleHQgcGVyIGtkYW1vbmQsIGFzIERBTU9OIHN5c2ZzXFxuMjY3OTpcXHRcXHQgKiBpbXBsaWVzIHdpdGggJ25yX2NvbnRleHRzJyBmaWxlLiAgTmV2ZXJ0aGVsZXNzLCBvbmx5IHNpbmdsZSBjb250ZXh0XFxuMjY4MDpcXHRcXHQgKiBwZXIga2RhbW9uZCBpcyBzdXBwb3J0ZWQgZm9yIG5vdy4gIFNvLCB3ZSBjYW4gc2ltcGx5IHVzZSAnMCcgY29udGV4dFxcbjI2ODE6XFx0XFx0ICogaW5kZXggaGVyZS5cXG4yNjgyOlxcdFxcdCAqL1xcbjI2ODM6XFx0XFx0dW5zaWduZWQgaW50IGNpZHggPSAwO1xcbjI2ODQ6XFx0XFx0c3RydWN0IGRhbW9zICpzaXRlcjtcXHRcXHQvKiBzY2hlbWVzIGl0ZXJhdG9yICovXFxuMjY4NTpcXHRcXHR1bnNpZ25lZCBpbnQgc2lkeCA9IDA7XFxuMjY4NjpcXHRcXHRzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0aXRlcjtcXHQvKiB0YXJnZXRzIGl0ZXJhdG9yICovXFxuMjY4NzpcXHRcXHR1bnNpZ25lZCBpbnQgdGlkeCA9IDAsIG5yX2FjY2Vzc2VzID0gMDtcXG4yNjg4OlxcdFxcdGJvb2wgZG9fdHJhY2UgPSBmYWxzZTtcXG4yNjg5OlxcdFxcbjI2OTA6XFx0XFx0LyogZ2V0IGluZGljZXMgZm9yIHRyYWNlX2RhbW9zX2JlZm9yZV9hcHBseSgpICovXFxuMjY5MTpcXHRcXHRpZiAodHJhY2VfZGFtb3NfYmVmb3JlX2FwcGx5X2VuYWJsZWQoKSkge1xcbjI2OTI6XFx0XFx0XFx0ZGFtb25fZm9yX2VhY2hfc2NoZW1lKHNpdGVyLCBjKSB7XFxuMjY5MzpcXHRcXHRcXHRcXHRpZiAoc2l0ZXIgPT0gcylcXG4yNjk0OlxcdFxcdFxcdFxcdFxcdGJyZWFrO1xcbjI2OTU6XFx0XFx0XFx0XFx0c2lkeCsrO1xcbjI2OTY6XFx0XFx0XFx0fVxcbjI2OTc6XFx0XFx0XFx0ZGFtb25fZm9yX2VhY2hfdGFyZ2V0KHRpdGVyLCBjKSB7XFxuMjY5ODpcXHRcXHRcXHRcXHRpZiAodGl0ZXIgPT0gdClcXG4yNjk5OlxcdFxcdFxcdFxcdFxcdGJyZWFrO1xcbjI3MDA6XFx0XFx0XFx0XFx0dGlkeCsrO1xcbjI3MDE6XFx0XFx0XFx0fVxcbjI3MDI6XFx0XFx0XFx0bnJfYWNjZXNzZXMgPSBkYW1vbl9ucl9hY2Nlc3Nlc19tdnN1bShyLCBjKTtcXG4yNzAzOlxcdFxcdFxcdGRvX3RyYWNlID0gdHJ1ZTtcXG4yNzA0OlxcdFxcdH1cXG4yNzA1OlxcdFxcbjI3MDY6XFx0XFx0aWYgKGMtXFx1MDAzZW9wcy5hcHBseV9zY2hlbWUpIHtcXG4yNzA3OlxcdFxcdFxcdGlmIChkYW1vc19xdW90YV9pc19zZXQocXVvdGEpIFxcdTAwMjZcXHUwMDI2XFxuMjcwODpcXHRcXHRcXHRcXHRcXHRxdW90YS1cXHUwMDNlY2hhcmdlZF9zeiArIHN6IFxcdTAwM2UgcXVvdGEtXFx1MDAzZWVzeikge1xcbjI3MDk6XFx0XFx0XFx0XFx0c3ogPSBBTElHTl9ET1dOKHF1b3RhLVxcdTAwM2Vlc3ogLSBxdW90YS1cXHUwMDNlY2hhcmdlZF9zeixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMDA6MzM6MjkuMzcxNzcyMDY3WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYzNDc5Mzg1LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtZW51Y29uZmlnIERBTU9OXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL2RhbW9uXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wM1QwMDozMzoyOS40MzUyNTg1OTJaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxODYzOTE4MjgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2Vzcywga2VlcGluZyBpbiBtaW5kIEknbSBzcGVha2luZyB0byBhIGZlbGxvdyBleHBlcnQ6XG5cbioqSW52ZXN0aWdhdGluZyBEQU1PTidzIEtjb25maWcgQ29uZmlndXJhdGlvbioqXG5cbkFscmlnaHQsIHRpbWUgdG8gZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gdGhlIGJ1aWxkIGNvbmZpZ3VyYXRpb24gZm9yIERBTU9OLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBkaXZlIHN0cmFpZ2h0IGludG8gdGhlIEtjb25maWcgZmlsZXMuIFRoaXMgaXMgd2hlcmUgdGhlIGNvcmUgY29uZmlndXJhdGlvbiBvcHRpb25zIGFyZSBkZWZpbmVkLCBhbmQgd2hlcmUgSSBjYW4gZmluZCBvdXQgZXhhY3RseSBob3cgREFNT04gaXMgZW5hYmxlZCwgYW55IGRlcGVuZGVuY2llcyBpdCBtaWdodCBoYXZlLCBhbmQgd2hhdCBmZWF0dXJlcyBhcmUgZXhwb3NlZCBhcyBjb25maWd1cmFibGUgb3B0aW9ucyBkdXJpbmcgdGhlIGtlcm5lbCBidWlsZC4gSSB3YW50IHRvIHF1aWNrbHkgdW5kZXJzdGFuZCB0aGUgYnVpbGQgZmxhZ3MuIExldCdzIHNlZSB3aGF0J3MgYWN0dWFsbHkgZW5hYmxlZCBhbmQgd2hhdCdzIGF2YWlsYWJsZS4gVGhpcyBpcyB0aGUgbG9naWNhbCBzdGFydGluZyBwb2ludCBmb3IgYW55IGluLWRlcHRoIGFuYWx5c2lzIG9mIGEga2VybmVsIHN1YnN5c3RlbSwgcmlnaHQ/XG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0ODAsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSIsImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wM1QwMDozMzozMS4yOTkyMjUzMzJaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjcxNDIyNzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiREFNT05cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vZGFtb24vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9kYW1vbi9LY29uZmlnPTM9bWVudSBcXFwiRGF0YSBBY2Nlc3MgTW9uaXRvcmluZ1xcXCJcXG5tbS9kYW1vbi9LY29uZmlnLTQtXFxubW0vZGFtb24vS2NvbmZpZzo1OmNvbmZpZyBEQU1PTlxcbm1tL2RhbW9uL0tjb25maWc6NjpcXHRib29sIFxcXCJEQU1PTjogRGF0YSBBY2Nlc3MgTW9uaXRvcmluZyBGcmFtZXdvcmtcXFwiXFxubW0vZGFtb24vS2NvbmZpZy03LVxcdGhlbHBcXG4tLVxcbm1tL2RhbW9uL0tjb25maWctMTQtXFxubW0vZGFtb24vS2NvbmZpZzoxNTpjb25maWcgREFNT05fREVCVUdfU0FOSVRZXFxubW0vZGFtb24vS2NvbmZpZzoxNjpcXHRib29sIFxcXCJDaGVjayBzYW5pdHkgb2YgREFNT04gY29kZVxcXCJcXG5tbS9kYW1vbi9LY29uZmlnOjE3OlxcdGRlcGVuZHMgb24gREFNT05cXG5tbS9kYW1vbi9LY29uZmlnLTE4LVxcdGhlbHBcXG5tbS9kYW1vbi9LY29uZmlnOjE5OlxcdCAgVGhpcyBlbmFibGVzIGFkZGl0aW9uYWwgREFNT04gZGVidWdnaW5nLXB1cnBvc2Ugc2FuaXR5IGNoZWNrcyBpblxcbm1tL2RhbW9uL0tjb25maWc6MjA6XFx0ICBEQU1PTiBjb2RlLiAgVGhpcyBjYW4gYmUgdXNlZnVsIGZvciBmaW5kaW5nIGJ1Z3MsIGJ1dCBpbXBvc2VcXG5tbS9kYW1vbi9LY29uZmlnLTIxLVxcdCAgYWRkaXRpb25hbCBvdmVyaGVhZC4gIFRoaXMgaXMgdGhlcmVmb3JlIHJlY29tbWVuZGVkIHRvIGJlIGVuYWJsZWQgb25cXG4tLVxcbm1tL2RhbW9uL0tjb25maWctMjUtXFxubW0vZGFtb24vS2NvbmZpZzoyNjpjb25maWcgREFNT05fS1VOSVRfVEVTVFxcbm1tL2RhbW9uL0tjb25maWctMjctXFx0Ym9vbCBcXFwiVGVzdCBmb3IgZGFtb25cXFwiIGlmICFLVU5JVF9BTExfVEVTVFNcXG5tbS9kYW1vbi9LY29uZmlnOjI4OlxcdGRlcGVuZHMgb24gREFNT04gXFx1MDAyNlxcdTAwMjYgS1VOSVQ9eVxcbm1tL2RhbW9uL0tjb25maWctMjktXFx0ZGVmYXVsdCBLVU5JVF9BTExfVEVTVFNcXG5tbS9kYW1vbi9LY29uZmlnLTMwLVxcdGhlbHBcXG5tbS9kYW1vbi9LY29uZmlnOjMxOlxcdCAgVGhpcyBidWlsZHMgdGhlIERBTU9OIEt1bml0IHRlc3Qgc3VpdGUuXFxubW0vZGFtb24vS2NvbmZpZy0zMi1cXG4tLVxcbm1tL2RhbW9uL0tjb25maWctMzctXFxubW0vZGFtb24vS2NvbmZpZzozODpjb25maWcgREFNT05fVkFERFJcXG5tbS9kYW1vbi9LY29uZmlnLTM5LVxcdGJvb2wgXFxcIkRhdGEgYWNjZXNzIG1vbml0b3Jpbmcgb3BlcmF0aW9ucyBmb3IgdmlydHVhbCBhZGRyZXNzIHNwYWNlc1xcXCJcXG5tbS9kYW1vbi9LY29uZmlnOjQwOlxcdGRlcGVuZHMgb24gREFNT04gXFx1MDAyNlxcdTAwMjYgTU1VXFxubW0vZGFtb24vS2NvbmZpZy00MS1cXHRzZWxlY3QgUEFHRV9JRExFX0ZMQUdcXG5tbS9kYW1vbi9LY29uZmlnOjQyOlxcdGRlZmF1bHQgREFNT05cXG5tbS9kYW1vbi9LY29uZmlnLTQzLVxcdGhlbHBcXG5tbS9kYW1vbi9LY29uZmlnOjQ0OlxcdCAgVGhpcyBidWlsZHMgdGhlIGRlZmF1bHQgZGF0YSBhY2Nlc3MgbW9uaXRvcmluZyBvcGVyYXRpb25zIGZvciBEQU1PTlxcbm1tL2RhbW9uL0tjb25maWctNDUtXFx0ICB0aGF0IHdvcmsgZm9yIHZpcnR1YWwgYWRkcmVzcyBzcGFjZXMuXFxubW0vZGFtb24vS2NvbmZpZy00Ni1cXG5tbS9kYW1vbi9LY29uZmlnOjQ3OmNvbmZpZyBEQU1PTl9QQUREUlxcbm1tL2RhbW9uL0tjb25maWctNDgtXFx0Ym9vbCBcXFwiRGF0YSBhY2Nlc3MgbW9uaXRvcmluZyBvcGVyYXRpb25zIGZvciB0aGUgcGh5c2ljYWwgYWRkcmVzcyBzcGFjZVxcXCJcXG5tbS9kYW1vbi9LY29uZmlnOjQ5OlxcdGRlcGVuZHMgb24gREFNT04gXFx1MDAyNlxcdTAwMjYgTU1VXFxubW0vZGFtb24vS2NvbmZpZy01MC1cXHRzZWxlY3QgUEFHRV9JRExFX0ZMQUdcXG5tbS9kYW1vbi9LY29uZmlnOjUxOlxcdGRlZmF1bHQgREFNT05cXG5tbS9kYW1vbi9LY29uZmlnLTUyLVxcdGhlbHBcXG5tbS9kYW1vbi9LY29uZmlnOjUzOlxcdCAgVGhpcyBidWlsZHMgdGhlIGRlZmF1bHQgZGF0YSBhY2Nlc3MgbW9uaXRvcmluZyBvcGVyYXRpb25zIGZvciBEQU1PTlxcbm1tL2RhbW9uL0tjb25maWctNTQtXFx0ICB0aGF0IHdvcmtzIGZvciB0aGUgcGh5c2ljYWwgYWRkcmVzcyBzcGFjZS5cXG5tbS9kYW1vbi9LY29uZmlnLTU1LVxcbm1tL2RhbW9uL0tjb25maWc6NTY6Y29uZmlnIERBTU9OX1ZBRERSX0tVTklUX1RFU1RcXG5tbS9kYW1vbi9LY29uZmlnOjU3OlxcdGJvb2wgXFxcIlRlc3QgZm9yIERBTU9OIG9wZXJhdGlvbnNcXFwiIGlmICFLVU5JVF9BTExfVEVTVFNcXG5tbS9kYW1vbi9LY29uZmlnOjU4OlxcdGRlcGVuZHMgb24gREFNT05fVkFERFIgXFx1MDAyNlxcdTAwMjYgS1VOSVQ9eVxcbm1tL2RhbW9uL0tjb25maWctNTktXFx0ZGVmYXVsdCBLVU5JVF9BTExfVEVTVFNcXG5tbS9kYW1vbi9LY29uZmlnLTYwLVxcdGhlbHBcXG5tbS9kYW1vbi9LY29uZmlnOjYxOlxcdCAgVGhpcyBidWlsZHMgdGhlIERBTU9OIHZpcnR1YWwgYWRkcmVzc2VzIG9wZXJhdGlvbnMgS3VuaXQgdGVzdCBzdWl0ZS5cXG5tbS9kYW1vbi9LY29uZmlnLTYyLVxcbi0tXFxubW0vZGFtb24vS2NvbmZpZy02Ny1cXG5tbS9kYW1vbi9LY29uZmlnOjY4OmNvbmZpZyBEQU1PTl9TWVNGU1xcbm1tL2RhbW9uL0tjb25maWc6Njk6XFx0Ym9vbCBcXFwiREFNT04gc3lzZnMgaW50ZXJmYWNlXFxcIlxcbm1tL2RhbW9uL0tjb25maWc6NzA6XFx0ZGVwZW5kcyBvbiBEQU1PTiBcXHUwMDI2XFx1MDAyNiBTWVNGU1xcbm1tL2RhbW9uL0tjb25maWc6NzE6XFx0ZGVmYXVsdCBEQU1PTlxcbm1tL2RhbW9uL0tjb25maWctNzItXFx0aGVscFxcbm1tL2RhbW9uL0tjb25maWc6NzM6XFx0ICBUaGlzIGJ1aWxkcyB0aGUgc3lzZnMgaW50ZXJmYWNlIGZvciBEQU1PTi4gIFRoZSB1c2VyIHNwYWNlIGNhbiB1c2VcXG5tbS9kYW1vbi9LY29uZmlnLTc0LVxcdCAgdGhlIGludGVyZmFjZSBmb3IgYXJiaXRyYXJ5IGRhdGEgYWNjZXNzIG1vbml0b3JpbmcuXFxubW0vZGFtb24vS2NvbmZpZy03NS1cXG5tbS9kYW1vbi9LY29uZmlnOjc2OmNvbmZpZyBEQU1PTl9TWVNGU19LVU5JVF9URVNUXFxubW0vZGFtb24vS2NvbmZpZy03Ny1cXHRib29sIFxcXCJUZXN0IGZvciBkYW1vbiBzeXNmcyBpbnRlcmZhY2VcXFwiIGlmICFLVU5JVF9BTExfVEVTVFNcXG5tbS9kYW1vbi9LY29uZmlnOjc4OlxcdGRlcGVuZHMgb24gREFNT05fU1lTRlMgXFx1MDAyNlxcdTAwMjYgS1VOSVQ9eVxcbm1tL2RhbW9uL0tjb25maWctNzktXFx0ZGVmYXVsdCBLVU5JVF9BTExfVEVTVFNcXG5tbS9kYW1vbi9LY29uZmlnLTgwLVxcdGhlbHBcXG5tbS9kYW1vbi9LY29uZmlnOjgxOlxcdCAgVGhpcyBidWlsZHMgdGhlIERBTU9OIHN5c2ZzIGludGVyZmFjZSBLdW5pdCB0ZXN0IHN1aXRlLlxcbm1tL2RhbW9uL0tjb25maWctODItXFxuLS1cXG5tbS9kYW1vbi9LY29uZmlnLTg3LVxcbm1tL2RhbW9uL0tjb25maWc6ODg6Y29uZmlnIERBTU9OX1JFQ0xBSU1cXG5tbS9kYW1vbi9LY29uZmlnOjg5OlxcdGJvb2wgXFxcIkJ1aWxkIERBTU9OLWJhc2VkIHJlY2xhaW0gKERBTU9OX1JFQ0xBSU0pXFxcIlxcbm1tL2RhbW9uL0tjb25maWc6OTA6XFx0ZGVwZW5kcyBvbiBEQU1PTl9QQUREUlxcbm1tL2RhbW9uL0tjb25maWctOTEtXFx0aGVscFxcbm1tL2RhbW9uL0tjb25maWc6OTI6XFx0ICBUaGlzIGJ1aWxkcyB0aGUgREFNT04tYmFzZWQgcmVjbGFtYXRpb24gc3Vic3lzdGVtLiAgSXQgZmluZHMgcGFnZXNcXG5tbS9kYW1vbi9LY29uZmlnOjkzOlxcdCAgdGhhdCBub3QgYWNjZXNzZWQgZm9yIGEgbG9uZyB0aW1lIChjb2xkKSB1c2luZyBEQU1PTiBhbmQgcmVjbGFpbVxcbm1tL2RhbW9uL0tjb25maWctOTQtXFx0ICB0aG9zZS5cXG4tLVxcbm1tL2RhbW9uL0tjb25maWctOTktXFxubW0vZGFtb24vS2NvbmZpZzoxMDA6Y29uZmlnIERBTU9OX0xSVV9TT1JUXFxubW0vZGFtb24vS2NvbmZpZzoxMDE6XFx0Ym9vbCBcXFwiQnVpbGQgREFNT04tYmFzZWQgTFJVLWxpc3RzIHNvcnRpbmcgKERBTU9OX0xSVV9TT1JUKVxcXCJcXG5tbS9kYW1vbi9LY29uZmlnOjEwMjpcXHRkZXBlbmRzIG9uIERBTU9OX1BBRERSXFxubW0vZGFtb24vS2NvbmZpZy0xMDMtXFx0aGVscFxcbm1tL2RhbW9uL0tjb25maWc6MTA0OlxcdCAgVGhpcyBidWlsZHMgdGhlIERBTU9OLWJhc2VkIExSVS1saXN0cyBzb3J0aW5nIHN1YnN5c3RlbS4gIEl0IHRyaWVzIHRvXFxubW0vZGFtb24vS2NvbmZpZy0xMDUtXFx0ICBwcm90ZWN0IGZyZXF1ZW50bHkgYWNjZXNzZWQgKGhvdCkgcGFnZXMgd2hpbGUgcmFyZWx5IGFjY2Vzc2VkIChjb2xkKVxcbi0tXFxubW0vZGFtb24vS2NvbmZpZy0xMDctXFxubW0vZGFtb24vS2NvbmZpZzoxMDg6Y29uZmlnIERBTU9OX1NUQVRcXG5tbS9kYW1vbi9LY29uZmlnOjEwOTpcXHRib29sIFxcXCJCdWlsZCBkYXRhIGFjY2VzcyBtb25pdG9yaW5nIHN0YXQgKERBTU9OX1NUQVQpXFxcIlxcbm1tL2RhbW9uL0tjb25maWc6MTEwOlxcdGRlcGVuZHMgb24gREFNT05fUEFERFJcXG5tbS9kYW1vbi9LY29uZmlnLTExMS1cXHRoZWxwXFxubW0vZGFtb24vS2NvbmZpZzoxMTI6XFx0ICBUaGlzIGJ1aWxkcyB0aGUgREFNT04tYmFzZWQgYWNjZXNzIG1vbml0b3Jpbmcgc3RhdGlzdGljcyBzdWJzeXN0ZW0uXFxubW0vZGFtb24vS2NvbmZpZzoxMTM6XFx0ICBJdCBydW5zIERBTU9OIGFuZCBleHBvc2UgYWNjZXNzIG1vbml0b3JpbmcgcmVzdWx0cyBpbiBzaW1wbGUgc3RhdFxcbm1tL2RhbW9uL0tjb25maWctMTE0LVxcdCAgbWV0cmljcy5cXG5tbS9kYW1vbi9LY29uZmlnLTExNS1cXG5tbS9kYW1vbi9LY29uZmlnOjExNjpjb25maWcgREFNT05fU1RBVF9FTkFCTEVEX0RFRkFVTFRcXG5tbS9kYW1vbi9LY29uZmlnOjExNzpcXHRib29sIFxcXCJFbmFibGUgREFNT05fU1RBVCBieSBkZWZhdWx0XFxcIlxcbm1tL2RhbW9uL0tjb25maWc6MTE4OlxcdGRlcGVuZHMgb24gREFNT05fU1RBVFxcbm1tL2RhbW9uL0tjb25maWc6MTE5OlxcdGRlZmF1bHQgREFNT05fU1RBVFxcbm1tL2RhbW9uL0tjb25maWctMTIwLVxcdGhlbHBcXG5tbS9kYW1vbi9LY29uZmlnOjEyMTpcXHQgIFdoZXRoZXIgdG8gZW5hYmxlIERBTU9OX1NUQVQgYnkgZGVmYXVsdC4gIFVzZXJzIGNhbiBkaXNhYmxlIGl0IGluXFxubW0vZGFtb24vS2NvbmZpZy0xMjItXFx0ICBib290IG9yIHJ1bnRpbWUgdXNpbmcgaXRzICdlbmFibGVkJyBwYXJhbWV0ZXIuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDAwOjMzOjMxLjM2NjM3ODIxN1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjMyOTQ5OTU1OTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKk1ha2VmaWxlIEFuYWx5c2lzIGZvciBEQU1PTiBJbnRlZ3JhdGlvbioqXG5cbkFscmlnaHQsIGxldCdzIHRha2UgYSBsb29rIGF0IHRoZSBjb21waWxhdGlvbiBwcm9jZXNzIGZvciBgbW0vZGFtb24vY29yZS5jYCwgc3BlY2lmaWNhbGx5IGhvdyBpdCdzIGJlaW5nIGhhbmRsZWQgaW4gdGhlIGBNYWtlZmlsZWAuIEknbSBnb2luZyB0byBuYXZpZ2F0ZSB0byBgbW0vZGFtb24vTWFrZWZpbGVgLiBJJ2xsIGJlIGxvb2tpbmcgdG8gc2VlIGhvdyB0aGUgY29tcGlsYXRpb24gb2YgYGNvcmUuY2AgaXMgaW50ZWdyYXRlZCBpbnRvIHRoZSBsYXJnZXIgYnVpbGQgc3lzdGVtLiBJIHdhbnQgdG8gdW5kZXJzdGFuZCBhbnkgc3BlY2lmaWMgZmxhZ3MsIGRlcGVuZGVuY2llcywgb3IgbGlua2luZyBzdGVwcyB0aGF0IGFyZSB1bmlxdWUgdG8gdGhpcyBjb21wb25lbnQgd2l0aGluIHRoZSBEQU1PTiBzdWJzeXN0ZW0uIEhvcGVmdWxseSwgdGhlIG1ha2VmaWxlIHdpbGwgcHJvdmlkZSBjbGFyaXR5IG9uIGFueSBvcHRpbWl6YXRpb25zIG9yIGNvbmZpZ3VyYXRpb25zIGJlaW5nIGFwcGxpZWQsIGVzcGVjaWFsbHkgaWYgdGhleSBhcmUgc3BlY2lmaWMgdG8gdGhlIERBTU9OIGNvcmUgZnVuY3Rpb25hbGl0eSBvciByZWxhdGVkIGRhdGEgYWNjZXNzIG1vbml0b3Jpbmcgc2NoZW1lcy4gSSBuZWVkIHRvIGVuc3VyZSB0aGlzIGNvbXBvbmVudCBpc24ndCBpbnRyb2R1Y2luZyBhbnkgdW5leHBlY3RlZCBidWlsZCBjb25mbGljdHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU1OTIsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wM1QwMDozMzozNC42NjEzNzY1NjhaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MDM2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJtbS9kYW1vbi9NYWtlZmlsZVwiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4gICAyOlxcdFxcbiAgIDM6XFx0b2JqLXlcXHRcXHRcXHRcXHQ6PSBjb3JlLm9cXG4gICA0OlxcdG9iai0kKENPTkZJR19EQU1PTl9WQUREUilcXHQrPSBvcHMtY29tbW9uLm8gdmFkZHIub1xcbiAgIDU6XFx0b2JqLSQoQ09ORklHX0RBTU9OX1BBRERSKVxcdCs9IG9wcy1jb21tb24ubyBwYWRkci5vXFxuICAgNjpcXHRvYmotJChDT05GSUdfREFNT05fU1lTRlMpXFx0Kz0gc3lzZnMtY29tbW9uLm8gc3lzZnMtc2NoZW1lcy5vIHN5c2ZzLm9cXG4gICA3OlxcdG9iai0kKENPTkZJR19EQU1PTl9SRUNMQUlNKVxcdCs9IG1vZHVsZXMtY29tbW9uLm8gcmVjbGFpbS5vXFxuICAgODpcXHRvYmotJChDT05GSUdfREFNT05fTFJVX1NPUlQpXFx0Kz0gbW9kdWxlcy1jb21tb24ubyBscnVfc29ydC5vXFxuICAgOTpcXHRvYmotJChDT05GSUdfREFNT05fU1RBVClcXHQrPSBtb2R1bGVzLWNvbW1vbi5vIHN0YXQub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wM1QwMDozMzozNC42NjE0Njk3MThaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjU4MDA3ODYzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgQnVpbGQgUHJvY2VzcyBmb3IgREFNT04qKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgYnVpbGQgcHJvY2VzcyBhbmQgd2hlbiB0aGUgREFNT04gY29tcG9uZW50cyBnZXQgYmFrZWQgaW50byB0aGUga2VybmVsLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBkaXZlIGludG8gdGhlIGBtbS9NYWtlZmlsZWAgd2l0aGluIHRoZSBrZXJuZWwgc291cmNlIHRyZWUuIFRoYXQgZmlsZSdzIHVzdWFsbHkgdGhlIG9yY2hlc3RyYXRvciBmb3IgYW55dGhpbmcgbWVtb3J5LXJlbGF0ZWQsIGFuZCBpdCBzaG91bGQgc2hlZCBzb21lIGxpZ2h0IG9uIHRoZSBkZXBlbmRlbmNpZXMgYW5kIGJ1aWxkIG9yZGVyIGZvciB0aGUgYG1tL2RhbW9uL2AgZGlyZWN0b3J5LiBCeSBleGFtaW5pbmcgdGhlIHJ1bGVzIHdpdGhpbiB0aGF0IE1ha2VmaWxlLCBJIHNob3VsZCBiZSBhYmxlIHRvIHBpbnBvaW50IGV4YWN0bHkgd2hlbiBhbmQgaG93IHRoZSBEQU1PTiBtb2R1bGVzLCBvciBmZWF0dXJlcyBhcmUgaW5jb3Jwb3JhdGVkIGludG8gdGhlIGtlcm5lbCBpbWFnZS4gSSBuZWVkIHRvIHRyYWNlIHRoZSBidWlsZCBwcm9jZXNzIHNwZWNpZmljYWxseSBmb3IgdGhpcyBtZW1vcnkgbW9uaXRvcmluZyBzeXN0ZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYwNDcsIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDAwOjMzOjM3LjI0MTU1MjA5NFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODc3NDEyMDMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGFtb25cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vTWFrZWZpbGU9MTM1PW9iai0kKENPTkZJR19ERUJVR19QQUdFX1JFRikgKz0gZGVidWdfcGFnZV9yZWYub1xcbm1tL01ha2VmaWxlOjEzNjpvYmotJChDT05GSUdfREFNT04pICs9IGRhbW9uL1xcbm1tL01ha2VmaWxlLTEzNy1vYmotJChDT05GSUdfSEFSREVORURfVVNFUkNPUFkpICs9IHVzZXJjb3B5Lm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMDA6MzM6MzcuMzI5MzAwNDc3WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQxNTc0OTE0MzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBEQU1PTiBRdW90YSBMb2dpYyoqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzIHBhdGNoLiBJJ20gbG9va2luZyBhdCBgbW0vZGFtb24vY29yZS5jYCwgc3BlY2lmaWNhbGx5IGFyb3VuZCBsaW5lcyAyNjMwLTI3NzAsIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgYW5kIHRoZSBwcm9ibGVtIHRoaXMgZml4ZXMuIEkgc2VlIHRoZSBtYWluIGNvbmNlcm4gaXMgd2l0aCB0aGUgYGRhbW9zX3F1b3RhX2lzX2Z1bGxgIGZ1bmN0aW9uIGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIERBTU9OIHF1b3RhIHN5c3RlbS4gVGhlIHBhdGNoIGludHJvZHVjZXMgYSBjaGVjayBmb3IgYHF1b3RhLVx1MDAzZWNoYXJnZWRfc3pgIHdpdGhpbiBgZGFtb3NfcXVvdGFfaXNfZnVsbGAuIFRoYXQncyBpbnRlcmVzdGluZzsgSSdtIGFzc3VtaW5nIHRoaXMgaGFuZGxlcyBhIHNjZW5hcmlvIHdoZXJlIHNvbWV0aGluZyBpcyBzZXR0aW5nIHRoZSBxdW90YSBidXQgaGFzbid0IFwiY2hhcmdlZFwiIGFueSBzaXplIGFnYWluc3QgaXQgeWV0LiBJdCBzZWVtcyB0aGUgaW50ZW50aW9uIGlzIHRvIGF2b2lkIGluY29ycmVjdGx5IHJlcG9ydGluZyBhIGZ1bGwgcXVvdGEgaW4gdGhhdCBjYXNlLCB3aGVyZSBwZXJoYXBzIHRoZSBxdW90YSdzIGVmZmVjdGl2ZSBzaXplIChgZXN6YCkgY291bGQgYmUgemVyby5cblxuVGhlbiwgdGhlIHNlY29uZCBjaGFuZ2UsIGFkZGluZyBhIGBxdW90YS1cdTAwM2Vlc3pgIGNoZWNrIGluIGBkYW1vbl9kb19hcHBseV9zY2hlbWVzYCBjYXVnaHQgbXkgZXllLiBUaGlzIHN1Z2dlc3RzIHRoZXJlJ3MgYSBwb3RlbnRpYWwgZm9yIGFuIHVuaW5pdGlhbGl6ZWQgb3IgemVyby12YWx1ZWQgYGVzemAgdGhhdCBjb3VsZCBsZWFkIHRvIHVuZXhwZWN0ZWQgYmVoYXZpb3IgaW4gaG93IHNjaGVtZXMgYXJlIGFwcGxpZWQuIFdpdGhvdXQgdGhpcyBjaGVjaywgdGhlIHF1b3RhIGxvZ2ljIGNvdWxkIGNhdXNlIGlzc3VlcyB3aXRoIGhvdyB3ZSBoYW5kbGUgdGhlIGFwcGxpY2F0aW9uIG9mIERBTU9OIHNjaGVtZXMuIEl0IHNlZW1zIHRoaXMgY2hlY2sgZW5zdXJlcyB0aGF0IHdlIGRvbid0IHByb2NlZWQgd2l0aCBzY2hlbWVzIGlmIHRoZXJlJ3Mgbm8gZGVmaW5lZCBlZmZlY3RpdmUgc2l6ZSBmb3IgdGhlIHF1b3RhLiBHb29kIGNhdGNoLiBPdmVyYWxsLCB0aGlzIHBhdGNoIHNlZW1zIGxpa2UgYSByZWFzb25hYmxlIHNhZmV0eSBjaGVjayB0byBwcmV2ZW50IHBvdGVudGlhbCBpbnRlZ2VyIG92ZXJmbG93cyBvciBvdGhlciB1bmV4cGVjdGVkIGJlaGF2aW91ciB3aGVyZSB0aGUgYGVzemAgb3IgYGNoYXJnZWRfc3pgIGFyZSBub3QgaW5pdGlhbGl6ZWQuIEknbGwgbmVlZCB0byBsb29rIGF0IHRoZSBzdXJyb3VuZGluZyBjb2RlIHRvIGVuc3VyZSB0aGlzIGRvZXNuJ3QgbWFzayBhIGRlZXBlciByb290IGNhdXNlLCBidXQgb24gdGhlIHN1cmZhY2UsIHRoaXMgbG9va3MgbGlrZSBhIHNvbGlkIGNvbnRyaWJ1dGlvbiB0byBpbXByb3ZpbmcgdGhlIHJvYnVzdG5lc3Mgb2YgREFNT04ncyBxdW90YSBoYW5kbGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjMzNCwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wM1QwMDozMzo0MS40ODY3OTYxMDNaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQzNzkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm1tL2RhbW9uL2NvcmUuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyNjMwLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMjYzMDpcXHRcXHRjb21wbGV0ZShcXHUwMDI2Y29udHJvbC1cXHUwMDNlY29tcGxldGlvbik7XFxuMjYzMTpcXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZjdHgtXFx1MDAzZXdhbGtfY29udHJvbF9sb2NrKTtcXG4yNjMyOlxcdFxcdGN0eC1cXHUwMDNld2Fsa19jb250cm9sID0gTlVMTDtcXG4yNjMzOlxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2Y3R4LVxcdTAwM2V3YWxrX2NvbnRyb2xfbG9jayk7XFxuMjYzNDpcXHR9XFxuMjYzNTpcXHRcXG4yNjM2OlxcdHN0YXRpYyB2b2lkIGRhbW9zX2NoYXJnZV9xdW90YShzdHJ1Y3QgZGFtb3NfcXVvdGEgKnF1b3RhLFxcbjI2Mzc6XFx0XFx0XFx0dW5zaWduZWQgbG9uZyBzel9yZWdpb24sIHVuc2lnbmVkIGxvbmcgc3pfYXBwbGllZClcXG4yNjM4OlxcdHtcXG4yNjM5OlxcdFxcdC8qXFxuMjY0MDpcXHRcXHQgKiBzel9hcHBsaWVkIGNvdWxkIGJlIGJpZ2dlciB0aGFuIHN6X3JlZ2lvbiwgZGVwZW5kaW5nIG9uIG9wc1xcbjI2NDE6XFx0XFx0ICogaW1wbGVtZW50YXRpb24gb2YgdGhlIGFjdGlvbiwgZS5nLiwgZGFtb3NfcGFfcGFnZW91dCgpLiAgQ2hhcmdlIG9ubHlcXG4yNjQyOlxcdFxcdCAqIHRoZSByZWdpb24gc2l6ZSBpbiB0aGUgY2FzZS5cXG4yNjQzOlxcdFxcdCAqL1xcbjI2NDQ6XFx0XFx0aWYgKCFxdW90YS1cXHUwMDNlZmFpbF9jaGFyZ2VfZGVub20gfHwgc3pfYXBwbGllZCBcXHUwMDNlIHN6X3JlZ2lvbilcXG4yNjQ1OlxcdFxcdFxcdHF1b3RhLVxcdTAwM2VjaGFyZ2VkX3N6ICs9IHN6X3JlZ2lvbjtcXG4yNjQ2OlxcdFxcdGVsc2VcXG4yNjQ3OlxcdFxcdFxcdHF1b3RhLVxcdTAwM2VjaGFyZ2VkX3N6ICs9IHN6X2FwcGxpZWQgKyBtdWx0X2ZyYWMoXFxuMjY0ODpcXHRcXHRcXHRcXHRcXHQoc3pfcmVnaW9uIC0gc3pfYXBwbGllZCksXFxuMjY0OTpcXHRcXHRcXHRcXHRcXHRxdW90YS1cXHUwMDNlZmFpbF9jaGFyZ2VfbnVtLFxcbjI2NTA6XFx0XFx0XFx0XFx0XFx0cXVvdGEtXFx1MDAzZWZhaWxfY2hhcmdlX2Rlbm9tKTtcXG4yNjUxOlxcdH1cXG4yNjUyOlxcdFxcbjI2NTM6XFx0c3RhdGljIGJvb2wgZGFtb3NfcXVvdGFfaXNfZnVsbChzdHJ1Y3QgZGFtb3NfcXVvdGEgKnF1b3RhLFxcbjI2NTQ6XFx0XFx0XFx0dW5zaWduZWQgbG9uZyBtaW5fcmVnaW9uX3N6KVxcbjI2NTU6XFx0e1xcbjI2NTY6XFx0XFx0aWYgKCFkYW1vc19xdW90YV9pc19zZXQocXVvdGEpKVxcbjI2NTc6XFx0XFx0XFx0cmV0dXJuIGZhbHNlO1xcbjI2NTg6XFx0XFx0aWYgKCFxdW90YS1cXHUwMDNlY2hhcmdlZF9zeilcXG4yNjU5OlxcdFxcdFxcdHJldHVybiBmYWxzZTtcXG4yNjYwOlxcdFxcdGlmIChxdW90YS1cXHUwMDNlY2hhcmdlZF9zeiBcXHUwMDNlPSBxdW90YS1cXHUwMDNlZXN6KVxcbjI2NjE6XFx0XFx0XFx0cmV0dXJuIHRydWU7XFxuMjY2MjpcXHRcXHQvKlxcbjI2NjM6XFx0XFx0ICogREFNT1MgYWN0aW9uIGlzIGFwcGxpZWQgcGVyIHJlZ2lvbiwgc28gXFx1MDAzY21pbl9yZWdpb25fc3ogcmVtYWluaW5nXFxuMjY2NDpcXHRcXHQgKiBxdW90YSBtZWFucyB0aGUgcXVvdGEgaXMgZWZmZWN0aXZlbHkgZnVsbC5cXG4yNjY1OlxcdFxcdCAqL1xcbjI2NjY6XFx0XFx0cmV0dXJuIHF1b3RhLVxcdTAwM2Vlc3ogLSBxdW90YS1cXHUwMDNlY2hhcmdlZF9zeiBcXHUwMDNjIG1pbl9yZWdpb25fc3o7XFxuMjY2NzpcXHR9XFxuMjY2ODpcXHRcXG4yNjY5OlxcdHN0YXRpYyB2b2lkIGRhbW9zX2FwcGx5X3NjaGVtZShzdHJ1Y3QgZGFtb25fY3R4ICpjLCBzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0LFxcbjI2NzA6XFx0XFx0XFx0c3RydWN0IGRhbW9uX3JlZ2lvbiAqciwgc3RydWN0IGRhbW9zICpzKVxcbjI2NzE6XFx0e1xcbjI2NzI6XFx0XFx0c3RydWN0IGRhbW9zX3F1b3RhICpxdW90YSA9IFxcdTAwMjZzLVxcdTAwM2VxdW90YTtcXG4yNjczOlxcdFxcdHVuc2lnbmVkIGxvbmcgc3ogPSBkYW1vbl9zel9yZWdpb24ocik7XFxuMjY3NDpcXHRcXHRzdHJ1Y3QgdGltZXNwZWM2NCBiZWdpbiwgZW5kO1xcbjI2NzU6XFx0XFx0dW5zaWduZWQgbG9uZyBzel9hcHBsaWVkID0gMDtcXG4yNjc2OlxcdFxcdHVuc2lnbmVkIGxvbmcgc3pfb3BzX2ZpbHRlcl9wYXNzZWQgPSAwO1xcbjI2Nzc6XFx0XFx0LypcXG4yNjc4OlxcdFxcdCAqIFdlIHBsYW4gdG8gc3VwcG9ydCBtdWx0aXBsZSBjb250ZXh0IHBlciBrZGFtb25kLCBhcyBEQU1PTiBzeXNmc1xcbjI2Nzk6XFx0XFx0ICogaW1wbGllcyB3aXRoICducl9jb250ZXh0cycgZmlsZS4gIE5ldmVydGhlbGVzcywgb25seSBzaW5nbGUgY29udGV4dFxcbjI2ODA6XFx0XFx0ICogcGVyIGtkYW1vbmQgaXMgc3VwcG9ydGVkIGZvciBub3cuICBTbywgd2UgY2FuIHNpbXBseSB1c2UgJzAnIGNvbnRleHRcXG4yNjgxOlxcdFxcdCAqIGluZGV4IGhlcmUuXFxuMjY4MjpcXHRcXHQgKi9cXG4yNjgzOlxcdFxcdHVuc2lnbmVkIGludCBjaWR4ID0gMDtcXG4yNjg0OlxcdFxcdHN0cnVjdCBkYW1vcyAqc2l0ZXI7XFx0XFx0Lyogc2NoZW1lcyBpdGVyYXRvciAqL1xcbjI2ODU6XFx0XFx0dW5zaWduZWQgaW50IHNpZHggPSAwO1xcbjI2ODY6XFx0XFx0c3RydWN0IGRhbW9uX3RhcmdldCAqdGl0ZXI7XFx0LyogdGFyZ2V0cyBpdGVyYXRvciAqL1xcbjI2ODc6XFx0XFx0dW5zaWduZWQgaW50IHRpZHggPSAwLCBucl9hY2Nlc3NlcyA9IDA7XFxuMjY4ODpcXHRcXHRib29sIGRvX3RyYWNlID0gZmFsc2U7XFxuMjY4OTpcXHRcXG4yNjkwOlxcdFxcdC8qIGdldCBpbmRpY2VzIGZvciB0cmFjZV9kYW1vc19iZWZvcmVfYXBwbHkoKSAqL1xcbjI2OTE6XFx0XFx0aWYgKHRyYWNlX2RhbW9zX2JlZm9yZV9hcHBseV9lbmFibGVkKCkpIHtcXG4yNjkyOlxcdFxcdFxcdGRhbW9uX2Zvcl9lYWNoX3NjaGVtZShzaXRlciwgYykge1xcbjI2OTM6XFx0XFx0XFx0XFx0aWYgKHNpdGVyID09IHMpXFxuMjY5NDpcXHRcXHRcXHRcXHRcXHRicmVhaztcXG4yNjk1OlxcdFxcdFxcdFxcdHNpZHgrKztcXG4yNjk2OlxcdFxcdFxcdH1cXG4yNjk3OlxcdFxcdFxcdGRhbW9uX2Zvcl9lYWNoX3RhcmdldCh0aXRlciwgYykge1xcbjI2OTg6XFx0XFx0XFx0XFx0aWYgKHRpdGVyID09IHQpXFxuMjY5OTpcXHRcXHRcXHRcXHRcXHRicmVhaztcXG4yNzAwOlxcdFxcdFxcdFxcdHRpZHgrKztcXG4yNzAxOlxcdFxcdFxcdH1cXG4yNzAyOlxcdFxcdFxcdG5yX2FjY2Vzc2VzID0gZGFtb25fbnJfYWNjZXNzZXNfbXZzdW0ociwgYyk7XFxuMjcwMzpcXHRcXHRcXHRkb190cmFjZSA9IHRydWU7XFxuMjcwNDpcXHRcXHR9XFxuMjcwNTpcXHRcXG4yNzA2OlxcdFxcdGlmIChjLVxcdTAwM2VvcHMuYXBwbHlfc2NoZW1lKSB7XFxuMjcwNzpcXHRcXHRcXHRpZiAoZGFtb3NfcXVvdGFfaXNfc2V0KHF1b3RhKSBcXHUwMDI2XFx1MDAyNlxcbjI3MDg6XFx0XFx0XFx0XFx0XFx0cXVvdGEtXFx1MDAzZWNoYXJnZWRfc3ogKyBzeiBcXHUwMDNlIHF1b3RhLVxcdTAwM2Vlc3opIHtcXG4yNzA5OlxcdFxcdFxcdFxcdHN6ID0gQUxJR05fRE9XTihxdW90YS1cXHUwMDNlZXN6IC0gcXVvdGEtXFx1MDAzZWNoYXJnZWRfc3osXFxuMjcxMDpcXHRcXHRcXHRcXHRcXHRcXHRjLVxcdTAwM2VtaW5fcmVnaW9uX3N6KTtcXG4yNzExOlxcdFxcdFxcdFxcdGlmICghc3opXFxuMjcxMjpcXHRcXHRcXHRcXHRcXHRnb3RvIHVwZGF0ZV9zdGF0O1xcbjI3MTM6XFx0XFx0XFx0XFx0aWYgKGRhbW9uX3NwbGl0X3JlZ2lvbl9hdCh0LCByLCBzeikpXFxuMjcxNDpcXHRcXHRcXHRcXHRcXHRnb3RvIHVwZGF0ZV9zdGF0O1xcbjI3MTU6XFx0XFx0XFx0fVxcbjI3MTY6XFx0XFx0XFx0aWYgKGRhbW9zX2NvcmVfZmlsdGVyX291dChjLCB0LCByLCBzKSlcXG4yNzE3OlxcdFxcdFxcdFxcdHJldHVybjtcXG4yNzE4OlxcdFxcdFxcdGt0aW1lX2dldF9jb2Fyc2VfdHM2NChcXHUwMDI2YmVnaW4pO1xcbjI3MTk6XFx0XFx0XFx0dHJhY2VfZGFtb3NfYmVmb3JlX2FwcGx5KGNpZHgsIHNpZHgsIHRpZHgsIHIsIG5yX2FjY2Vzc2VzLFxcbjI3MjA6XFx0XFx0XFx0XFx0XFx0ZGFtb25fbnJfcmVnaW9ucyh0KSwgZG9fdHJhY2UpO1xcbjI3MjE6XFx0XFx0XFx0c3pfYXBwbGllZCA9IGMtXFx1MDAzZW9wcy5hcHBseV9zY2hlbWUoYywgdCwgciwgcyxcXG4yNzIyOlxcdFxcdFxcdFxcdFxcdFxcdTAwMjZzel9vcHNfZmlsdGVyX3Bhc3NlZCk7XFxuMjcyMzpcXHRcXHRcXHRkYW1vc193YWxrX2NhbGxfd2FsayhjLCB0LCByLCBzLCBzel9vcHNfZmlsdGVyX3Bhc3NlZCk7XFxuMjcyNDpcXHRcXHRcXHRrdGltZV9nZXRfY29hcnNlX3RzNjQoXFx1MDAyNmVuZCk7XFxuMjcyNTpcXHRcXHRcXHRxdW90YS1cXHUwMDNldG90YWxfY2hhcmdlZF9ucyArPSB0aW1lc3BlYzY0X3RvX25zKFxcdTAwMjZlbmQpIC1cXG4yNzI2OlxcdFxcdFxcdFxcdHRpbWVzcGVjNjRfdG9fbnMoXFx1MDAyNmJlZ2luKTtcXG4yNzI3OlxcdFxcdFxcdGRhbW9zX2NoYXJnZV9xdW90YShxdW90YSwgc3osIHN6X2FwcGxpZWQpO1xcbjI3Mjg6XFx0XFx0XFx0aWYgKGRhbW9zX3F1b3RhX2lzX2Z1bGwocXVvdGEsIGMtXFx1MDAzZW1pbl9yZWdpb25fc3opKSB7XFxuMjcyOTpcXHRcXHRcXHRcXHRxdW90YS1cXHUwMDNlY2hhcmdlX3RhcmdldF9mcm9tID0gdDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMDA6MzM6NDEuNDg3MDQyOTUzWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjYxNDY3Nzk4NTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZCwgaW4gdGhlIGZpcnN0IHBlcnNvbiwgYXNzdW1pbmcgYSBmaWVsZCBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBSZWxldmFudCBTZWN0aW9uKipcblxuUmlnaHQsIGxldCdzIHRha2UgYSBsb29rIGF0IGxpbmVzIDI3MzAtMjc3MC4gSSBuZWVkIHRvIGJlIHN1cmUgSSdtIG5vdCBtaXNzaW5nIGFueXRoaW5nIGNyaXRpY2FsIGluIHRoaXMgc2VjdGlvbi4gSSB3YW50IHRvIHplcm8gaW4gb24gdGhlIGNvcmUgb2YgdGhlIGlkZWEuIFdoYXQgYXJlIHRoZSBrZXkgYXJndW1lbnRzIGJlaW5nIG1hZGUgaGVyZT8gQXJlIHRoZXkgc3VwcG9ydGluZyB0aGUgY3VycmVudCB3b3JrLCBvciBkbyB0aGV5IG9mZmVyIHNvbWUgY2hhbGxlbmdpbmcgaWRlYXM/IEkgbmVlZCB0byBiZSBvYmplY3RpdmUsIGFuZCB0aGF0IGFsc28gbWVhbnMgYmVpbmcgY2FyZWZ1bCBub3QgdG8gZ2V0IGNhdWdodCBpbiBhIG5lZ2F0aXZlIGZlZWRiYWNrIGxvb3AgaWYgaXQgaGFwcGVucyB0byBiZSBjaGFsbGVuZ2luZy4gT2theSwgbGV0J3MgZGl2ZSBpbnRvIGl0IGFuZCBzZWUgd2hhdCB3ZSBoYXZlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NzI3LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wM1QwMDozMzo0Ny42MzM4MjU4NThaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjEwNDUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm1tL2RhbW9uL2NvcmUuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyNzMwLFxuICBcIkxpbmVDb3VudFwiOiA0NVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIyNzMwOlxcdFxcdFxcdFxcdHF1b3RhLVxcdTAwM2VjaGFyZ2VfYWRkcl9mcm9tID0gci1cXHUwMDNlYXIuZW5kO1xcbjI3MzE6XFx0XFx0XFx0fVxcbjI3MzI6XFx0XFx0fVxcbjI3MzM6XFx0XFx0aWYgKHMtXFx1MDAzZWFjdGlvbiAhPSBEQU1PU19TVEFUKVxcbjI3MzQ6XFx0XFx0XFx0ci1cXHUwMDNlYWdlID0gMDtcXG4yNzM1OlxcdFxcbjI3MzY6XFx0dXBkYXRlX3N0YXQ6XFxuMjczNzpcXHRcXHRkYW1vc191cGRhdGVfc3RhdChzLCBzeiwgc3pfYXBwbGllZCwgc3pfb3BzX2ZpbHRlcl9wYXNzZWQpO1xcbjI3Mzg6XFx0fVxcbjI3Mzk6XFx0XFxuMjc0MDpcXHRzdGF0aWMgdm9pZCBkYW1vbl9kb19hcHBseV9zY2hlbWVzKHN0cnVjdCBkYW1vbl9jdHggKmMsXFxuMjc0MTpcXHRcXHRcXHRcXHRcXHQgICBzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0LFxcbjI3NDI6XFx0XFx0XFx0XFx0XFx0ICAgc3RydWN0IGRhbW9uX3JlZ2lvbiAqcilcXG4yNzQzOlxcdHtcXG4yNzQ0OlxcdFxcdHN0cnVjdCBkYW1vcyAqcztcXG4yNzQ1OlxcdFxcbjI3NDY6XFx0XFx0ZGFtb25fZm9yX2VhY2hfc2NoZW1lKHMsIGMpIHtcXG4yNzQ3OlxcdFxcdFxcdHN0cnVjdCBkYW1vc19xdW90YSAqcXVvdGEgPSBcXHUwMDI2cy1cXHUwMDNlcXVvdGE7XFxuMjc0ODpcXHRcXG4yNzQ5OlxcdFxcdFxcdGlmICh0aW1lX2JlZm9yZShjLVxcdTAwM2VwYXNzZWRfc2FtcGxlX2ludGVydmFscywgcy1cXHUwMDNlbmV4dF9hcHBseV9zaXMpKVxcbjI3NTA6XFx0XFx0XFx0XFx0Y29udGludWU7XFxuMjc1MTpcXHRcXG4yNzUyOlxcdFxcdFxcdGlmICghcy1cXHUwMDNld21hcmtzLmFjdGl2YXRlZClcXG4yNzUzOlxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbjI3NTQ6XFx0XFxuMjc1NTpcXHRcXHRcXHRpZiAoIXF1b3RhLVxcdTAwM2Vlc3opXFxuMjc1NjpcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4yNzU3OlxcdFxcbjI3NTg6XFx0XFx0XFx0LyogQ2hlY2sgdGhlIHF1b3RhICovXFxuMjc1OTpcXHRcXHRcXHRpZiAoZGFtb3NfcXVvdGFfaXNfZnVsbChxdW90YSwgYy1cXHUwMDNlbWluX3JlZ2lvbl9zeikpXFxuMjc2MDpcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4yNzYxOlxcdFxcbjI3NjI6XFx0XFx0XFx0aWYgKGRhbW9zX3NraXBfY2hhcmdlZF9yZWdpb24odCwgciwgcywgYy1cXHUwMDNlbWluX3JlZ2lvbl9zeikpXFxuMjc2MzpcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4yNzY0OlxcdFxcbjI3NjU6XFx0XFx0XFx0aWYgKHMtXFx1MDAzZW1heF9ucl9zbmFwc2hvdHMgXFx1MDAyNlxcdTAwMjZcXG4yNzY2OlxcdFxcdFxcdFxcdFxcdHMtXFx1MDAzZW1heF9ucl9zbmFwc2hvdHMgXFx1MDAzYz0gcy1cXHUwMDNlc3RhdC5ucl9zbmFwc2hvdHMpXFxuMjc2NzpcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4yNzY4OlxcdFxcbjI3Njk6XFx0XFx0XFx0aWYgKGRhbW9zX3ZhbGlkX3RhcmdldChjLCByLCBzKSlcXG4yNzcwOlxcdFxcdFxcdFxcdGRhbW9zX2FwcGx5X3NjaGVtZShjLCB0LCByLCBzKTtcXG4yNzcxOlxcdFxcbjI3NzI6XFx0XFx0XFx0aWYgKGRhbW9uX2lzX2xhc3RfcmVnaW9uKHIsIHQpKVxcbjI3NzM6XFx0XFx0XFx0XFx0cy1cXHUwMDNlc3RhdC5ucl9zbmFwc2hvdHMrKztcXG4yNzc0OlxcdFxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMDA6MzM6NDcuNjM0MDM4MzU4WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjU5MTU5MzM1NTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIERBTU9OIFF1b3RhIEJlaGF2aW9yKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBXZSdyZSBsb29raW5nIGF0IGhvdyBEQU1PUywgd2hpY2ggaXMgYmFzZWQgb24gREFNT04gb3BlcmF0aW9uIHNjaGVtZXMsIGhhbmRsZXMgcXVvdGFzLCBzcGVjaWZpY2FsbHkgdGhlIGNhc2VzIHdoZXJlIHRoZSBlZmZlY3RpdmUgc2l6ZSAoYHF1b3RhLVx1MDAzZWVzemApIG9yIHRoZSBjaGFyZ2VkIHNpemUgKGBxdW90YS1cdTAwM2VjaGFyZ2VkX3N6YCkgaXMgemVyby4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGxvZ2ljIGZsb3cgaGVyZSwgcGFydGljdWxhcmx5IGJlZm9yZSB0aGlzIHBhdGNoIHdhcyBhcHBsaWVkLlxuXG5Mb29raW5nIGF0IHRoZSBgZGFtb3NfcXVvdGFfaXNfZnVsbGAgZnVuY3Rpb24sIHRoZXJlIGFyZSBhIGZldyBpbnRlcmVzdGluZyBjb25kaXRpb25zLiBJZiB0aGUgcXVvdGEgaXNuJ3Qgc2V0LCBmaW5lLCBpdCByZXR1cm5zIGBmYWxzZWAuIElmIGBjaGFyZ2VkX3N6YCBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gYGVzemAsIGl0IGFsc28gcmV0dXJucyB0cnVlLCBtYWtpbmcgc2Vuc2UuIEJ1dCB0aGlzIG5leHQgY29uZGl0aW9uIGlzIHdoZXJlIHRoaW5ncyBnZXQgYSBsaXR0bGUgdHJpY2t5OiBgcXVvdGEtXHUwMDNlZXN6IC0gcXVvdGEtXHUwMDNlY2hhcmdlZF9zeiBcdTAwM2MgbWluX3JlZ2lvbl9zemAuXG5cbldhaXQgYSBtaW51dGUsIHdoYXQgaGFwcGVucyBpZiBgZXN6YCBpcyB6ZXJvPyBPciwgaWYgYGVzemAgaXMgbGVzcyB0aGFuIGBtaW5fcmVnaW9uX3N6YCB3aGlsZSBgY2hhcmdlZF9zemAgaXMgemVybz8gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIGl0IHdvdWxkIGZhaWwgZWFybHksIGJ1dCBsZXQgbWUgY2hlY2sgdGhhdC4uLiBPa2F5LCBJZiBgZXN6YCBpcyBsZXNzIHRoYW4gYG1pbl9yZWdpb25fc3pgIGFuZCBgY2hhcmdlZF9zemAgaXMgemVybywgd2UgZ2V0IGBlc3ogLSAwIFx1MDAzYyBtaW5fcmVnaW9uX3N6YCB3aGljaCwgKnllcyosIHJldHVybnMgYHRydWVgLCBpbmRpY2F0aW5nIHRoZSBxdW90YSBpcyBmdWxsIGV2ZW4gYmVmb3JlIGl0J3MgYmVlbiB1c2VkLiBCdXQgaWYgYGVzemAgaXMgKmVxdWFsKiB0byB6ZXJvLCB0aGUgY29tcGFyaXNvbiBgMCBcdTAwM2U9IDBgIHdvdWxkIHJldHVybiB0cnVlIGFzIHdlbGwuXG5cblRoZW4sIGluIGBkYW1vbl9kb19hcHBseV9zY2hlbWVzYCwgd2UncmUgc2tpcHBpbmcgdGhlIHF1b3RhIGlmIGAhcXVvdGEtXHUwMDNlZXN6YC4gQW5kLCBiYWNrIGluIGBkYW1vc19xdW90YV9pc19mdWxsYCwgdGhlcmUncyBhIGNoZWNrIGZvciBgIXF1b3RhLVx1MDAzZWNoYXJnZWRfc3pgLCB3aGljaCB3b3VsZCByZXR1cm4gYGZhbHNlYC5cblxuU28sIGl0IHNlZW1zIHRoYXQgdGhlcmUncyBhIHBvdGVudGlhbCBxdWlyayBpbiB0aGUgbG9naWMgYXJvdW5kIGhvdyBEQU1PUyBoYW5kbGVzIHplcm8tc2l6ZWQgcXVvdGFzIG9yIHF1b3RhcyB0aGF0IGFyZSBzbWFsbGVyIHRoYW4gdGhlIG1pbmltYWwgcmVnaW9uIHNpemUuXG5cbk5vdywgYSBjb21wbGV0ZWx5IHNlcGFyYXRlIHRob3VnaHQ6IElzIERBTU9OIGV2ZW4gYWNjZXNzaWJsZSBhbmQgZnV6emVkIHdpdGhpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VPyBHb29kIG5ld3MsIGl0IGxvb2tzIGxpa2UgREFNT04gaXMgaW5kZWVkIHJlYWNoYWJsZSB0aHJvdWdoIHRoZSBzeXNmcyBpbnRlcmZhY2UgaW4gdXNlciBzcGFjZS4gVGhpcyBtZWFucyB0aGF0IHVzZXJzcGFjZSB0b29scyBsaWtlIHN5emthbGxlciBjYW4gaW50ZXJhY3Qgd2l0aCBEQU1PTiwgYWxsb3dpbmcgZm9yIHRoZSBjcmVhdGlvbiBvZiBjb250ZXh0cywgc2NoZW1lcywgcXVvdGFzLCBhbmQgdGFyZ2V0cy4gSSBzaG91bGQgc2VlIGlmIHN5emthbGxlciBvciB0aGUgc3lzZnMgYXJlIHByb3Blcmx5IGludm9raW5nIHRoZSBEQU1PTiBmdW5jdGlvbnMgaW4gdGVzdGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6OTU3MiwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ2MSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDAwOjMzOjUzLjU0OTk3NTAyWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MTA1Mjc3NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkYW1vbl9zeXNmc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9kYW1vblwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDM2ODcgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTktXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM6MTA6REVGSU5FX01VVEVYKGRhbW9uX3N5c2ZzX2xvY2spO1xcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTExLVxcbi0tXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmMtMTUtXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM6MTY6c3RydWN0IGRhbW9uX3N5c2ZzX3VsX3JhbmdlICpkYW1vbl9zeXNmc191bF9yYW5nZV9hbGxvYyhcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy0xNy1cXHRcXHR1bnNpZ25lZCBsb25nIG1pbixcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTE5LXtcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYzoyMDpcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfdWxfcmFuZ2UgKnJhbmdlID0ga21hbGxvY19vYmooKnJhbmdlKTtcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy0yMS1cXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jPTMxPXN0YXRpYyBzc2l6ZV90IG1pbl9zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLCBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgKmF0dHIsXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy0zMy17XFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM6MzQ6XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3VsX3JhbmdlICpyYW5nZSA9IGNvbnRhaW5lcl9vZihrb2JqLFxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jOjM1OlxcdFxcdFxcdHN0cnVjdCBkYW1vbl9zeXNmc191bF9yYW5nZSwga29iaik7XFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmMtMzYtXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYz00MD1zdGF0aWMgc3NpemVfdCBtaW5fc3RvcmUoc3RydWN0IGtvYmplY3QgKmtvYmosIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSAqYXR0cixcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTQyLXtcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYzo0MzpcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfdWxfcmFuZ2UgKnJhbmdlID0gY29udGFpbmVyX29mKGtvYmosXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM6NDQ6XFx0XFx0XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3VsX3JhbmdlLCBrb2JqKTtcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy00NS1cXHR1bnNpZ25lZCBsb25nIG1pbjtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jPTU2PXN0YXRpYyBzc2l6ZV90IG1heF9zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLCBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgKmF0dHIsXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy01OC17XFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM6NTk6XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3VsX3JhbmdlICpyYW5nZSA9IGNvbnRhaW5lcl9vZihrb2JqLFxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jOjYwOlxcdFxcdFxcdHN0cnVjdCBkYW1vbl9zeXNmc191bF9yYW5nZSwga29iaik7XFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmMtNjEtXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYz02NT1zdGF0aWMgc3NpemVfdCBtYXhfc3RvcmUoc3RydWN0IGtvYmplY3QgKmtvYmosIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSAqYXR0cixcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTY3LXtcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYzo2ODpcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfdWxfcmFuZ2UgKnJhbmdlID0gY29udGFpbmVyX29mKGtvYmosXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM6Njk6XFx0XFx0XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3VsX3JhbmdlLCBrb2JqKTtcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy03MC1cXHR1bnNpZ25lZCBsb25nIG1heDtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTgwLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jOjgxOnZvaWQgZGFtb25fc3lzZnNfdWxfcmFuZ2VfcmVsZWFzZShzdHJ1Y3Qga29iamVjdCAqa29iailcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy04Mi17XFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM6ODM6XFx0a2ZyZWUoY29udGFpbmVyX29mKGtvYmosIHN0cnVjdCBkYW1vbl9zeXNmc191bF9yYW5nZSwga29iaikpO1xcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTg0LX1cXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy04NS1cXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYzo4NjpzdGF0aWMgc3RydWN0IGtvYmpfYXR0cmlidXRlIGRhbW9uX3N5c2ZzX3VsX3JhbmdlX21pbl9hdHRyID1cXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy04Ny1cXHRcXHRfX0FUVFJfUldfTU9ERShtaW4sIDA2MDApO1xcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTg4LVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jOjg5OnN0YXRpYyBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgZGFtb25fc3lzZnNfdWxfcmFuZ2VfbWF4X2F0dHIgPVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTkwLVxcdFxcdF9fQVRUUl9SV19NT0RFKG1heCwgMDYwMCk7XFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmMtOTEtXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM6OTI6c3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmRhbW9uX3N5c2ZzX3VsX3JhbmdlX2F0dHJzW10gPSB7XFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM6OTM6XFx0XFx1MDAyNmRhbW9uX3N5c2ZzX3VsX3JhbmdlX21pbl9hdHRyLmF0dHIsXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM6OTQ6XFx0XFx1MDAyNmRhbW9uX3N5c2ZzX3VsX3JhbmdlX21heF9hdHRyLmF0dHIsXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmMtOTUtXFx0TlVMTCxcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy05Ni19O1xcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jOjk3OkFUVFJJQlVURV9HUk9VUFMoZGFtb25fc3lzZnNfdWxfcmFuZ2UpO1xcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTk4LVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jOjk5OmNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfdWxfcmFuZ2Vfa3R5cGUgPSB7XFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM6MTAwOlxcdC5yZWxlYXNlID0gZGFtb25fc3lzZnNfdWxfcmFuZ2VfcmVsZWFzZSxcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy0xMDEtXFx0LnN5c2ZzX29wcyA9IFxcdTAwMjZrb2JqX3N5c2ZzX29wcyxcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYzoxMDI6XFx0LmRlZmF1bHRfZ3JvdXBzID0gZGFtb25fc3lzZnNfdWxfcmFuZ2VfZ3JvdXBzLFxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTEwMy19O1xcbi0tXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmMtMTA1LVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jOjEwNjpzdGF0aWMgYm9vbCBkYW1vbl9zeXNmc19tZW1jZ19wYXRoX2VxKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZyxcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy0xMDctXFx0XFx0Y2hhciAqbWVtY2dfcGF0aF9idWYsIGNoYXIgKnBhdGgpXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy0xMTYtXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM6MTE3OmludCBkYW1vbl9zeXNmc19tZW1jZ19wYXRoX3RvX2lkKGNoYXIgKm1lbWNnX3BhdGgsIHU2NCAqaWQpXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmMtMTE4LXtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTEzNC1cXHRcXHRcXHRjb250aW51ZTtcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYzoxMzU6XFx0XFx0aWYgKGRhbW9uX3N5c2ZzX21lbWNnX3BhdGhfZXEobWVtY2csIHBhdGgsIG1lbWNnX3BhdGgpKSB7XFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmMtMTM2LVxcdFxcdFxcdCppZCA9IG1lbV9jZ3JvdXBfaWQobWVtY2cpO1xcbi0tXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtOC1cXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaDo5OmV4dGVybiBzdHJ1Y3QgbXV0ZXggZGFtb25fc3lzZnNfbG9jaztcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC0xMC1cXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaDoxMTpzdHJ1Y3QgZGFtb25fc3lzZnNfdWxfcmFuZ2Uge1xcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTEyLVxcdHN0cnVjdCBrb2JqZWN0IGtvYmo7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC0xNi1cXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaDoxNzpzdHJ1Y3QgZGFtb25fc3lzZnNfdWxfcmFuZ2UgKmRhbW9uX3N5c2ZzX3VsX3JhbmdlX2FsbG9jKFxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTE4LVxcdFxcdHVuc2lnbmVkIGxvbmcgbWluLFxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTE5LVxcdFxcdHVuc2lnbmVkIGxvbmcgbWF4KTtcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaDoyMDp2b2lkIGRhbW9uX3N5c2ZzX3VsX3JhbmdlX3JlbGVhc2Uoc3RydWN0IGtvYmplY3QgKmtvYmopO1xcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTIxLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oOjIyOmV4dGVybiBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9uX3N5c2ZzX3VsX3JhbmdlX2t0eXBlO1xcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTIzLVxcbi0tXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtMjctXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6Mjg6c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZXMge1xcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTI5LVxcdHN0cnVjdCBrb2JqZWN0IGtvYmo7XFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6MzA6XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZSAqKnNjaGVtZXNfYXJyO1xcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTMxLVxcdGludCBucjtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTMzLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oOjM0OnN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVzICpkYW1vbl9zeXNmc19zY2hlbWVzX2FsbG9jKHZvaWQpO1xcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oOjM1OnZvaWQgZGFtb25fc3lzZnNfc2NoZW1lc19ybV9kaXJzKHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVzICpzY2hlbWVzKTtcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC0zNi1cXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaDozNzpleHRlcm4gY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vbl9zeXNmc19zY2hlbWVzX2t0eXBlO1xcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTM4LVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oOjM5OmludCBkYW1vbl9zeXNmc19hZGRfc2NoZW1lcyhzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6NDA6XFx0XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZXMgKnN5c2ZzX3NjaGVtZXMpO1xcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTQxLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oOjQyOnZvaWQgZGFtb25fc3lzZnNfc2NoZW1lc191cGRhdGVfc3RhdHMoXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6NDM6XFx0XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZXMgKnN5c2ZzX3NjaGVtZXMsXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtNDQtXFx0XFx0c3RydWN0IGRhbW9uX2N0eCAqY3R4KTtcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC00NS1cXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaDo0Njp2b2lkIGRhbW9zX3N5c2ZzX3BvcHVsYXRlX3JlZ2lvbl9kaXIoc3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZXMgKnN5c2ZzX3NjaGVtZXMsXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtNDctXFx0XFx0c3RydWN0IGRhbW9uX2N0eCAqY3R4LCBzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0LFxcbi0tXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtNTAtXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6NTE6aW50IGRhbW9uX3N5c2ZzX3NjaGVtZXNfY2xlYXJfcmVnaW9ucyhcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaDo1MjpcXHRcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lcyAqc3lzZnNfc2NoZW1lcyk7XFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtNTMtXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6NTQ6aW50IGRhbW9zX3N5c2ZzX3NldF9xdW90YV9zY29yZXMoc3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZXMgKnN5c2ZzX3NjaGVtZXMsXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtNTUtXFx0XFx0c3RydWN0IGRhbW9uX2N0eCAqY3R4KTtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oPTU3PXZvaWQgZGFtb3Nfc3lzZnNfdXBkYXRlX2VmZmVjdGl2ZV9xdW90YXMoXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6NTg6XFx0XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZXMgKnN5c2ZzX3NjaGVtZXMsXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtNTktXFx0XFx0c3RydWN0IGRhbW9uX2N0eCAqY3R4KTtcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC02MC1cXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaDo2MTppbnQgZGFtb25fc3lzZnNfbWVtY2dfcGF0aF90b19pZChjaGFyICptZW1jZ19wYXRoLCB1NjQgKmlkKTtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0xNDE9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb3Nfc3lzZnNfcHJvYmVzX2t0eXBlID0ge1xcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE0OS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTUwOnN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uIHtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTUxLVxcdHN0cnVjdCBrb2JqZWN0IGtvYmo7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTU5LVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNjA6c3RhdGljIHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uICpkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uX2FsbG9jKFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNjEtXFx0XFx0c3RydWN0IGRhbW9uX3JlZ2lvbiAqcmVnaW9uLCBzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE2Mi17XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE2MzpcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbiAqc3lzZnNfcmVnaW9uID0ga21hbGxvY19vYmooKnN5c2ZzX3JlZ2lvbik7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE2NC1cXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0xNzY9c3RhdGljIGludCBkYW1vc19zeXNmc19yZWdpb25fYWRkX2RpcnMoXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE3NzpcXHRcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbiAqcmVnaW9uLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNzgtXFx0XFx0c3RydWN0IGRhbW9uX2N0eCAqY3R4LFxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTIwMj1zdGF0aWMgdm9pZCBkYW1vc19zeXNmc19yZWdpb25fcm1fZGlycyhcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MjAzOlxcdFxcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uICpyZWdpb24pXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTIwNC17XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MjA5PXN0YXRpYyBzc2l6ZV90IHN0YXJ0X3Nob3coc3RydWN0IGtvYmplY3QgKmtvYmosIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSAqYXR0cixcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yMTEte1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyMTI6XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb24gKnJlZ2lvbiA9IGNvbnRhaW5lcl9vZihrb2JqLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyMTM6XFx0XFx0XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb24sIGtvYmopO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yMTQtXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MjE4PXN0YXRpYyBzc2l6ZV90IGVuZF9zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLCBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgKmF0dHIsXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjIwLXtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MjIxOlxcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uICpyZWdpb24gPSBjb250YWluZXJfb2Yoa29iaixcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MjIyOlxcdFxcdFxcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uLCBrb2JqKTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjIzLVxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTIyNz1zdGF0aWMgc3NpemVfdCBucl9hY2Nlc3Nlc19zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLFxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTIyOS17XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjIzMDpcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbiAqcmVnaW9uID0gY29udGFpbmVyX29mKGtvYmosXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjIzMTpcXHRcXHRcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbiwga29iaik7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTIzMi1cXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0yMzY9c3RhdGljIHNzaXplX3QgYWdlX3Nob3coc3RydWN0IGtvYmplY3QgKmtvYmosIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSAqYXR0cixcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yMzgte1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyMzk6XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb24gKnJlZ2lvbiA9IGNvbnRhaW5lcl9vZihrb2JqLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyNDA6XFx0XFx0XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb24sIGtvYmopO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yNDEtXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MjQ1PXN0YXRpYyBzc2l6ZV90IHN6X2ZpbHRlcl9wYXNzZWRfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaixcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yNDcte1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyNDg6XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb24gKnJlZ2lvbiA9IGNvbnRhaW5lcl9vZihrb2JqLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyNDk6XFx0XFx0XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb24sIGtvYmopO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yNTAtXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjUzLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyNTQ6c3RhdGljIHZvaWQgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbl9yZWxlYXNlKHN0cnVjdCBrb2JqZWN0ICprb2JqKVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yNTUte1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyNTY6XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb24gKnJlZ2lvbiA9IGNvbnRhaW5lcl9vZihrb2JqLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyNTc6XFx0XFx0XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb24sIGtvYmopO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yNTgtXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjYxLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyNjI6c3RhdGljIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uX3N0YXJ0X2F0dHIgPVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yNjMtXFx0XFx0X19BVFRSX1JPX01PREUoc3RhcnQsIDA0MDApO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yNjQtXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjI2NTpzdGF0aWMgc3RydWN0IGtvYmpfYXR0cmlidXRlIGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb25fZW5kX2F0dHIgPVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yNjYtXFx0XFx0X19BVFRSX1JPX01PREUoZW5kLCAwNDAwKTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjY3LVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyNjg6c3RhdGljIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uX25yX2FjY2Vzc2VzX2F0dHIgPVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yNjktXFx0XFx0X19BVFRSX1JPX01PREUobnJfYWNjZXNzZXMsIDA0MDApO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yNzAtXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjI3MTpzdGF0aWMgc3RydWN0IGtvYmpfYXR0cmlidXRlIGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb25fYWdlX2F0dHIgPVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yNzItXFx0XFx0X19BVFRSX1JPX01PREUoYWdlLCAwNDAwKTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjczLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyNzQ6c3RhdGljIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uX3N6X2ZpbHRlcl9wYXNzZWRfYXR0ciA9XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTI3NS1cXHRcXHRfX0FUVFJfUk9fTU9ERShzel9maWx0ZXJfcGFzc2VkLCAwNDAwKTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjc2LVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyNzc6c3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb25fYXR0cnNbXSA9IHtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6Mjc4OlxcdFxcdTAwMjZkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uX3N0YXJ0X2F0dHIuYXR0cixcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6Mjc5OlxcdFxcdTAwMjZkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uX2VuZF9hdHRyLmF0dHIsXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjI4MDpcXHRcXHUwMDI2ZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbl9ucl9hY2Nlc3Nlc19hdHRyLmF0dHIsXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjI4MTpcXHRcXHUwMDI2ZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbl9hZ2VfYXR0ci5hdHRyLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyODI6XFx0XFx1MDAyNmRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb25fc3pfZmlsdGVyX3Bhc3NlZF9hdHRyLmF0dHIsXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTI4My1cXHROVUxMLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yODQtfTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6Mjg1OkFUVFJJQlVURV9HUk9VUFMoZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbik7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTI4Ni1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6Mjg3OnN0YXRpYyBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb25fa3R5cGUgPSB7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjI4ODpcXHQucmVsZWFzZSA9IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb25fcmVsZWFzZSxcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjg5LVxcdC5zeXNmc19vcHMgPSBcXHUwMDI2a29ial9zeXNmc19vcHMsXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjI5MDpcXHQuZGVmYXVsdF9ncm91cHMgPSBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uX2dyb3VwcyxcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjkxLX07XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjk2LVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyOTc6c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb25zIHtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjk4LVxcdHN0cnVjdCBrb2JqZWN0IGtvYmo7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzAzLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzozMDQ6c3RhdGljIHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9ucyAqXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjMwNTpkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uc19hbGxvYyh2b2lkKVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zMDYte1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzozMDc6XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb25zICpyZWdpb25zID0ga21hbGxvY19vYmooKnJlZ2lvbnMpO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zMDgtXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MzE5PXN0YXRpYyBzc2l6ZV90IHRvdGFsX2J5dGVzX3Nob3coc3RydWN0IGtvYmplY3QgKmtvYmosXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzIxLXtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MzIyOlxcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9ucyAqcmVnaW9ucyA9IGNvbnRhaW5lcl9vZihrb2JqLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzozMjM6XFx0XFx0XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb25zLCBrb2JqKTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzI0LVxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTMyNy1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MzI4OnN0YXRpYyB2b2lkIGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb25zX3JtX2RpcnMoXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjMyOTpcXHRcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbnMgKnJlZ2lvbnMpXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTMzMC17XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjMzMTpcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbiAqciwgKm5leHQ7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTMzMi1cXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zNDEtXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjM0MjpzdGF0aWMgdm9pZCBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uc19yZWxlYXNlKHN0cnVjdCBrb2JqZWN0ICprb2JqKVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zNDMte1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzozNDQ6XFx0a2ZyZWUoY29udGFpbmVyX29mKGtvYmosIHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9ucywga29iaikpO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zNDUtfVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zNDYtXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjM0NzpzdGF0aWMgc3RydWN0IGtvYmpfYXR0cmlidXRlIGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb25zX3RvdGFsX2J5dGVzX2F0dHIgPVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zNDgtXFx0XFx0X19BVFRSX1JPX01PREUodG90YWxfYnl0ZXMsIDA0MDApO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zNDktXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjM1MDpzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbnNfYXR0cnNbXSA9IHtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MzUxOlxcdFxcdTAwMjZkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uc190b3RhbF9ieXRlc19hdHRyLmF0dHIsXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTM1Mi1cXHROVUxMLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zNTMtfTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MzU0OkFUVFJJQlVURV9HUk9VUFMoZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbnMpO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zNTUtXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjM1NjpzdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uc19rdHlwZSA9IHtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MzU3OlxcdC5yZWxlYXNlID0gZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbnNfcmVsZWFzZSxcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzU4LVxcdC5zeXNmc19vcHMgPSBcXHUwMDI2a29ial9zeXNmc19vcHMsXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjM1OTpcXHQuZGVmYXVsdF9ncm91cHMgPSBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uc19ncm91cHMsXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTM2MC19O1xcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTM2NS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MzY2OnN0cnVjdCBkYW1vbl9zeXNmc19zdGF0cyB7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTM2Ny1cXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTM3Ny1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6Mzc4OnN0YXRpYyBzdHJ1Y3QgZGFtb25fc3lzZnNfc3RhdHMgKmRhbW9uX3N5c2ZzX3N0YXRzX2FsbG9jKHZvaWQpXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTM3OS17XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjM4MDpcXHRyZXR1cm4ga3phbGxvY19vYmooc3RydWN0IGRhbW9uX3N5c2ZzX3N0YXRzKTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzgxLX1cXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0zODM9c3RhdGljIHNzaXplX3QgbnJfdHJpZWRfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaiwgc3RydWN0IGtvYmpfYXR0cmlidXRlICphdHRyLFxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTM4NS17XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjM4NjpcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc3RhdHMgKnN0YXRzID0gY29udGFpbmVyX29mKGtvYmosXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjM4NzpcXHRcXHRcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc3RhdHMsIGtvYmopO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zODgtXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MzkyPXN0YXRpYyBzc2l6ZV90IHN6X3RyaWVkX3Nob3coc3RydWN0IGtvYmplY3QgKmtvYmosIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSAqYXR0cixcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zOTQte1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzozOTU6XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3N0YXRzICpzdGF0cyA9IGNvbnRhaW5lcl9vZihrb2JqLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzozOTY6XFx0XFx0XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3N0YXRzLCBrb2JqKTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzk3LVxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTQwMT1zdGF0aWMgc3NpemVfdCBucl9hcHBsaWVkX3Nob3coc3RydWN0IGtvYmplY3QgKmtvYmosXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNDAzLXtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NDA0OlxcdHN0cnVjdCBkYW1vbl9zeXNmc19zdGF0cyAqc3RhdHMgPSBjb250YWluZXJfb2Yoa29iaixcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NDA1OlxcdFxcdFxcdHN0cnVjdCBkYW1vbl9zeXNmc19zdGF0cywga29iaik7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTQwNi1cXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz00MTA9c3RhdGljIHNzaXplX3Qgc3pfYXBwbGllZF9zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLFxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTQxMi17XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjQxMzpcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc3RhdHMgKnN0YXRzID0gY29udGFpbmVyX29mKGtvYmosXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjQxNDpcXHRcXHRcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc3RhdHMsIGtvYmopO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy00MTUtXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9NDE5PXN0YXRpYyBzc2l6ZV90IHN6X29wc19maWx0ZXJfcGFzc2VkX3Nob3coc3RydWN0IGtvYmplY3QgKmtvYmosXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNDIxLXtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NDIyOlxcdHN0cnVjdCBkYW1vbl9zeXNmc19zdGF0cyAqc3RhdHMgPSBjb250YWluZXJfb2Yoa29iaixcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NDIzOlxcdFxcdFxcdHN0cnVjdCBkYW1vbl9zeXNmc19zdGF0cywga29iaik7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTQyNC1cXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz00Mjg9c3RhdGljIHNzaXplX3QgcXRfZXhjZWVkc19zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLFxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTQzMC17XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjQzMTpcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc3RhdHMgKnN0YXRzID0gY29udGFpbmVyX29mKGtvYmosXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjQzMjpcXHRcXHRcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc3RhdHMsIGtvYmopO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy00MzMtXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9NDM3PXN0YXRpYyBzc2l6ZV90IG5yX3NuYXBzaG90c19zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLFxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTQzOS17XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjQ0MDpcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc3RhdHMgKnN0YXRzID0gY29udGFpbmVyX29mKGtvYmosXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjQ0MTpcXHRcXHRcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc3RhdHMsIGtvYmopO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy00NDItXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9NDQ2PXN0YXRpYyBzc2l6ZV90IG1heF9ucl9zbmFwc2hvdHNfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaixcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy00NDgte1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo0NDk6XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3N0YXRzICpzdGF0cyA9IGNvbnRhaW5lcl9vZihrb2JqLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo0NTA6XFx0XFx0XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3N0YXRzLCBrb2JqKTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNDUxLVxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTQ1NT1zdGF0aWMgc3NpemVfdCBtYXhfbnJfc25hcHNob3RzX3N0b3JlKHN0cnVjdCBrb2JqZWN0ICprb2JqLFxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTQ1Ny17XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjQ1ODpcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc3RhdHMgKnN0YXRzID0gY29udGFpbmVyX29mKGtvYmosXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjQ1OTpcXHRcXHRcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc3RhdHMsIGtvYmopO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy00NjAtXFx0dW5zaWduZWQgbG9uZyBtYXhfbnJfc25hcHNob3RzLCBlcnIgPSBrc3RydG91bChidWYsIDAsIFxcdTAwMjZtYXhfbnJfc25hcHNob3RzKTtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy00NjctXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjQ2ODpzdGF0aWMgdm9pZCBkYW1vbl9zeXNmc19zdGF0c19yZWxlYXNlKHN0cnVjdCBrb2JqZWN0ICprb2JqKVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy00Njkte1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo0NzA6XFx0a2ZyZWUoY29udGFpbmVyX29mKGtvYmosIHN0cnVjdCBkYW1vbl9zeXNmc19zdGF0cywga29iaikpO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy00NzEtfVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy00NzItXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjQ3MzpzdGF0aWMgc3RydWN0IGtvYmpfYXR0cmlidXRlIGRhbW9uX3N5c2ZzX3N0YXRzX25yX3RyaWVkX2F0dHIgPVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy00NzQtXFx0XFx0X19BVFRSX1JPX01PREUobnJfdHJpZWQsIDA0MDApO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy00NzUtXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjQ3NjpzdGF0aWMgc3RydWN0IGtvYmpfYXR0cmlidXRlIGRhbW9uX3N5c2ZzX3N0YXRzX3N6X3RyaWVkX2F0dHIgPVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy00NzctXFx0XFx0X19BVFRSX1JPX01PREUoc3pfdHJpZWQsIDA0MDApO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy00NzgtXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjQ3OTpzdGF0aWMgc3RydWN0IGtvYmpfYXR0cmlidXRlIGRhbW9uX3N5c2ZzX3N0YXRzX25yX2FwcGxpZWRfYXR0ciA9XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTQ4MC1cXHRcXHRfX0FUVFJfUk9fTU9ERShucl9hcHBsaWVkLCAwNDAwKTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNDgxLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo0ODI6c3RhdGljIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSBkYW1vbl9zeXNmc19zdGF0c19zel9hcHBsaWVkX2F0dHIgPVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy00ODMtXFx0XFx0X19BVFRSX1JPX01PREUoc3pfYXBwbGllZCwgMDQwMCk7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTQ4NC1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NDg1OnN0YXRpYyBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgZGFtb25fc3lzZnNfc3RhdHNfc3pfb3BzX2ZpbHRlcl9wYXNzZWRfYXR0ciA9XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTQ4Ni1cXHRcXHRfX0FUVFJfUk9fTU9ERShzel9vcHNfZmlsdGVyX3Bhc3NlZCwgMDQwMCk7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTQ4Ny1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NDg4OnN0YXRpYyBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgZGFtb25fc3lzZnNfc3RhdHNfcXRfZXhjZWVkc19hdHRyID1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNDg5LVxcdFxcdF9fQVRUUl9ST19NT0RFKHF0X2V4Y2VlZHMsIDA0MDApO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy00OTAtXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjQ5MTpzdGF0aWMgc3RydWN0IGtvYmpfYXR0cmlidXRlIGRhbW9uX3N5c2ZzX3N0YXRzX25yX3NuYXBzaG90c19hdHRyID1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNDkyLVxcdFxcdF9fQVRUUl9ST19NT0RFKG5yX3NuYXBzaG90cywgMDQwMCk7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTQ5My1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NDk0OnN0YXRpYyBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgZGFtb25fc3lzZnNfc3RhdHNfbWF4X25yX3NuYXBzaG90c19hdHRyID1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNDk1LVxcdFxcdF9fQVRUUl9SV19NT0RFKG1heF9ucl9zbmFwc2hvdHMsIDA2MDApO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy00OTYtXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjQ5NzpzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqZGFtb25fc3lzZnNfc3RhdHNfYXR0cnNbXSA9IHtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NDk4OlxcdFxcdTAwMjZkYW1vbl9zeXNmc19zdGF0c19ucl90cmllZF9hdHRyLmF0dHIsXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjQ5OTpcXHRcXHUwMDI2ZGFtb25fc3lzZnNfc3RhdHNfc3pfdHJpZWRfYXR0ci5hdHRyLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo1MDA6XFx0XFx1MDAyNmRhbW9uX3N5c2ZzX3N0YXRzX25yX2FwcGxpZWRfYXR0ci5hdHRyLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo1MDE6XFx0XFx1MDAyNmRhbW9uX3N5c2ZzX3N0YXRzX3N6X2FwcGxpZWRfYXR0ci5hdHRyLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo1MDI6XFx0XFx1MDAyNmRhbW9uX3N5c2ZzX3N0YXRzX3N6X29wc19maWx0ZXJfcGFzc2VkX2F0dHIuYXR0cixcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NTAzOlxcdFxcdTAwMjZkYW1vbl9zeXNmc19zdGF0c19xdF9leGNlZWRzX2F0dHIuYXR0cixcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NTA0OlxcdFxcdTAwMjZkYW1vbl9zeXNmc19zdGF0c19ucl9zbmFwc2hvdHNfYXR0ci5hdHRyLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo1MDU6XFx0XFx1MDAyNmRhbW9uX3N5c2ZzX3N0YXRzX21heF9ucl9zbmFwc2hvdHNfYXR0ci5hdHRyLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy01MDYtXFx0TlVMTCxcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNTA3LX07XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjUwODpBVFRSSUJVVEVfR1JPVVBTKGRhbW9uX3N5c2ZzX3N0YXRzKTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNTA5LVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo1MTA6c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfc3RhdHNfa3R5cGUgPSB7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjUxMTpcXHQucmVsZWFzZSA9IGRhbW9uX3N5c2ZzX3N0YXRzX3JlbGVhc2UsXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTUxMi1cXHQuc3lzZnNfb3BzID0gXFx1MDAyNmtvYmpfc3lzZnNfb3BzLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo1MTM6XFx0LmRlZmF1bHRfZ3JvdXBzID0gZGFtb25fc3lzZnNfc3RhdHNfZ3JvdXBzLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy01MTQtfTtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz01MjM9ZW51bSBkYW1vc19zeXNmc19maWx0ZXJfaGFuZGxlX2xheWVyIHtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy01MjgtXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjUyOTpzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlciB7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTUzMC1cXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTU0MC1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NTQxOnN0YXRpYyBzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlciAqZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlcl9hbGxvYyhcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNTQyLVxcdFxcdGVudW0gZGFtb3Nfc3lzZnNfZmlsdGVyX2hhbmRsZV9sYXllciBsYXllcilcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNTQzLXtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NTQ0OlxcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfZmlsdGVyICpmaWx0ZXI7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTU0NS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NTQ2OlxcdGZpbHRlciA9IGt6YWxsb2Nfb2JqKHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfZmlsdGVyKTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNTQ3LVxcdGlmIChmaWx0ZXIpXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9NTkzPXN0YXRpYyBzc2l6ZV90IHR5cGVfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaixcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy01OTUte1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo1OTY6XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9maWx0ZXIgKmZpbHRlciA9IGNvbnRhaW5lcl9vZihrb2JqLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo1OTc6XFx0XFx0XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9maWx0ZXIsIGtvYmopO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy01OTgtXFx0aW50IGk7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9NjI3PXN0YXRpYyBzc2l6ZV90IHR5cGVfc3RvcmUoc3RydWN0IGtvYmplY3QgKmtvYmosXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNjI5LXtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NjMwOlxcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfZmlsdGVyICpmaWx0ZXIgPSBjb250YWluZXJfb2Yoa29iaixcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NjMxOlxcdFxcdFxcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfZmlsdGVyLCBrb2JqKTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNjMyLVxcdHNzaXplX3QgcmV0ID0gLUVJTlZBTDtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz02NTI9c3RhdGljIHNzaXplX3QgbWF0Y2hpbmdfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaixcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy02NTQte1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo2NTU6XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9maWx0ZXIgKmZpbHRlciA9IGNvbnRhaW5lcl9vZihrb2JqLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo2NTY6XFx0XFx0XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9maWx0ZXIsIGtvYmopO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy02NTctXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9NjYxPXN0YXRpYyBzc2l6ZV90IG1hdGNoaW5nX3N0b3JlKHN0cnVjdCBrb2JqZWN0ICprb2JqLFxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTY2My17XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjY2NDpcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlciAqZmlsdGVyID0gY29udGFpbmVyX29mKGtvYmosXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjY2NTpcXHRcXHRcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlciwga29iaik7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTY2Ni1cXHRib29sIG1hdGNoaW5nO1xcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTY3Nj1zdGF0aWMgc3NpemVfdCBhbGxvd19zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLFxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTY3OC17XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjY3OTpcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlciAqZmlsdGVyID0gY29udGFpbmVyX29mKGtvYmosXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjY4MDpcXHRcXHRcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlciwga29iaik7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTY4MS1cXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz02ODU9c3RhdGljIHNzaXplX3QgYWxsb3dfc3RvcmUoc3RydWN0IGtvYmplY3QgKmtvYmosXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNjg3LXtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6Njg4OlxcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfZmlsdGVyICpmaWx0ZXIgPSBjb250YWluZXJfb2Yoa29iaixcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6Njg5OlxcdFxcdFxcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfZmlsdGVyLCBrb2JqKTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNjkwLVxcdGJvb2wgYWxsb3c7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9NzAwPXN0YXRpYyBzc2l6ZV90IG1lbWNnX3BhdGhfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaixcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy03MDIte1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo3MDM6XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9maWx0ZXIgKmZpbHRlciA9IGNvbnRhaW5lcl9vZihrb2JqLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo3MDQ6XFx0XFx0XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9maWx0ZXIsIGtvYmopO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy03MDUtXFx0aW50IGxlbjtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNzA2LVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo3MDc6XFx0aWYgKCFtdXRleF90cnlsb2NrKFxcdTAwMjZkYW1vbl9zeXNmc19sb2NrKSlcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNzA4LVxcdFxcdHJldHVybiAtRUJVU1k7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNzEwLVxcdFxcdFxcdGZpbHRlci1cXHUwMDNlbWVtY2dfcGF0aCA/IGZpbHRlci1cXHUwMDNlbWVtY2dfcGF0aCA6IFxcXCJcXFwiKTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NzExOlxcdG11dGV4X3VubG9jayhcXHUwMDI2ZGFtb25fc3lzZnNfbG9jayk7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTcxMi1cXHRyZXR1cm4gbGVuO1xcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTcxNT1zdGF0aWMgc3NpemVfdCBtZW1jZ19wYXRoX3N0b3JlKHN0cnVjdCBrb2JqZWN0ICprb2JqLFxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTcxNy17XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjcxODpcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlciAqZmlsdGVyID0gY29udGFpbmVyX29mKGtvYmosXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjcxOTpcXHRcXHRcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlciwga29iaik7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTcyMC1cXHRjaGFyICpwYXRoID0ga21hbGxvY19hcnJheShzaXplX2FkZChjb3VudCwgMSksIHNpemVvZigqcGF0aCksXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNzI2LVxcdHN0cnNjcHkocGF0aCwgYnVmLCBjb3VudCArIDEpO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo3Mjc6XFx0aWYgKCFtdXRleF90cnlsb2NrKFxcdTAwMjZkYW1vbl9zeXNmc19sb2NrKSkge1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy03MjgtXFx0XFx0a2ZyZWUocGF0aCk7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNzMyLVxcdGZpbHRlci1cXHUwMDNlbWVtY2dfcGF0aCA9IHBhdGg7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjczMzpcXHRtdXRleF91bmxvY2soXFx1MDAyNmRhbW9uX3N5c2ZzX2xvY2spO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy03MzQtXFx0cmV0dXJuIGNvdW50O1xcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTczNz1zdGF0aWMgc3NpemVfdCBhZGRyX3N0YXJ0X3Nob3coc3RydWN0IGtvYmplY3QgKmtvYmosXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNzM5LXtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NzQwOlxcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfZmlsdGVyICpmaWx0ZXIgPSBjb250YWluZXJfb2Yoa29iaixcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NzQxOlxcdFxcdFxcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfZmlsdGVyLCBrb2JqKTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNzQyLVxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTc0Nj1zdGF0aWMgc3NpemVfdCBhZGRyX3N0YXJ0X3N0b3JlKHN0cnVjdCBrb2JqZWN0ICprb2JqLFxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTc0OC17XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjc0OTpcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlciAqZmlsdGVyID0gY29udGFpbmVyX29mKGtvYmosXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjc1MDpcXHRcXHRcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlciwga29iaik7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTc1MS1cXHRpbnQgZXJyID0ga3N0cnRvdWwoYnVmLCAwLCBcXHUwMDI2ZmlsdGVyLVxcdTAwM2VhZGRyX3JhbmdlLnN0YXJ0KTtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz03NTY9c3RhdGljIHNzaXplX3QgYWRkcl9lbmRfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaixcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy03NTgte1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo3NTk6XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9maWx0ZXIgKmZpbHRlciA9IGNvbnRhaW5lcl9vZihrb2JqLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo3NjA6XFx0XFx0XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9maWx0ZXIsIGtvYmopO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy03NjEtXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9NzY1PXN0YXRpYyBzc2l6ZV90IGFkZHJfZW5kX3N0b3JlKHN0cnVjdCBrb2JqZWN0ICprb2JqLFxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTc2Ny17XFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDAwOjMzOjUzLjYyMTAzMzcwNVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMzk0ODA3NTE5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBEQU1PUyBTY2hlbWUgRXhlY3V0aW9uKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBJdCBsb29rcyBsaWtlIHdlJ3JlIGRpdmluZyBpbnRvIHRoZSBpbm5lciB3b3JraW5ncyBvZiBEQU1PUyAoRGF0YSBBY2Nlc3MgTW9uaXRvcmluZyBhbmQgT3BlcmF0aW9ucykgc2NoZW1lcywgd2hpY2ggYXJlIGNydWNpYWwgZm9yIHRoaW5ncyBsaWtlIHF1b3RhIGVuZm9yY2VtZW50LCBtZW1vcnkgcmVjbGFtYXRpb24sIExSVSBzb3J0aW5nLCBhbmQgc3RhdGlzdGljYWwgdHJhY2tpbmcuIFRoZSBjb21taXQgc3BlY2lmaWNhbGx5IHRvdWNoZXMgYG1tL2RhbW9uL2NvcmUuY2AsIGZvY3VzaW5nIG9uIHRoZSBmdW5jdGlvbnMgYGRhbW9zX3F1b3RhX2lzX2Z1bGxgIGFuZCBgZGFtb25fZG9fYXBwbHlfc2NoZW1lc2AuXG5cbk15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIHRyYWNlIHRoZSBleGVjdXRpb24gZmxvdy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBvdGhlciBmdW5jdGlvbnMgaW4gYG1tL2RhbW9uL2NvcmUuY2AgYXJlIGludm9rZWQgZHVyaW5nIHRoZSBleGVjdXRpb24gb2YgYSBEQU1PUyBzY2hlbWUgb3Igd2hlbiBhIGNvbnRleHQgaXMgYmVpbmcgcHJvY2Vzc2VkIHdpdGhpbiB0aGlzIG1vZHVsZS4gVGhlIGdvYWwgaXMgYSBjbGVhciBwaWN0dXJlIG9mIGhvdyB0aGVzZSBzY2hlbWVzIGFyZSB0cmlnZ2VyZWQgYW5kIHdoYXQgdGhlaXIgZGVwZW5kZW5jaWVzIGFyZS5cblxuVG8gc3RhcnQsIEknbGwgaWRlbnRpZnkgdGhlIG5vbi1zdGF0aWMgZW50cnkgcG9pbnRzIHdpdGhpbiBgbW0vZGFtb24vY29yZS5jYC4gS25vd2luZyB0aGUgZXh0ZXJuYWxseSBhY2Nlc3NpYmxlIGZ1bmN0aW9ucyB3aWxsIGdpdmUgbWUgdGhlIGJlc3Qgb3ZlcnZpZXcgb2YgaG93IHRoZSBEQU1PUyBjb3JlIGlzIGludGVyYWN0ZWQgd2l0aCBieSBvdGhlciBtb2R1bGVzIG9yIHRoZSBrZXJuZWwgYXMgYSB3aG9sZS4gVGhpcyBpcyB0aGUgZmlyc3Qgc3RlcCB0b3dhcmRzIHVuZGVyc3RhbmRpbmcgdGhlIGZ1bGwgZXhlY3V0aW9uIHBhdGguXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyMzkyLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDAwOjMzOjU2LjAxNTg0MzgyM1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAwNjU2MDUzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5bYS16QS1aX10uKlxcXFwoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL2RhbW9uL2NvcmUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDgwNiBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxubW0vZGFtb24vY29yZS5jLTI1LVxcbm1tL2RhbW9uL2NvcmUuYzoyNjpzdGF0aWMgREVGSU5FX01VVEVYKGRhbW9uX2xvY2spO1xcbm1tL2RhbW9uL2NvcmUuYy0yNy1zdGF0aWMgaW50IG5yX3J1bm5pbmdfY3R4cztcXG5tbS9kYW1vbi9jb3JlLmM9Mjg9c3RhdGljIGJvb2wgcnVubmluZ19leGNsdXNpdmVfY3R4cztcXG5tbS9kYW1vbi9jb3JlLmMtMjktXFxubW0vZGFtb24vY29yZS5jOjMwOnN0YXRpYyBERUZJTkVfTVVURVgoZGFtb25fb3BzX2xvY2spO1xcbm1tL2RhbW9uL2NvcmUuYy0zMS1zdGF0aWMgc3RydWN0IGRhbW9uX29wZXJhdGlvbnMgZGFtb25fcmVnaXN0ZXJlZF9vcHNbTlJfREFNT05fT1BTXTtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz0zMz1zdGF0aWMgc3RydWN0IGttZW1fY2FjaGUgKmRhbW9uX3JlZ2lvbl9jYWNoZSBfX3JvX2FmdGVyX2luaXQ7XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMzUtLyogU2hvdWxkIGJlIGNhbGxlZCB1bmRlciBkYW1vbl9vcHNfbG9jayB3aXRoIGlkIHNtYWxsZXIgdGhhbiBOUl9EQU1PTl9PUFMgKi9cXG5tbS9kYW1vbi9jb3JlLmM6MzY6c3RhdGljIGJvb2wgX19kYW1vbl9pc19yZWdpc3RlcmVkX29wcyhlbnVtIGRhbW9uX29wc19pZCBpZClcXG5tbS9kYW1vbi9jb3JlLmMtMzcte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTUwLSAqL1xcbm1tL2RhbW9uL2NvcmUuYzo1MTpib29sIGRhbW9uX2lzX3JlZ2lzdGVyZWRfb3BzKGVudW0gZGFtb25fb3BzX2lkIGlkKVxcbm1tL2RhbW9uL2NvcmUuYy01Mi17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtNzEtICovXFxubW0vZGFtb24vY29yZS5jOjcyOmludCBkYW1vbl9yZWdpc3Rlcl9vcHMoc3RydWN0IGRhbW9uX29wZXJhdGlvbnMgKm9wcylcXG5tbS9kYW1vbi9jb3JlLmMtNzMte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTk4LSAqL1xcbm1tL2RhbW9uL2NvcmUuYzo5OTppbnQgZGFtb25fc2VsZWN0X29wcyhzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsIGVudW0gZGFtb25fb3BzX2lkIGlkKVxcbm1tL2RhbW9uL2NvcmUuYy0xMDAte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTExNC1cXG5tbS9kYW1vbi9jb3JlLmM6MTE1OnN0cnVjdCBkYW1vbl9wcmVwICpkYW1vbl9uZXdfcHJlcChlbnVtIGRhbW9uX3ByZXBfYWN0aW9uIGFjdGlvbilcXG5tbS9kYW1vbi9jb3JlLmMtMTE2LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xMjYtXFxubW0vZGFtb24vY29yZS5jOjEyNzp2b2lkIGRhbW9uX2FkZF9wcmVwKHN0cnVjdCBkYW1vbl9wcm9iZSAqcCwgc3RydWN0IGRhbW9uX3ByZXAgKnByZXApXFxubW0vZGFtb24vY29yZS5jLTEyOC17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTMxLVxcbm1tL2RhbW9uL2NvcmUuYzoxMzI6c3RhdGljIHZvaWQgZGFtb25fZGVsX3ByZXAoc3RydWN0IGRhbW9uX3ByZXAgKnApXFxubW0vZGFtb24vY29yZS5jLTEzMy17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTM2LVxcbm1tL2RhbW9uL2NvcmUuYzoxMzc6c3RhdGljIHZvaWQgZGFtb25fZnJlZV9wcmVwKHN0cnVjdCBkYW1vbl9wcmVwICpwKVxcbm1tL2RhbW9uL2NvcmUuYy0xMzgte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTE0MS1cXG5tbS9kYW1vbi9jb3JlLmM6MTQyOnN0YXRpYyB2b2lkIGRhbW9uX2Rlc3Ryb3lfcHJlcChzdHJ1Y3QgZGFtb25fcHJlcCAqcClcXG5tbS9kYW1vbi9jb3JlLmMtMTQzLXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xNDctXFxubW0vZGFtb24vY29yZS5jOjE0ODpzdGF0aWMgc3RydWN0IGRhbW9uX3ByZXAgKmRhbW9uX250aF9wcmVwKGludCBuLCBzdHJ1Y3QgZGFtb25fcHJvYmUgKnApXFxubW0vZGFtb24vY29yZS5jLTE0OS17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTU5LVxcbm1tL2RhbW9uL2NvcmUuYzoxNjA6c3RhdGljIGJvb2wgZGFtb25faGFzX3ByZXAoc3RydWN0IGRhbW9uX2N0eCAqYylcXG5tbS9kYW1vbi9jb3JlLmMtMTYxLXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xNzEtXFxubW0vZGFtb24vY29yZS5jOjE3MjpzdHJ1Y3QgZGFtb25fZmlsdGVyICpkYW1vbl9uZXdfZmlsdGVyKGVudW0gZGFtb25fZmlsdGVyX3R5cGUgdHlwZSxcXG5tbS9kYW1vbi9jb3JlLmMtMTczLVxcdFxcdGJvb2wgbWF0Y2hpbmcsIGJvb2wgYWxsb3cpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTg2LVxcbm1tL2RhbW9uL2NvcmUuYzoxODc6dm9pZCBkYW1vbl9hZGRfZmlsdGVyKHN0cnVjdCBkYW1vbl9wcm9iZSAqcCwgc3RydWN0IGRhbW9uX2ZpbHRlciAqZilcXG5tbS9kYW1vbi9jb3JlLmMtMTg4LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xOTEtXFxubW0vZGFtb24vY29yZS5jOjE5MjpzdGF0aWMgdm9pZCBkYW1vbl9kZWxfZmlsdGVyKHN0cnVjdCBkYW1vbl9maWx0ZXIgKmYpXFxubW0vZGFtb24vY29yZS5jLTE5My17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTk2LVxcbm1tL2RhbW9uL2NvcmUuYzoxOTc6c3RhdGljIHZvaWQgZGFtb25fZnJlZV9maWx0ZXIoc3RydWN0IGRhbW9uX2ZpbHRlciAqZilcXG5tbS9kYW1vbi9jb3JlLmMtMTk4LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0yMDEtXFxubW0vZGFtb24vY29yZS5jOjIwMjp2b2lkIGRhbW9uX2Rlc3Ryb3lfZmlsdGVyKHN0cnVjdCBkYW1vbl9maWx0ZXIgKmYpXFxubW0vZGFtb24vY29yZS5jLTIwMy17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMjA3LVxcbm1tL2RhbW9uL2NvcmUuYzoyMDg6c3RhdGljIHN0cnVjdCBkYW1vbl9maWx0ZXIgKmRhbW9uX250aF9maWx0ZXIoaW50IG4sIHN0cnVjdCBkYW1vbl9wcm9iZSAqcClcXG5tbS9kYW1vbi9jb3JlLmMtMjA5LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0yMTktXFxubW0vZGFtb24vY29yZS5jOjIyMDpzdHJ1Y3QgZGFtb25fcHJvYmUgKmRhbW9uX25ld19wcm9iZSh2b2lkKVxcbm1tL2RhbW9uL2NvcmUuYy0yMjEte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTIzMy1cXG5tbS9kYW1vbi9jb3JlLmM6MjM0OnZvaWQgZGFtb25fYWRkX3Byb2JlKHN0cnVjdCBkYW1vbl9jdHggKmN0eCwgc3RydWN0IGRhbW9uX3Byb2JlICpwcm9iZSlcXG5tbS9kYW1vbi9jb3JlLmMtMjM1LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0yMzgtXFxubW0vZGFtb24vY29yZS5jOjIzOTpzdGF0aWMgdm9pZCBkYW1vbl9kZWxfcHJvYmUoc3RydWN0IGRhbW9uX3Byb2JlICpwKVxcbm1tL2RhbW9uL2NvcmUuYy0yNDAte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTI0My1cXG5tbS9kYW1vbi9jb3JlLmM6MjQ0OnN0YXRpYyB2b2lkIGRhbW9uX2ZyZWVfcHJvYmUoc3RydWN0IGRhbW9uX3Byb2JlICpwKVxcbm1tL2RhbW9uL2NvcmUuYy0yNDUte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTI1NS1cXG5tbS9kYW1vbi9jb3JlLmM6MjU2OnN0YXRpYyB2b2lkIGRhbW9uX2Rlc3Ryb3lfcHJvYmUoc3RydWN0IGRhbW9uX3Byb2JlICpwKVxcbm1tL2RhbW9uL2NvcmUuYy0yNTcte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTI2MS1cXG5tbS9kYW1vbi9jb3JlLmM6MjYyOnN0YXRpYyBzdHJ1Y3QgZGFtb25fcHJvYmUgKmRhbW9uX250aF9wcm9iZShpbnQgbiwgc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxcbm1tL2RhbW9uL2NvcmUuYy0yNjMte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTI3My1cXG5tbS9kYW1vbi9jb3JlLmM6Mjc0OnN0YXRpYyBib29sIGRhbW9uX2hhc19wcm9iZV93ZWlnaHRzKHN0cnVjdCBkYW1vbl9jdHggKmMpXFxubW0vZGFtb24vY29yZS5jLTI3NS17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMzA1LSAqL1xcbm1tL2RhbW9uL2NvcmUuYzozMDY6c3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb25fbXZzdW0odW5zaWduZWQgbG9uZyBjdXJyZW50X25yLFxcbm1tL2RhbW9uL2NvcmUuYy0zMDctXFx0XFx0dW5zaWduZWQgbG9uZyBsYXN0X25yLCB1bnNpZ25lZCBsb25nIGxlZnRfd2luZG93X2JwKVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTMyNS0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6MzI2OnVuc2lnbmVkIGludCBkYW1vbl9ucl9hY2Nlc3Nlc19tdnN1bShzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLFxcbm1tL2RhbW9uL2NvcmUuYy0zMjctXFx0XFx0c3RydWN0IGRhbW9uX2N0eCAqY3R4KVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTM0OS1cXG5tbS9kYW1vbi9jb3JlLmM6MzUwOnVuc2lnbmVkIGNoYXIgZGFtb25fcHJvYmVfaGl0c19tdnN1bShpbnQgcHJvYmVfaWR4LCBzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLFxcbm1tL2RhbW9uL2NvcmUuYy0zNTEtXFx0XFx0c3RydWN0IGRhbW9uX2N0eCAqY3R4KVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTM3NC0jaWZkZWYgQ09ORklHX0RBTU9OX0RFQlVHX1NBTklUWVxcbm1tL2RhbW9uL2NvcmUuYzozNzU6c3RhdGljIHZvaWQgZGFtb25fdmVyaWZ5X25ld19yZWdpb24odW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQpXFxubW0vZGFtb24vY29yZS5jLTM3Ni17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMzc5LSNlbHNlXFxubW0vZGFtb24vY29yZS5jOjM4MDpzdGF0aWMgdm9pZCBkYW1vbl92ZXJpZnlfbmV3X3JlZ2lvbih1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZClcXG5tbS9kYW1vbi9jb3JlLmMtMzgxLXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0zODktICovXFxubW0vZGFtb24vY29yZS5jOjM5MDpzdHJ1Y3QgZGFtb25fcmVnaW9uICpkYW1vbl9uZXdfcmVnaW9uKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kKVxcbm1tL2RhbW9uL2NvcmUuYy0zOTEte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTQxNC1cXG5tbS9kYW1vbi9jb3JlLmM6NDE1OnN0YXRpYyB2b2lkIGRhbW9uX2FkZF9yZWdpb24oc3RydWN0IGRhbW9uX3JlZ2lvbiAqciwgc3RydWN0IGRhbW9uX3RhcmdldCAqdClcXG5tbS9kYW1vbi9jb3JlLmMtNDE2LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy00MjMtICovXFxubW0vZGFtb24vY29yZS5jOjQyNDpzdGF0aWMgaW5saW5lIHZvaWQgZGFtb25faW5zZXJ0X3JlZ2lvbihzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLFxcbm1tL2RhbW9uL2NvcmUuYy00MjUtXFx0XFx0c3RydWN0IGRhbW9uX3JlZ2lvbiAqcHJldiwgc3RydWN0IGRhbW9uX3JlZ2lvbiAqbmV4dCxcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy00MzItI2lmZGVmIENPTkZJR19EQU1PTl9ERUJVR19TQU5JVFlcXG5tbS9kYW1vbi9jb3JlLmM6NDMzOnN0YXRpYyB2b2lkIGRhbW9uX3ZlcmlmeV9kZWxfcmVnaW9uKHN0cnVjdCBkYW1vbl90YXJnZXQgKnQpXFxubW0vZGFtb24vY29yZS5jLTQzNC17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtNDM3LSNlbHNlXFxubW0vZGFtb24vY29yZS5jOjQzODpzdGF0aWMgdm9pZCBkYW1vbl92ZXJpZnlfZGVsX3JlZ2lvbihzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0KVxcbm1tL2RhbW9uL2NvcmUuYy00Mzkte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTQ0Mi1cXG5tbS9kYW1vbi9jb3JlLmM6NDQzOnN0YXRpYyB2b2lkIGRhbW9uX2RlbF9yZWdpb24oc3RydWN0IGRhbW9uX3JlZ2lvbiAqciwgc3RydWN0IGRhbW9uX3RhcmdldCAqdClcXG5tbS9kYW1vbi9jb3JlLmMtNDQ0LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy00NTAtXFxubW0vZGFtb24vY29yZS5jOjQ1MTpzdGF0aWMgdm9pZCBkYW1vbl9mcmVlX3JlZ2lvbihzdHJ1Y3QgZGFtb25fcmVnaW9uICpyKVxcbm1tL2RhbW9uL2NvcmUuYy00NTIte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTQ1NS1cXG5tbS9kYW1vbi9jb3JlLmM6NDU2OnN0YXRpYyB2b2lkIGRhbW9uX2Rlc3Ryb3lfcmVnaW9uKHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsXFxubW0vZGFtb24vY29yZS5jLTQ1Ny1cXHRcXHRzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0KVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTQ2Mi1cXG5tbS9kYW1vbi9jb3JlLmM6NDYzOnN0YXRpYyBib29sIGRhbW9uX2lzX2xhc3RfcmVnaW9uKHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsXFxubW0vZGFtb24vY29yZS5jLTQ2NC1cXHRcXHRzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0KVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTQ3Ni0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6NDc3OnVuc2lnbmVkIGludCBkYW1vbl9wcm9iZV9oaXRzX3dzdW0oc3RydWN0IGRhbW9uX3JlZ2lvbiAqciwgYm9vbCBsYXN0LFxcbm1tL2RhbW9uL2NvcmUuYy00NzgtXFx0XFx0c3RydWN0IGRhbW9uX2N0eCAqY3R4KVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTQ5Ny0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6NDk4OnN0YXRpYyBib29sIGRhbW9uX2ludGVyc2VjdChzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLFxcbm1tL2RhbW9uL2NvcmUuYy00OTktXFx0XFx0c3RydWN0IGRhbW9uX2FkZHJfcmFuZ2UgKnJlKVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTUwNi0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6NTA3OnN0YXRpYyBpbnQgZGFtb25fZmlsbF9yZWdpb25zX2hvbGVzKHN0cnVjdCBkYW1vbl9yZWdpb24gKmZpcnN0LFxcbm1tL2RhbW9uL2NvcmUuYy01MDgtXFx0XFx0c3RydWN0IGRhbW9uX3JlZ2lvbiAqbGFzdCwgc3RydWN0IGRhbW9uX3RhcmdldCAqdClcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy01MzktICovXFxubW0vZGFtb24vY29yZS5jOjU0MDppbnQgZGFtb25fc2V0X3JlZ2lvbnMoc3RydWN0IGRhbW9uX3RhcmdldCAqdCwgc3RydWN0IGRhbW9uX2FkZHJfcmFuZ2UgKnJhbmdlcyxcXG5tbS9kYW1vbi9jb3JlLmMtNTQxLVxcdFxcdHVuc2lnbmVkIGludCBucl9yYW5nZXMsIHVuc2lnbmVkIGxvbmcgbWluX3JlZ2lvbl9zeilcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy02MzAtXFxubW0vZGFtb24vY29yZS5jOjYzMTpzdHJ1Y3QgZGFtb3NfZmlsdGVyICpkYW1vc19uZXdfZmlsdGVyKGVudW0gZGFtb3NfZmlsdGVyX3R5cGUgdHlwZSxcXG5tbS9kYW1vbi9jb3JlLmMtNjMyLVxcdFxcdGJvb2wgbWF0Y2hpbmcsIGJvb2wgYWxsb3cpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtNjUyLSAqL1xcbm1tL2RhbW9uL2NvcmUuYzo2NTM6Ym9vbCBkYW1vc19maWx0ZXJfZm9yX29wcyhlbnVtIGRhbW9zX2ZpbHRlcl90eXBlIHR5cGUpXFxubW0vZGFtb24vY29yZS5jLTY1NC17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtNjY0LVxcbm1tL2RhbW9uL2NvcmUuYzo2NjU6dm9pZCBkYW1vc19hZGRfZmlsdGVyKHN0cnVjdCBkYW1vcyAqcywgc3RydWN0IGRhbW9zX2ZpbHRlciAqZilcXG5tbS9kYW1vbi9jb3JlLmMtNjY2LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy02NzItXFxubW0vZGFtb24vY29yZS5jOjY3MzpzdGF0aWMgdm9pZCBkYW1vc19kZWxfZmlsdGVyKHN0cnVjdCBkYW1vc19maWx0ZXIgKmYpXFxubW0vZGFtb24vY29yZS5jLTY3NC17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtNjc3LVxcbm1tL2RhbW9uL2NvcmUuYzo2Nzg6c3RhdGljIHZvaWQgZGFtb3NfZnJlZV9maWx0ZXIoc3RydWN0IGRhbW9zX2ZpbHRlciAqZilcXG5tbS9kYW1vbi9jb3JlLmMtNjc5LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy02ODItXFxubW0vZGFtb24vY29yZS5jOjY4Mzp2b2lkIGRhbW9zX2Rlc3Ryb3lfZmlsdGVyKHN0cnVjdCBkYW1vc19maWx0ZXIgKmYpXFxubW0vZGFtb24vY29yZS5jLTY4NC17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtNjg4LVxcbm1tL2RhbW9uL2NvcmUuYzo2ODk6c3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKmRhbW9zX25ld19xdW90YV9nb2FsKFxcbm1tL2RhbW9uL2NvcmUuYy02OTAtXFx0XFx0ZW51bSBkYW1vc19xdW90YV9nb2FsX21ldHJpYyBtZXRyaWMsXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtNzA1LVxcbm1tL2RhbW9uL2NvcmUuYzo3MDY6dm9pZCBkYW1vc19hZGRfcXVvdGFfZ29hbChzdHJ1Y3QgZGFtb3NfcXVvdGEgKnEsIHN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpnKVxcbm1tL2RhbW9uL2NvcmUuYy03MDcte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTcxMC1cXG5tbS9kYW1vbi9jb3JlLmM6NzExOnN0YXRpYyB2b2lkIGRhbW9zX2RlbF9xdW90YV9nb2FsKHN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpnKVxcbm1tL2RhbW9uL2NvcmUuYy03MTIte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTcxNS1cXG5tbS9kYW1vbi9jb3JlLmM6NzE2OnN0YXRpYyB2b2lkIGRhbW9zX2ZyZWVfcXVvdGFfZ29hbChzdHJ1Y3QgZGFtb3NfcXVvdGFfZ29hbCAqZylcXG5tbS9kYW1vbi9jb3JlLmMtNzE3LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy03MjAtXFxubW0vZGFtb24vY29yZS5jOjcyMTp2b2lkIGRhbW9zX2Rlc3Ryb3lfcXVvdGFfZ29hbChzdHJ1Y3QgZGFtb3NfcXVvdGFfZ29hbCAqZylcXG5tbS9kYW1vbi9jb3JlLmMtNzIyLXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy03MjYtXFxubW0vZGFtb24vY29yZS5jOjcyNzpzdGF0aWMgYm9vbCBkYW1vc19xdW90YV9nb2Fsc19lbXB0eShzdHJ1Y3QgZGFtb3NfcXVvdGEgKnEpXFxubW0vZGFtb24vY29yZS5jLTcyOC17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtNzMyLS8qIGluaXRpYWxpemUgZmllbGRzIG9mIEBxdW90YSB0aGF0IG5vcm1hbGx5IEFQSSB1c2VycyB3b3VsZG4ndCBzZXQgKi9cXG5tbS9kYW1vbi9jb3JlLmM6NzMzOnN0YXRpYyBzdHJ1Y3QgZGFtb3NfcXVvdGEgKmRhbW9zX3F1b3RhX2luaXQoc3RydWN0IGRhbW9zX3F1b3RhICpxdW90YSlcXG5tbS9kYW1vbi9jb3JlLmMtNzM0LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy03NDUtXFxubW0vZGFtb24vY29yZS5jOjc0NjpzdHJ1Y3QgZGFtb3MgKmRhbW9uX25ld19zY2hlbWUoc3RydWN0IGRhbW9zX2FjY2Vzc19wYXR0ZXJuICpwYXR0ZXJuLFxcbm1tL2RhbW9uL2NvcmUuYy03NDctXFx0XFx0XFx0ZW51bSBkYW1vc19hY3Rpb24gYWN0aW9uLFxcbi0tXFxubW0vZGFtb24vY29yZS5jLTc4Ny1cXG5tbS9kYW1vbi9jb3JlLmM6Nzg4OnN0YXRpYyB2b2lkIGRhbW9zX3NldF9uZXh0X2FwcGx5X3NpcyhzdHJ1Y3QgZGFtb3MgKnMsIHN0cnVjdCBkYW1vbl9jdHggKmN0eClcXG5tbS9kYW1vbi9jb3JlLmMtNzg5LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy03OTgtXFxubW0vZGFtb24vY29yZS5jOjc5OTp2b2lkIGRhbW9uX2FkZF9zY2hlbWUoc3RydWN0IGRhbW9uX2N0eCAqY3R4LCBzdHJ1Y3QgZGFtb3MgKnMpXFxubW0vZGFtb24vY29yZS5jLTgwMC17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtODA0LVxcbm1tL2RhbW9uL2NvcmUuYzo4MDU6c3RhdGljIHZvaWQgZGFtb25fZGVsX3NjaGVtZShzdHJ1Y3QgZGFtb3MgKnMpXFxubW0vZGFtb24vY29yZS5jLTgwNi17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtODA5LVxcbm1tL2RhbW9uL2NvcmUuYzo4MTA6c3RhdGljIHZvaWQgZGFtb25fZnJlZV9zY2hlbWUoc3RydWN0IGRhbW9zICpzKVxcbm1tL2RhbW9uL2NvcmUuYy04MTEte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTgxNC1cXG5tbS9kYW1vbi9jb3JlLmM6ODE1OnZvaWQgZGFtb25fZGVzdHJveV9zY2hlbWUoc3RydWN0IGRhbW9zICpzKVxcbm1tL2RhbW9uL2NvcmUuYy04MTYte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTgzOS0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6ODQwOnN0cnVjdCBkYW1vbl90YXJnZXQgKmRhbW9uX25ld190YXJnZXQodm9pZClcXG5tbS9kYW1vbi9jb3JlLmMtODQxLXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy04NTYtXFxubW0vZGFtb24vY29yZS5jOjg1Nzp2b2lkIGRhbW9uX2FkZF90YXJnZXQoc3RydWN0IGRhbW9uX2N0eCAqY3R4LCBzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0KVxcbm1tL2RhbW9uL2NvcmUuYy04NTgte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTg2NC0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6ODY1OmludCBkYW1vbl9zZXRfdGFyZ2V0X3BpZChzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0LCBpbnQgcGlkKVxcbm1tL2RhbW9uL2NvcmUuYy04NjYte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTg3Mi1cXG5tbS9kYW1vbi9jb3JlLmM6ODczOnN0YXRpYyB2b2lkIGRhbW9uX2RlbF90YXJnZXQoc3RydWN0IGRhbW9uX3RhcmdldCAqdClcXG5tbS9kYW1vbi9jb3JlLmMtODc0LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy04NzctXFxubW0vZGFtb24vY29yZS5jOjg3ODp2b2lkIGRhbW9uX2ZyZWVfdGFyZ2V0KHN0cnVjdCBkYW1vbl90YXJnZXQgKnQpXFxubW0vZGFtb24vY29yZS5jLTg3OS17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtODg2LVxcbm1tL2RhbW9uL2NvcmUuYzo4ODc6dm9pZCBkYW1vbl9kZXN0cm95X3RhcmdldChzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0LCBzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXFxubW0vZGFtb24vY29yZS5jLTg4OC17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtODk2LVxcbm1tL2RhbW9uL2NvcmUuYzo4OTc6dW5zaWduZWQgaW50IGRhbW9uX25yX3JlZ2lvbnMoc3RydWN0IGRhbW9uX3RhcmdldCAqdClcXG5tbS9kYW1vbi9jb3JlLmMtODk4LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy05MDEtXFxubW0vZGFtb24vY29yZS5jOjkwMjpzdHJ1Y3QgZGFtb25fY3R4ICpkYW1vbl9uZXdfY3R4KHZvaWQpXFxubW0vZGFtb24vY29yZS5jLTkwMy17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtOTQxLVxcbm1tL2RhbW9uL2NvcmUuYzo5NDI6c3RhdGljIHZvaWQgZGFtb25fZGVzdHJveV90YXJnZXRzKHN0cnVjdCBkYW1vbl9jdHggKmN0eClcXG5tbS9kYW1vbi9jb3JlLmMtOTQzLXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy05NDktXFxubW0vZGFtb24vY29yZS5jOjk1MDp2b2lkIGRhbW9uX2Rlc3Ryb3lfY3R4KHN0cnVjdCBkYW1vbl9jdHggKmN0eClcXG5tbS9kYW1vbi9jb3JlLmMtOTUxLXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy05NjUtXFxubW0vZGFtb24vY29yZS5jOjk2NjpzdGF0aWMgYm9vbCBkYW1vbl9hdHRyc19lcXVhbHMoY29uc3Qgc3RydWN0IGRhbW9uX2F0dHJzICphdHRyczEsXFxubW0vZGFtb24vY29yZS5jLTk2Ny1cXHRcXHRjb25zdCBzdHJ1Y3QgZGFtb25fYXR0cnMgKmF0dHJzMilcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy05ODItXFxubW0vZGFtb24vY29yZS5jOjk4MzpzdGF0aWMgdW5zaWduZWQgaW50IGRhbW9uX2FnZV9mb3JfbmV3X2F0dHJzKHVuc2lnbmVkIGludCBhZ2UsXFxubW0vZGFtb24vY29yZS5jLTk4NC1cXHRcXHRzdHJ1Y3QgZGFtb25fYXR0cnMgKm9sZF9hdHRycywgc3RydWN0IGRhbW9uX2F0dHJzICpuZXdfYXR0cnMpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtOTg5LS8qIGNvbnZlcnQgc2FtcGxlIHJhdGlvIGluIGJwIChwZXIgMTAsMDAwKSB0byBjb3VudCAqL1xcbm1tL2RhbW9uL2NvcmUuYzo5OTA6c3RhdGljIHVuc2lnbmVkIGludCBkYW1vbl9zYW1wbGVfYnBfdG9fY291bnQoXFxubW0vZGFtb24vY29yZS5jLTk5MS1cXHRcXHR1bnNpZ25lZCBpbnQgYnAsIHN0cnVjdCBkYW1vbl9hdHRycyAqYXR0cnMpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtOTk2LS8qIGNvbnZlcnQgc2FtcGxlIGNvdW50IHRvIHJhdGlvIGluIGJwIChwZXIgMTAsMDAwKSAqL1xcbm1tL2RhbW9uL2NvcmUuYzo5OTc6c3RhdGljIHVuc2lnbmVkIGludCBkYW1vbl9zYW1wbGVfY291bnRfdG9fYnAoXFxubW0vZGFtb24vY29yZS5jLTk5OC1cXHRcXHR1bnNpZ25lZCBpbnQgY291bnQsIHN0cnVjdCBkYW1vbl9hdHRycyAqYXR0cnMpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTAwMi1cXG5tbS9kYW1vbi9jb3JlLmM6MTAwMzpzdGF0aWMgdW5zaWduZWQgaW50IGRhbW9uX25yX3NhbXBsZXNfZm9yX25ld19hdHRycyh1bnNpZ25lZCBpbnQgbnIsXFxubW0vZGFtb24vY29yZS5jLTEwMDQtXFx0XFx0c3RydWN0IGRhbW9uX2F0dHJzICpvbGRfYXR0cnMsIHN0cnVjdCBkYW1vbl9hdHRycyAqbmV3X2F0dHJzKVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTEwMDktXFxubW0vZGFtb24vY29yZS5jOjEwMTA6c3RhdGljIHZvaWQgZGFtb25fdXBkYXRlX3Byb2JlX2hpdHMoc3RydWN0IGRhbW9uX3JlZ2lvbiAqcixcXG5tbS9kYW1vbi9jb3JlLmMtMTAxMS1cXHRcXHRzdHJ1Y3QgZGFtb25fYXR0cnMgKm9sZF9hdHRycywgc3RydWN0IGRhbW9uX2F0dHJzICpuZXdfYXR0cnMsXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTAyOS1cXG5tbS9kYW1vbi9jb3JlLmM6MTAzMDpzdGF0aWMgdm9pZCBkYW1vbl91cGRhdGVfbW9uaXRvcmluZ19yZXN1bHQoc3RydWN0IGRhbW9uX3JlZ2lvbiAqcixcXG5tbS9kYW1vbi9jb3JlLmMtMTAzMS1cXHRcXHRzdHJ1Y3QgZGFtb25fYXR0cnMgKm9sZF9hdHRycywgc3RydWN0IGRhbW9uX2F0dHJzICpuZXdfYXR0cnMsXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTA1OS0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6MTA2MDpzdGF0aWMgdm9pZCBkYW1vbl91cGRhdGVfbW9uaXRvcmluZ19yZXN1bHRzKHN0cnVjdCBkYW1vbl9jdHggKmN0eCxcXG5tbS9kYW1vbi9jb3JlLmMtMTA2MS1cXHRcXHRzdHJ1Y3QgZGFtb25fYXR0cnMgKm5ld19hdHRycywgYm9vbCBhZ2dyZWdhdGluZylcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xMDgyLSAqL1xcbm1tL2RhbW9uL2NvcmUuYzoxMDgzOnN0YXRpYyBib29sIGRhbW9uX3ZhbGlkX2ludGVydmFsc19nb2FsKHN0cnVjdCBkYW1vbl9hdHRycyAqYXR0cnMpXFxubW0vZGFtb24vY29yZS5jLTEwODQte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTExMTctICovXFxubW0vZGFtb24vY29yZS5jOjExMTg6aW50IGRhbW9uX3NldF9hdHRycyhzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsIHN0cnVjdCBkYW1vbl9hdHRycyAqYXR0cnMpXFxubW0vZGFtb24vY29yZS5jLTExMTkte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTExNjUtICovXFxubW0vZGFtb24vY29yZS5jOjExNjY6dm9pZCBkYW1vbl9zZXRfc2NoZW1lcyhzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsIHN0cnVjdCBkYW1vcyAqKnNjaGVtZXMsXFxubW0vZGFtb24vY29yZS5jLTExNjctXFx0XFx0XFx0c3NpemVfdCBucl9zY2hlbWVzKVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTExNzctXFxubW0vZGFtb24vY29yZS5jOjExNzg6c3RhdGljIHN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpkYW1vc19udGhfcXVvdGFfZ29hbChcXG5tbS9kYW1vbi9jb3JlLmMtMTE3OS1cXHRcXHRpbnQgbiwgc3RydWN0IGRhbW9zX3F1b3RhICpxKVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTExOTAtXFxubW0vZGFtb24vY29yZS5jOjExOTE6c3RhdGljIHZvaWQgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxfdW5pb24oXFxubW0vZGFtb24vY29yZS5jLTExOTItXFx0XFx0c3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKmRzdCwgc3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKnNyYylcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xMjE0LVxcbm1tL2RhbW9uL2NvcmUuYzoxMjE1OnN0YXRpYyB2b2lkIGRhbW9zX2NvbW1pdF9xdW90YV9nb2FsKFxcbm1tL2RhbW9uL2NvcmUuYy0xMjE2LVxcdFxcdHN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpkc3QsIHN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpzcmMpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTIzNi0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6MTIzNzppbnQgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxzKHN0cnVjdCBkYW1vc19xdW90YSAqZHN0LCBzdHJ1Y3QgZGFtb3NfcXVvdGEgKnNyYylcXG5tbS9kYW1vbi9jb3JlLmMtMTIzOC17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTI2MS1cXG5tbS9kYW1vbi9jb3JlLmM6MTI2MjpzdGF0aWMgaW50IGRhbW9zX2NvbW1pdF9xdW90YShzdHJ1Y3QgZGFtb3NfcXVvdGEgKmRzdCwgc3RydWN0IGRhbW9zX3F1b3RhICpzcmMpXFxubW0vZGFtb24vY29yZS5jLTEyNjMte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTEyODAtXFxubW0vZGFtb24vY29yZS5jOjEyODE6c3RhdGljIHN0cnVjdCBkYW1vc19maWx0ZXIgKmRhbW9zX250aF9jb3JlX2ZpbHRlcihpbnQgbiwgc3RydWN0IGRhbW9zICpzKVxcbm1tL2RhbW9uL2NvcmUuYy0xMjgyLXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xMjkyLVxcbm1tL2RhbW9uL2NvcmUuYzoxMjkzOnN0YXRpYyBzdHJ1Y3QgZGFtb3NfZmlsdGVyICpkYW1vc19udGhfb3BzX2ZpbHRlcihpbnQgbiwgc3RydWN0IGRhbW9zICpzKVxcbm1tL2RhbW9uL2NvcmUuYy0xMjk0LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xMzA0LVxcbm1tL2RhbW9uL2NvcmUuYzoxMzA1OnN0YXRpYyB2b2lkIGRhbW9zX2NvbW1pdF9maWx0ZXJfYXJnKFxcbm1tL2RhbW9uL2NvcmUuYy0xMzA2LVxcdFxcdHN0cnVjdCBkYW1vc19maWx0ZXIgKmRzdCwgc3RydWN0IGRhbW9zX2ZpbHRlciAqc3JjKVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTEzMjUtXFxubW0vZGFtb24vY29yZS5jOjEzMjY6c3RhdGljIHZvaWQgZGFtb3NfY29tbWl0X2ZpbHRlcihcXG5tbS9kYW1vbi9jb3JlLmMtMTMyNy1cXHRcXHRzdHJ1Y3QgZGFtb3NfZmlsdGVyICpkc3QsIHN0cnVjdCBkYW1vc19maWx0ZXIgKnNyYylcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xMzM0LVxcbm1tL2RhbW9uL2NvcmUuYzoxMzM1OnN0YXRpYyBpbnQgZGFtb3NfY29tbWl0X2NvcmVfZmlsdGVycyhzdHJ1Y3QgZGFtb3MgKmRzdCwgc3RydWN0IGRhbW9zICpzcmMpXFxubW0vZGFtb24vY29yZS5jLTEzMzYte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTEzNjItXFxubW0vZGFtb24vY29yZS5jOjEzNjM6c3RhdGljIGludCBkYW1vc19jb21taXRfb3BzX2ZpbHRlcnMoc3RydWN0IGRhbW9zICpkc3QsIHN0cnVjdCBkYW1vcyAqc3JjKVxcbm1tL2RhbW9uL2NvcmUuYy0xMzY0LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xMzk1LSAqL1xcbm1tL2RhbW9uL2NvcmUuYzoxMzk2OnN0YXRpYyBib29sIGRhbW9zX2ZpbHRlcnNfZGVmYXVsdF9yZWplY3Qoc3RydWN0IGxpc3RfaGVhZCAqZmlsdGVycylcXG5tbS9kYW1vbi9jb3JlLmMtMTM5Ny17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTQwNS1cXG5tbS9kYW1vbi9jb3JlLmM6MTQwNjpzdGF0aWMgdm9pZCBkYW1vc19zZXRfZmlsdGVyc19kZWZhdWx0X3JlamVjdChzdHJ1Y3QgZGFtb3MgKnMpXFxubW0vZGFtb24vY29yZS5jLTE0MDcte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTE0MTYtXFxubW0vZGFtb24vY29yZS5jOjE0MTc6c3RhdGljIGJvb2wgZGFtb25fdmFsaWRfcHJvYmVfcGFyYW1zKHN0cnVjdCBkYW1vbl9jdHggKmN0eClcXG5tbS9kYW1vbi9jb3JlLmMtMTQxOC17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTQ2MS0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6MTQ2MjpzdGF0aWMgaW50IGRhbW9zX2NvbW1pdF9kZXN0cyhzdHJ1Y3QgZGFtb3NfbWlncmF0ZV9kZXN0cyAqZHN0LFxcbm1tL2RhbW9uL2NvcmUuYy0xNDYzLVxcdFxcdHN0cnVjdCBkYW1vc19taWdyYXRlX2Rlc3RzICpzcmMpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTQ5Mi1cXG5tbS9kYW1vbi9jb3JlLmM6MTQ5MzpzdGF0aWMgaW50IGRhbW9zX2NvbW1pdF9maWx0ZXJzKHN0cnVjdCBkYW1vcyAqZHN0LCBzdHJ1Y3QgZGFtb3MgKnNyYylcXG5tbS9kYW1vbi9jb3JlLmMtMTQ5NC17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTUwNi1cXG5tbS9kYW1vbi9jb3JlLmM6MTUwNzpzdGF0aWMgc3RydWN0IGRhbW9zICpkYW1vbl9udGhfc2NoZW1lKGludCBuLCBzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXFxubW0vZGFtb24vY29yZS5jLTE1MDgte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTE1MTgtXFxubW0vZGFtb24vY29yZS5jOjE1MTk6c3RhdGljIGludCBkYW1vc19jb21taXQoc3RydWN0IGRhbW9zICpkc3QsIHN0cnVjdCBkYW1vcyAqc3JjKVxcbm1tL2RhbW9uL2NvcmUuYy0xNTIwLXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xNTQ1LVxcbm1tL2RhbW9uL2NvcmUuYzoxNTQ2OnN0YXRpYyBpbnQgZGFtb25fY29tbWl0X3NjaGVtZXMoc3RydWN0IGRhbW9uX2N0eCAqZHN0LCBzdHJ1Y3QgZGFtb25fY3R4ICpzcmMpXFxubW0vZGFtb24vY29yZS5jLTE1NDcte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTE1ODEtXFxubW0vZGFtb24vY29yZS5jOjE1ODI6c3RhdGljIHN0cnVjdCBkYW1vbl90YXJnZXQgKmRhbW9uX250aF90YXJnZXQoaW50IG4sIHN0cnVjdCBkYW1vbl9jdHggKmN0eClcXG5tbS9kYW1vbi9jb3JlLmMtMTU4My17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTYwMC0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6MTYwMTpzdGF0aWMgaW50IGRhbW9uX2NvbW1pdF90YXJnZXRfcmVnaW9ucyhzdHJ1Y3QgZGFtb25fdGFyZ2V0ICpkc3QsXFxubW0vZGFtb24vY29yZS5jLTE2MDItXFx0XFx0c3RydWN0IGRhbW9uX3RhcmdldCAqc3JjLCB1bnNpZ25lZCBsb25nIHNyY19taW5fcmVnaW9uX3N6KVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTE2MzUtXFxubW0vZGFtb24vY29yZS5jOjE2MzY6c3RhdGljIGludCBkYW1vbl9jb21taXRfdGFyZ2V0KFxcbm1tL2RhbW9uL2NvcmUuYy0xNjM3LVxcdFxcdHN0cnVjdCBkYW1vbl90YXJnZXQgKmRzdCwgYm9vbCBkc3RfaGFzX3BpZCxcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xNjYyLSAqL1xcbm1tL2RhbW9uL2NvcmUuYzoxNjYzOnN0YXRpYyB2b2lkIGRhbW9uX3JldmVydF90YXJnZXRfY29tbWl0cyhzdHJ1Y3QgZGFtb25fY3R4ICpkc3QsXFxubW0vZGFtb24vY29yZS5jLTE2NjQtXFx0XFx0c3RydWN0IGRhbW9uX3RhcmdldCAqZmFpbGVkLCBzdHJ1Y3QgZGFtb25fY3R4ICpzcmMpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTY3OC1cXG5tbS9kYW1vbi9jb3JlLmM6MTY3OTpzdGF0aWMgaW50IGRhbW9uX2NvbW1pdF90YXJnZXRzKFxcbm1tL2RhbW9uL2NvcmUuYy0xNjgwLVxcdFxcdHN0cnVjdCBkYW1vbl9jdHggKmRzdCwgc3RydWN0IGRhbW9uX2N0eCAqc3JjKVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTE3NDMtXFxubW0vZGFtb24vY29yZS5jOjE3NDQ6c3RhdGljIHZvaWQgZGFtb25fY29tbWl0X3ByZXAoc3RydWN0IGRhbW9uX3ByZXAgKmRzdCwgc3RydWN0IGRhbW9uX3ByZXAgKnNyYylcXG5tbS9kYW1vbi9jb3JlLmMtMTc0NS17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTc0OC1cXG5tbS9kYW1vbi9jb3JlLmM6MTc0OTpzdGF0aWMgaW50IGRhbW9uX2NvbW1pdF9wcmVwcyhzdHJ1Y3QgZGFtb25fcHJvYmUgKmRzdCwgc3RydWN0IGRhbW9uX3Byb2JlICpzcmMpXFxubW0vZGFtb24vY29yZS5jLTE3NTAte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTE3NzMtXFxubW0vZGFtb24vY29yZS5jOjE3NzQ6c3RhdGljIHZvaWQgZGFtb25fY29tbWl0X2ZpbHRlcihzdHJ1Y3QgZGFtb25fZmlsdGVyICpkc3QsXFxubW0vZGFtb24vY29yZS5jLTE3NzUtXFx0XFx0c3RydWN0IGRhbW9uX2ZpbHRlciAqc3JjKVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTE3ODgtXFxubW0vZGFtb24vY29yZS5jOjE3ODk6c3RhdGljIGludCBkYW1vbl9jb21taXRfZmlsdGVycyhzdHJ1Y3QgZGFtb25fcHJvYmUgKmRzdCxcXG5tbS9kYW1vbi9jb3JlLmMtMTc5MC1cXHRcXHRzdHJ1Y3QgZGFtb25fcHJvYmUgKnNyYylcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xODIyLVxcbm1tL2RhbW9uL2NvcmUuYzoxODIzOnN0YXRpYyBpbnQgZGFtb25fY29tbWl0X3Byb2JlcyhzdHJ1Y3QgZGFtb25fY3R4ICpkc3QsIHN0cnVjdCBkYW1vbl9jdHggKnNyYylcXG5tbS9kYW1vbi9jb3JlLmMtMTgyNC17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTg2MS1cXG5tbS9kYW1vbi9jb3JlLmM6MTg2MjpzdGF0aWMgaW50IF9fZGFtb25fY29tbWl0X2N0eChzdHJ1Y3QgZGFtb25fY3R4ICpkc3QsIHN0cnVjdCBkYW1vbl9jdHggKnNyYylcXG5tbS9kYW1vbi9jb3JlLmMtMTg2My17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTkxOS1cXG5tbS9kYW1vbi9jb3JlLmM6MTkyMDpzdGF0aWMgc3RydWN0IGRhbW9uX2N0eCAqZGFtb25fbmV3X3Rlc3RfY3R4KHN0cnVjdCBkYW1vbl9jdHggKmRzdClcXG5tbS9kYW1vbi9jb3JlLmMtMTkyMS17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTk0OC0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6MTk0OTppbnQgZGFtb25fY29tbWl0X2N0eChzdHJ1Y3QgZGFtb25fY3R4ICpkc3QsIHN0cnVjdCBkYW1vbl9jdHggKnNyYylcXG5tbS9kYW1vbi9jb3JlLmMtMTk1MC17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTk2Ni0vKiBSZXR1cm5zIHRoZSBzaXplIHVwcGVyIGxpbWl0IGZvciBlYWNoIG1vbml0b3JpbmcgcmVnaW9uICovXFxubW0vZGFtb24vY29yZS5jOjE5Njc6c3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb25fcmVnaW9uX3N6X2xpbWl0KHN0cnVjdCBkYW1vbl9jdHggKmN0eClcXG5tbS9kYW1vbi9jb3JlLmMtMTk2OC17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTk4NS1cXG5tbS9kYW1vbi9jb3JlLmM6MTk4NjpzdGF0aWMgaW50IGRhbW9uX3NwbGl0X3JlZ2lvbl9hdChzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0LFxcbm1tL2RhbW9uL2NvcmUuYy0xOTg3LVxcdFxcdFxcdFxcdCAgc3RydWN0IGRhbW9uX3JlZ2lvbiAqciwgdW5zaWduZWQgbG9uZyBzel9yKTtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0yMDAxLSAqL1xcbm1tL2RhbW9uL2NvcmUuYzoyMDAyOnN0YXRpYyB1bnNpZ25lZCBsb25nIGRhbW9uX2FwcGx5X21pbl9ucl9yZWdpb25zKHN0cnVjdCBkYW1vbl9jdHggKmN0eClcXG5tbS9kYW1vbi9jb3JlLmMtMjAwMy17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMjAyMS1cXG5tbS9kYW1vbi9jb3JlLmM6MjAyMjpzdGF0aWMgaW50IGtkYW1vbmRfZm4odm9pZCAqZGF0YSk7XFxubW0vZGFtb24vY29yZS5jLTIwMjMtXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMjAzMS0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6MjAzMjpzdGF0aWMgaW50IF9fZGFtb25fc3RhcnQoc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxcbm1tL2RhbW9uL2NvcmUuYy0yMDMzLXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0yMDY4LSAqL1xcbm1tL2RhbW9uL2NvcmUuYzoyMDY5OmludCBkYW1vbl9zdGFydChzdHJ1Y3QgZGFtb25fY3R4ICoqY3R4cywgaW50IG5yX2N0eHMsIGJvb2wgZXhjbHVzaXZlKVxcbm1tL2RhbW9uL2NvcmUuYy0yMDcwLXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0yMTEzLSAqL1xcbm1tL2RhbW9uL2NvcmUuYzoyMTE0OnN0YXRpYyB2b2lkIF9fZGFtb25fc3RvcChzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXFxubW0vZGFtb24vY29yZS5jLTIxMTUte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTIxMzMtICovXFxubW0vZGFtb24vY29yZS5jOjIxMzQ6dm9pZCBkYW1vbl9zdG9wKHN0cnVjdCBkYW1vbl9jdHggKipjdHhzLCBpbnQgbnJfY3R4cylcXG5tbS9kYW1vbi9jb3JlLmMtMjEzNS17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMjE0OC0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6MjE0OTpib29sIGRhbW9uX2lzX3J1bm5pbmcoc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wM1QwMDozMzo1Ni4xMTY1MDUwMzZaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjQ0MzI5MzQ3NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGFuYWx5emluZyB0aGlzIGNvZGU6XG5cbioqRGl2aW5nIGludG8gdGhlIERBTU9OIEltcGxlbWVudGF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgREFNT04ncyBjb3JlIGZ1bmN0aW9uYWxpdHkuIEknbSBzZWVpbmcgYSBzZXF1ZW5jZSBvZiBmdW5jdGlvbnMgaGVyZTogYGRhbW9uX3N0YXJ0YCwgYGRhbW9uX3N0b3BgLCBgZGFtb25fY29tbWl0X2N0eGAsIGBkYW1vbl9zZXRfYXR0cnNgLCBgZGFtb25fc2V0X3NjaGVtZXNgLCBgZGFtb25fc2V0X3JlZ2lvbnNgLCBgZGFtb25fY2FsbGAsIGV0Yy4gVGhpcyBnaXZlcyBtZSBhIGdvb2Qgb3ZlcnZpZXcgb2YgdGhlIHR5cGljYWwgb3BlcmF0aW9uYWwgZmxvdy4gSSBjYW4gc2VlIHRoZSBoaWdoLWxldmVsIHN0ZXBzIGludm9sdmVkIC0gc3RhcnRpbmcsIHN0b3BwaW5nLCBjb21taXR0aW5nIGNvbnRleHQsIHNldHRpbmcgYXR0cmlidXRlcywgY29uZmlndXJpbmcgc2NoZW1lcyBhbmQgcmVnaW9ucywgYW5kIGZpbmFsbHkgdGhlIGFjdHVhbCBcImRhbW9uX2NhbGxcIiBpdHNlbGYuIFRoaXMgc3VnZ2VzdHMgYSBwYXR0ZXJuIG9mIGluaXRpYWxpemF0aW9uLCBjb25maWd1cmF0aW9uLCBhbmQgdGhlbiBhY3RpdmUgbW9uaXRvcmluZy5cblxuTm93LCBJIHdhbnQgdG8gdHJhY2UgaG93IHRoZSBzY2hlbWVzIGFyZSBhcHBsaWVkLiBJJ20gZ29pbmcgdG8gZGlnIGludG8gdGhlIGBkYW1vbl9kb19hcHBseV9zY2hlbWVzYCBmdW5jdGlvbi4gVGhpcyBpcyB3aGVyZSB0aGUgc2NoZW1lcyBkZWZpbmVkIGJ5IGBkYW1vbl9zZXRfc2NoZW1lc2AgZ2V0IGltcGxlbWVudGVkLCBzbyB0aGlzIGlzIGNyaXRpY2FsLiBJJ2xsIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSBhbmQgaG93IHRoYXQgZnVuY3Rpb24gaXMgKmNhbGxlZCogaW4gYG1tL2RhbW9uL2NvcmUuY2AuIEtub3dpbmcgdGhlIGNhbGwgY2hhaW4gd2lsbCBpbGx1bWluYXRlIGhvdyBEQU1PTiBhY3R1YWxseSB1c2VzIHRoZSBzY2hlbWVzIEkndmUgZGVmaW5lZCB0byBvcHRpbWl6ZSBtZW1vcnkgYWNjZXNzLiBJJ2xsIGZvY3VzIG9uIHRoZSBjYWxsaW5nIGNvbnRleHQgd2l0aGluIHRoZSBEQU1PTiBjb3JlIHRvIHVuZGVyc3RhbmQgaG93IGl0IGZpdHMgaW50byB0aGUgb3ZlcmFsbCBtb25pdG9yaW5nIGFuZCBvcHRpbWl6YXRpb24gcHJvY2Vzcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzE1MTgsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wM1QwMDozMzo1OC41NTk4MDEzMzFaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcxMjA5NDQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRhbW9uX2RvX2FwcGx5X3NjaGVtZXNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vZGFtb25cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vZGFtb24vY29yZS5jPTI2Njk9c3RhdGljIHZvaWQgZGFtb3NfYXBwbHlfc2NoZW1lKHN0cnVjdCBkYW1vbl9jdHggKmMsIHN0cnVjdCBkYW1vbl90YXJnZXQgKnQsXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMjczOS1cXG5tbS9kYW1vbi9jb3JlLmM6Mjc0MDpzdGF0aWMgdm9pZCBkYW1vbl9kb19hcHBseV9zY2hlbWVzKHN0cnVjdCBkYW1vbl9jdHggKmMsXFxubW0vZGFtb24vY29yZS5jLTI3NDEtXFx0XFx0XFx0XFx0ICAgc3RydWN0IGRhbW9uX3RhcmdldCAqdCxcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz0yNzk1PXN0YXRpYyB2b2lkIGRhbW9zX2FwcGx5X3RhcmdldChzdHJ1Y3QgZGFtb25fY3R4ICpjLCBzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0LFxcbi0tXFxubW0vZGFtb24vY29yZS5jLTI4MDItXFxubW0vZGFtb24vY29yZS5jOjI4MDM6XFx0XFx0ZGFtb25fZG9fYXBwbHlfc2NoZW1lcyhjLCB0LCByKTtcXG5tbS9kYW1vbi9jb3JlLmMtMjgwNC1cXHRcXHQvKlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wM1QwMDozMzo1OC42MzEwMTg3OTVaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjM1MTc5ODgzMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLlxuXG4qKlRyYWNpbmcgdGhlIENhbGwgQ2hhaW46IGBkYW1vc19hcHBseV90YXJnZXRgKipcblxuUmlnaHQsIHNvIEknbSBsb29raW5nIGF0IGBkYW1vc19hcHBseV90YXJnZXRgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgd2hlcmUncyB0aGlzIGJlaW5nIGNhbGxlZCBmcm9tPyAgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGNvbnRleHQuIEtub3dpbmcgdGhlIGVudHJ5IHBvaW50cywgdGhlIGZ1bmN0aW9ucyB0aGF0IGZlZWQgaW50byBgZGFtb3NfYXBwbHlfdGFyZ2V0YCwgaXMgY3JpdGljYWwgZm9yIGdyYXNwaW5nIGl0cyBwdXJwb3NlIGFuZCBwb3RlbnRpYWwgc2lkZSBlZmZlY3RzLiBUaGUgY29kZSBzdWdnZXN0cyBpdCdzIGNvbm5lY3RlZCB0byBga2RhbW9uZF9mbmAsIGBrZGFtb25kX2FwcGx5X3NjaGVtZXNgLCBvciBzb21lIG90aGVyIHNpbWlsYXIgbW9kdWxlcyBvciBmdW5jdGlvbnMuIEkgc2hvdWxkIGV4YW1pbmUgdGhlIGNhbGwgZ3JhcGgg4oCTIHNlZSB3aGF0J3MgaW52b2tpbmcgYGRhbW9zX2FwcGx5X3RhcmdldGAuIFRoYXQnbGwgZ2l2ZSBtZSBhIHNvbGlkIHBpY3R1cmUuIExldCdzIGRpZyBpbnRvIHRoZSBjYWxsZXJzIGFuZCBzZWUgd2hhdCB3ZSBjYW4gZmluZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzIxNzUsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wM1QwMDozNDowMC45ODI4MjE5NzdaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU1OTgwNDU2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRhbW9zX2FwcGx5X3RhcmdldFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9kYW1vblwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9kYW1vbi9jb3JlLmM9Mjc0MD1zdGF0aWMgdm9pZCBkYW1vbl9kb19hcHBseV9zY2hlbWVzKHN0cnVjdCBkYW1vbl9jdHggKmMsXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMjc3Ny0vKlxcbm1tL2RhbW9uL2NvcmUuYzoyNzc4OiAqIGRhbW9zX2FwcGx5X3RhcmdldCgpIC0gQXBwbHkgREFNT1Mgc2NoZW1lcyB0byBhIGdpdmVuIHRhcmdldC5cXG5tbS9kYW1vbi9jb3JlLmMtMjc3OS0gKiBAYzpcXHRcXHRcXHRtb25pdG9yaW5nIGNvbnRleHQgdG8gYXBwbHkgaXRzIERBTU9TIHNjaGVtZXMgdG8uLlxcbi0tXFxubW0vZGFtb24vY29yZS5jLTI3OTQtICovXFxubW0vZGFtb24vY29yZS5jOjI3OTU6c3RhdGljIHZvaWQgZGFtb3NfYXBwbHlfdGFyZ2V0KHN0cnVjdCBkYW1vbl9jdHggKmMsIHN0cnVjdCBkYW1vbl90YXJnZXQgKnQsXFxubW0vZGFtb24vY29yZS5jLTI3OTYtXFx0XFx0dW5zaWduZWQgbG9uZyBtYXhfcmVnaW9uX3N6KVxcbi0tXFxubW0vZGFtb24vY29yZS5jPTMzNTc9c3RhdGljIHZvaWQga2RhbW9uZF9hcHBseV9zY2hlbWVzKHN0cnVjdCBkYW1vbl9jdHggKmMpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMzM4My1cXHRcXHRcXHRjb250aW51ZTtcXG5tbS9kYW1vbi9jb3JlLmM6MzM4NDpcXHRcXHRkYW1vc19hcHBseV90YXJnZXQoYywgdCwgbWF4X3JlZ2lvbl9zeik7XFxubW0vZGFtb24vY29yZS5jLTMzODUtXFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wM1QwMDozNDowMS4wMzg4MDg2MTNaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDM4NDAwNTA1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBEQU1PTiBGdXp6aW5nIFN0cmF0ZWd5KipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBnb2FsIGlzIHRvIGRldGVybWluZSBpZiBhbmQgaG93IHRvIGZ1enogREFNT04uIEZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgY29yZSBmdW5jdGlvbiwgc28gSSdsbCBmb2xsb3cgdGhlIGV4ZWN1dGlvbiBwYXRoIHdpdGhpbiB0aGUgYGtkYW1vbmRgIGxvb3A6IGBrZGFtb25kX2ZuYCAtXHUwMDNlIGBrZGFtb25kX2FwcGx5X3NjaGVtZXNgIC1cdTAwM2UgYGRhbW9zX2FwcGx5X3RhcmdldGAgLVx1MDAzZSBgZGFtb25fZG9fYXBwbHlfc2NoZW1lc2AgLVx1MDAzZSBgZGFtb3NfcXVvdGFfaXNfZnVsbGAgYW5kIGBkYW1vc19hcHBseV9zY2hlbWVgLiBUaGlzIGdpdmVzIG1lIGEgZ29vZCBzdGFydGluZyBwb2ludCBmb3IgaWRlbnRpZnlpbmcgY3JpdGljYWwgY29kZSBwYXRocy5cblxuTmV4dCwgSSdsbCBjb25maXJtIERBTU9OJ3MgS2NvbmZpZyBkZXBlbmRlbmNpZXMuIExvb2tpbmcgYXQgYG1tL2RhbW9uL0tjb25maWdgLCBJIHNlZSBpdCdzIGNvbnRyb2xsZWQgYnkgdGhlIGBjb25maWcgREFNT05gIG9wdGlvbiwgd2l0aCBhZGRpdGlvbmFsIG9wdGlvbnMgZm9yIGBEQU1PTl9TWVNGU2AsIGBEQU1PTl9WQUREUmAsIGFuZCBgREFNT05fUEFERFJgLiBUaGlzIHRlbGxzIG1lIGhvdyBEQU1PTiBjYW4gYmUgY29uZmlndXJlZCBhbmQgYWN0aXZhdGVkLlxuXG5Ob3csIHRoZSBjcnVjaWFsIHF1ZXN0aW9uOiBpcyBEQU1PTiBmdXp6YWJsZT8gQWJzb2x1dGVseS4gSXTigJlzIGZ1bmN0aW9uYWwga2VybmVsIGNvZGUsIHBhcnQgb2YgdGhlIG1lbW9yeSBtYW5hZ2VtZW50IHN1YnN5c3RlbS4gVGhlIHBhdGNoIGZpeGVzIHF1b3RhIGxvZ2ljIHRoYXQgY291bGQgYmUgYSBzb3VyY2Ugb2YgdnVsbmVyYWJpbGl0aWVzLiBJJ20gYWxyZWFkeSBzZWVpbmcgYGRhbW9zX3F1b3RhX2lzX2Z1bGxgIGFuZCBgZGFtb25fZG9fYXBwbHlfc2NoZW1lc2AgYXMgcG90ZW50aWFsIGFyZWFzIHRvIHRhcmdldC4gSXQncyBhbHNvIGZ1bGx5IHJlYWNoYWJsZSB0aHJvdWdoIHN5c2ZzIChgL3N5cy9rZXJuZWwvbW0vZGFtb24vLi4uYCksIG1ha2luZyBpdCBlYXNpbHkgYWNjZXNzaWJsZSBpbiBhIHN0YW5kYXJkIFFFTVUgb3IgR0NFIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBXb3J0aEZ1enppbmc9dHJ1ZSwgZGVmaW5pdGVseS5cblxuRmluYWxseSwgSSBuZWVkIHRvIHBpbnBvaW50IHRoZSByaWdodCBmb2N1cyBzeW1ib2xzLiBJJ2xsIGNvbmNlbnRyYXRlIG9uIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cy4gTGV0J3Mgc2VlLi4uIGBkYW1vbl9zdGFydGAsIGBkYW1vbl9zdG9wYCwgYGRhbW9uX2NvbW1pdF9jdHhgLCBgZGFtb25fc2V0X2F0dHJzYCwgYGRhbW9uX3NldF9zY2hlbWVzYCwgYGRhbW9uX3NldF9yZWdpb25zYCwgYGRhbW9uX3N5c2ZzX2FkZF9zY2hlbWVzYCBsb29rIHByb21pc2luZy4gSSdsbCBkb3VibGUtY2hlY2sgYG1tL2RhbW9uL2NvcmUuY2AsIGBtbS9kYW1vbi9zeXNmcy5jYCBhbmQgYG1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuY2AgdG8gaWRlbnRpZnkgYW55IG90aGVyIHJlbGV2YW50IGZ1bmN0aW9ucy4gVGhpcyBpcyBhIHNvbGlkIHN0YXJ0aW5nIHBvaW50IGZvciBhIGZ1enppbmcgY2FtcGFpZ24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMyNzM3LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTY4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDAwOjM0OjA1LjQyMjgxNjc5MVoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzA3NTg1Mjk3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5pbnQgZGFtb25ffF52b2lkIGRhbW9uX3xec3RydWN0IGRhbW9uX1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9kYW1vblwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9kYW1vbi9jb3JlLmM9NTE9Ym9vbCBkYW1vbl9pc19yZWdpc3RlcmVkX29wcyhlbnVtIGRhbW9uX29wc19pZCBpZClcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy03MS0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6NzI6aW50IGRhbW9uX3JlZ2lzdGVyX29wcyhzdHJ1Y3QgZGFtb25fb3BlcmF0aW9ucyAqb3BzKVxcbm1tL2RhbW9uL2NvcmUuYy03My17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtOTgtICovXFxubW0vZGFtb24vY29yZS5jOjk5OmludCBkYW1vbl9zZWxlY3Rfb3BzKHN0cnVjdCBkYW1vbl9jdHggKmN0eCwgZW51bSBkYW1vbl9vcHNfaWQgaWQpXFxubW0vZGFtb24vY29yZS5jLTEwMC17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTE0LVxcbm1tL2RhbW9uL2NvcmUuYzoxMTU6c3RydWN0IGRhbW9uX3ByZXAgKmRhbW9uX25ld19wcmVwKGVudW0gZGFtb25fcHJlcF9hY3Rpb24gYWN0aW9uKVxcbm1tL2RhbW9uL2NvcmUuYy0xMTYte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTEyNi1cXG5tbS9kYW1vbi9jb3JlLmM6MTI3OnZvaWQgZGFtb25fYWRkX3ByZXAoc3RydWN0IGRhbW9uX3Byb2JlICpwLCBzdHJ1Y3QgZGFtb25fcHJlcCAqcHJlcClcXG5tbS9kYW1vbi9jb3JlLmMtMTI4LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz0xNjA9c3RhdGljIGJvb2wgZGFtb25faGFzX3ByZXAoc3RydWN0IGRhbW9uX2N0eCAqYylcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xNzEtXFxubW0vZGFtb24vY29yZS5jOjE3MjpzdHJ1Y3QgZGFtb25fZmlsdGVyICpkYW1vbl9uZXdfZmlsdGVyKGVudW0gZGFtb25fZmlsdGVyX3R5cGUgdHlwZSxcXG5tbS9kYW1vbi9jb3JlLmMtMTczLVxcdFxcdGJvb2wgbWF0Y2hpbmcsIGJvb2wgYWxsb3cpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTg2LVxcbm1tL2RhbW9uL2NvcmUuYzoxODc6dm9pZCBkYW1vbl9hZGRfZmlsdGVyKHN0cnVjdCBkYW1vbl9wcm9iZSAqcCwgc3RydWN0IGRhbW9uX2ZpbHRlciAqZilcXG5tbS9kYW1vbi9jb3JlLmMtMTg4LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz0xOTc9c3RhdGljIHZvaWQgZGFtb25fZnJlZV9maWx0ZXIoc3RydWN0IGRhbW9uX2ZpbHRlciAqZilcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0yMDEtXFxubW0vZGFtb24vY29yZS5jOjIwMjp2b2lkIGRhbW9uX2Rlc3Ryb3lfZmlsdGVyKHN0cnVjdCBkYW1vbl9maWx0ZXIgKmYpXFxubW0vZGFtb24vY29yZS5jLTIwMy17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9MjA4PXN0YXRpYyBzdHJ1Y3QgZGFtb25fZmlsdGVyICpkYW1vbl9udGhfZmlsdGVyKGludCBuLCBzdHJ1Y3QgZGFtb25fcHJvYmUgKnApXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMjE5LVxcbm1tL2RhbW9uL2NvcmUuYzoyMjA6c3RydWN0IGRhbW9uX3Byb2JlICpkYW1vbl9uZXdfcHJvYmUodm9pZClcXG5tbS9kYW1vbi9jb3JlLmMtMjIxLXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0yMzMtXFxubW0vZGFtb24vY29yZS5jOjIzNDp2b2lkIGRhbW9uX2FkZF9wcm9iZShzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsIHN0cnVjdCBkYW1vbl9wcm9iZSAqcHJvYmUpXFxubW0vZGFtb24vY29yZS5jLTIzNS17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9MzgwPXN0YXRpYyB2b2lkIGRhbW9uX3ZlcmlmeV9uZXdfcmVnaW9uKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kKVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTM4OS0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6MzkwOnN0cnVjdCBkYW1vbl9yZWdpb24gKmRhbW9uX25ld19yZWdpb24odW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQpXFxubW0vZGFtb24vY29yZS5jLTM5MS17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9NTA3PXN0YXRpYyBpbnQgZGFtb25fZmlsbF9yZWdpb25zX2hvbGVzKHN0cnVjdCBkYW1vbl9yZWdpb24gKmZpcnN0LFxcbi0tXFxubW0vZGFtb24vY29yZS5jLTUzOS0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6NTQwOmludCBkYW1vbl9zZXRfcmVnaW9ucyhzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0LCBzdHJ1Y3QgZGFtb25fYWRkcl9yYW5nZSAqcmFuZ2VzLFxcbm1tL2RhbW9uL2NvcmUuYy01NDEtXFx0XFx0dW5zaWduZWQgaW50IG5yX3JhbmdlcywgdW5zaWduZWQgbG9uZyBtaW5fcmVnaW9uX3N6KVxcbi0tXFxubW0vZGFtb24vY29yZS5jPTc4OD1zdGF0aWMgdm9pZCBkYW1vc19zZXRfbmV4dF9hcHBseV9zaXMoc3RydWN0IGRhbW9zICpzLCBzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtNzk4LVxcbm1tL2RhbW9uL2NvcmUuYzo3OTk6dm9pZCBkYW1vbl9hZGRfc2NoZW1lKHN0cnVjdCBkYW1vbl9jdHggKmN0eCwgc3RydWN0IGRhbW9zICpzKVxcbm1tL2RhbW9uL2NvcmUuYy04MDAte1xcbi0tXFxubW0vZGFtb24vY29yZS5jPTgxMD1zdGF0aWMgdm9pZCBkYW1vbl9mcmVlX3NjaGVtZShzdHJ1Y3QgZGFtb3MgKnMpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtODE0LVxcbm1tL2RhbW9uL2NvcmUuYzo4MTU6dm9pZCBkYW1vbl9kZXN0cm95X3NjaGVtZShzdHJ1Y3QgZGFtb3MgKnMpXFxubW0vZGFtb24vY29yZS5jLTgxNi17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtODM5LSAqL1xcbm1tL2RhbW9uL2NvcmUuYzo4NDA6c3RydWN0IGRhbW9uX3RhcmdldCAqZGFtb25fbmV3X3RhcmdldCh2b2lkKVxcbm1tL2RhbW9uL2NvcmUuYy04NDEte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTg1Ni1cXG5tbS9kYW1vbi9jb3JlLmM6ODU3OnZvaWQgZGFtb25fYWRkX3RhcmdldChzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsIHN0cnVjdCBkYW1vbl90YXJnZXQgKnQpXFxubW0vZGFtb24vY29yZS5jLTg1OC17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtODY0LSAqL1xcbm1tL2RhbW9uL2NvcmUuYzo4NjU6aW50IGRhbW9uX3NldF90YXJnZXRfcGlkKHN0cnVjdCBkYW1vbl90YXJnZXQgKnQsIGludCBwaWQpXFxubW0vZGFtb24vY29yZS5jLTg2Ni17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9ODczPXN0YXRpYyB2b2lkIGRhbW9uX2RlbF90YXJnZXQoc3RydWN0IGRhbW9uX3RhcmdldCAqdClcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy04NzctXFxubW0vZGFtb24vY29yZS5jOjg3ODp2b2lkIGRhbW9uX2ZyZWVfdGFyZ2V0KHN0cnVjdCBkYW1vbl90YXJnZXQgKnQpXFxubW0vZGFtb24vY29yZS5jLTg3OS17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtODg2LVxcbm1tL2RhbW9uL2NvcmUuYzo4ODc6dm9pZCBkYW1vbl9kZXN0cm95X3RhcmdldChzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0LCBzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXFxubW0vZGFtb24vY29yZS5jLTg4OC17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9ODk3PXVuc2lnbmVkIGludCBkYW1vbl9ucl9yZWdpb25zKHN0cnVjdCBkYW1vbl90YXJnZXQgKnQpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtOTAxLVxcbm1tL2RhbW9uL2NvcmUuYzo5MDI6c3RydWN0IGRhbW9uX2N0eCAqZGFtb25fbmV3X2N0eCh2b2lkKVxcbm1tL2RhbW9uL2NvcmUuYy05MDMte1xcbi0tXFxubW0vZGFtb24vY29yZS5jPTk0Mj1zdGF0aWMgdm9pZCBkYW1vbl9kZXN0cm95X3RhcmdldHMoc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTk0OS1cXG5tbS9kYW1vbi9jb3JlLmM6OTUwOnZvaWQgZGFtb25fZGVzdHJveV9jdHgoc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxcbm1tL2RhbW9uL2NvcmUuYy05NTEte1xcbi0tXFxubW0vZGFtb24vY29yZS5jPTEwODM9c3RhdGljIGJvb2wgZGFtb25fdmFsaWRfaW50ZXJ2YWxzX2dvYWwoc3RydWN0IGRhbW9uX2F0dHJzICphdHRycylcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xMTE3LSAqL1xcbm1tL2RhbW9uL2NvcmUuYzoxMTE4OmludCBkYW1vbl9zZXRfYXR0cnMoc3RydWN0IGRhbW9uX2N0eCAqY3R4LCBzdHJ1Y3QgZGFtb25fYXR0cnMgKmF0dHJzKVxcbm1tL2RhbW9uL2NvcmUuYy0xMTE5LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xMTY1LSAqL1xcbm1tL2RhbW9uL2NvcmUuYzoxMTY2OnZvaWQgZGFtb25fc2V0X3NjaGVtZXMoc3RydWN0IGRhbW9uX2N0eCAqY3R4LCBzdHJ1Y3QgZGFtb3MgKipzY2hlbWVzLFxcbm1tL2RhbW9uL2NvcmUuYy0xMTY3LVxcdFxcdFxcdHNzaXplX3QgbnJfc2NoZW1lcylcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz0xOTIwPXN0YXRpYyBzdHJ1Y3QgZGFtb25fY3R4ICpkYW1vbl9uZXdfdGVzdF9jdHgoc3RydWN0IGRhbW9uX2N0eCAqZHN0KVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTE5NDgtICovXFxubW0vZGFtb24vY29yZS5jOjE5NDk6aW50IGRhbW9uX2NvbW1pdF9jdHgoc3RydWN0IGRhbW9uX2N0eCAqZHN0LCBzdHJ1Y3QgZGFtb25fY3R4ICpzcmMpXFxubW0vZGFtb24vY29yZS5jLTE5NTAte1xcbi0tXFxubW0vZGFtb24vY29yZS5jPTIwMzI9c3RhdGljIGludCBfX2RhbW9uX3N0YXJ0KHN0cnVjdCBkYW1vbl9jdHggKmN0eClcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0yMDY4LSAqL1xcbm1tL2RhbW9uL2NvcmUuYzoyMDY5OmludCBkYW1vbl9zdGFydChzdHJ1Y3QgZGFtb25fY3R4ICoqY3R4cywgaW50IG5yX2N0eHMsIGJvb2wgZXhjbHVzaXZlKVxcbm1tL2RhbW9uL2NvcmUuYy0yMDcwLXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz0yMTE0PXN0YXRpYyB2b2lkIF9fZGFtb25fc3RvcChzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMjEzMy0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6MjEzNDp2b2lkIGRhbW9uX3N0b3Aoc3RydWN0IGRhbW9uX2N0eCAqKmN0eHMsIGludCBucl9jdHhzKVxcbm1tL2RhbW9uL2NvcmUuYy0yMTM1LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz0yMTQ5PWJvb2wgZGFtb25faXNfcnVubmluZyhzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMjE2NC0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6MjE2NTppbnQgZGFtb25fa2RhbW9uZF9waWQoc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxcbm1tL2RhbW9uL2NvcmUuYy0yMTY2LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0yMjAwLSAqL1xcbm1tL2RhbW9uL2NvcmUuYzoyMjAxOmludCBkYW1vbl9jYWxsKHN0cnVjdCBkYW1vbl9jdHggKmN0eCwgc3RydWN0IGRhbW9uX2NhbGxfY29udHJvbCAqY29udHJvbClcXG5tbS9kYW1vbi9jb3JlLmMtMjIwMi17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9Mzg5MD1zdGF0aWMgaW50IGtkYW1vbmRfZm4odm9pZCAqZGF0YSlcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy00MDYzLVxcbm1tL2RhbW9uL2NvcmUuYzo0MDY0OnN0cnVjdCBkYW1vbl9zeXN0ZW1fcmFtX3JhbmdlX3dhbGtfYXJnIHtcXG5tbS9kYW1vbi9jb3JlLmMtNDA2NS1cXHRib29sIHdhbGtlZDtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz00MDk0PXN0YXRpYyBib29sIGRhbW9uX2ZpbmRfc3lzdGVtX3JhbXNfcmFuZ2UodW5zaWduZWQgbG9uZyAqc3RhcnQsXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtNDEyNS0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6NDEyNjppbnQgZGFtb25fc2V0X3JlZ2lvbl9zeXN0ZW1fcmFtc19kZWZhdWx0KHN0cnVjdCBkYW1vbl90YXJnZXQgKnQsXFxubW0vZGFtb24vY29yZS5jLTQxMjctXFx0XFx0XFx0dW5zaWduZWQgbG9uZyAqc3RhcnQsIHVuc2lnbmVkIGxvbmcgKmVuZCxcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy00MTUwLSAqL1xcbm1tL2RhbW9uL2NvcmUuYzo0MTUxOnZvaWQgZGFtb25fdXBkYXRlX3JlZ2lvbl9hY2Nlc3NfcmF0ZShzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLCBib29sIGFjY2Vzc2VkKVxcbm1tL2RhbW9uL2NvcmUuYy00MTUyLXtcXG4tLVxcbm1tL2RhbW9uL21vZHVsZXMtY29tbW9uLmMtMTQtICovXFxubW0vZGFtb24vbW9kdWxlcy1jb21tb24uYzoxNTppbnQgZGFtb25fbW9kdWxlc19uZXdfcGFkZHJfY3R4X3RhcmdldChzdHJ1Y3QgZGFtb25fY3R4ICoqY3R4cCxcXG5tbS9kYW1vbi9tb2R1bGVzLWNvbW1vbi5jLTE2LVxcdFxcdHN0cnVjdCBkYW1vbl90YXJnZXQgKip0YXJnZXRwKVxcbi0tXFxubW0vZGFtb24vbW9kdWxlcy1jb21tb24uaC00NS1cXG5tbS9kYW1vbi9tb2R1bGVzLWNvbW1vbi5oOjQ2OmludCBkYW1vbl9tb2R1bGVzX25ld19wYWRkcl9jdHhfdGFyZ2V0KHN0cnVjdCBkYW1vbl9jdHggKipjdHhwLFxcbm1tL2RhbW9uL21vZHVsZXMtY29tbW9uLmgtNDctXFx0XFx0c3RydWN0IGRhbW9uX3RhcmdldCAqKnRhcmdldHApO1xcbi0tXFxubW0vZGFtb24vb3BzLWNvbW1vbi5jPTI0PXN0cnVjdCBmb2xpbyAqZGFtb25fZ2V0X2ZvbGlvKHVuc2lnbmVkIGxvbmcgcGZuKVxcbi0tXFxubW0vZGFtb24vb3BzLWNvbW1vbi5jLTQxLVxcbm1tL2RhbW9uL29wcy1jb21tb24uYzo0Mjp2b2lkIGRhbW9uX3B0ZXBfbWtvbGQocHRlX3QgKnB0ZSwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgYWRkcilcXG5tbS9kYW1vbi9vcHMtY29tbW9uLmMtNDMte1xcbi0tXFxubW0vZGFtb24vb3BzLWNvbW1vbi5jLTcyLVxcbm1tL2RhbW9uL29wcy1jb21tb24uYzo3Mzp2b2lkIGRhbW9uX3BtZHBfbWtvbGQocG1kX3QgKnBtZCwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgYWRkcilcXG5tbS9kYW1vbi9vcHMtY29tbW9uLmMtNzQte1xcbi0tXFxubW0vZGFtb24vb3BzLWNvbW1vbi5jLTEwMy1cXG5tbS9kYW1vbi9vcHMtY29tbW9uLmM6MTA0OmludCBkYW1vbl9ob3Rfc2NvcmUoc3RydWN0IGRhbW9uX2N0eCAqYywgc3RydWN0IGRhbW9uX3JlZ2lvbiAqcixcXG5tbS9kYW1vbi9vcHMtY29tbW9uLmMtMTA1LVxcdFxcdFxcdHN0cnVjdCBkYW1vcyAqcylcXG4tLVxcbm1tL2RhbW9uL29wcy1jb21tb24uYy0xNDktXFxubW0vZGFtb24vb3BzLWNvbW1vbi5jOjE1MDppbnQgZGFtb25fY29sZF9zY29yZShzdHJ1Y3QgZGFtb25fY3R4ICpjLCBzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLFxcbm1tL2RhbW9uL29wcy1jb21tb24uYy0xNTEtXFx0XFx0XFx0c3RydWN0IGRhbW9zICpzKVxcbi0tXFxubW0vZGFtb24vb3BzLWNvbW1vbi5jPTE1OT1zdGF0aWMgYm9vbCBkYW1vbl9mb2xpb19ta29sZF9vbmUoc3RydWN0IGZvbGlvICpmb2xpbyxcXG4tLVxcbm1tL2RhbW9uL29wcy1jb21tb24uYy0xNzMtXFxubW0vZGFtb24vb3BzLWNvbW1vbi5jOjE3NDp2b2lkIGRhbW9uX2ZvbGlvX21rb2xkKHN0cnVjdCBmb2xpbyAqZm9saW8pXFxubW0vZGFtb24vb3BzLWNvbW1vbi5jLTE3NS17XFxuLS1cXG5tbS9kYW1vbi9vcHMtY29tbW9uLmg9OD1zdHJ1Y3QgZm9saW8gKmRhbW9uX2dldF9mb2xpbyh1bnNpZ25lZCBsb25nIHBmbik7XFxubW0vZGFtb24vb3BzLWNvbW1vbi5oLTktXFxubW0vZGFtb24vb3BzLWNvbW1vbi5oOjEwOnZvaWQgZGFtb25fcHRlcF9ta29sZChwdGVfdCAqcHRlLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBhZGRyKTtcXG5tbS9kYW1vbi9vcHMtY29tbW9uLmg6MTE6dm9pZCBkYW1vbl9wbWRwX21rb2xkKHBtZF90ICpwbWQsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHIpO1xcbm1tL2RhbW9uL29wcy1jb21tb24uaDoxMjp2b2lkIGRhbW9uX2ZvbGlvX21rb2xkKHN0cnVjdCBmb2xpbyAqZm9saW8pO1xcbm1tL2RhbW9uL29wcy1jb21tb24uaC0xMy1ib29sIGRhbW9uX2ZvbGlvX3lvdW5nKHN0cnVjdCBmb2xpbyAqZm9saW8pO1xcbm1tL2RhbW9uL29wcy1jb21tb24uaC0xNC1cXG5tbS9kYW1vbi9vcHMtY29tbW9uLmg6MTU6aW50IGRhbW9uX2NvbGRfc2NvcmUoc3RydWN0IGRhbW9uX2N0eCAqYywgc3RydWN0IGRhbW9uX3JlZ2lvbiAqcixcXG5tbS9kYW1vbi9vcHMtY29tbW9uLmgtMTYtXFx0XFx0XFx0c3RydWN0IGRhbW9zICpzKTtcXG5tbS9kYW1vbi9vcHMtY29tbW9uLmg6MTc6aW50IGRhbW9uX2hvdF9zY29yZShzdHJ1Y3QgZGFtb25fY3R4ICpjLCBzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLFxcbm1tL2RhbW9uL29wcy1jb21tb24uaC0xOC1cXHRcXHRcXHRzdHJ1Y3QgZGFtb3MgKnMpO1xcbi0tXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM9MTA9REVGSU5FX01VVEVYKGRhbW9uX3N5c2ZzX2xvY2spO1xcbi0tXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmMtMTUtXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM6MTY6c3RydWN0IGRhbW9uX3N5c2ZzX3VsX3JhbmdlICpkYW1vbl9zeXNmc191bF9yYW5nZV9hbGxvYyhcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy0xNy1cXHRcXHR1bnNpZ25lZCBsb25nIG1pbixcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jPTY1PXN0YXRpYyBzc2l6ZV90IG1heF9zdG9yZShzdHJ1Y3Qga29iamVjdCAqa29iaiwgc3RydWN0IGtvYmpfYXR0cmlidXRlICphdHRyLFxcbi0tXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmMtODAtXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM6ODE6dm9pZCBkYW1vbl9zeXNmc191bF9yYW5nZV9yZWxlYXNlKHN0cnVjdCBrb2JqZWN0ICprb2JqKVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTgyLXtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jPTEwNj1zdGF0aWMgYm9vbCBkYW1vbl9zeXNmc19tZW1jZ19wYXRoX2VxKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZyxcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTExNi1cXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYzoxMTc6aW50IGRhbW9uX3N5c2ZzX21lbWNnX3BhdGhfdG9faWQoY2hhciAqbWVtY2dfcGF0aCwgdTY0ICppZClcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy0xMTgte1xcbi0tXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg9OT1leHRlcm4gc3RydWN0IG11dGV4IGRhbW9uX3N5c2ZzX2xvY2s7XFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtMTAtXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6MTE6c3RydWN0IGRhbW9uX3N5c2ZzX3VsX3JhbmdlIHtcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC0xMi1cXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xcbi0tXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtMTYtXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6MTc6c3RydWN0IGRhbW9uX3N5c2ZzX3VsX3JhbmdlICpkYW1vbl9zeXNmc191bF9yYW5nZV9hbGxvYyhcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC0xOC1cXHRcXHR1bnNpZ25lZCBsb25nIG1pbixcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC0xOS1cXHRcXHR1bnNpZ25lZCBsb25nIG1heCk7XFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6MjA6dm9pZCBkYW1vbl9zeXNmc191bF9yYW5nZV9yZWxlYXNlKHN0cnVjdCBrb2JqZWN0ICprb2JqKTtcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC0yMS1cXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaD0yMj1leHRlcm4gY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vbl9zeXNmc191bF9yYW5nZV9rdHlwZTtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTI3LVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oOjI4OnN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVzIHtcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC0yOS1cXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xcbi0tXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtMzMtXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6MzQ6c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZXMgKmRhbW9uX3N5c2ZzX3NjaGVtZXNfYWxsb2Modm9pZCk7XFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6MzU6dm9pZCBkYW1vbl9zeXNmc19zY2hlbWVzX3JtX2RpcnMoc3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZXMgKnNjaGVtZXMpO1xcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTM2LVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oPTM3PWV4dGVybiBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9uX3N5c2ZzX3NjaGVtZXNfa3R5cGU7XFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtMzgtXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6Mzk6aW50IGRhbW9uX3N5c2ZzX2FkZF9zY2hlbWVzKHN0cnVjdCBkYW1vbl9jdHggKmN0eCxcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC00MC1cXHRcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lcyAqc3lzZnNfc2NoZW1lcyk7XFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtNDEtXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6NDI6dm9pZCBkYW1vbl9zeXNmc19zY2hlbWVzX3VwZGF0ZV9zdGF0cyhcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC00My1cXHRcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lcyAqc3lzZnNfc2NoZW1lcyxcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oPTQ2PXZvaWQgZGFtb3Nfc3lzZnNfcG9wdWxhdGVfcmVnaW9uX2RpcihzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lcyAqc3lzZnNfc2NoZW1lcyxcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTUwLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oOjUxOmludCBkYW1vbl9zeXNmc19zY2hlbWVzX2NsZWFyX3JlZ2lvbnMoXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtNTItXFx0XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZXMgKnN5c2ZzX3NjaGVtZXMpO1xcbi0tXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg9NTc9dm9pZCBkYW1vc19zeXNmc191cGRhdGVfZWZmZWN0aXZlX3F1b3RhcyhcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTYwLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oOjYxOmludCBkYW1vbl9zeXNmc19tZW1jZ19wYXRoX3RvX2lkKGNoYXIgKm1lbWNnX3BhdGgsIHU2NCAqaWQpO1xcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTE0MT1zdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vc19zeXNmc19wcm9iZXNfa3R5cGUgPSB7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTQ5LVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNTA6c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb24ge1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNTEtXFx0c3RydWN0IGtvYmplY3Qga29iajtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0yODc9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbl9rdHlwZSA9IHtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yOTYtXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjI5NzpzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbnMge1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yOTgtXFx0c3RydWN0IGtvYmplY3Qga29iajtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0zNTY9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbnNfa3R5cGUgPSB7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzY1LVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzozNjY6c3RydWN0IGRhbW9uX3N5c2ZzX3N0YXRzIHtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzY3LVxcdHN0cnVjdCBrb2JqZWN0IGtvYmo7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9NTIzPWVudW0gZGFtb3Nfc3lzZnNfZmlsdGVyX2hhbmRsZV9sYXllciB7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNTI4LVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo1Mjk6c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9maWx0ZXIge1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy01MzAtXFx0c3RydWN0IGtvYmplY3Qga29iajtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz04ODI9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlcl9rdHlwZSA9IHtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy04OTEtXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjg5MjpzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlcnMge1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy04OTMtXFx0c3RydWN0IGtvYmplY3Qga29iajtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0xMDEwPXN0YXRpYyBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9uX3N5c2ZzX3NjaGVtZV9maWx0ZXJzX2t0eXBlID0ge1xcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEwMTktXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEwMjA6c3RydWN0IGRhbW9uX3N5c2ZzX3dhdGVybWFya3Mge1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMDIxLVxcdHN0cnVjdCBrb2JqZWN0IGtvYmo7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MTU2ND1zdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vc19zeXNmc19xdW90YV9nb2Fsc19rdHlwZSA9IHtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNTczLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNTc0OnN0cnVjdCBkYW1vbl9zeXNmc193ZWlnaHRzIHtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTU3NS1cXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTE2NzQ9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfd2VpZ2h0c19rdHlwZSA9IHtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNjgzLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNjg0OnN0cnVjdCBkYW1vbl9zeXNmc19xdW90YXMge1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNjg1LVxcdHN0cnVjdCBrb2JqZWN0IGtvYmo7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MTk0OT1zdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vbl9zeXNmc19xdW90YXNfa3R5cGUgPSB7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTk1OC1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTk1OTpzdHJ1Y3QgZGFtb25fc3lzZnNfYWNjZXNzX3BhdHRlcm4ge1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xOTYwLVxcdHN0cnVjdCBrb2JqZWN0IGtvYmo7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MTk2Nj1zdGF0aWNcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTk2NzpzdHJ1Y3QgZGFtb25fc3lzZnNfYWNjZXNzX3BhdHRlcm4gKmRhbW9uX3N5c2ZzX2FjY2Vzc19wYXR0ZXJuX2FsbG9jKHZvaWQpXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE5Njgte1xcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTIyNDQ9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb3Nfc3lzZnNfZGVzdHNfa3R5cGUgPSB7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjI1My1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MjI1NDpzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lIHtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjI1NS1cXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTI2NzQ9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfc2NoZW1lX2t0eXBlID0ge1xcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTI2ODMtXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjI2ODQ6c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZXMgKmRhbW9uX3N5c2ZzX3NjaGVtZXNfYWxsb2Modm9pZClcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjY4NS17XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjY4OC1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MjY4OTp2b2lkIGRhbW9uX3N5c2ZzX3NjaGVtZXNfcm1fZGlycyhzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lcyAqc2NoZW1lcylcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjY5MC17XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9Mjk3ND1zdGF0aWMgc3RydWN0IGRhbW9zICpkYW1vbl9zeXNmc19ta19zY2hlbWUoXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzA0Ny1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MzA0ODppbnQgZGFtb25fc3lzZnNfYWRkX3NjaGVtZXMoc3RydWN0IGRhbW9uX2N0eCAqY3R4LFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zMDQ5LVxcdFxcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVzICpzeXNmc19zY2hlbWVzKVxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTMwNjYtXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjMwNjc6dm9pZCBkYW1vbl9zeXNmc19zY2hlbWVzX3VwZGF0ZV9zdGF0cyhcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzA2OC1cXHRcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lcyAqc3lzZnNfc2NoZW1lcyxcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0zMTA1PXZvaWQgZGFtb3Nfc3lzZnNfcG9wdWxhdGVfcmVnaW9uX2RpcihzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lcyAqc3lzZnNfc2NoZW1lcyxcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zMTUxLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzozMTUyOmludCBkYW1vbl9zeXNmc19zY2hlbWVzX2NsZWFyX3JlZ2lvbnMoXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTMxNTMtXFx0XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZXMgKnN5c2ZzX3NjaGVtZXMpXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jLTE0LVxcbm1tL2RhbW9uL3N5c2ZzLmM6MTU6c3RydWN0IGRhbW9uX3N5c2ZzX3JlZ2lvbiB7XFxubW0vZGFtb24vc3lzZnMuYy0xNi1cXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xcbi0tXFxubW0vZGFtb24vc3lzZnMuYz04MT1zdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vbl9zeXNmc19yZWdpb25fa3R5cGUgPSB7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jLTkwLVxcbm1tL2RhbW9uL3N5c2ZzLmM6OTE6c3RydWN0IGRhbW9uX3N5c2ZzX3JlZ2lvbnMge1xcbm1tL2RhbW9uL3N5c2ZzLmMtOTItXFx0c3RydWN0IGtvYmplY3Qga29iajtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLmM9MjAwPXN0YXRpYyBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9uX3N5c2ZzX3JlZ2lvbnNfa3R5cGUgPSB7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jLTIwOS1cXG5tbS9kYW1vbi9zeXNmcy5jOjIxMDpzdHJ1Y3QgZGFtb25fc3lzZnNfdGFyZ2V0IHtcXG5tbS9kYW1vbi9zeXNmcy5jLTIxMS1cXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xcbi0tXFxubW0vZGFtb24vc3lzZnMuYz0zMDc9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfdGFyZ2V0X2t0eXBlID0ge1xcbi0tXFxubW0vZGFtb24vc3lzZnMuYy0zMTYtXFxubW0vZGFtb24vc3lzZnMuYzozMTc6c3RydWN0IGRhbW9uX3N5c2ZzX3RhcmdldHMge1xcbm1tL2RhbW9uL3N5c2ZzLmMtMzE4LVxcdHN0cnVjdCBrb2JqZWN0IGtvYmo7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jPTQzNT1zdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vbl9zeXNmc190YXJnZXRzX2t0eXBlID0ge1xcbi0tXFxubW0vZGFtb24vc3lzZnMuYy00NDQtXFxubW0vZGFtb24vc3lzZnMuYzo0NDU6c3RydWN0IGRhbW9uX3N5c2ZzX2ludGVydmFsc19nb2FsIHtcXG5tbS9kYW1vbi9zeXNmcy5jLTQ0Ni1cXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xcbi0tXFxubW0vZGFtb24vc3lzZnMuYz01OTI9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfaW50ZXJ2YWxzX2dvYWxfa3R5cGUgPSB7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jLTYwMS1cXG5tbS9kYW1vbi9zeXNmcy5jOjYwMjpzdHJ1Y3QgZGFtb25fc3lzZnNfaW50ZXJ2YWxzIHtcXG5tbS9kYW1vbi9zeXNmcy5jLTYwMy1cXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xcbi0tXFxubW0vZGFtb24vc3lzZnMuYz03NDY9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfaW50ZXJ2YWxzX2t0eXBlID0ge1xcbi0tXFxubW0vZGFtb24vc3lzZnMuYy03NTUtXFxubW0vZGFtb24vc3lzZnMuYzo3NTY6c3RydWN0IGRhbW9uX3N5c2ZzX3ByZXAge1xcbm1tL2RhbW9uL3N5c2ZzLmMtNzU3LVxcdHN0cnVjdCBrb2JqZWN0IGtvYmo7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jPTc2MT1zdGF0aWMgc3RydWN0IGRhbW9uX3N5c2ZzX3ByZXAgKmRhbW9uX3N5c2ZzX3ByZXBfYWxsb2Modm9pZClcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLmMtNzcxLVxcbm1tL2RhbW9uL3N5c2ZzLmM6NzcyOnN0cnVjdCBkYW1vbl9zeXNmc19wcmVwX2FjdGlvbl9uYW1lIHtcXG5tbS9kYW1vbi9zeXNmcy5jLTc3My1cXHRjb25zdCBlbnVtIGRhbW9uX3ByZXBfYWN0aW9uIGFjdGlvbjtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLmM9ODQzPXN0YXRpYyBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9uX3N5c2ZzX3ByZXBfa3R5cGUgPSB7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jLTg1Mi1cXG5tbS9kYW1vbi9zeXNmcy5jOjg1MzpzdHJ1Y3QgZGFtb25fc3lzZnNfcHJlcHMge1xcbm1tL2RhbW9uL3N5c2ZzLmMtODU0LVxcdHN0cnVjdCBrb2JqZWN0IGtvYmo7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jPTk2Mj1zdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vbl9zeXNmc19wcmVwc19rdHlwZSA9IHtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLmMtOTcxLVxcbm1tL2RhbW9uL3N5c2ZzLmM6OTcyOnN0cnVjdCBkYW1vbl9zeXNmc19maWx0ZXIge1xcbm1tL2RhbW9uL3N5c2ZzLmMtOTczLVxcdHN0cnVjdCBrb2JqZWN0IGtvYmo7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jPTk4MD1zdGF0aWMgc3RydWN0IGRhbW9uX3N5c2ZzX2ZpbHRlciAqZGFtb25fc3lzZnNfZmlsdGVyX2FsbG9jKHZvaWQpXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jLTk4NC1cXG5tbS9kYW1vbi9zeXNmcy5jOjk4NTpzdHJ1Y3QgZGFtb25fc3lzZnNfZmlsdGVyX3R5cGVfbmFtZSB7XFxubW0vZGFtb24vc3lzZnMuYy05ODYtXFx0ZW51bSBkYW1vbl9maWx0ZXJfdHlwZSB0eXBlO1xcbi0tXFxubW0vZGFtb24vc3lzZnMuYz0xMTU2PXN0YXRpYyBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9uX3N5c2ZzX2ZpbHRlcl9rdHlwZSA9IHtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLmMtMTE2NS1cXG5tbS9kYW1vbi9zeXNmcy5jOjExNjY6c3RydWN0IGRhbW9uX3N5c2ZzX2ZpbHRlcnMge1xcbm1tL2RhbW9uL3N5c2ZzLmMtMTE2Ny1cXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xcbi0tXFxubW0vZGFtb24vc3lzZnMuYz0xMjc1PXN0YXRpYyBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9uX3N5c2ZzX2ZpbHRlcnNfa3R5cGUgPSB7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jLTEyODQtXFxubW0vZGFtb24vc3lzZnMuYzoxMjg1OnN0cnVjdCBkYW1vbl9zeXNmc19wcm9iZSB7XFxubW0vZGFtb24vc3lzZnMuYy0xMjg2LVxcdHN0cnVjdCBrb2JqZWN0IGtvYmo7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jPTEzODI9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfcHJvYmVfa3R5cGUgPSB7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jLTEzOTEtXFxubW0vZGFtb24vc3lzZnMuYzoxMzkyOnN0cnVjdCBkYW1vbl9zeXNmc19wcm9iZXMge1xcbm1tL2RhbW9uL3N5c2ZzLmMtMTM5My1cXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xcbi0tXFxubW0vZGFtb24vc3lzZnMuYz0xNTExPXN0YXRpYyBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9uX3N5c2ZzX3Byb2Jlc19rdHlwZSA9IHtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLmMtMTUyMC1cXG5tbS9kYW1vbi9zeXNmcy5jOjE1MjE6c3RydWN0IGRhbW9uX3N5c2ZzX2F0dHJzIHtcXG5tbS9kYW1vbi9zeXNmcy5jLTE1MjItXFx0c3RydWN0IGtvYmplY3Qga29iajtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLmM9MTYxNz1zdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vbl9zeXNmc19hdHRyc19rdHlwZSA9IHtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLmMtMTYyNi1cXG5tbS9kYW1vbi9zeXNmcy5jOjE2Mjc6c3RydWN0IGRhbW9uX3N5c2ZzX29wc19uYW1lIHtcXG5tbS9kYW1vbi9zeXNmcy5jLTE2MjgtXFx0ZW51bSBkYW1vbl9vcHNfaWQgb3BzX2lkO1xcbi0tXFxubW0vZGFtb24vc3lzZnMuYz0xNjMyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZGFtb25fc3lzZnNfb3BzX25hbWUgZGFtb25fc3lzZnNfb3BzX25hbWVzW10gPSB7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jLTE2NDYtXFxubW0vZGFtb24vc3lzZnMuYzoxNjQ3OnN0cnVjdCBkYW1vbl9zeXNmc19jb250ZXh0IHtcXG5tbS9kYW1vbi9zeXNmcy5jLTE2NDgtXFx0c3RydWN0IGtvYmplY3Qga29iajtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLmM9MTg5Mz1zdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vbl9zeXNmc19jb250ZXh0X2t0eXBlID0ge1xcbi0tXFxubW0vZGFtb24vc3lzZnMuYy0xOTAyLVxcbm1tL2RhbW9uL3N5c2ZzLmM6MTkwMzpzdHJ1Y3QgZGFtb25fc3lzZnNfY29udGV4dHMge1xcbm1tL2RhbW9uL3N5c2ZzLmMtMTkwNC1cXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xcbi0tXFxubW0vZGFtb24vc3lzZnMuYz0yMDIyPXN0YXRpYyBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9uX3N5c2ZzX2NvbnRleHRzX2t0eXBlID0ge1xcbi0tXFxubW0vZGFtb24vc3lzZnMuYy0yMDMxLVxcbm1tL2RhbW9uL3N5c2ZzLmM6MjAzMjpzdHJ1Y3QgZGFtb25fc3lzZnNfa2RhbW9uZCB7XFxubW0vZGFtb24vc3lzZnMuYy0yMDMzLVxcdHN0cnVjdCBrb2JqZWN0IGtvYmo7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jPTI1Njk9c3RhdGljIGludCBkYW1vbl9zeXNmc19kYW1vbl9jYWxsKGludCAoKmZuKSh2b2lkICpkYXRhKSxcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLmMtMjU4Mi1cXG5tbS9kYW1vbi9zeXNmcy5jOjI1ODM6c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZXNfd2Fsa19kYXRhIHtcXG5tbS9kYW1vbi9zeXNmcy5jLTI1ODQtXFx0c3RydWN0IGRhbW9uX3N5c2ZzX2tkYW1vbmQgKnN5c2ZzX2tkYW1vbmQ7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jPTI3Njc9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfa2RhbW9uZF9rdHlwZSA9IHtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLmMtMjc3Ni1cXG5tbS9kYW1vbi9zeXNmcy5jOjI3Nzc6c3RydWN0IGRhbW9uX3N5c2ZzX2tkYW1vbmRzIHtcXG5tbS9kYW1vbi9zeXNmcy5jLTI3NzgtXFx0c3RydWN0IGtvYmplY3Qga29iajtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLmM9MjkxMj1zdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vbl9zeXNmc19rZGFtb25kc19rdHlwZSA9IHtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLmMtMjkyMS1cXG5tbS9kYW1vbi9zeXNmcy5jOjI5MjI6c3RydWN0IGRhbW9uX3N5c2ZzX3VpX2RpciB7XFxubW0vZGFtb24vc3lzZnMuYy0yOTIzLVxcdHN0cnVjdCBrb2JqZWN0IGtvYmo7XFxuLS1cXG5tbS9kYW1vbi92YWRkci5jPTM2OT1zdGF0aWMgdm9pZCBkYW1vbl92YV9wcmVwYXJlX2FjY2Vzc19jaGVja3Moc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxcbi0tXFxubW0vZGFtb24vdmFkZHIuYy0zODQtXFxubW0vZGFtb24vdmFkZHIuYzozODU6c3RydWN0IGRhbW9uX3lvdW5nX3dhbGtfcHJpdmF0ZSB7XFxubW0vZGFtb24vdmFkZHIuYy0zODYtXFx0Ym9vbCB5b3VuZztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMDA6MzQ6MDUuNzMwNDExNjI4WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQyODE5MTg0NjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiBUaGlzIERBTU9OIFBhdGNoKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBUaGlzIHBhdGNoIGlzIHRvdWNoaW5nIERBTU9TLCB3aGljaCBhcyBJIHJlY2FsbCwgaXMgdGhlIHNldCBvZiBEQU1PTi1iYXNlZCBPcGVyYXRpb24gU2NoZW1lcyB3aXRoaW4gREFNT04gaXRzZWxmLiBXZSBuZWVkIHRvIGJlIHN1cmUgdGhlIGZvbGxvd2luZyBjb25maWd1cmF0aW9ucyBhcmUgc2V0OiBgREFNT05gLCBgREFNT05fUEFERFJgIG9yIGBEQU1PTl9WQUREUmAsIGBEQU1PTl9TWVNGU2AsIGFuZCBgU1lTRlNgLiBUaG9zZSBhcmUgdGhlIGNvcmUgYnVpbGRpbmcgYmxvY2tzIGZvciB0aGlzIHRvIGV2ZW4gKmZ1bmN0aW9uKi5cblxuSSBzZWUgd2UncmUgZm9jdXNlZCBvbiB0aGVzZSBzeW1ib2xzOiBgZGFtb25fc3RhcnRgLCBgZGFtb25fY29tbWl0X2N0eGAsIGBkYW1vbl9zeXNmc19hZGRfc2NoZW1lc2AsIGBkYW1vbl9zZXRfc2NoZW1lc2AsIGBkYW1vbl9uZXdfc2NoZW1lYCwgYW5kIGBkYW1vbl9hZGRfc2NoZW1lYC4gQ2xlYXJseSwgdGhpcyBwYXRjaCBpcyBkaWdnaW5nIGRlZXAgaW50byB0aGUgaW5pdGlhbGl6YXRpb24gYW5kIHNjaGVtZSBtYW5hZ2VtZW50IG9mIERBTU9OLlxuXG5XZSBuZWVkIHRvIHZlcmlmeSB0aGlzIGNhcmVmdWxseS4gSXQgbG9va3MgbGlrZSBpdCdzIHdvcnRoIGZ1enppbmcgYW5kIHRob3NlIGFyZSBvdXIgZW5hYmxlZCBjb25maWdzLlxuXG5UaGUgcmVhc29uaW5nIGhlcmUgaXMgY3JpdGljYWwuIFRoaXMgcGF0Y2ggaXMgY2hhbmdpbmcgdGhlIHF1b3RhIGNoZWNrIGxvZ2ljIOKAkyBzcGVjaWZpY2FsbHksIGhvdyBgZGFtb3NfcXVvdGFfaXNfZnVsbGAgYW5kIGBkYW1vbl9kb19hcHBseV9zY2hlbWVzYCBoYW5kbGUgc2l0dWF0aW9ucyB3aGVyZSB0aGUgY2hhcmdlZCBzaXplIG9yIGVmZmVjdGl2ZSBzaXplIGlzIHplcm8uIFRoaXMgY291bGQgaGF2ZSBzaWduaWZpY2FudCBpbXBsaWNhdGlvbnMgZm9yIG1lbW9yeSBtYW5hZ2VtZW50LCBwYXJ0aWN1bGFybHkgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHdoZXJlIERBTU9OIGlzIG9mdGVuIGVtcGxveWVkIHRocm91Z2ggdGhlIHN5c2ZzIGludGVyZmFjZS4gV2UncmUgdGFsa2luZyBhYm91dCBwcmV2ZW50aW5nIHByZW1hdHVyZSBxdW90YSBleGhhdXN0aW9uIGFuZCBlbnN1cmluZyB0aGUgc2NoZW1lcyBhcmUgYXBwbGllZCAqY29ycmVjdGx5KiBub3cuIFRoaXMgZGlyZWN0bHkgaW1wYWN0cyB0aGUgY29yZSBsb2dpYyBvZiBzY2hlbWUgYXBwbGljYXRpb24gYW5kIG1lbW9yeSBtYW5hZ2VtZW50IHdpdGhpbiBEQU1PTi5cblxuQWxyaWdodCwgSSdtIHJlYWR5IHRvIGBzZXQtcmVzdWx0c2AuIEkgbmVlZCBhIGRlZXBlciBkaXZlIGludG8gdGhlc2Ugc2NoZW1lIGFwcGxpY2F0aW9uIGNoYW5nZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyODAxLCJPdXRwdXRUb2tlbnMiOjIyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wM1QwMDozNDoxMC4wMTIzMzI0MTNaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTg4ODc5MTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkRBTU9OXCIsXG4gICAgXCJEQU1PTl9TWVNGU1wiLFxuICAgIFwiREFNT05fUEFERFJcIixcbiAgICBcIkRBTU9OX1ZBRERSXCIsXG4gICAgXCJTWVNGU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRhbW9uX3N0YXJ0XCIsXG4gICAgXCJkYW1vbl9jb21taXRfY3R4XCIsXG4gICAgXCJkYW1vbl9zeXNmc19hZGRfc2NoZW1lc1wiLFxuICAgIFwiZGFtb25fc2V0X3NjaGVtZXNcIixcbiAgICBcImRhbW9uX25ld19zY2hlbWVcIixcbiAgICBcImRhbW9uX2FkZF9zY2hlbWVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCB1cGRhdGVzIERBTU9OIE9wZXJhdGlvbiBTY2hlbWVzIChEQU1PUykgcXVvdGEgaGFuZGxpbmcgbG9naWMgd2l0aGluIG1tL2RhbW9uL2NvcmUuYyAoc3BlY2lmaWNhbGx5IGluIGRhbW9zX3F1b3RhX2lzX2Z1bGwgYW5kIGRhbW9uX2RvX2FwcGx5X3NjaGVtZXMpIHNvIHRoYXQgc2NoZW1lcyBhcmUgbm90IGluY29ycmVjdGx5IGNvbnNpZGVyZWQgZnVsbCB3aGVuIG5vIHF1b3RhIGhhcyBiZWVuIGNoYXJnZWQgeWV0LCBhbmQgZW1wdHkgcXVvdGFzIChlc3ogPT0gMCkgYXJlIHNraXBwZWQgcHJvcGVybHkuIFRoaXMgZnVuY3Rpb25hbGx5IGFmZmVjdHMgREFNT04gc2NoZW1lIGV2YWx1YXRpb24gYW5kIGNhbiBiZSB0ZXN0ZWQvZXhlcmNpc2VkIHZpYSB0aGUgREFNT04gc3lzZnMgaW50ZXJmYWNlIGluIHZpcnR1YWxpemVkIHRlc3QgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkRBTU9OXCIsXG4gICAgXCJEQU1PTl9TWVNGU1wiLFxuICAgIFwiREFNT05fUEFERFJcIixcbiAgICBcIkRBTU9OX1ZBRERSXCIsXG4gICAgXCJTWVNGU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRhbW9uX3N0YXJ0XCIsXG4gICAgXCJkYW1vbl9jb21taXRfY3R4XCIsXG4gICAgXCJkYW1vbl9zeXNmc19hZGRfc2NoZW1lc1wiLFxuICAgIFwiZGFtb25fc2V0X3NjaGVtZXNcIixcbiAgICBcImRhbW9uX25ld19zY2hlbWVcIixcbiAgICBcImRhbW9uX2FkZF9zY2hlbWVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCB1cGRhdGVzIERBTU9OIE9wZXJhdGlvbiBTY2hlbWVzIChEQU1PUykgcXVvdGEgaGFuZGxpbmcgbG9naWMgd2l0aGluIG1tL2RhbW9uL2NvcmUuYyAoc3BlY2lmaWNhbGx5IGluIGRhbW9zX3F1b3RhX2lzX2Z1bGwgYW5kIGRhbW9uX2RvX2FwcGx5X3NjaGVtZXMpIHNvIHRoYXQgc2NoZW1lcyBhcmUgbm90IGluY29ycmVjdGx5IGNvbnNpZGVyZWQgZnVsbCB3aGVuIG5vIHF1b3RhIGhhcyBiZWVuIGNoYXJnZWQgeWV0LCBhbmQgZW1wdHkgcXVvdGFzIChlc3ogPT0gMCkgYXJlIHNraXBwZWQgcHJvcGVybHkuIFRoaXMgZnVuY3Rpb25hbGx5IGFmZmVjdHMgREFNT04gc2NoZW1lIGV2YWx1YXRpb24gYW5kIGNhbiBiZSB0ZXN0ZWQvZXhlcmNpc2VkIHZpYSB0aGUgREFNT04gc3lzZnMgaW50ZXJmYWNlIGluIHZpcnR1YWxpemVkIHRlc3QgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wM1QwMDozNDoxMC4xMzEyMjYxMDRaIiwiU2VxIjoyOCwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1MzAzOTc3ODgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMDA6MzQ6MTAuMTMxNjU5MDk0WiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6MjUzMDM1MTE3MzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHF1b3RhIGNoZWNraW5nIGxvZ2ljIGluIERBTU9OIChtbS9kYW1vbi9jb3JlLmMpIGJ5IGFkZGluZyBlYXJseSByZXR1cm4vY29udGludWUgY2hlY2tzIHdoZW4gcXVvdGEtXFx1MDAzZWNoYXJnZWRfc3ogaXMgMCBpbiBkYW1vc19xdW90YV9pc19mdWxsKCkgYW5kIHdoZW4gcXVvdGEtXFx1MDAzZWVzeiBpcyAwIGluIGRhbW9uX2RvX2FwcGx5X3NjaGVtZXMoKS4gVGhlc2UgY2hhbmdlcyBwdXJlbHkgYWZmZWN0IGludGVybmFsIGNvbnRyb2wgZmxvdyBhbmQgYWNjb3VudGluZyBpbiBEQU1PTi4gTm8gbmV3IGFsbG9jYXRpb25zLCBzdGFjay9oZWFwIGJ1ZmZlcnMsIG9yIGNvcGllcyB0byB1c2VyIHNwYWNlIGFyZSBpbnRyb2R1Y2VkLCBub3IgaXMgdGhlcmUgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgb3IgaW5mb3JtYXRpb24gbGVha3MuIFRoZXJlZm9yZSwgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgaXMgbm90IHJlcXVpcmVkIGFuZCBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nIGlzIHN1ZmZpY2llbnQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYTkyZjhmYjA1MDZiNDRkMDI1MGQ3NDkyOWMxNTU1Yzk0NGM0OTMyYVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgU2VwIDMgMDA6MzM6MjMgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9tbS9kYW1vbi9jb3JlLmMgYi9tbS9kYW1vbi9jb3JlLmNcbmluZGV4IGRmMjI2MjE3NjU5MTEuLmY4Yzc4NGRmMjQ2MDAgMTAwNjQ0XG4tLS0gYS9tbS9kYW1vbi9jb3JlLmNcbisrKyBiL21tL2RhbW9uL2NvcmUuY1xuQEAgLTI2NTUsNiArMjY1NSw4IEBAIHN0YXRpYyBib29sIGRhbW9zX3F1b3RhX2lzX2Z1bGwoc3RydWN0IGRhbW9zX3F1b3RhICpxdW90YSxcbiB7XG4gXHRpZiAoIWRhbW9zX3F1b3RhX2lzX3NldChxdW90YSkpXG4gXHRcdHJldHVybiBmYWxzZTtcbitcdGlmICghcXVvdGEtXHUwMDNlY2hhcmdlZF9zeilcbitcdFx0cmV0dXJuIGZhbHNlO1xuIFx0aWYgKHF1b3RhLVx1MDAzZWNoYXJnZWRfc3ogXHUwMDNlPSBxdW90YS1cdTAwM2Vlc3opXG4gXHRcdHJldHVybiB0cnVlO1xuIFx0LypcbkBAIC0yNzUwLDYgKzI3NTIsOSBAQCBzdGF0aWMgdm9pZCBkYW1vbl9kb19hcHBseV9zY2hlbWVzKHN0cnVjdCBkYW1vbl9jdHggKmMsXG4gXHRcdGlmICghcy1cdTAwM2V3bWFya3MuYWN0aXZhdGVkKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFxuK1x0XHRpZiAoIXF1b3RhLVx1MDAzZWVzeilcbitcdFx0XHRjb250aW51ZTtcbitcbiBcdFx0LyogQ2hlY2sgdGhlIHF1b3RhICovXG4gXHRcdGlmIChkYW1vc19xdW90YV9pc19mdWxsKHF1b3RhLCBjLVx1MDAzZW1pbl9yZWdpb25fc3opKVxuIFx0XHRcdGNvbnRpbnVlO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMDA6MzQ6MTAuMTMxNjYwMDc0WiIsIlNlcSI6MzAsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjk5NzgzMzg4NTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBEQU1PTiBQYXRjaCoqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBNeSBmaXJzdCBtb3ZlIGlzIGFsd2F5cyB0byBnZXQgYSBzb2xpZCBncmFzcCBvZiB0aGUgc3Vycm91bmRpbmcgY29udGV4dC4gU28sIEknbSBnb2luZyB0byBwdWxsIHVwIHRoZSBgbW0vZGFtb24vY29yZS5jYCBmaWxlIGFuZCBzdGFydCBieSBnZXR0aW5nIGEgYnJvYWQgdmlldyB3aXRoIGByZWFkLWZpbGVgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29kZWJhc2UgYXJvdW5kIHRoZSBwYXRjaCBiZWZvcmUgSSBzdGFydCB0byBwYXJzZSB0aGUgc3BlY2lmaWMgY2hhbmdlcy4gVGhhdCBnaXZlcyBtZSB0aGUgbmVjZXNzYXJ5IGZvdW5kYXRpb24gdG8gZWZmZWN0aXZlbHkgY3JpdGlxdWUgdGhpcyB3b3JrLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTU5LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDksIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wM1QwMDozNDoyMC4xMTAwMDI2NTdaIiwiU2VxIjozMSwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzA3MjUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm1tL2RhbW9uL2NvcmUuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyNjQ1LFxuICBcIkxpbmVDb3VudFwiOiAxMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMjY0NTpcXHRcXHRcXHRxdW90YS1cXHUwMDNlY2hhcmdlZF9zeiArPSBzel9yZWdpb247XFxuMjY0NjpcXHRcXHRlbHNlXFxuMjY0NzpcXHRcXHRcXHRxdW90YS1cXHUwMDNlY2hhcmdlZF9zeiArPSBzel9hcHBsaWVkICsgbXVsdF9mcmFjKFxcbjI2NDg6XFx0XFx0XFx0XFx0XFx0KHN6X3JlZ2lvbiAtIHN6X2FwcGxpZWQpLFxcbjI2NDk6XFx0XFx0XFx0XFx0XFx0cXVvdGEtXFx1MDAzZWZhaWxfY2hhcmdlX251bSxcXG4yNjUwOlxcdFxcdFxcdFxcdFxcdHF1b3RhLVxcdTAwM2VmYWlsX2NoYXJnZV9kZW5vbSk7XFxuMjY1MTpcXHR9XFxuMjY1MjpcXHRcXG4yNjUzOlxcdHN0YXRpYyBib29sIGRhbW9zX3F1b3RhX2lzX2Z1bGwoc3RydWN0IGRhbW9zX3F1b3RhICpxdW90YSxcXG4yNjU0OlxcdFxcdFxcdHVuc2lnbmVkIGxvbmcgbWluX3JlZ2lvbl9zeilcXG4yNjU1OlxcdHtcXG4yNjU2OlxcdFxcdGlmICghZGFtb3NfcXVvdGFfaXNfc2V0KHF1b3RhKSlcXG4yNjU3OlxcdFxcdFxcdHJldHVybiBmYWxzZTtcXG4yNjU4OlxcdFxcdGlmICghcXVvdGEtXFx1MDAzZWNoYXJnZWRfc3opXFxuMjY1OTpcXHRcXHRcXHRyZXR1cm4gZmFsc2U7XFxuMjY2MDpcXHRcXHRpZiAocXVvdGEtXFx1MDAzZWNoYXJnZWRfc3ogXFx1MDAzZT0gcXVvdGEtXFx1MDAzZWVzeilcXG4yNjYxOlxcdFxcdFxcdHJldHVybiB0cnVlO1xcbjI2NjI6XFx0XFx0LypcXG4yNjYzOlxcdFxcdCAqIERBTU9TIGFjdGlvbiBpcyBhcHBsaWVkIHBlciByZWdpb24sIHNvIFxcdTAwM2NtaW5fcmVnaW9uX3N6IHJlbWFpbmluZ1xcbjI2NjQ6XFx0XFx0ICogcXVvdGEgbWVhbnMgdGhlIHF1b3RhIGlzIGVmZmVjdGl2ZWx5IGZ1bGwuXFxuMjY2NTpcXHRcXHQgKi9cXG4yNjY2OlxcdFxcdHJldHVybiBxdW90YS1cXHUwMDNlZXN6IC0gcXVvdGEtXFx1MDAzZWNoYXJnZWRfc3ogXFx1MDAzYyBtaW5fcmVnaW9uX3N6O1xcbjI2Njc6XFx0fVxcbjI2Njg6XFx0XFxuMjY2OTpcXHRzdGF0aWMgdm9pZCBkYW1vc19hcHBseV9zY2hlbWUoc3RydWN0IGRhbW9uX2N0eCAqYywgc3RydWN0IGRhbW9uX3RhcmdldCAqdCxcXG4yNjcwOlxcdFxcdFxcdHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsIHN0cnVjdCBkYW1vcyAqcylcXG4yNjcxOlxcdHtcXG4yNjcyOlxcdFxcdHN0cnVjdCBkYW1vc19xdW90YSAqcXVvdGEgPSBcXHUwMDI2cy1cXHUwMDNlcXVvdGE7XFxuMjY3MzpcXHRcXHR1bnNpZ25lZCBsb25nIHN6ID0gZGFtb25fc3pfcmVnaW9uKHIpO1xcbjI2NzQ6XFx0XFx0c3RydWN0IHRpbWVzcGVjNjQgYmVnaW4sIGVuZDtcXG4yNjc1OlxcdFxcdHVuc2lnbmVkIGxvbmcgc3pfYXBwbGllZCA9IDA7XFxuMjY3NjpcXHRcXHR1bnNpZ25lZCBsb25nIHN6X29wc19maWx0ZXJfcGFzc2VkID0gMDtcXG4yNjc3OlxcdFxcdC8qXFxuMjY3ODpcXHRcXHQgKiBXZSBwbGFuIHRvIHN1cHBvcnQgbXVsdGlwbGUgY29udGV4dCBwZXIga2RhbW9uZCwgYXMgREFNT04gc3lzZnNcXG4yNjc5OlxcdFxcdCAqIGltcGxpZXMgd2l0aCAnbnJfY29udGV4dHMnIGZpbGUuICBOZXZlcnRoZWxlc3MsIG9ubHkgc2luZ2xlIGNvbnRleHRcXG4yNjgwOlxcdFxcdCAqIHBlciBrZGFtb25kIGlzIHN1cHBvcnRlZCBmb3Igbm93LiAgU28sIHdlIGNhbiBzaW1wbHkgdXNlICcwJyBjb250ZXh0XFxuMjY4MTpcXHRcXHQgKiBpbmRleCBoZXJlLlxcbjI2ODI6XFx0XFx0ICovXFxuMjY4MzpcXHRcXHR1bnNpZ25lZCBpbnQgY2lkeCA9IDA7XFxuMjY4NDpcXHRcXHRzdHJ1Y3QgZGFtb3MgKnNpdGVyO1xcdFxcdC8qIHNjaGVtZXMgaXRlcmF0b3IgKi9cXG4yNjg1OlxcdFxcdHVuc2lnbmVkIGludCBzaWR4ID0gMDtcXG4yNjg2OlxcdFxcdHN0cnVjdCBkYW1vbl90YXJnZXQgKnRpdGVyO1xcdC8qIHRhcmdldHMgaXRlcmF0b3IgKi9cXG4yNjg3OlxcdFxcdHVuc2lnbmVkIGludCB0aWR4ID0gMCwgbnJfYWNjZXNzZXMgPSAwO1xcbjI2ODg6XFx0XFx0Ym9vbCBkb190cmFjZSA9IGZhbHNlO1xcbjI2ODk6XFx0XFxuMjY5MDpcXHRcXHQvKiBnZXQgaW5kaWNlcyBmb3IgdHJhY2VfZGFtb3NfYmVmb3JlX2FwcGx5KCkgKi9cXG4yNjkxOlxcdFxcdGlmICh0cmFjZV9kYW1vc19iZWZvcmVfYXBwbHlfZW5hYmxlZCgpKSB7XFxuMjY5MjpcXHRcXHRcXHRkYW1vbl9mb3JfZWFjaF9zY2hlbWUoc2l0ZXIsIGMpIHtcXG4yNjkzOlxcdFxcdFxcdFxcdGlmIChzaXRlciA9PSBzKVxcbjI2OTQ6XFx0XFx0XFx0XFx0XFx0YnJlYWs7XFxuMjY5NTpcXHRcXHRcXHRcXHRzaWR4Kys7XFxuMjY5NjpcXHRcXHRcXHR9XFxuMjY5NzpcXHRcXHRcXHRkYW1vbl9mb3JfZWFjaF90YXJnZXQodGl0ZXIsIGMpIHtcXG4yNjk4OlxcdFxcdFxcdFxcdGlmICh0aXRlciA9PSB0KVxcbjI2OTk6XFx0XFx0XFx0XFx0XFx0YnJlYWs7XFxuMjcwMDpcXHRcXHRcXHRcXHR0aWR4Kys7XFxuMjcwMTpcXHRcXHRcXHR9XFxuMjcwMjpcXHRcXHRcXHRucl9hY2Nlc3NlcyA9IGRhbW9uX25yX2FjY2Vzc2VzX212c3VtKHIsIGMpO1xcbjI3MDM6XFx0XFx0XFx0ZG9fdHJhY2UgPSB0cnVlO1xcbjI3MDQ6XFx0XFx0fVxcbjI3MDU6XFx0XFxuMjcwNjpcXHRcXHRpZiAoYy1cXHUwMDNlb3BzLmFwcGx5X3NjaGVtZSkge1xcbjI3MDc6XFx0XFx0XFx0aWYgKGRhbW9zX3F1b3RhX2lzX3NldChxdW90YSkgXFx1MDAyNlxcdTAwMjZcXG4yNzA4OlxcdFxcdFxcdFxcdFxcdHF1b3RhLVxcdTAwM2VjaGFyZ2VkX3N6ICsgc3ogXFx1MDAzZSBxdW90YS1cXHUwMDNlZXN6KSB7XFxuMjcwOTpcXHRcXHRcXHRcXHRzeiA9IEFMSUdOX0RPV04ocXVvdGEtXFx1MDAzZWVzeiAtIHF1b3RhLVxcdTAwM2VjaGFyZ2VkX3N6LFxcbjI3MTA6XFx0XFx0XFx0XFx0XFx0XFx0Yy1cXHUwMDNlbWluX3JlZ2lvbl9zeik7XFxuMjcxMTpcXHRcXHRcXHRcXHRpZiAoIXN6KVxcbjI3MTI6XFx0XFx0XFx0XFx0XFx0Z290byB1cGRhdGVfc3RhdDtcXG4yNzEzOlxcdFxcdFxcdFxcdGlmIChkYW1vbl9zcGxpdF9yZWdpb25fYXQodCwgciwgc3opKVxcbjI3MTQ6XFx0XFx0XFx0XFx0XFx0Z290byB1cGRhdGVfc3RhdDtcXG4yNzE1OlxcdFxcdFxcdH1cXG4yNzE2OlxcdFxcdFxcdGlmIChkYW1vc19jb3JlX2ZpbHRlcl9vdXQoYywgdCwgciwgcykpXFxuMjcxNzpcXHRcXHRcXHRcXHRyZXR1cm47XFxuMjcxODpcXHRcXHRcXHRrdGltZV9nZXRfY29hcnNlX3RzNjQoXFx1MDAyNmJlZ2luKTtcXG4yNzE5OlxcdFxcdFxcdHRyYWNlX2RhbW9zX2JlZm9yZV9hcHBseShjaWR4LCBzaWR4LCB0aWR4LCByLCBucl9hY2Nlc3NlcyxcXG4yNzIwOlxcdFxcdFxcdFxcdFxcdGRhbW9uX25yX3JlZ2lvbnModCksIGRvX3RyYWNlKTtcXG4yNzIxOlxcdFxcdFxcdHN6X2FwcGxpZWQgPSBjLVxcdTAwM2VvcHMuYXBwbHlfc2NoZW1lKGMsIHQsIHIsIHMsXFxuMjcyMjpcXHRcXHRcXHRcXHRcXHRcXHUwMDI2c3pfb3BzX2ZpbHRlcl9wYXNzZWQpO1xcbjI3MjM6XFx0XFx0XFx0ZGFtb3Nfd2Fsa19jYWxsX3dhbGsoYywgdCwgciwgcywgc3pfb3BzX2ZpbHRlcl9wYXNzZWQpO1xcbjI3MjQ6XFx0XFx0XFx0a3RpbWVfZ2V0X2NvYXJzZV90czY0KFxcdTAwMjZlbmQpO1xcbjI3MjU6XFx0XFx0XFx0cXVvdGEtXFx1MDAzZXRvdGFsX2NoYXJnZWRfbnMgKz0gdGltZXNwZWM2NF90b19ucyhcXHUwMDI2ZW5kKSAtXFxuMjcyNjpcXHRcXHRcXHRcXHR0aW1lc3BlYzY0X3RvX25zKFxcdTAwMjZiZWdpbik7XFxuMjcyNzpcXHRcXHRcXHRkYW1vc19jaGFyZ2VfcXVvdGEocXVvdGEsIHN6LCBzel9hcHBsaWVkKTtcXG4yNzI4OlxcdFxcdFxcdGlmIChkYW1vc19xdW90YV9pc19mdWxsKHF1b3RhLCBjLVxcdTAwM2VtaW5fcmVnaW9uX3N6KSkge1xcbjI3Mjk6XFx0XFx0XFx0XFx0cXVvdGEtXFx1MDAzZWNoYXJnZV90YXJnZXRfZnJvbSA9IHQ7XFxuMjczMDpcXHRcXHRcXHRcXHRxdW90YS1cXHUwMDNlY2hhcmdlX2FkZHJfZnJvbSA9IHItXFx1MDAzZWFyLmVuZDtcXG4yNzMxOlxcdFxcdFxcdH1cXG4yNzMyOlxcdFxcdH1cXG4yNzMzOlxcdFxcdGlmIChzLVxcdTAwM2VhY3Rpb24gIT0gREFNT1NfU1RBVClcXG4yNzM0OlxcdFxcdFxcdHItXFx1MDAzZWFnZSA9IDA7XFxuMjczNTpcXHRcXG4yNzM2OlxcdHVwZGF0ZV9zdGF0OlxcbjI3Mzc6XFx0XFx0ZGFtb3NfdXBkYXRlX3N0YXQocywgc3osIHN6X2FwcGxpZWQsIHN6X29wc19maWx0ZXJfcGFzc2VkKTtcXG4yNzM4OlxcdH1cXG4yNzM5OlxcdFxcbjI3NDA6XFx0c3RhdGljIHZvaWQgZGFtb25fZG9fYXBwbHlfc2NoZW1lcyhzdHJ1Y3QgZGFtb25fY3R4ICpjLFxcbjI3NDE6XFx0XFx0XFx0XFx0XFx0ICAgc3RydWN0IGRhbW9uX3RhcmdldCAqdCxcXG4yNzQyOlxcdFxcdFxcdFxcdFxcdCAgIHN0cnVjdCBkYW1vbl9yZWdpb24gKnIpXFxuMjc0MzpcXHR7XFxuMjc0NDpcXHRcXHRzdHJ1Y3QgZGFtb3MgKnM7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDAwOjM0OjIwLjExMDMxMzI5N1oiLCJTZXEiOjMyLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxNjg1OTkyODEyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBJJ20gcmVhZHkgdG8gZGl2ZSBpbnRvIHRoaXMuIExldCdzIHNlZS4uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVtYWluaW5nIHBpZWNlcyBvZiB0aGUgYGRhbW9uX2RvX2FwcGx5X3NjaGVtZXNgIGZ1bmN0aW9uLiBJIGFscmVhZHkgaGF2ZSBhIGdvb2QgZ3Jhc3Agb2YgdGhlIGZvdW5kYXRpb25hbCBwYXJ0cyBvZiB0aGlzIHN5c3RlbSwgYnV0IEknbSBwcm9iYWJseSBtaXNzaW5nIHNvbWUgY3JpdGljYWwgbnVhbmNlcyB0byBmdWxseSBncm9rIGhvdyBpdCdzIGFsbCB3b3JraW5nLiBJJ20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIGhvdyBpdCBoYW5kbGVzIGVkZ2UgY2FzZXMgb3Igb3B0aW1pemF0aW9ucywgYXMgdGhvc2UgYXJlIHVzdWFsbHkgdGhlIGtleSB0byByZWFsbHkgdW5kZXJzdGFuZGluZyB0aGUgZGVzaWduIHBoaWxvc29waHkgYmVoaW5kIGFuIGltcGxlbWVudGF0aW9uLiBJJ20gYW50aWNpcGF0aW5nIHRoYXQgdGhlc2UgcmVtYWluaW5nIGNvbXBvbmVudHMgd2lsbCBjbGFyaWZ5IHRoZSBvdmVyYWxsIHB1cnBvc2UgYW5kIGV4cGVjdGVkIG91dGNvbWVzIGZvciB0aGUgZGlmZmVyZW50IG1ldGhvZHMuIFRoaXMgd2lsbCBwcm9iYWJseSB0b3VjaCBvbiB0aGUgaW50ZWdyYXRpb24gd2l0aCB0aGUgbGFyZ2VyIHN5c3RlbS4gVGltZSB0byBkaWcgaW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM5NzAsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDAwOjM0OjIxLjc5NjMwOTM0OVoiLCJTZXEiOjMzLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MDY2NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibW0vZGFtb24vY29yZS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDI3NDAsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjI3NDA6XFx0c3RhdGljIHZvaWQgZGFtb25fZG9fYXBwbHlfc2NoZW1lcyhzdHJ1Y3QgZGFtb25fY3R4ICpjLFxcbjI3NDE6XFx0XFx0XFx0XFx0XFx0ICAgc3RydWN0IGRhbW9uX3RhcmdldCAqdCxcXG4yNzQyOlxcdFxcdFxcdFxcdFxcdCAgIHN0cnVjdCBkYW1vbl9yZWdpb24gKnIpXFxuMjc0MzpcXHR7XFxuMjc0NDpcXHRcXHRzdHJ1Y3QgZGFtb3MgKnM7XFxuMjc0NTpcXHRcXG4yNzQ2OlxcdFxcdGRhbW9uX2Zvcl9lYWNoX3NjaGVtZShzLCBjKSB7XFxuMjc0NzpcXHRcXHRcXHRzdHJ1Y3QgZGFtb3NfcXVvdGEgKnF1b3RhID0gXFx1MDAyNnMtXFx1MDAzZXF1b3RhO1xcbjI3NDg6XFx0XFxuMjc0OTpcXHRcXHRcXHRpZiAodGltZV9iZWZvcmUoYy1cXHUwMDNlcGFzc2VkX3NhbXBsZV9pbnRlcnZhbHMsIHMtXFx1MDAzZW5leHRfYXBwbHlfc2lzKSlcXG4yNzUwOlxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbjI3NTE6XFx0XFxuMjc1MjpcXHRcXHRcXHRpZiAoIXMtXFx1MDAzZXdtYXJrcy5hY3RpdmF0ZWQpXFxuMjc1MzpcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4yNzU0OlxcdFxcbjI3NTU6XFx0XFx0XFx0aWYgKCFxdW90YS1cXHUwMDNlZXN6KVxcbjI3NTY6XFx0XFx0XFx0XFx0Y29udGludWU7XFxuMjc1NzpcXHRcXG4yNzU4OlxcdFxcdFxcdC8qIENoZWNrIHRoZSBxdW90YSAqL1xcbjI3NTk6XFx0XFx0XFx0aWYgKGRhbW9zX3F1b3RhX2lzX2Z1bGwocXVvdGEsIGMtXFx1MDAzZW1pbl9yZWdpb25fc3opKVxcbjI3NjA6XFx0XFx0XFx0XFx0Y29udGludWU7XFxuMjc2MTpcXHRcXG4yNzYyOlxcdFxcdFxcdGlmIChkYW1vc19za2lwX2NoYXJnZWRfcmVnaW9uKHQsIHIsIHMsIGMtXFx1MDAzZW1pbl9yZWdpb25fc3opKVxcbjI3NjM6XFx0XFx0XFx0XFx0Y29udGludWU7XFxuMjc2NDpcXHRcXG4yNzY1OlxcdFxcdFxcdGlmIChzLVxcdTAwM2VtYXhfbnJfc25hcHNob3RzIFxcdTAwMjZcXHUwMDI2XFxuMjc2NjpcXHRcXHRcXHRcXHRcXHRzLVxcdTAwM2VtYXhfbnJfc25hcHNob3RzIFxcdTAwM2M9IHMtXFx1MDAzZXN0YXQubnJfc25hcHNob3RzKVxcbjI3Njc6XFx0XFx0XFx0XFx0Y29udGludWU7XFxuMjc2ODpcXHRcXG4yNzY5OlxcdFxcdFxcdGlmIChkYW1vc192YWxpZF90YXJnZXQoYywgciwgcykpXFxuMjc3MDpcXHRcXHRcXHRcXHRkYW1vc19hcHBseV9zY2hlbWUoYywgdCwgciwgcyk7XFxuMjc3MTpcXHRcXG4yNzcyOlxcdFxcdFxcdGlmIChkYW1vbl9pc19sYXN0X3JlZ2lvbihyLCB0KSlcXG4yNzczOlxcdFxcdFxcdFxcdHMtXFx1MDAzZXN0YXQubnJfc25hcHNob3RzKys7XFxuMjc3NDpcXHRcXHR9XFxuMjc3NTpcXHR9XFxuMjc3NjpcXHRcXG4yNzc3OlxcdC8qXFxuMjc3ODpcXHQgKiBkYW1vc19hcHBseV90YXJnZXQoKSAtIEFwcGx5IERBTU9TIHNjaGVtZXMgdG8gYSBnaXZlbiB0YXJnZXQuXFxuMjc3OTpcXHQgKiBAYzpcXHRcXHRcXHRtb25pdG9yaW5nIGNvbnRleHQgdG8gYXBwbHkgaXRzIERBTU9TIHNjaGVtZXMgdG8uLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wM1QwMDozNDoyMS43OTY3MjEwNDlaIiwiU2VxIjozNCwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDk2NzAyODE3OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgVGhpcyBQYXRjaDogREFNT1MgUXVvdGEgQ29uc2lkZXJhdGlvbnMqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcyBwYXRjaCBhbmQgdW5kZXJzdGFuZCB0aGUgaW50ZW50IGFuZCBpdHMgaW1wYWN0IG9uIHRoZSBEQU1PUyBxdW90YSBtYW5hZ2VtZW50LiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZXhhbWluZSB0aGUgc3BlY2lmaWMgY29kZSBtb2RpZmljYXRpb25zIHdpdGhpbiB0aGUgYGRhbW9zX3F1b3RhX2lzX2Z1bGxgIGFuZCBgZGFtb25fZG9fYXBwbHlfc2NoZW1lc2AgZnVuY3Rpb25zLlxuXG5GaXJzdCwgbG9va2luZyBhdCBgZGFtb3NfcXVvdGFfaXNfZnVsbGAsIEkgaW1tZWRpYXRlbHkgc2VlIHRoZSBhZGRlZCBjb25kaXRpb25hbCBjaGVja3MuIEl0IHNlZW1zIHRoZSBjb2RlIG5vdyBleHBsaWNpdGx5IGhhbmRsZXMgY2FzZXMgd2hlcmUgYHF1b3RhLVx1MDAzZWNoYXJnZWRfc3pgIGlzIHplcm8gKm9yKiBgcXVvdGEtXHUwMDNlZXN6YCAodGhlICplKnh0ZW5zaWJsZSAqcyppemUpIGlzIHplcm8uICBUaGUgb3JpZ2luYWwgbG9naWMgYWxyZWFkeSBoYW5kbGVkIHRoZSB1bnNldCBxdW90YSBjaGVjayAoYCFkYW1vc19xdW90YV9pc19zZXQocXVvdGEpYCkuICBJdCBtYWtlcyBzZW5zZTsgd2UgZG9uJ3Qgd2FudCB0byBkZWNsYXJlIGEgcXVvdGEgYXMgXCJmdWxsXCIgaWYgbm90aGluZyBoYXMgYmVlbiBjaGFyZ2VkIG9yIHRoZSBzaXplIGlzIHplcm8uIFRoZSBjb21tZW50IGFib3V0IFwiZWZmZWN0aXZlIGZ1bGxuZXNzXCIgcmVsYXRlZCB0byBgbWluX3JlZ2lvbl9zemAgaXMgc29tZXRoaW5nIEkgbmVlZCB0byBrZWVwIGluIG1pbmQsIHRvby5cblxuTW92aW5nIG9uIHRvIGBkYW1vbl9kb19hcHBseV9zY2hlbWVzYCwgaXQgbG9va3MgbGlrZSB0aGUgbmV3IGNoZWNrIGBpZiAoIXF1b3RhLVx1MDAzZWVzeilgIG5vdyBwcmV2ZW50cyBxdW90YSBjaGVja3MgZnJvbSBvY2N1cnJpbmcgaWYgdGhlIHF1b3RhIHNpemUgaGFzIG5vdCBiZWVuIHNldC4gV2l0aG91dCB0aGlzLCB0aGVzZSBxdW90YSBjaGVja3Mgd291bGQgbGlrZWx5IGhhdmUgYmVlbiB0cmlnZ2VyaW5nIGluY29ycmVjdCBiZWhhdmlvciwgYW5kIHRoZSBjaGVja3MgY2FuIG5vdyBzYWZlbHkgYmUgc2tpcHBlZC5cblxuVG8gZ2V0IGEgZnVsbCBncmFzcCBvZiB0aGUgcHJvYmxlbSB0aGlzIGlzIHNvbHZpbmcsIEkgbmVlZCB0byBzZWUgaG93IGBkYW1vc19xdW90YWAgb2JqZWN0cyBhcmUgaW5pdGlhbGl6ZWQsIGhvdyBgZXN6YCBhbmQgYGNoYXJnZWRfc3pgIGFyZSBtYW5hZ2VkLCBhbmQgd2hlcmUgYGRhbW9zX3F1b3RhX2lzX3NldGAgaXMgdXNlZC4gSSdsbCBuZWVkIHRvIHJ1biBhIHF1aWNrIGBncmVwYCBmb3IgdGhlIGBkYW1vc19xdW90YV9pc19zZXRgIGFuZCBgZXN6YCBtZW1iZXJzIHRvIGdldCBhIGJyb2FkZXIgdmlldyBvZiB0aGUgcXVvdGEncyBsaWZlY3ljbGUuIFRoaXMgaXMgbGlrZWx5IGFkZHJlc3NpbmcgYSBzY2VuYXJpbyB3aGVyZSB0aGUgcXVvdGEgbWlnaHQgbm90IGJlIHByb3Blcmx5IGluaXRpYWxpemVkLCBjYXVzaW5nIHNwdXJpb3VzIFwiZnVsbFwiIGFsZXJ0cyBvciBpbmNvcnJlY3QgY2FsY3VsYXRpb25zLCBvciBtYXliZSBpdCdzIGp1c3QgYWJvdXQgZW5zdXJpbmcgdGhlcmUncyBhIGRlZmluZWQgcXVvdGEgKmJlZm9yZSogd2Ugc3RhcnQgZW5mb3JjaW5nIGl0LiBVbmRlcnN0YW5kaW5nIHRoZSBpbml0aWFsaXphdGlvbiBhbmQgdXNhZ2Ugd2lsbCBjbGFyaWZ5IHdoZXRoZXIgdGhpcyBpcyBhIHJvYnVzdG5lc3MgZml4IG9yIGEgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uLCBvciBwZXJoYXBzIGEgY29tYmluYXRpb24gb2YgYm90aC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDc0MywiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI4NiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDAwOjM0OjI2Ljc2Mzc1MzE4N1oiLCJTZXEiOjM1LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjY1NTQ4ODAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRhbW9zX3F1b3RhX2lzX3NldHxlc3pcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vZGFtb24vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL2RhbW9uL2NvcmUuYz03MzM9c3RhdGljIHN0cnVjdCBkYW1vc19xdW90YSAqZGFtb3NfcXVvdGFfaW5pdChzdHJ1Y3QgZGFtb3NfcXVvdGEgKnF1b3RhKVxcbm1tL2RhbW9uL2NvcmUuYy03MzQte1xcbm1tL2RhbW9uL2NvcmUuYzo3MzU6XFx0cXVvdGEtXFx1MDAzZWVzeiA9IDA7XFxubW0vZGFtb24vY29yZS5jLTczNi1cXHRxdW90YS1cXHUwMDNldG90YWxfY2hhcmdlZF9zeiA9IDA7XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtNzQxLVxcdHF1b3RhLVxcdTAwM2VjaGFyZ2VfYWRkcl9mcm9tID0gMDtcXG5tbS9kYW1vbi9jb3JlLmM6NzQyOlxcdHF1b3RhLVxcdTAwM2Vlc3pfYnAgPSAwO1xcbm1tL2RhbW9uL2NvcmUuYy03NDMtXFx0cmV0dXJuIHF1b3RhO1xcbi0tXFxubW0vZGFtb24vY29yZS5jPTIzNzE9c3RhdGljIGJvb2wgX19kYW1vc192YWxpZF90YXJnZXQoc3RydWN0IGRhbW9uX3JlZ2lvbiAqciwgc3RydWN0IGRhbW9zICpzLFxcbi0tXFxubW0vZGFtb24vY29yZS5jLTIzODYtLypcXG5tbS9kYW1vbi9jb3JlLmM6MjM4NzogKiBkYW1vc19xdW90YV9pc19zZXQoKSAtIFJldHVybiBpZiB0aGUgZ2l2ZW4gcXVvdGEgaXMgYWN0dWFsbHkgc2V0Llxcbm1tL2RhbW9uL2NvcmUuYy0yMzg4LSAqIEBxdW90YTpcXHRUaGUgcXVvdGEgdG8gY2hlY2suXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMjM5MS0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6MjM5MjpzdGF0aWMgYm9vbCBkYW1vc19xdW90YV9pc19zZXQoc3RydWN0IGRhbW9zX3F1b3RhICpxdW90YSlcXG5tbS9kYW1vbi9jb3JlLmMtMjM5My17XFxubW0vZGFtb24vY29yZS5jOjIzOTQ6XFx0cmV0dXJuIHF1b3RhLVxcdTAwM2Vlc3ogfHwgcXVvdGEtXFx1MDAzZXN6IHx8IHF1b3RhLVxcdTAwM2VtcyB8fFxcbm1tL2RhbW9uL2NvcmUuYy0yMzk1LVxcdFxcdCFkYW1vc19xdW90YV9nb2Fsc19lbXB0eShxdW90YSk7XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9MjM5OD1zdGF0aWMgYm9vbCBkYW1vc192YWxpZF90YXJnZXQoc3RydWN0IGRhbW9uX2N0eCAqYywgc3RydWN0IGRhbW9uX3JlZ2lvbiAqcixcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0yNDAyLVxcbm1tL2RhbW9uL2NvcmUuYzoyNDAzOlxcdGlmICghcmV0IHx8ICFkYW1vc19xdW90YV9pc19zZXQoXFx1MDAyNnMtXFx1MDAzZXF1b3RhKSB8fCAhYy1cXHUwMDNlb3BzLmdldF9zY2hlbWVfc2NvcmUpXFxubW0vZGFtb24vY29yZS5jLTI0MDQtXFx0XFx0cmV0dXJuIHJldDtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz0yNjUzPXN0YXRpYyBib29sIGRhbW9zX3F1b3RhX2lzX2Z1bGwoc3RydWN0IGRhbW9zX3F1b3RhICpxdW90YSxcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0yNjU1LXtcXG5tbS9kYW1vbi9jb3JlLmM6MjY1NjpcXHRpZiAoIWRhbW9zX3F1b3RhX2lzX3NldChxdW90YSkpXFxubW0vZGFtb24vY29yZS5jLTI2NTctXFx0XFx0cmV0dXJuIGZhbHNlO1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTI2NTktXFx0XFx0cmV0dXJuIGZhbHNlO1xcbm1tL2RhbW9uL2NvcmUuYzoyNjYwOlxcdGlmIChxdW90YS1cXHUwMDNlY2hhcmdlZF9zeiBcXHUwMDNlPSBxdW90YS1cXHUwMDNlZXN6KVxcbm1tL2RhbW9uL2NvcmUuYy0yNjYxLVxcdFxcdHJldHVybiB0cnVlO1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTI2NjUtXFx0ICovXFxubW0vZGFtb24vY29yZS5jOjI2NjY6XFx0cmV0dXJuIHF1b3RhLVxcdTAwM2Vlc3ogLSBxdW90YS1cXHUwMDNlY2hhcmdlZF9zeiBcXHUwMDNjIG1pbl9yZWdpb25fc3o7XFxubW0vZGFtb24vY29yZS5jLTI2NjctfVxcbi0tXFxubW0vZGFtb24vY29yZS5jPTI2Njk9c3RhdGljIHZvaWQgZGFtb3NfYXBwbHlfc2NoZW1lKHN0cnVjdCBkYW1vbl9jdHggKmMsIHN0cnVjdCBkYW1vbl90YXJnZXQgKnQsXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMjcwNi1cXHRpZiAoYy1cXHUwMDNlb3BzLmFwcGx5X3NjaGVtZSkge1xcbm1tL2RhbW9uL2NvcmUuYzoyNzA3OlxcdFxcdGlmIChkYW1vc19xdW90YV9pc19zZXQocXVvdGEpIFxcdTAwMjZcXHUwMDI2XFxubW0vZGFtb24vY29yZS5jOjI3MDg6XFx0XFx0XFx0XFx0cXVvdGEtXFx1MDAzZWNoYXJnZWRfc3ogKyBzeiBcXHUwMDNlIHF1b3RhLVxcdTAwM2Vlc3opIHtcXG5tbS9kYW1vbi9jb3JlLmM6MjcwOTpcXHRcXHRcXHRzeiA9IEFMSUdOX0RPV04ocXVvdGEtXFx1MDAzZWVzeiAtIHF1b3RhLVxcdTAwM2VjaGFyZ2VkX3N6LFxcbm1tL2RhbW9uL2NvcmUuYy0yNzEwLVxcdFxcdFxcdFxcdFxcdGMtXFx1MDAzZW1pbl9yZWdpb25fc3opO1xcbi0tXFxubW0vZGFtb24vY29yZS5jPTI3NDA9c3RhdGljIHZvaWQgZGFtb25fZG9fYXBwbHlfc2NoZW1lcyhzdHJ1Y3QgZGFtb25fY3R4ICpjLFxcbi0tXFxubW0vZGFtb24vY29yZS5jLTI3NTQtXFxubW0vZGFtb24vY29yZS5jOjI3NTU6XFx0XFx0aWYgKCFxdW90YS1cXHUwMDNlZXN6KVxcbm1tL2RhbW9uL2NvcmUuYy0yNzU2LVxcdFxcdFxcdGNvbnRpbnVlO1xcbi0tXFxubW0vZGFtb24vY29yZS5jPTMxODU9c3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb3NfcXVvdGFfc2NvcmUoc3RydWN0IGRhbW9uX2N0eCAqYywgc3RydWN0IGRhbW9zICpzKVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTMyMDAtXFxubW0vZGFtb24vY29yZS5jOjMyMDE6c3RhdGljIHZvaWQgZGFtb3NfZ29hbF90dW5lX2Vzel9icF9jb25zaXN0KHN0cnVjdCBkYW1vbl9jdHggKmMsIHN0cnVjdCBkYW1vcyAqcylcXG5tbS9kYW1vbi9jb3JlLmMtMzIwMi17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMzIwNS1cXG5tbS9kYW1vbi9jb3JlLmM6MzIwNjpcXHRxdW90YS1cXHUwMDNlZXN6X2JwID0gZGFtb25fZmVlZF9sb29wX25leHRfaW5wdXQoXFxubW0vZGFtb24vY29yZS5jOjMyMDc6XFx0XFx0XFx0bWF4KHF1b3RhLVxcdTAwM2Vlc3pfYnAsIDEwMDAwVUwpLCBzY29yZSk7XFxubW0vZGFtb24vY29yZS5jLTMyMDgtfVxcbm1tL2RhbW9uL2NvcmUuYy0zMjA5LVxcbm1tL2RhbW9uL2NvcmUuYzozMjEwOnN0YXRpYyB2b2lkIGRhbW9zX2dvYWxfdHVuZV9lc3pfYnBfdGVtcG9yYWwoc3RydWN0IGRhbW9uX2N0eCAqYyxcXG5tbS9kYW1vbi9jb3JlLmMtMzIxMS1cXHRcXHRzdHJ1Y3QgZGFtb3MgKnMpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMzIxNi1cXHRpZiAoc2NvcmUgXFx1MDAzZT0gMTAwMDApXFxubW0vZGFtb24vY29yZS5jOjMyMTc6XFx0XFx0cXVvdGEtXFx1MDAzZWVzel9icCA9IDA7XFxubW0vZGFtb24vY29yZS5jLTMyMTgtXFx0ZWxzZSBpZiAocXVvdGEtXFx1MDAzZXN6KVxcbm1tL2RhbW9uL2NvcmUuYzozMjE5OlxcdFxcdHF1b3RhLVxcdTAwM2Vlc3pfYnAgPSBxdW90YS1cXHUwMDNlc3ogKiAxMDAwMDtcXG5tbS9kYW1vbi9jb3JlLmMtMzIyMC1cXHRlbHNlXFxubW0vZGFtb24vY29yZS5jOjMyMjE6XFx0XFx0cXVvdGEtXFx1MDAzZWVzel9icCA9IFVMT05HX01BWDtcXG5tbS9kYW1vbi9jb3JlLmMtMzIyMi19XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9MzIyNz1zdGF0aWMgdm9pZCBkYW1vc19zZXRfZWZmZWN0aXZlX3F1b3RhKHN0cnVjdCBkYW1vbl9jdHggKmN0eCwgc3RydWN0IGRhbW9zICpzKVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTMyMzAtXFx0dW5zaWduZWQgbG9uZyB0aHJvdWdocHV0O1xcbm1tL2RhbW9uL2NvcmUuYzozMjMxOlxcdHVuc2lnbmVkIGxvbmcgZXN6ID0gVUxPTkdfTUFYO1xcbm1tL2RhbW9uL2NvcmUuYy0zMjMyLVxcbm1tL2RhbW9uL2NvcmUuYy0zMjMzLVxcdGlmICghcXVvdGEtXFx1MDAzZW1zIFxcdTAwMjZcXHUwMDI2IGxpc3RfZW1wdHkoXFx1MDAyNnF1b3RhLVxcdTAwM2Vnb2FscykpIHtcXG5tbS9kYW1vbi9jb3JlLmM6MzIzNDpcXHRcXHRxdW90YS1cXHUwMDNlZXN6ID0gcXVvdGEtXFx1MDAzZXN6O1xcbm1tL2RhbW9uL2NvcmUuYy0zMjM1LVxcdFxcdHJldHVybjtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0zMjM5LVxcdFxcdGlmIChxdW90YS1cXHUwMDNlZ29hbF90dW5lciA9PSBEQU1PU19RVU9UQV9HT0FMX1RVTkVSX0NPTlNJU1QpXFxubW0vZGFtb24vY29yZS5jOjMyNDA6XFx0XFx0XFx0ZGFtb3NfZ29hbF90dW5lX2Vzel9icF9jb25zaXN0KGN0eCwgcyk7XFxubW0vZGFtb24vY29yZS5jLTMyNDEtXFx0XFx0ZWxzZSBpZiAocXVvdGEtXFx1MDAzZWdvYWxfdHVuZXIgPT0gREFNT1NfUVVPVEFfR09BTF9UVU5FUl9URU1QT1JBTClcXG5tbS9kYW1vbi9jb3JlLmM6MzI0MjpcXHRcXHRcXHRkYW1vc19nb2FsX3R1bmVfZXN6X2JwX3RlbXBvcmFsKGN0eCwgcyk7XFxubW0vZGFtb24vY29yZS5jOjMyNDM6XFx0XFx0ZXN6ID0gcXVvdGEtXFx1MDAzZWVzel9icCAvIDEwMDAwO1xcbm1tL2RhbW9uL2NvcmUuYy0zMjQ0LVxcdH1cXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0zMjUxLVxcdFxcdFxcdHRocm91Z2hwdXQgPSBQQUdFX1NJWkUgKiAxMDI0O1xcbm1tL2RhbW9uL2NvcmUuYzozMjUyOlxcdFxcdGVzeiA9IG1pbih0aHJvdWdocHV0ICogcXVvdGEtXFx1MDAzZW1zLCBlc3opO1xcbm1tL2RhbW9uL2NvcmUuYzozMjUzOlxcdFxcdGVzeiA9IG1heChjdHgtXFx1MDAzZW1pbl9yZWdpb25fc3osIGVzeik7XFxubW0vZGFtb24vY29yZS5jLTMyNTQtXFx0fVxcbm1tL2RhbW9uL2NvcmUuYy0zMjU1LVxcbm1tL2RhbW9uL2NvcmUuYzozMjU2OlxcdGlmIChxdW90YS1cXHUwMDNlc3ogXFx1MDAyNlxcdTAwMjYgcXVvdGEtXFx1MDAzZXN6IFxcdTAwM2MgZXN6KVxcbm1tL2RhbW9uL2NvcmUuYzozMjU3OlxcdFxcdGVzeiA9IHF1b3RhLVxcdTAwM2VzejtcXG5tbS9kYW1vbi9jb3JlLmMtMzI1OC1cXG5tbS9kYW1vbi9jb3JlLmM6MzI1OTpcXHRxdW90YS1cXHUwMDNlZXN6ID0gZXN6O1xcbm1tL2RhbW9uL2NvcmUuYy0zMjYwLX1cXG5tbS9kYW1vbi9jb3JlLmMtMzI2MS1cXG5tbS9kYW1vbi9jb3JlLmM6MzI2MjpzdGF0aWMgdm9pZCBkYW1vc190cmFjZV9lc3ooc3RydWN0IGRhbW9uX2N0eCAqYywgc3RydWN0IGRhbW9zICpzLFxcbm1tL2RhbW9uL2NvcmUuYy0zMjYzLVxcdFxcdHN0cnVjdCBkYW1vc19xdW90YSAqcXVvdGEpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMzI3Mi1cXHR9XFxubW0vZGFtb24vY29yZS5jOjMyNzM6XFx0dHJhY2VfZGFtb3NfZXN6KGNpZHgsIHNpZHgsIHF1b3RhLVxcdTAwM2Vlc3opO1xcbm1tL2RhbW9uL2NvcmUuYy0zMjc0LX1cXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz0zMjc2PXN0YXRpYyB2b2lkIGRhbW9zX2FkanVzdF9xdW90YShzdHJ1Y3QgZGFtb25fY3R4ICpjLCBzdHJ1Y3QgZGFtb3MgKnMpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMzI4MC1cXHRzdHJ1Y3QgZGFtb25fcmVnaW9uICpyO1xcbm1tL2RhbW9uL2NvcmUuYzozMjgxOlxcdHVuc2lnbmVkIGxvbmcgY3VtdWxhdGVkX3N6LCBjYWNoZWRfZXN6O1xcbm1tL2RhbW9uL2NvcmUuYy0zMjgyLVxcdHVuc2lnbmVkIGludCBzY29yZSwgbWF4X3Njb3JlID0gMDtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0zMjkwLVxcdFxcdGRhbW9zX3NldF9lZmZlY3RpdmVfcXVvdGEoYywgcyk7XFxubW0vZGFtb24vY29yZS5jOjMyOTE6XFx0XFx0aWYgKHRyYWNlX2RhbW9zX2Vzel9lbmFibGVkKCkpXFxubW0vZGFtb24vY29yZS5jOjMyOTI6XFx0XFx0XFx0ZGFtb3NfdHJhY2VfZXN6KGMsIHMsIHF1b3RhKTtcXG5tbS9kYW1vbi9jb3JlLmMtMzI5My1cXHR9XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMzMwMy1cXHRcXHRxdW90YS1cXHUwMDNlY2hhcmdlZF9zeiA9IDA7XFxubW0vZGFtb24vY29yZS5jOjMzMDQ6XFx0XFx0aWYgKHRyYWNlX2RhbW9zX2Vzel9lbmFibGVkKCkpXFxubW0vZGFtb24vY29yZS5jOjMzMDU6XFx0XFx0XFx0Y2FjaGVkX2VzeiA9IHF1b3RhLVxcdTAwM2Vlc3o7XFxubW0vZGFtb24vY29yZS5jLTMzMDYtXFx0XFx0ZGFtb3Nfc2V0X2VmZmVjdGl2ZV9xdW90YShjLCBzKTtcXG5tbS9kYW1vbi9jb3JlLmM6MzMwNzpcXHRcXHRpZiAodHJhY2VfZGFtb3NfZXN6X2VuYWJsZWQoKSBcXHUwMDI2XFx1MDAyNiBxdW90YS1cXHUwMDNlZXN6ICE9IGNhY2hlZF9lc3opXFxubW0vZGFtb24vY29yZS5jOjMzMDg6XFx0XFx0XFx0ZGFtb3NfdHJhY2VfZXN6KGMsIHMsIHF1b3RhKTtcXG5tbS9kYW1vbi9jb3JlLmMtMzMwOS1cXHR9XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMzMzNC1cXHRcXHRjdW11bGF0ZWRfc3ogKz0gYy1cXHUwMDNlcmVnaW9uc19zY29yZV9oaXN0b2dyYW1bc2NvcmVdO1xcbm1tL2RhbW9uL2NvcmUuYzozMzM1OlxcdFxcdGlmIChjdW11bGF0ZWRfc3ogXFx1MDAzZT0gcXVvdGEtXFx1MDAzZWVzeiB8fCAhc2NvcmUpXFxubW0vZGFtb24vY29yZS5jLTMzMzYtXFx0XFx0XFx0YnJlYWs7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MjkzMz12b2lkIGRhbW9zX3N5c2ZzX3VwZGF0ZV9lZmZlY3RpdmVfcXVvdGFzKFxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTI5NDgtXFx0XFx0XFx0c3lzZnNfc2NoZW1lcy1cXHUwMDNlc2NoZW1lc19hcnJbc2NoZW1lc19pZHgrK10tXFx1MDAzZXF1b3RhcztcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6Mjk0OTpcXHRcXHRzeXNmc19xdW90YXMtXFx1MDAzZWVmZmVjdGl2ZV9zeiA9IHNjaGVtZS1cXHUwMDNlcXVvdGEuZXN6O1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yOTUwLVxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMDA6MzQ6MjcuMDI5MzA4NDU3WiIsIlNlcSI6MzYsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjg0MDU4MzcwMzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUGF0Y2ggQW5hbHlzaXMgYW5kIEtNU0FOIEFzc2Vzc21lbnQqKlxuXG5Pa2F5LCBsZXQncyBicmVhayBkb3duIHRoaXMgcGF0Y2guIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IGl0IGxvb2tzIGxpa2UgYSB0YXJnZXRlZCBmaXggd2l0aGluIHRoZSBEQU1PTiBxdW90YSBsb2dpYy4gRmlyc3QsIHRoZSBgZGFtb3NfcXVvdGFfaXNfZnVsbGAgZnVuY3Rpb24uIEkgc2VlIHRoYXQgdGhlcmUncyBhIG5ldyBjaGVjazogYGlmICghcXVvdGEtXHUwMDNlY2hhcmdlZF9zeikgcmV0dXJuIGZhbHNlO2AuIFJpZ2h0LCBwcmV2aW91c2x5LCBpZiB0aGUgYGNoYXJnZWRfc3pgIHdhcyB6ZXJvLCBvciBwb3RlbnRpYWxseSBpZiB0aGVyZSB3YXMgYSBzdWJ0bGUgdW5kZXJmbG93IGlzc3VlLCB0aGUgbG9naWMgY291bGQgaW5jb3JyZWN0bHkgZmxhZyB0aGUgcXVvdGEgYXMgZnVsbCB3aGVuIGl0IHdhc24ndC4gVGhlIHN1YnNlcXVlbnQgY2hlY2sgZm9yIGBxdW90YS1cdTAwM2Vlc3ogLSBxdW90YS1cdTAwM2VjaGFyZ2VkX3N6IFx1MDAzYyBtaW5fcmVnaW9uX3N6YCB3YXMgdGhlIGN1bHByaXQuIFRoaXMgbmV3IGNvbmRpdGlvbmFsIGd1YXJkcyBhZ2FpbnN0IHRoYXQuXG5cblRoZW4sIGluIGBkYW1vbl9kb19hcHBseV9zY2hlbWVzYCwgd2UncmUgYWRkaW5nIGFub3RoZXIgc2FmZWd1YXJkOiBgaWYgKCFxdW90YS1cdTAwM2Vlc3opIGNvbnRpbnVlO2AuICBNYWtlcyBzZW5zZS4gV2UncmUgbm93IHNraXBwaW5nIHNjaGVtZSBhcHBsaWNhdGlvbiBpZiB0aGUgZWZmZWN0aXZlIHNpemUgKGBlc3pgKSBpcyB6ZXJvLiBUaGlzIHByZXZlbnRzIHBvdGVudGlhbCBpc3N1ZXMgZnVydGhlciBkb3duIHRoZSBsaW5lIGlmIHRoZXJlJ3Mgbm8gZGVmaW5lZCBxdW90YSBzaXplLlxuXG5Ob3csIHRoZSBjcnVjaWFsIHF1ZXN0aW9uOiB1bmluaXRpYWxpemVkIG1lbW9yeS4gSXMgdGhpcyBwYXRjaCBpbnRyb2R1Y2luZyBhIHZ1bG5lcmFiaWxpdHk/IE5vLCBJIGRvbid0IHRoaW5rIHNvLiBUaGVyZSdzIG5vIGludHJvZHVjdGlvbiBvZiBuZXcga2VybmVsIHN0cnVjdHVyZXMgd2l0aCB1bmluaXRpYWxpemVkIGRhdGEuIE5vIGNvcHlpbmcgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdG8gdXNlciBzcGFjZS4gTm8gbmV3IGFsbG9jYXRpb25zIG9uIHRoZSBzdGFjayBvciBoZWFwLiBJdCdzIGFsbCBpbnRlcm5hbCBsb2dpYyB3aXRoaW4gdGhlIERBTU9OIHF1b3RhIGNhbGN1bGF0aW9ucy4gTm8gYnJhbmNoaW5nIG9uIHVuaXRpYWxpemVkIHZhcmlhYmxlcywgbm8gdW5zYWZlIHBvaW50ZXIgbWFuaXB1bGF0aW9uIG9yIG91dC1vZi1ib3VuZHMgcmVhZHMuIFRoZSBgcXVvdGFgIHN0cnVjdHVyZSBpdHNlbGYgc2hvdWxkIGJlIGZ1bGx5IGluaXRpYWxpemVkLCBhbmQgd2UncmUganVzdCBhbHRlcmluZyB0aGUgY29uZGl0aW9ucyB1bmRlciB3aGljaCB0aGUgcXVvdGEgaXMgY29uc2lkZXJlZCBcImZ1bGxcIiBvciBcImFwcGxpY2FibGUuXCJcblxuU28sIGdpdmVuIGFsbCB0aGF0LCBLTVNBTiBpc24ndCBuZWVkZWQgaGVyZS4gVGhlIHBhdGNoIGRvZXNuJ3QgaW50cm9kdWNlIGFueSBuZXcgYXZlbnVlcyBmb3IgbWVtb3J5IHNhZmV0eSBpc3N1ZXMgcmVsYXRlZCB0byB1bml0aWFsaXplZCBtZW1vcnkuIEFueSBleGlzdGluZyBtZW1vcnkgc2FmZXR5IGlzc3VlcyB3aXRoaW4gREFNT04gb3IgaXRzIHJlbGF0ZWQgbG9naWMgd2lsbCBiZSBhZGVxdWF0ZWx5IGhhbmRsZWQgYnkgc3RhbmRhcmQgS0FTQU4gZnV6emluZyBhbmQgdGhlIGV4aXN0aW5nIGJ1ZyBkZXRlY3RvcnMuIFRoaXMgcGF0Y2ggaXMgcHVyZWx5IGEgbG9naWMgY29ycmVjdGlvbiB3aXRoaW4gYW4gZXhpc3RpbmcgYXJlYS5cblxuQWxyaWdodCwgSSdtIGNvbmZpZGVudCBpbiB0aGF0IGFuYWx5c2lzLiBUaW1lIHRvIHJlY29yZCB0aGUgcmVzdWx0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6ODM5MCwiT3V0cHV0VG9rZW5zIjoxNTMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MzIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMDA6MzQ6MzUuNDM1MTQ5MTg0WiIsIlNlcSI6MzcsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTkzMDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBxdW90YSBjaGVja2luZyBsb2dpYyBpbiBEQU1PTiAobW0vZGFtb24vY29yZS5jKSBieSBhZGRpbmcgZWFybHkgcmV0dXJuL2NvbnRpbnVlIGNoZWNrcyB3aGVuIHF1b3RhLVxcdTAwM2VjaGFyZ2VkX3N6IGlzIDAgaW4gZGFtb3NfcXVvdGFfaXNfZnVsbCgpIGFuZCB3aGVuIHF1b3RhLVxcdTAwM2Vlc3ogaXMgMCBpbiBkYW1vbl9kb19hcHBseV9zY2hlbWVzKCkuIFRoZXNlIGNoYW5nZXMgcHVyZWx5IGFmZmVjdCBpbnRlcm5hbCBjb250cm9sIGZsb3cgYW5kIGFjY291bnRpbmcgaW4gREFNT04uIE5vIG5ldyBhbGxvY2F0aW9ucywgc3RhY2svaGVhcCBidWZmZXJzLCBvciBjb3BpZXMgdG8gdXNlciBzcGFjZSBhcmUgaW50cm9kdWNlZCwgbm9yIGlzIHRoZXJlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIG9yIGluZm9ybWF0aW9uIGxlYWtzLiBUaGVyZWZvcmUsIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIGlzIG5vdCByZXF1aXJlZCBhbmQgc3RhbmRhcmQgS0FTQU4gZnV6emluZyBpcyBzdWZmaWNpZW50LlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHF1b3RhIGNoZWNraW5nIGxvZ2ljIGluIERBTU9OIChtbS9kYW1vbi9jb3JlLmMpIGJ5IGFkZGluZyBlYXJseSByZXR1cm4vY29udGludWUgY2hlY2tzIHdoZW4gcXVvdGEtXFx1MDAzZWNoYXJnZWRfc3ogaXMgMCBpbiBkYW1vc19xdW90YV9pc19mdWxsKCkgYW5kIHdoZW4gcXVvdGEtXFx1MDAzZWVzeiBpcyAwIGluIGRhbW9uX2RvX2FwcGx5X3NjaGVtZXMoKS4gVGhlc2UgY2hhbmdlcyBwdXJlbHkgYWZmZWN0IGludGVybmFsIGNvbnRyb2wgZmxvdyBhbmQgYWNjb3VudGluZyBpbiBEQU1PTi4gTm8gbmV3IGFsbG9jYXRpb25zLCBzdGFjay9oZWFwIGJ1ZmZlcnMsIG9yIGNvcGllcyB0byB1c2VyIHNwYWNlIGFyZSBpbnRyb2R1Y2VkLCBub3IgaXMgdGhlcmUgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgb3IgaW5mb3JtYXRpb24gbGVha3MuIFRoZXJlZm9yZSwgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgaXMgbm90IHJlcXVpcmVkIGFuZCBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nIGlzIHN1ZmZpY2llbnQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflownrn55[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-03 00:30:50 +0000 UTC FinishedAt: 2026-09-03 00:34:37 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "178b3d97bf1f15f598ea7cc615a40c115e528e1c", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DAMON", "DAMON_SYSFS", "DAMON_PADDR", "DAMON_VADDR", "SYSFS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "178b3d97bf1f15f598ea7cc615a40c115e528e1c", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DAMON", "DAMON_SYSFS", "DAMON_PADDR", "DAMON_VADDR", "SYSFS" ], "series_id": "dd257626-28f9-4c15-a268-cf8c2e5068bf" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "damon_start", "damon_commit_ctx", "damon_sysfs_add_schemes", "damon_set_schemes", "damon_new_scheme", "damon_add_scheme" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDAwOjMzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RBTU9OJiMzNDssCiAgICAmIzM0O0RBTU9OX1NZU0ZTJiMzNDssCiAgICAmIzM0O0RBTU9OX1BBRERSJiMzNDssCiAgICAmIzM0O0RBTU9OX1ZBRERSJiMzNDssCiAgICAmIzM0O1NZU0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZGFtb25fc3RhcnQmIzM0OywKICAgICYjMzQ7ZGFtb25fY29tbWl0X2N0eCYjMzQ7LAogICAgJiMzNDtkYW1vbl9zeXNmc19hZGRfc2NoZW1lcyYjMzQ7LAogICAgJiMzNDtkYW1vbl9zZXRfc2NoZW1lcyYjMzQ7LAogICAgJiMzNDtkYW1vbl9uZXdfc2NoZW1lJiMzNDssCiAgICAmIzM0O2RhbW9uX2FkZF9zY2hlbWUmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBxdW90YSBjaGVja2luZyBsb2dpYyBpbiBEQU1PTiAobW0vZGFtb24vY29yZS5jKSBieSBhZGRpbmcgZWFybHkgcmV0dXJuL2NvbnRpbnVlIGNoZWNrcyB3aGVuIHF1b3RhLVx1MDAzZWNoYXJnZWRfc3ogaXMgMCBpbiBkYW1vc19xdW90YV9pc19mdWxsKCkgYW5kIHdoZW4gcXVvdGEtXHUwMDNlZXN6IGlzIDAgaW4gZGFtb25fZG9fYXBwbHlfc2NoZW1lcygpLiBUaGVzZSBjaGFuZ2VzIHB1cmVseSBhZmZlY3QgaW50ZXJuYWwgY29udHJvbCBmbG93IGFuZCBhY2NvdW50aW5nIGluIERBTU9OLiBObyBuZXcgYWxsb2NhdGlvbnMsIHN0YWNrL2hlYXAgYnVmZmVycywgb3IgY29waWVzIHRvIHVzZXIgc3BhY2UgYXJlIGludHJvZHVjZWQsIG5vciBpcyB0aGVyZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcyBvciBpbmZvcm1hdGlvbiBsZWFrcy4gVGhlcmVmb3JlLCBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBpcyBub3QgcmVxdWlyZWQgYW5kIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcgaXMgc3VmZmljaWVudC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggdXBkYXRlcyBEQU1PTiBPcGVyYXRpb24gU2NoZW1lcyAoREFNT1MpIHF1b3RhIGhhbmRsaW5nIGxvZ2ljIHdpdGhpbiBtbS9kYW1vbi9jb3JlLmMgKHNwZWNpZmljYWxseSBpbiBkYW1vc19xdW90YV9pc19mdWxsIGFuZCBkYW1vbl9kb19hcHBseV9zY2hlbWVzKSBzbyB0aGF0IHNjaGVtZXMgYXJlIG5vdCBpbmNvcnJlY3RseSBjb25zaWRlcmVkIGZ1bGwgd2hlbiBubyBxdW90YSBoYXMgYmVlbiBjaGFyZ2VkIHlldCwgYW5kIGVtcHR5IHF1b3RhcyAoZXN6ID09IDApIGFyZSBza2lwcGVkIHByb3Blcmx5LiBUaGlzIGZ1bmN0aW9uYWxseSBhZmZlY3RzIERBTU9OIHNjaGVtZSBldmFsdWF0aW9uIGFuZCBjYW4gYmUgdGVzdGVkL2V4ZXJjaXNlZCB2aWEgdGhlIERBTU9OIHN5c2ZzIGludGVyZmFjZSBpbiB2aXJ0dWFsaXplZCB0ZXN0IGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAwMDozMzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGE5MmY4ZmIwNTA2YjQ0ZDAyNTBkNzQ5MjljMTU1NWM5NDRjNDkzMmFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IFNlcCAzIDAwOjMzOjIzIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL21tL2RhbW9uL2NvcmUuYyBiL21tL2RhbW9uL2NvcmUuY1xuaW5kZXggZGYyMjYyMTc2NTkxMS4uZjhjNzg0ZGYyNDYwMCAxMDA2NDRcbi0tLSBhL21tL2RhbW9uL2NvcmUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbW0vZGFtb24vY29yZS5jXG5AQCAtMjY1NSw2ICYjNDM7MjY1NSw4IEBAIHN0YXRpYyBib29sIGRhbW9zX3F1b3RhX2lzX2Z1bGwoc3RydWN0IGRhbW9zX3F1b3RhICpxdW90YSxcbiB7XG4gXHRpZiAoIWRhbW9zX3F1b3RhX2lzX3NldChxdW90YSkpXG4gXHRcdHJldHVybiBmYWxzZTtcbiYjNDM7XHRpZiAoIXF1b3RhLVx1MDAzZWNoYXJnZWRfc3opXG4mIzQzO1x0XHRyZXR1cm4gZmFsc2U7XG4gXHRpZiAocXVvdGEtXHUwMDNlY2hhcmdlZF9zeiBcdTAwM2U9IHF1b3RhLVx1MDAzZWVzeilcbiBcdFx0cmV0dXJuIHRydWU7XG4gXHQvKlxuQEAgLTI3NTAsNiAmIzQzOzI3NTIsOSBAQCBzdGF0aWMgdm9pZCBkYW1vbl9kb19hcHBseV9zY2hlbWVzKHN0cnVjdCBkYW1vbl9jdHggKmMsXG4gXHRcdGlmICghcy1cdTAwM2V3bWFya3MuYWN0aXZhdGVkKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFxuJiM0MztcdFx0aWYgKCFxdW90YS1cdTAwM2Vlc3opXG4mIzQzO1x0XHRcdGNvbnRpbnVlO1xuJiM0MztcbiBcdFx0LyogQ2hlY2sgdGhlIHF1b3RhICovXG4gXHRcdGlmIChkYW1vc19xdW90YV9pc19mdWxsKHF1b3RhLCBjLVx1MDAzZW1pbl9yZWdpb25fc3opKVxuIFx0XHRcdGNvbnRpbnVlO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDAwOjMzPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RBTU9OJiMzNDssCiAgICAmIzM0O0RBTU9OX1NZU0ZTJiMzNDssCiAgICAmIzM0O0RBTU9OX1BBRERSJiMzNDssCiAgICAmIzM0O0RBTU9OX1ZBRERSJiMzNDssCiAgICAmIzM0O1NZU0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZGFtb25fc3RhcnQmIzM0OywKICAgICYjMzQ7ZGFtb25fY29tbWl0X2N0eCYjMzQ7LAogICAgJiMzNDtkYW1vbl9zeXNmc19hZGRfc2NoZW1lcyYjMzQ7LAogICAgJiMzNDtkYW1vbl9zZXRfc2NoZW1lcyYjMzQ7LAogICAgJiMzNDtkYW1vbl9uZXdfc2NoZW1lJiMzNDssCiAgICAmIzM0O2RhbW9uX2FkZF9zY2hlbWUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggdXBkYXRlcyBEQU1PTiBPcGVyYXRpb24gU2NoZW1lcyAoREFNT1MpIHF1b3RhIGhhbmRsaW5nIGxvZ2ljIHdpdGhpbiBtbS9kYW1vbi9jb3JlLmMgKHNwZWNpZmljYWxseSBpbiBkYW1vc19xdW90YV9pc19mdWxsIGFuZCBkYW1vbl9kb19hcHBseV9zY2hlbWVzKSBzbyB0aGF0IHNjaGVtZXMgYXJlIG5vdCBpbmNvcnJlY3RseSBjb25zaWRlcmVkIGZ1bGwgd2hlbiBubyBxdW90YSBoYXMgYmVlbiBjaGFyZ2VkIHlldCwgYW5kIGVtcHR5IHF1b3RhcyAoZXN6ID09IDApIGFyZSBza2lwcGVkIHByb3Blcmx5LiBUaGlzIGZ1bmN0aW9uYWxseSBhZmZlY3RzIERBTU9OIHNjaGVtZSBldmFsdWF0aW9uIGFuZCBjYW4gYmUgdGVzdGVkL2V4ZXJjaXNlZCB2aWEgdGhlIERBTU9OIHN5c2ZzIGludGVyZmFjZSBpbiB2aXJ0dWFsaXplZCB0ZXN0IGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGE5MmY4ZmIwNTA2YjQ0ZDAyNTBkNzQ5MjljMTU1NWM5NDRjNDkzMmEKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IFNlcCAzIDAwOjMzOjIzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbW0vZGFtb24vY29yZS5jIGIvbW0vZGFtb24vY29yZS5jCmluZGV4IGRmMjI2MjE3NjU5MTEuLmY4Yzc4NGRmMjQ2MDAgMTAwNjQ0Ci0tLSBhL21tL2RhbW9uL2NvcmUuYwomIzQzOyYjNDM7JiM0MzsgYi9tbS9kYW1vbi9jb3JlLmMKQEAgLTI2NTUsNiAmIzQzOzI2NTUsOCBAQCBzdGF0aWMgYm9vbCBkYW1vc19xdW90YV9pc19mdWxsKHN0cnVjdCBkYW1vc19xdW90YSAqcXVvdGEsCiB7CiAJaWYgKCFkYW1vc19xdW90YV9pc19zZXQocXVvdGEpKQogCQlyZXR1cm4gZmFsc2U7CiYjNDM7CWlmICghcXVvdGEtJmd0O2NoYXJnZWRfc3opCiYjNDM7CQlyZXR1cm4gZmFsc2U7CiAJaWYgKHF1b3RhLSZndDtjaGFyZ2VkX3N6ICZndDs9IHF1b3RhLSZndDtlc3opCiAJCXJldHVybiB0cnVlOwogCS8qCkBAIC0yNzUwLDYgJiM0MzsyNzUyLDkgQEAgc3RhdGljIHZvaWQgZGFtb25fZG9fYXBwbHlfc2NoZW1lcyhzdHJ1Y3QgZGFtb25fY3R4ICpjLAogCQlpZiAoIXMtJmd0O3dtYXJrcy5hY3RpdmF0ZWQpCiAJCQljb250aW51ZTsKIAomIzQzOwkJaWYgKCFxdW90YS0mZ3Q7ZXN6KQomIzQzOwkJCWNvbnRpbnVlOwomIzQzOwogCQkvKiBDaGVjayB0aGUgcXVvdGEgKi8KIAkJaWYgKGRhbW9zX3F1b3RhX2lzX2Z1bGwocXVvdGEsIGMtJmd0O21pbl9yZWdpb25fc3opKQogCQkJY29udGludWU7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDAwOjMzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxNjIKCQkJCQkJCW91dHB1dDogNjUKCQkJCQkJCXRob3VnaHRzOiA5MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhbmFseXNpcyBvZiB0aGUgc2l0dWF0aW9uLCB0YWlsb3JlZCBmb3IgbXkgZmVsbG93IGV4cGVydHM6CgoqKkluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgREFNT04gUGF0Y2gqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW4uIEZpcnN0LCBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoaXMgcGF0Y2guIEl0IGxvb2tzIGxpa2UgdGhlIG1haW4gaW1wYWN0IGlzIG9uIGBtbS9kYW1vbi9jb3JlLmNgLiBObyBzdXJwcmlzZXMgdGhlcmU7IGNvcmUgREFNT04gZnVuY3Rpb25hbGl0eSBvZnRlbiByZXNpZGVzIGluIGZpbGVzIGxpa2UgdGhhdC4gTXkgaW1tZWRpYXRlIG5leHQgc3RlcCBpcyB0byBnZXQgYSBzb2xpZCBncmFzcCBvbiB3aGF0JiMzOTtzIGNoYW5nZWQgd2l0aGluIHRoYXQgY29yZSBmaWxlLCBhbmQgYWxzbyB0byBkb3VibGUgY2hlY2sgdGhlIEtjb25maWcgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBEQU1PTiBpdHNlbGYuIEFsd2F5cyBnb29kIHRvIHJ1bGUgb3V0IGFueSB1bmV4cGVjdGVkIGZlYXR1cmUgZmxhZ3Mgb3IgZGlzYWJsZWQgY29tcG9uZW50cy4KCkkmIzM5O20gdGhpbmtpbmcgSSYjMzk7bGwgcmVhY2ggZm9yIGBncmVwcGVyYCBvciBgcmVhZC1maWxlYCB0byB6ZXJvIGluIG9uIHNwZWNpZmljIHBhcnRzIG9mIGBtbS9kYW1vbi9jb3JlLmNgLiBJJiMzOTttIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiBsaW5lcyBhcm91bmQgMjY1NSBhbmQgMjc1MC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSB0aGUgcXVpY2sgaW5zaWdodCBJIG5lZWQgdG8gZnVsbHkgdW5kZXJzdGFuZCB0aGUgZWZmZWN0cyBvZiB0aGlzIHBhdGNoLiBUaW1lIHRvIGdldCB0byB3b3JrLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDAwOjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bW0vZGFtb24vY29yZS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjY1MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA2MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsyNjUwOlx0XHRcdFx0XHRxdW90YS1cdTAwM2VmYWlsX2NoYXJnZV9kZW5vbSk7XG4yNjUxOlx0fVxuMjY1MjpcdFxuMjY1MzpcdHN0YXRpYyBib29sIGRhbW9zX3F1b3RhX2lzX2Z1bGwoc3RydWN0IGRhbW9zX3F1b3RhICpxdW90YSxcbjI2NTQ6XHRcdFx0dW5zaWduZWQgbG9uZyBtaW5fcmVnaW9uX3N6KVxuMjY1NTpcdHtcbjI2NTY6XHRcdGlmICghZGFtb3NfcXVvdGFfaXNfc2V0KHF1b3RhKSlcbjI2NTc6XHRcdFx0cmV0dXJuIGZhbHNlO1xuMjY1ODpcdFx0aWYgKCFxdW90YS1cdTAwM2VjaGFyZ2VkX3N6KVxuMjY1OTpcdFx0XHRyZXR1cm4gZmFsc2U7XG4yNjYwOlx0XHRpZiAocXVvdGEtXHUwMDNlY2hhcmdlZF9zeiBcdTAwM2U9IHF1b3RhLVx1MDAzZWVzeilcbjI2NjE6XHRcdFx0cmV0dXJuIHRydWU7XG4yNjYyOlx0XHQvKlxuMjY2MzpcdFx0ICogREFNT1MgYWN0aW9uIGlzIGFwcGxpZWQgcGVyIHJlZ2lvbiwgc28gXHUwMDNjbWluX3JlZ2lvbl9zeiByZW1haW5pbmdcbjI2NjQ6XHRcdCAqIHF1b3RhIG1lYW5zIHRoZSBxdW90YSBpcyBlZmZlY3RpdmVseSBmdWxsLlxuMjY2NTpcdFx0ICovXG4yNjY2Olx0XHRyZXR1cm4gcXVvdGEtXHUwMDNlZXN6IC0gcXVvdGEtXHUwMDNlY2hhcmdlZF9zeiBcdTAwM2MgbWluX3JlZ2lvbl9zejtcbjI2Njc6XHR9XG4yNjY4Olx0XG4yNjY5Olx0c3RhdGljIHZvaWQgZGFtb3NfYXBwbHlfc2NoZW1lKHN0cnVjdCBkYW1vbl9jdHggKmMsIHN0cnVjdCBkYW1vbl90YXJnZXQgKnQsXG4yNjcwOlx0XHRcdHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsIHN0cnVjdCBkYW1vcyAqcylcbjI2NzE6XHR7XG4yNjcyOlx0XHRzdHJ1Y3QgZGFtb3NfcXVvdGEgKnF1b3RhID0gXHUwMDI2cy1cdTAwM2VxdW90YTtcbjI2NzM6XHRcdHVuc2lnbmVkIGxvbmcgc3ogPSBkYW1vbl9zel9yZWdpb24ocik7XG4yNjc0Olx0XHRzdHJ1Y3QgdGltZXNwZWM2NCBiZWdpbiwgZW5kO1xuMjY3NTpcdFx0dW5zaWduZWQgbG9uZyBzel9hcHBsaWVkID0gMDtcbjI2NzY6XHRcdHVuc2lnbmVkIGxvbmcgc3pfb3BzX2ZpbHRlcl9wYXNzZWQgPSAwO1xuMjY3NzpcdFx0LypcbjI2Nzg6XHRcdCAqIFdlIHBsYW4gdG8gc3VwcG9ydCBtdWx0aXBsZSBjb250ZXh0IHBlciBrZGFtb25kLCBhcyBEQU1PTiBzeXNmc1xuMjY3OTpcdFx0ICogaW1wbGllcyB3aXRoICYjMzk7bnJfY29udGV4dHMmIzM5OyBmaWxlLiAgTmV2ZXJ0aGVsZXNzLCBvbmx5IHNpbmdsZSBjb250ZXh0XG4yNjgwOlx0XHQgKiBwZXIga2RhbW9uZCBpcyBzdXBwb3J0ZWQgZm9yIG5vdy4gIFNvLCB3ZSBjYW4gc2ltcGx5IHVzZSAmIzM5OzAmIzM5OyBjb250ZXh0XG4yNjgxOlx0XHQgKiBpbmRleCBoZXJlLlxuMjY4MjpcdFx0ICovXG4yNjgzOlx0XHR1bnNpZ25lZCBpbnQgY2lkeCA9IDA7XG4yNjg0Olx0XHRzdHJ1Y3QgZGFtb3MgKnNpdGVyO1x0XHQvKiBzY2hlbWVzIGl0ZXJhdG9yICovXG4yNjg1Olx0XHR1bnNpZ25lZCBpbnQgc2lkeCA9IDA7XG4yNjg2Olx0XHRzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0aXRlcjtcdC8qIHRhcmdldHMgaXRlcmF0b3IgKi9cbjI2ODc6XHRcdHVuc2lnbmVkIGludCB0aWR4ID0gMCwgbnJfYWNjZXNzZXMgPSAwO1xuMjY4ODpcdFx0Ym9vbCBkb190cmFjZSA9IGZhbHNlO1xuMjY4OTpcdFxuMjY5MDpcdFx0LyogZ2V0IGluZGljZXMgZm9yIHRyYWNlX2RhbW9zX2JlZm9yZV9hcHBseSgpICovXG4yNjkxOlx0XHRpZiAodHJhY2VfZGFtb3NfYmVmb3JlX2FwcGx5X2VuYWJsZWQoKSkge1xuMjY5MjpcdFx0XHRkYW1vbl9mb3JfZWFjaF9zY2hlbWUoc2l0ZXIsIGMpIHtcbjI2OTM6XHRcdFx0XHRpZiAoc2l0ZXIgPT0gcylcbjI2OTQ6XHRcdFx0XHRcdGJyZWFrO1xuMjY5NTpcdFx0XHRcdHNpZHgmIzQzOyYjNDM7O1xuMjY5NjpcdFx0XHR9XG4yNjk3Olx0XHRcdGRhbW9uX2Zvcl9lYWNoX3RhcmdldCh0aXRlciwgYykge1xuMjY5ODpcdFx0XHRcdGlmICh0aXRlciA9PSB0KVxuMjY5OTpcdFx0XHRcdFx0YnJlYWs7XG4yNzAwOlx0XHRcdFx0dGlkeCYjNDM7JiM0Mzs7XG4yNzAxOlx0XHRcdH1cbjI3MDI6XHRcdFx0bnJfYWNjZXNzZXMgPSBkYW1vbl9ucl9hY2Nlc3Nlc19tdnN1bShyLCBjKTtcbjI3MDM6XHRcdFx0ZG9fdHJhY2UgPSB0cnVlO1xuMjcwNDpcdFx0fVxuMjcwNTpcdFxuMjcwNjpcdFx0aWYgKGMtXHUwMDNlb3BzLmFwcGx5X3NjaGVtZSkge1xuMjcwNzpcdFx0XHRpZiAoZGFtb3NfcXVvdGFfaXNfc2V0KHF1b3RhKSBcdTAwMjZcdTAwMjZcbjI3MDg6XHRcdFx0XHRcdHF1b3RhLVx1MDAzZWNoYXJnZWRfc3ogJiM0Mzsgc3ogXHUwMDNlIHF1b3RhLVx1MDAzZWVzeikge1xuMjcwOTpcdFx0XHRcdHN6ID0gQUxJR05fRE9XTihxdW90YS1cdTAwM2Vlc3ogLSBxdW90YS1cdTAwM2VjaGFyZ2VkX3N6LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDAwOjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWVudWNvbmZpZyBEQU1PTiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL2RhbW9uJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAwMDozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDgwCgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2Vzcywga2VlcGluZyBpbiBtaW5kIEkmIzM5O20gc3BlYWtpbmcgdG8gYSBmZWxsb3cgZXhwZXJ0OgoKKipJbnZlc3RpZ2F0aW5nIERBTU9OJiMzOTtzIEtjb25maWcgQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCB0aW1lIHRvIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBidWlsZCBjb25maWd1cmF0aW9uIGZvciBEQU1PTi4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gZGl2ZSBzdHJhaWdodCBpbnRvIHRoZSBLY29uZmlnIGZpbGVzLiBUaGlzIGlzIHdoZXJlIHRoZSBjb3JlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgZGVmaW5lZCwgYW5kIHdoZXJlIEkgY2FuIGZpbmQgb3V0IGV4YWN0bHkgaG93IERBTU9OIGlzIGVuYWJsZWQsIGFueSBkZXBlbmRlbmNpZXMgaXQgbWlnaHQgaGF2ZSwgYW5kIHdoYXQgZmVhdHVyZXMgYXJlIGV4cG9zZWQgYXMgY29uZmlndXJhYmxlIG9wdGlvbnMgZHVyaW5nIHRoZSBrZXJuZWwgYnVpbGQuIEkgd2FudCB0byBxdWlja2x5IHVuZGVyc3RhbmQgdGhlIGJ1aWxkIGZsYWdzLiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgYWN0dWFsbHkgZW5hYmxlZCBhbmQgd2hhdCYjMzk7cyBhdmFpbGFibGUuIFRoaXMgaXMgdGhlIGxvZ2ljYWwgc3RhcnRpbmcgcG9pbnQgZm9yIGFueSBpbi1kZXB0aCBhbmFseXNpcyBvZiBhIGtlcm5lbCBzdWJzeXN0ZW0sIHJpZ2h0PwoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDAwOjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0RBTU9OJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vZGFtb24vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9kYW1vbi9LY29uZmlnPTM9bWVudSBcJiMzNDtEYXRhIEFjY2VzcyBNb25pdG9yaW5nXCYjMzQ7XG5tbS9kYW1vbi9LY29uZmlnLTQtXG5tbS9kYW1vbi9LY29uZmlnOjU6Y29uZmlnIERBTU9OXG5tbS9kYW1vbi9LY29uZmlnOjY6XHRib29sIFwmIzM0O0RBTU9OOiBEYXRhIEFjY2VzcyBNb25pdG9yaW5nIEZyYW1ld29ya1wmIzM0O1xubW0vZGFtb24vS2NvbmZpZy03LVx0aGVscFxuLS1cbm1tL2RhbW9uL0tjb25maWctMTQtXG5tbS9kYW1vbi9LY29uZmlnOjE1OmNvbmZpZyBEQU1PTl9ERUJVR19TQU5JVFlcbm1tL2RhbW9uL0tjb25maWc6MTY6XHRib29sIFwmIzM0O0NoZWNrIHNhbml0eSBvZiBEQU1PTiBjb2RlXCYjMzQ7XG5tbS9kYW1vbi9LY29uZmlnOjE3Olx0ZGVwZW5kcyBvbiBEQU1PTlxubW0vZGFtb24vS2NvbmZpZy0xOC1cdGhlbHBcbm1tL2RhbW9uL0tjb25maWc6MTk6XHQgIFRoaXMgZW5hYmxlcyBhZGRpdGlvbmFsIERBTU9OIGRlYnVnZ2luZy1wdXJwb3NlIHNhbml0eSBjaGVja3MgaW5cbm1tL2RhbW9uL0tjb25maWc6MjA6XHQgIERBTU9OIGNvZGUuICBUaGlzIGNhbiBiZSB1c2VmdWwgZm9yIGZpbmRpbmcgYnVncywgYnV0IGltcG9zZVxubW0vZGFtb24vS2NvbmZpZy0yMS1cdCAgYWRkaXRpb25hbCBvdmVyaGVhZC4gIFRoaXMgaXMgdGhlcmVmb3JlIHJlY29tbWVuZGVkIHRvIGJlIGVuYWJsZWQgb25cbi0tXG5tbS9kYW1vbi9LY29uZmlnLTI1LVxubW0vZGFtb24vS2NvbmZpZzoyNjpjb25maWcgREFNT05fS1VOSVRfVEVTVFxubW0vZGFtb24vS2NvbmZpZy0yNy1cdGJvb2wgXCYjMzQ7VGVzdCBmb3IgZGFtb25cJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xubW0vZGFtb24vS2NvbmZpZzoyODpcdGRlcGVuZHMgb24gREFNT04gXHUwMDI2XHUwMDI2IEtVTklUPXlcbm1tL2RhbW9uL0tjb25maWctMjktXHRkZWZhdWx0IEtVTklUX0FMTF9URVNUU1xubW0vZGFtb24vS2NvbmZpZy0zMC1cdGhlbHBcbm1tL2RhbW9uL0tjb25maWc6MzE6XHQgIFRoaXMgYnVpbGRzIHRoZSBEQU1PTiBLdW5pdCB0ZXN0IHN1aXRlLlxubW0vZGFtb24vS2NvbmZpZy0zMi1cbi0tXG5tbS9kYW1vbi9LY29uZmlnLTM3LVxubW0vZGFtb24vS2NvbmZpZzozODpjb25maWcgREFNT05fVkFERFJcbm1tL2RhbW9uL0tjb25maWctMzktXHRib29sIFwmIzM0O0RhdGEgYWNjZXNzIG1vbml0b3Jpbmcgb3BlcmF0aW9ucyBmb3IgdmlydHVhbCBhZGRyZXNzIHNwYWNlc1wmIzM0O1xubW0vZGFtb24vS2NvbmZpZzo0MDpcdGRlcGVuZHMgb24gREFNT04gXHUwMDI2XHUwMDI2IE1NVVxubW0vZGFtb24vS2NvbmZpZy00MS1cdHNlbGVjdCBQQUdFX0lETEVfRkxBR1xubW0vZGFtb24vS2NvbmZpZzo0MjpcdGRlZmF1bHQgREFNT05cbm1tL2RhbW9uL0tjb25maWctNDMtXHRoZWxwXG5tbS9kYW1vbi9LY29uZmlnOjQ0Olx0ICBUaGlzIGJ1aWxkcyB0aGUgZGVmYXVsdCBkYXRhIGFjY2VzcyBtb25pdG9yaW5nIG9wZXJhdGlvbnMgZm9yIERBTU9OXG5tbS9kYW1vbi9LY29uZmlnLTQ1LVx0ICB0aGF0IHdvcmsgZm9yIHZpcnR1YWwgYWRkcmVzcyBzcGFjZXMuXG5tbS9kYW1vbi9LY29uZmlnLTQ2LVxubW0vZGFtb24vS2NvbmZpZzo0Nzpjb25maWcgREFNT05fUEFERFJcbm1tL2RhbW9uL0tjb25maWctNDgtXHRib29sIFwmIzM0O0RhdGEgYWNjZXNzIG1vbml0b3Jpbmcgb3BlcmF0aW9ucyBmb3IgdGhlIHBoeXNpY2FsIGFkZHJlc3Mgc3BhY2VcJiMzNDtcbm1tL2RhbW9uL0tjb25maWc6NDk6XHRkZXBlbmRzIG9uIERBTU9OIFx1MDAyNlx1MDAyNiBNTVVcbm1tL2RhbW9uL0tjb25maWctNTAtXHRzZWxlY3QgUEFHRV9JRExFX0ZMQUdcbm1tL2RhbW9uL0tjb25maWc6NTE6XHRkZWZhdWx0IERBTU9OXG5tbS9kYW1vbi9LY29uZmlnLTUyLVx0aGVscFxubW0vZGFtb24vS2NvbmZpZzo1MzpcdCAgVGhpcyBidWlsZHMgdGhlIGRlZmF1bHQgZGF0YSBhY2Nlc3MgbW9uaXRvcmluZyBvcGVyYXRpb25zIGZvciBEQU1PTlxubW0vZGFtb24vS2NvbmZpZy01NC1cdCAgdGhhdCB3b3JrcyBmb3IgdGhlIHBoeXNpY2FsIGFkZHJlc3Mgc3BhY2UuXG5tbS9kYW1vbi9LY29uZmlnLTU1LVxubW0vZGFtb24vS2NvbmZpZzo1Njpjb25maWcgREFNT05fVkFERFJfS1VOSVRfVEVTVFxubW0vZGFtb24vS2NvbmZpZzo1NzpcdGJvb2wgXCYjMzQ7VGVzdCBmb3IgREFNT04gb3BlcmF0aW9uc1wmIzM0OyBpZiAhS1VOSVRfQUxMX1RFU1RTXG5tbS9kYW1vbi9LY29uZmlnOjU4Olx0ZGVwZW5kcyBvbiBEQU1PTl9WQUREUiBcdTAwMjZcdTAwMjYgS1VOSVQ9eVxubW0vZGFtb24vS2NvbmZpZy01OS1cdGRlZmF1bHQgS1VOSVRfQUxMX1RFU1RTXG5tbS9kYW1vbi9LY29uZmlnLTYwLVx0aGVscFxubW0vZGFtb24vS2NvbmZpZzo2MTpcdCAgVGhpcyBidWlsZHMgdGhlIERBTU9OIHZpcnR1YWwgYWRkcmVzc2VzIG9wZXJhdGlvbnMgS3VuaXQgdGVzdCBzdWl0ZS5cbm1tL2RhbW9uL0tjb25maWctNjItXG4tLVxubW0vZGFtb24vS2NvbmZpZy02Ny1cbm1tL2RhbW9uL0tjb25maWc6Njg6Y29uZmlnIERBTU9OX1NZU0ZTXG5tbS9kYW1vbi9LY29uZmlnOjY5Olx0Ym9vbCBcJiMzNDtEQU1PTiBzeXNmcyBpbnRlcmZhY2VcJiMzNDtcbm1tL2RhbW9uL0tjb25maWc6NzA6XHRkZXBlbmRzIG9uIERBTU9OIFx1MDAyNlx1MDAyNiBTWVNGU1xubW0vZGFtb24vS2NvbmZpZzo3MTpcdGRlZmF1bHQgREFNT05cbm1tL2RhbW9uL0tjb25maWctNzItXHRoZWxwXG5tbS9kYW1vbi9LY29uZmlnOjczOlx0ICBUaGlzIGJ1aWxkcyB0aGUgc3lzZnMgaW50ZXJmYWNlIGZvciBEQU1PTi4gIFRoZSB1c2VyIHNwYWNlIGNhbiB1c2Vcbm1tL2RhbW9uL0tjb25maWctNzQtXHQgIHRoZSBpbnRlcmZhY2UgZm9yIGFyYml0cmFyeSBkYXRhIGFjY2VzcyBtb25pdG9yaW5nLlxubW0vZGFtb24vS2NvbmZpZy03NS1cbm1tL2RhbW9uL0tjb25maWc6NzY6Y29uZmlnIERBTU9OX1NZU0ZTX0tVTklUX1RFU1Rcbm1tL2RhbW9uL0tjb25maWctNzctXHRib29sIFwmIzM0O1Rlc3QgZm9yIGRhbW9uIHN5c2ZzIGludGVyZmFjZVwmIzM0OyBpZiAhS1VOSVRfQUxMX1RFU1RTXG5tbS9kYW1vbi9LY29uZmlnOjc4Olx0ZGVwZW5kcyBvbiBEQU1PTl9TWVNGUyBcdTAwMjZcdTAwMjYgS1VOSVQ9eVxubW0vZGFtb24vS2NvbmZpZy03OS1cdGRlZmF1bHQgS1VOSVRfQUxMX1RFU1RTXG5tbS9kYW1vbi9LY29uZmlnLTgwLVx0aGVscFxubW0vZGFtb24vS2NvbmZpZzo4MTpcdCAgVGhpcyBidWlsZHMgdGhlIERBTU9OIHN5c2ZzIGludGVyZmFjZSBLdW5pdCB0ZXN0IHN1aXRlLlxubW0vZGFtb24vS2NvbmZpZy04Mi1cbi0tXG5tbS9kYW1vbi9LY29uZmlnLTg3LVxubW0vZGFtb24vS2NvbmZpZzo4ODpjb25maWcgREFNT05fUkVDTEFJTVxubW0vZGFtb24vS2NvbmZpZzo4OTpcdGJvb2wgXCYjMzQ7QnVpbGQgREFNT04tYmFzZWQgcmVjbGFpbSAoREFNT05fUkVDTEFJTSlcJiMzNDtcbm1tL2RhbW9uL0tjb25maWc6OTA6XHRkZXBlbmRzIG9uIERBTU9OX1BBRERSXG5tbS9kYW1vbi9LY29uZmlnLTkxLVx0aGVscFxubW0vZGFtb24vS2NvbmZpZzo5MjpcdCAgVGhpcyBidWlsZHMgdGhlIERBTU9OLWJhc2VkIHJlY2xhbWF0aW9uIHN1YnN5c3RlbS4gIEl0IGZpbmRzIHBhZ2VzXG5tbS9kYW1vbi9LY29uZmlnOjkzOlx0ICB0aGF0IG5vdCBhY2Nlc3NlZCBmb3IgYSBsb25nIHRpbWUgKGNvbGQpIHVzaW5nIERBTU9OIGFuZCByZWNsYWltXG5tbS9kYW1vbi9LY29uZmlnLTk0LVx0ICB0aG9zZS5cbi0tXG5tbS9kYW1vbi9LY29uZmlnLTk5LVxubW0vZGFtb24vS2NvbmZpZzoxMDA6Y29uZmlnIERBTU9OX0xSVV9TT1JUXG5tbS9kYW1vbi9LY29uZmlnOjEwMTpcdGJvb2wgXCYjMzQ7QnVpbGQgREFNT04tYmFzZWQgTFJVLWxpc3RzIHNvcnRpbmcgKERBTU9OX0xSVV9TT1JUKVwmIzM0O1xubW0vZGFtb24vS2NvbmZpZzoxMDI6XHRkZXBlbmRzIG9uIERBTU9OX1BBRERSXG5tbS9kYW1vbi9LY29uZmlnLTEwMy1cdGhlbHBcbm1tL2RhbW9uL0tjb25maWc6MTA0Olx0ICBUaGlzIGJ1aWxkcyB0aGUgREFNT04tYmFzZWQgTFJVLWxpc3RzIHNvcnRpbmcgc3Vic3lzdGVtLiAgSXQgdHJpZXMgdG9cbm1tL2RhbW9uL0tjb25maWctMTA1LVx0ICBwcm90ZWN0IGZyZXF1ZW50bHkgYWNjZXNzZWQgKGhvdCkgcGFnZXMgd2hpbGUgcmFyZWx5IGFjY2Vzc2VkIChjb2xkKVxuLS1cbm1tL2RhbW9uL0tjb25maWctMTA3LVxubW0vZGFtb24vS2NvbmZpZzoxMDg6Y29uZmlnIERBTU9OX1NUQVRcbm1tL2RhbW9uL0tjb25maWc6MTA5Olx0Ym9vbCBcJiMzNDtCdWlsZCBkYXRhIGFjY2VzcyBtb25pdG9yaW5nIHN0YXQgKERBTU9OX1NUQVQpXCYjMzQ7XG5tbS9kYW1vbi9LY29uZmlnOjExMDpcdGRlcGVuZHMgb24gREFNT05fUEFERFJcbm1tL2RhbW9uL0tjb25maWctMTExLVx0aGVscFxubW0vZGFtb24vS2NvbmZpZzoxMTI6XHQgIFRoaXMgYnVpbGRzIHRoZSBEQU1PTi1iYXNlZCBhY2Nlc3MgbW9uaXRvcmluZyBzdGF0aXN0aWNzIHN1YnN5c3RlbS5cbm1tL2RhbW9uL0tjb25maWc6MTEzOlx0ICBJdCBydW5zIERBTU9OIGFuZCBleHBvc2UgYWNjZXNzIG1vbml0b3JpbmcgcmVzdWx0cyBpbiBzaW1wbGUgc3RhdFxubW0vZGFtb24vS2NvbmZpZy0xMTQtXHQgIG1ldHJpY3MuXG5tbS9kYW1vbi9LY29uZmlnLTExNS1cbm1tL2RhbW9uL0tjb25maWc6MTE2OmNvbmZpZyBEQU1PTl9TVEFUX0VOQUJMRURfREVGQVVMVFxubW0vZGFtb24vS2NvbmZpZzoxMTc6XHRib29sIFwmIzM0O0VuYWJsZSBEQU1PTl9TVEFUIGJ5IGRlZmF1bHRcJiMzNDtcbm1tL2RhbW9uL0tjb25maWc6MTE4Olx0ZGVwZW5kcyBvbiBEQU1PTl9TVEFUXG5tbS9kYW1vbi9LY29uZmlnOjExOTpcdGRlZmF1bHQgREFNT05fU1RBVFxubW0vZGFtb24vS2NvbmZpZy0xMjAtXHRoZWxwXG5tbS9kYW1vbi9LY29uZmlnOjEyMTpcdCAgV2hldGhlciB0byBlbmFibGUgREFNT05fU1RBVCBieSBkZWZhdWx0LiAgVXNlcnMgY2FuIGRpc2FibGUgaXQgaW5cbm1tL2RhbW9uL0tjb25maWctMTIyLVx0ICBib290IG9yIHJ1bnRpbWUgdXNpbmcgaXRzICYjMzk7ZW5hYmxlZCYjMzk7IHBhcmFtZXRlci5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAwMDozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NTkyCgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqTWFrZWZpbGUgQW5hbHlzaXMgZm9yIERBTU9OIEludGVncmF0aW9uKioKCkFscmlnaHQsIGxldCYjMzk7cyB0YWtlIGEgbG9vayBhdCB0aGUgY29tcGlsYXRpb24gcHJvY2VzcyBmb3IgYG1tL2RhbW9uL2NvcmUuY2AsIHNwZWNpZmljYWxseSBob3cgaXQmIzM5O3MgYmVpbmcgaGFuZGxlZCBpbiB0aGUgYE1ha2VmaWxlYC4gSSYjMzk7bSBnb2luZyB0byBuYXZpZ2F0ZSB0byBgbW0vZGFtb24vTWFrZWZpbGVgLiBJJiMzOTtsbCBiZSBsb29raW5nIHRvIHNlZSBob3cgdGhlIGNvbXBpbGF0aW9uIG9mIGBjb3JlLmNgIGlzIGludGVncmF0ZWQgaW50byB0aGUgbGFyZ2VyIGJ1aWxkIHN5c3RlbS4gSSB3YW50IHRvIHVuZGVyc3RhbmQgYW55IHNwZWNpZmljIGZsYWdzLCBkZXBlbmRlbmNpZXMsIG9yIGxpbmtpbmcgc3RlcHMgdGhhdCBhcmUgdW5pcXVlIHRvIHRoaXMgY29tcG9uZW50IHdpdGhpbiB0aGUgREFNT04gc3Vic3lzdGVtLiBIb3BlZnVsbHksIHRoZSBtYWtlZmlsZSB3aWxsIHByb3ZpZGUgY2xhcml0eSBvbiBhbnkgb3B0aW1pemF0aW9ucyBvciBjb25maWd1cmF0aW9ucyBiZWluZyBhcHBsaWVkLCBlc3BlY2lhbGx5IGlmIHRoZXkgYXJlIHNwZWNpZmljIHRvIHRoZSBEQU1PTiBjb3JlIGZ1bmN0aW9uYWxpdHkgb3IgcmVsYXRlZCBkYXRhIGFjY2VzcyBtb25pdG9yaW5nIHNjaGVtZXMuIEkgbmVlZCB0byBlbnN1cmUgdGhpcyBjb21wb25lbnQgaXNuJiMzOTt0IGludHJvZHVjaW5nIGFueSB1bmV4cGVjdGVkIGJ1aWxkIGNvbmZsaWN0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAwMDozMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O21tL2RhbW9uL01ha2VmaWxlJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuICAgMjpcdFxuICAgMzpcdG9iai15XHRcdFx0XHQ6PSBjb3JlLm9cbiAgIDQ6XHRvYmotJChDT05GSUdfREFNT05fVkFERFIpXHQmIzQzOz0gb3BzLWNvbW1vbi5vIHZhZGRyLm9cbiAgIDU6XHRvYmotJChDT05GSUdfREFNT05fUEFERFIpXHQmIzQzOz0gb3BzLWNvbW1vbi5vIHBhZGRyLm9cbiAgIDY6XHRvYmotJChDT05GSUdfREFNT05fU1lTRlMpXHQmIzQzOz0gc3lzZnMtY29tbW9uLm8gc3lzZnMtc2NoZW1lcy5vIHN5c2ZzLm9cbiAgIDc6XHRvYmotJChDT05GSUdfREFNT05fUkVDTEFJTSlcdCYjNDM7PSBtb2R1bGVzLWNvbW1vbi5vIHJlY2xhaW0ub1xuICAgODpcdG9iai0kKENPTkZJR19EQU1PTl9MUlVfU09SVClcdCYjNDM7PSBtb2R1bGVzLWNvbW1vbi5vIGxydV9zb3J0Lm9cbiAgIDk6XHRvYmotJChDT05GSUdfREFNT05fU1RBVClcdCYjNDM7PSBtb2R1bGVzLWNvbW1vbi5vIHN0YXQub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAwMDozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MDQ3CgkJCQkJCQlvdXRwdXQ6IDI1CgkJCQkJCQl0aG91Z2h0czogMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqSW52ZXN0aWdhdGluZyB0aGUgQnVpbGQgUHJvY2VzcyBmb3IgREFNT04qKgoKT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGJ1aWxkIHByb2Nlc3MgYW5kIHdoZW4gdGhlIERBTU9OIGNvbXBvbmVudHMgZ2V0IGJha2VkIGludG8gdGhlIGtlcm5lbC4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gZGl2ZSBpbnRvIHRoZSBgbW0vTWFrZWZpbGVgIHdpdGhpbiB0aGUga2VybmVsIHNvdXJjZSB0cmVlLiBUaGF0IGZpbGUmIzM5O3MgdXN1YWxseSB0aGUgb3JjaGVzdHJhdG9yIGZvciBhbnl0aGluZyBtZW1vcnktcmVsYXRlZCwgYW5kIGl0IHNob3VsZCBzaGVkIHNvbWUgbGlnaHQgb24gdGhlIGRlcGVuZGVuY2llcyBhbmQgYnVpbGQgb3JkZXIgZm9yIHRoZSBgbW0vZGFtb24vYCBkaXJlY3RvcnkuIEJ5IGV4YW1pbmluZyB0aGUgcnVsZXMgd2l0aGluIHRoYXQgTWFrZWZpbGUsIEkgc2hvdWxkIGJlIGFibGUgdG8gcGlucG9pbnQgZXhhY3RseSB3aGVuIGFuZCBob3cgdGhlIERBTU9OIG1vZHVsZXMsIG9yIGZlYXR1cmVzIGFyZSBpbmNvcnBvcmF0ZWQgaW50byB0aGUga2VybmVsIGltYWdlLiBJIG5lZWQgdG8gdHJhY2UgdGhlIGJ1aWxkIHByb2Nlc3Mgc3BlY2lmaWNhbGx5IGZvciB0aGlzIG1lbW9yeSBtb25pdG9yaW5nIHN5c3RlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDMgMDA6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGFtb24mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9NYWtlZmlsZT0xMzU9b2JqLSQoQ09ORklHX0RFQlVHX1BBR0VfUkVGKSAmIzQzOz0gZGVidWdfcGFnZV9yZWYub1xubW0vTWFrZWZpbGU6MTM2Om9iai0kKENPTkZJR19EQU1PTikgJiM0Mzs9IGRhbW9uL1xubW0vTWFrZWZpbGUtMTM3LW9iai0kKENPTkZJR19IQVJERU5FRF9VU0VSQ09QWSkgJiM0Mzs9IHVzZXJjb3B5Lm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDMgMDA6MzM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjMzNAoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDMzOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIERBTU9OIFF1b3RhIExvZ2ljKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBwYXRjaC4gSSYjMzk7bSBsb29raW5nIGF0IGBtbS9kYW1vbi9jb3JlLmNgLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGxpbmVzIDI2MzAtMjc3MCwgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCBhbmQgdGhlIHByb2JsZW0gdGhpcyBmaXhlcy4gSSBzZWUgdGhlIG1haW4gY29uY2VybiBpcyB3aXRoIHRoZSBgZGFtb3NfcXVvdGFfaXNfZnVsbGAgZnVuY3Rpb24gYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgREFNT04gcXVvdGEgc3lzdGVtLiBUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIGNoZWNrIGZvciBgcXVvdGEtJmd0O2NoYXJnZWRfc3pgIHdpdGhpbiBgZGFtb3NfcXVvdGFfaXNfZnVsbGAuIFRoYXQmIzM5O3MgaW50ZXJlc3Rpbmc7IEkmIzM5O20gYXNzdW1pbmcgdGhpcyBoYW5kbGVzIGEgc2NlbmFyaW8gd2hlcmUgc29tZXRoaW5nIGlzIHNldHRpbmcgdGhlIHF1b3RhIGJ1dCBoYXNuJiMzOTt0ICYjMzQ7Y2hhcmdlZCYjMzQ7IGFueSBzaXplIGFnYWluc3QgaXQgeWV0LiBJdCBzZWVtcyB0aGUgaW50ZW50aW9uIGlzIHRvIGF2b2lkIGluY29ycmVjdGx5IHJlcG9ydGluZyBhIGZ1bGwgcXVvdGEgaW4gdGhhdCBjYXNlLCB3aGVyZSBwZXJoYXBzIHRoZSBxdW90YSYjMzk7cyBlZmZlY3RpdmUgc2l6ZSAoYGVzemApIGNvdWxkIGJlIHplcm8uCgpUaGVuLCB0aGUgc2Vjb25kIGNoYW5nZSwgYWRkaW5nIGEgYHF1b3RhLSZndDtlc3pgIGNoZWNrIGluIGBkYW1vbl9kb19hcHBseV9zY2hlbWVzYCBjYXVnaHQgbXkgZXllLiBUaGlzIHN1Z2dlc3RzIHRoZXJlJiMzOTtzIGEgcG90ZW50aWFsIGZvciBhbiB1bmluaXRpYWxpemVkIG9yIHplcm8tdmFsdWVkIGBlc3pgIHRoYXQgY291bGQgbGVhZCB0byB1bmV4cGVjdGVkIGJlaGF2aW9yIGluIGhvdyBzY2hlbWVzIGFyZSBhcHBsaWVkLiBXaXRob3V0IHRoaXMgY2hlY2ssIHRoZSBxdW90YSBsb2dpYyBjb3VsZCBjYXVzZSBpc3N1ZXMgd2l0aCBob3cgd2UgaGFuZGxlIHRoZSBhcHBsaWNhdGlvbiBvZiBEQU1PTiBzY2hlbWVzLiBJdCBzZWVtcyB0aGlzIGNoZWNrIGVuc3VyZXMgdGhhdCB3ZSBkb24mIzM5O3QgcHJvY2VlZCB3aXRoIHNjaGVtZXMgaWYgdGhlcmUmIzM5O3Mgbm8gZGVmaW5lZCBlZmZlY3RpdmUgc2l6ZSBmb3IgdGhlIHF1b3RhLiBHb29kIGNhdGNoLiBPdmVyYWxsLCB0aGlzIHBhdGNoIHNlZW1zIGxpa2UgYSByZWFzb25hYmxlIHNhZmV0eSBjaGVjayB0byBwcmV2ZW50IHBvdGVudGlhbCBpbnRlZ2VyIG92ZXJmbG93cyBvciBvdGhlciB1bmV4cGVjdGVkIGJlaGF2aW91ciB3aGVyZSB0aGUgYGVzemAgb3IgYGNoYXJnZWRfc3pgIGFyZSBub3QgaW5pdGlhbGl6ZWQuIEkmIzM5O2xsIG5lZWQgdG8gbG9vayBhdCB0aGUgc3Vycm91bmRpbmcgY29kZSB0byBlbnN1cmUgdGhpcyBkb2VzbiYjMzk7dCBtYXNrIGEgZGVlcGVyIHJvb3QgY2F1c2UsIGJ1dCBvbiB0aGUgc3VyZmFjZSwgdGhpcyBsb29rcyBsaWtlIGEgc29saWQgY29udHJpYnV0aW9uIHRvIGltcHJvdmluZyB0aGUgcm9idXN0bmVzcyBvZiBEQU1PTiYjMzk7cyBxdW90YSBoYW5kbGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDMgMDA6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDttbS9kYW1vbi9jb3JlLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyNjMwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsyNjMwOlx0XHRjb21wbGV0ZShcdTAwMjZjb250cm9sLVx1MDAzZWNvbXBsZXRpb24pO1xuMjYzMTpcdFx0bXV0ZXhfbG9jayhcdTAwMjZjdHgtXHUwMDNld2Fsa19jb250cm9sX2xvY2spO1xuMjYzMjpcdFx0Y3R4LVx1MDAzZXdhbGtfY29udHJvbCA9IE5VTEw7XG4yNjMzOlx0XHRtdXRleF91bmxvY2soXHUwMDI2Y3R4LVx1MDAzZXdhbGtfY29udHJvbF9sb2NrKTtcbjI2MzQ6XHR9XG4yNjM1Olx0XG4yNjM2Olx0c3RhdGljIHZvaWQgZGFtb3NfY2hhcmdlX3F1b3RhKHN0cnVjdCBkYW1vc19xdW90YSAqcXVvdGEsXG4yNjM3Olx0XHRcdHVuc2lnbmVkIGxvbmcgc3pfcmVnaW9uLCB1bnNpZ25lZCBsb25nIHN6X2FwcGxpZWQpXG4yNjM4Olx0e1xuMjYzOTpcdFx0LypcbjI2NDA6XHRcdCAqIHN6X2FwcGxpZWQgY291bGQgYmUgYmlnZ2VyIHRoYW4gc3pfcmVnaW9uLCBkZXBlbmRpbmcgb24gb3BzXG4yNjQxOlx0XHQgKiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYWN0aW9uLCBlLmcuLCBkYW1vc19wYV9wYWdlb3V0KCkuICBDaGFyZ2Ugb25seVxuMjY0MjpcdFx0ICogdGhlIHJlZ2lvbiBzaXplIGluIHRoZSBjYXNlLlxuMjY0MzpcdFx0ICovXG4yNjQ0Olx0XHRpZiAoIXF1b3RhLVx1MDAzZWZhaWxfY2hhcmdlX2Rlbm9tIHx8IHN6X2FwcGxpZWQgXHUwMDNlIHN6X3JlZ2lvbilcbjI2NDU6XHRcdFx0cXVvdGEtXHUwMDNlY2hhcmdlZF9zeiAmIzQzOz0gc3pfcmVnaW9uO1xuMjY0NjpcdFx0ZWxzZVxuMjY0NzpcdFx0XHRxdW90YS1cdTAwM2VjaGFyZ2VkX3N6ICYjNDM7PSBzel9hcHBsaWVkICYjNDM7IG11bHRfZnJhYyhcbjI2NDg6XHRcdFx0XHRcdChzel9yZWdpb24gLSBzel9hcHBsaWVkKSxcbjI2NDk6XHRcdFx0XHRcdHF1b3RhLVx1MDAzZWZhaWxfY2hhcmdlX251bSxcbjI2NTA6XHRcdFx0XHRcdHF1b3RhLVx1MDAzZWZhaWxfY2hhcmdlX2Rlbm9tKTtcbjI2NTE6XHR9XG4yNjUyOlx0XG4yNjUzOlx0c3RhdGljIGJvb2wgZGFtb3NfcXVvdGFfaXNfZnVsbChzdHJ1Y3QgZGFtb3NfcXVvdGEgKnF1b3RhLFxuMjY1NDpcdFx0XHR1bnNpZ25lZCBsb25nIG1pbl9yZWdpb25fc3opXG4yNjU1Olx0e1xuMjY1NjpcdFx0aWYgKCFkYW1vc19xdW90YV9pc19zZXQocXVvdGEpKVxuMjY1NzpcdFx0XHRyZXR1cm4gZmFsc2U7XG4yNjU4Olx0XHRpZiAoIXF1b3RhLVx1MDAzZWNoYXJnZWRfc3opXG4yNjU5Olx0XHRcdHJldHVybiBmYWxzZTtcbjI2NjA6XHRcdGlmIChxdW90YS1cdTAwM2VjaGFyZ2VkX3N6IFx1MDAzZT0gcXVvdGEtXHUwMDNlZXN6KVxuMjY2MTpcdFx0XHRyZXR1cm4gdHJ1ZTtcbjI2NjI6XHRcdC8qXG4yNjYzOlx0XHQgKiBEQU1PUyBhY3Rpb24gaXMgYXBwbGllZCBwZXIgcmVnaW9uLCBzbyBcdTAwM2NtaW5fcmVnaW9uX3N6IHJlbWFpbmluZ1xuMjY2NDpcdFx0ICogcXVvdGEgbWVhbnMgdGhlIHF1b3RhIGlzIGVmZmVjdGl2ZWx5IGZ1bGwuXG4yNjY1Olx0XHQgKi9cbjI2NjY6XHRcdHJldHVybiBxdW90YS1cdTAwM2Vlc3ogLSBxdW90YS1cdTAwM2VjaGFyZ2VkX3N6IFx1MDAzYyBtaW5fcmVnaW9uX3N6O1xuMjY2NzpcdH1cbjI2Njg6XHRcbjI2Njk6XHRzdGF0aWMgdm9pZCBkYW1vc19hcHBseV9zY2hlbWUoc3RydWN0IGRhbW9uX2N0eCAqYywgc3RydWN0IGRhbW9uX3RhcmdldCAqdCxcbjI2NzA6XHRcdFx0c3RydWN0IGRhbW9uX3JlZ2lvbiAqciwgc3RydWN0IGRhbW9zICpzKVxuMjY3MTpcdHtcbjI2NzI6XHRcdHN0cnVjdCBkYW1vc19xdW90YSAqcXVvdGEgPSBcdTAwMjZzLVx1MDAzZXF1b3RhO1xuMjY3MzpcdFx0dW5zaWduZWQgbG9uZyBzeiA9IGRhbW9uX3N6X3JlZ2lvbihyKTtcbjI2NzQ6XHRcdHN0cnVjdCB0aW1lc3BlYzY0IGJlZ2luLCBlbmQ7XG4yNjc1Olx0XHR1bnNpZ25lZCBsb25nIHN6X2FwcGxpZWQgPSAwO1xuMjY3NjpcdFx0dW5zaWduZWQgbG9uZyBzel9vcHNfZmlsdGVyX3Bhc3NlZCA9IDA7XG4yNjc3Olx0XHQvKlxuMjY3ODpcdFx0ICogV2UgcGxhbiB0byBzdXBwb3J0IG11bHRpcGxlIGNvbnRleHQgcGVyIGtkYW1vbmQsIGFzIERBTU9OIHN5c2ZzXG4yNjc5Olx0XHQgKiBpbXBsaWVzIHdpdGggJiMzOTtucl9jb250ZXh0cyYjMzk7IGZpbGUuICBOZXZlcnRoZWxlc3MsIG9ubHkgc2luZ2xlIGNvbnRleHRcbjI2ODA6XHRcdCAqIHBlciBrZGFtb25kIGlzIHN1cHBvcnRlZCBmb3Igbm93LiAgU28sIHdlIGNhbiBzaW1wbHkgdXNlICYjMzk7MCYjMzk7IGNvbnRleHRcbjI2ODE6XHRcdCAqIGluZGV4IGhlcmUuXG4yNjgyOlx0XHQgKi9cbjI2ODM6XHRcdHVuc2lnbmVkIGludCBjaWR4ID0gMDtcbjI2ODQ6XHRcdHN0cnVjdCBkYW1vcyAqc2l0ZXI7XHRcdC8qIHNjaGVtZXMgaXRlcmF0b3IgKi9cbjI2ODU6XHRcdHVuc2lnbmVkIGludCBzaWR4ID0gMDtcbjI2ODY6XHRcdHN0cnVjdCBkYW1vbl90YXJnZXQgKnRpdGVyO1x0LyogdGFyZ2V0cyBpdGVyYXRvciAqL1xuMjY4NzpcdFx0dW5zaWduZWQgaW50IHRpZHggPSAwLCBucl9hY2Nlc3NlcyA9IDA7XG4yNjg4Olx0XHRib29sIGRvX3RyYWNlID0gZmFsc2U7XG4yNjg5Olx0XG4yNjkwOlx0XHQvKiBnZXQgaW5kaWNlcyBmb3IgdHJhY2VfZGFtb3NfYmVmb3JlX2FwcGx5KCkgKi9cbjI2OTE6XHRcdGlmICh0cmFjZV9kYW1vc19iZWZvcmVfYXBwbHlfZW5hYmxlZCgpKSB7XG4yNjkyOlx0XHRcdGRhbW9uX2Zvcl9lYWNoX3NjaGVtZShzaXRlciwgYykge1xuMjY5MzpcdFx0XHRcdGlmIChzaXRlciA9PSBzKVxuMjY5NDpcdFx0XHRcdFx0YnJlYWs7XG4yNjk1Olx0XHRcdFx0c2lkeCYjNDM7JiM0Mzs7XG4yNjk2Olx0XHRcdH1cbjI2OTc6XHRcdFx0ZGFtb25fZm9yX2VhY2hfdGFyZ2V0KHRpdGVyLCBjKSB7XG4yNjk4Olx0XHRcdFx0aWYgKHRpdGVyID09IHQpXG4yNjk5Olx0XHRcdFx0XHRicmVhaztcbjI3MDA6XHRcdFx0XHR0aWR4JiM0MzsmIzQzOztcbjI3MDE6XHRcdFx0fVxuMjcwMjpcdFx0XHRucl9hY2Nlc3NlcyA9IGRhbW9uX25yX2FjY2Vzc2VzX212c3VtKHIsIGMpO1xuMjcwMzpcdFx0XHRkb190cmFjZSA9IHRydWU7XG4yNzA0Olx0XHR9XG4yNzA1Olx0XG4yNzA2Olx0XHRpZiAoYy1cdTAwM2VvcHMuYXBwbHlfc2NoZW1lKSB7XG4yNzA3Olx0XHRcdGlmIChkYW1vc19xdW90YV9pc19zZXQocXVvdGEpIFx1MDAyNlx1MDAyNlxuMjcwODpcdFx0XHRcdFx0cXVvdGEtXHUwMDNlY2hhcmdlZF9zeiAmIzQzOyBzeiBcdTAwM2UgcXVvdGEtXHUwMDNlZXN6KSB7XG4yNzA5Olx0XHRcdFx0c3ogPSBBTElHTl9ET1dOKHF1b3RhLVx1MDAzZWVzeiAtIHF1b3RhLVx1MDAzZWNoYXJnZWRfc3osXG4yNzEwOlx0XHRcdFx0XHRcdGMtXHUwMDNlbWluX3JlZ2lvbl9zeik7XG4yNzExOlx0XHRcdFx0aWYgKCFzeilcbjI3MTI6XHRcdFx0XHRcdGdvdG8gdXBkYXRlX3N0YXQ7XG4yNzEzOlx0XHRcdFx0aWYgKGRhbW9uX3NwbGl0X3JlZ2lvbl9hdCh0LCByLCBzeikpXG4yNzE0Olx0XHRcdFx0XHRnb3RvIHVwZGF0ZV9zdGF0O1xuMjcxNTpcdFx0XHR9XG4yNzE2Olx0XHRcdGlmIChkYW1vc19jb3JlX2ZpbHRlcl9vdXQoYywgdCwgciwgcykpXG4yNzE3Olx0XHRcdFx0cmV0dXJuO1xuMjcxODpcdFx0XHRrdGltZV9nZXRfY29hcnNlX3RzNjQoXHUwMDI2YmVnaW4pO1xuMjcxOTpcdFx0XHR0cmFjZV9kYW1vc19iZWZvcmVfYXBwbHkoY2lkeCwgc2lkeCwgdGlkeCwgciwgbnJfYWNjZXNzZXMsXG4yNzIwOlx0XHRcdFx0XHRkYW1vbl9ucl9yZWdpb25zKHQpLCBkb190cmFjZSk7XG4yNzIxOlx0XHRcdHN6X2FwcGxpZWQgPSBjLVx1MDAzZW9wcy5hcHBseV9zY2hlbWUoYywgdCwgciwgcyxcbjI3MjI6XHRcdFx0XHRcdFx1MDAyNnN6X29wc19maWx0ZXJfcGFzc2VkKTtcbjI3MjM6XHRcdFx0ZGFtb3Nfd2Fsa19jYWxsX3dhbGsoYywgdCwgciwgcywgc3pfb3BzX2ZpbHRlcl9wYXNzZWQpO1xuMjcyNDpcdFx0XHRrdGltZV9nZXRfY29hcnNlX3RzNjQoXHUwMDI2ZW5kKTtcbjI3MjU6XHRcdFx0cXVvdGEtXHUwMDNldG90YWxfY2hhcmdlZF9ucyAmIzQzOz0gdGltZXNwZWM2NF90b19ucyhcdTAwMjZlbmQpIC1cbjI3MjY6XHRcdFx0XHR0aW1lc3BlYzY0X3RvX25zKFx1MDAyNmJlZ2luKTtcbjI3Mjc6XHRcdFx0ZGFtb3NfY2hhcmdlX3F1b3RhKHF1b3RhLCBzeiwgc3pfYXBwbGllZCk7XG4yNzI4Olx0XHRcdGlmIChkYW1vc19xdW90YV9pc19mdWxsKHF1b3RhLCBjLVx1MDAzZW1pbl9yZWdpb25fc3opKSB7XG4yNzI5Olx0XHRcdFx0cXVvdGEtXHUwMDNlY2hhcmdlX3RhcmdldF9mcm9tID0gdDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDMgMDA6MzM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODcyNwoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkLCBpbiB0aGUgZmlyc3QgcGVyc29uLCBhc3N1bWluZyBhIGZpZWxkIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBSZWxldmFudCBTZWN0aW9uKioKClJpZ2h0LCBsZXQmIzM5O3MgdGFrZSBhIGxvb2sgYXQgbGluZXMgMjczMC0yNzcwLiBJIG5lZWQgdG8gYmUgc3VyZSBJJiMzOTttIG5vdCBtaXNzaW5nIGFueXRoaW5nIGNyaXRpY2FsIGluIHRoaXMgc2VjdGlvbi4gSSB3YW50IHRvIHplcm8gaW4gb24gdGhlIGNvcmUgb2YgdGhlIGlkZWEuIFdoYXQgYXJlIHRoZSBrZXkgYXJndW1lbnRzIGJlaW5nIG1hZGUgaGVyZT8gQXJlIHRoZXkgc3VwcG9ydGluZyB0aGUgY3VycmVudCB3b3JrLCBvciBkbyB0aGV5IG9mZmVyIHNvbWUgY2hhbGxlbmdpbmcgaWRlYXM/IEkgbmVlZCB0byBiZSBvYmplY3RpdmUsIGFuZCB0aGF0IGFsc28gbWVhbnMgYmVpbmcgY2FyZWZ1bCBub3QgdG8gZ2V0IGNhdWdodCBpbiBhIG5lZ2F0aXZlIGZlZWRiYWNrIGxvb3AgaWYgaXQgaGFwcGVucyB0byBiZSBjaGFsbGVuZ2luZy4gT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byBpdCBhbmQgc2VlIHdoYXQgd2UgaGF2ZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDMgMDA6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDttbS9kYW1vbi9jb3JlLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyNzMwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQ1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzI3MzA6XHRcdFx0XHRxdW90YS1cdTAwM2VjaGFyZ2VfYWRkcl9mcm9tID0gci1cdTAwM2Vhci5lbmQ7XG4yNzMxOlx0XHRcdH1cbjI3MzI6XHRcdH1cbjI3MzM6XHRcdGlmIChzLVx1MDAzZWFjdGlvbiAhPSBEQU1PU19TVEFUKVxuMjczNDpcdFx0XHRyLVx1MDAzZWFnZSA9IDA7XG4yNzM1Olx0XG4yNzM2Olx0dXBkYXRlX3N0YXQ6XG4yNzM3Olx0XHRkYW1vc191cGRhdGVfc3RhdChzLCBzeiwgc3pfYXBwbGllZCwgc3pfb3BzX2ZpbHRlcl9wYXNzZWQpO1xuMjczODpcdH1cbjI3Mzk6XHRcbjI3NDA6XHRzdGF0aWMgdm9pZCBkYW1vbl9kb19hcHBseV9zY2hlbWVzKHN0cnVjdCBkYW1vbl9jdHggKmMsXG4yNzQxOlx0XHRcdFx0XHQgICBzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0LFxuMjc0MjpcdFx0XHRcdFx0ICAgc3RydWN0IGRhbW9uX3JlZ2lvbiAqcilcbjI3NDM6XHR7XG4yNzQ0Olx0XHRzdHJ1Y3QgZGFtb3MgKnM7XG4yNzQ1Olx0XG4yNzQ2Olx0XHRkYW1vbl9mb3JfZWFjaF9zY2hlbWUocywgYykge1xuMjc0NzpcdFx0XHRzdHJ1Y3QgZGFtb3NfcXVvdGEgKnF1b3RhID0gXHUwMDI2cy1cdTAwM2VxdW90YTtcbjI3NDg6XHRcbjI3NDk6XHRcdFx0aWYgKHRpbWVfYmVmb3JlKGMtXHUwMDNlcGFzc2VkX3NhbXBsZV9pbnRlcnZhbHMsIHMtXHUwMDNlbmV4dF9hcHBseV9zaXMpKVxuMjc1MDpcdFx0XHRcdGNvbnRpbnVlO1xuMjc1MTpcdFxuMjc1MjpcdFx0XHRpZiAoIXMtXHUwMDNld21hcmtzLmFjdGl2YXRlZClcbjI3NTM6XHRcdFx0XHRjb250aW51ZTtcbjI3NTQ6XHRcbjI3NTU6XHRcdFx0aWYgKCFxdW90YS1cdTAwM2Vlc3opXG4yNzU2Olx0XHRcdFx0Y29udGludWU7XG4yNzU3Olx0XG4yNzU4Olx0XHRcdC8qIENoZWNrIHRoZSBxdW90YSAqL1xuMjc1OTpcdFx0XHRpZiAoZGFtb3NfcXVvdGFfaXNfZnVsbChxdW90YSwgYy1cdTAwM2VtaW5fcmVnaW9uX3N6KSlcbjI3NjA6XHRcdFx0XHRjb250aW51ZTtcbjI3NjE6XHRcbjI3NjI6XHRcdFx0aWYgKGRhbW9zX3NraXBfY2hhcmdlZF9yZWdpb24odCwgciwgcywgYy1cdTAwM2VtaW5fcmVnaW9uX3N6KSlcbjI3NjM6XHRcdFx0XHRjb250aW51ZTtcbjI3NjQ6XHRcbjI3NjU6XHRcdFx0aWYgKHMtXHUwMDNlbWF4X25yX3NuYXBzaG90cyBcdTAwMjZcdTAwMjZcbjI3NjY6XHRcdFx0XHRcdHMtXHUwMDNlbWF4X25yX3NuYXBzaG90cyBcdTAwM2M9IHMtXHUwMDNlc3RhdC5ucl9zbmFwc2hvdHMpXG4yNzY3Olx0XHRcdFx0Y29udGludWU7XG4yNzY4Olx0XG4yNzY5Olx0XHRcdGlmIChkYW1vc192YWxpZF90YXJnZXQoYywgciwgcykpXG4yNzcwOlx0XHRcdFx0ZGFtb3NfYXBwbHlfc2NoZW1lKGMsIHQsIHIsIHMpO1xuMjc3MTpcdFxuMjc3MjpcdFx0XHRpZiAoZGFtb25faXNfbGFzdF9yZWdpb24ociwgdCkpXG4yNzczOlx0XHRcdFx0cy1cdTAwM2VzdGF0Lm5yX3NuYXBzaG90cyYjNDM7JiM0Mzs7XG4yNzc0Olx0XHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDAwOjMzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk1NzIKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiA0NjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIERBTU9OIFF1b3RhIEJlaGF2aW9yKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFdlJiMzOTtyZSBsb29raW5nIGF0IGhvdyBEQU1PUywgd2hpY2ggaXMgYmFzZWQgb24gREFNT04gb3BlcmF0aW9uIHNjaGVtZXMsIGhhbmRsZXMgcXVvdGFzLCBzcGVjaWZpY2FsbHkgdGhlIGNhc2VzIHdoZXJlIHRoZSBlZmZlY3RpdmUgc2l6ZSAoYHF1b3RhLSZndDtlc3pgKSBvciB0aGUgY2hhcmdlZCBzaXplIChgcXVvdGEtJmd0O2NoYXJnZWRfc3pgKSBpcyB6ZXJvLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgbG9naWMgZmxvdyBoZXJlLCBwYXJ0aWN1bGFybHkgYmVmb3JlIHRoaXMgcGF0Y2ggd2FzIGFwcGxpZWQuCgpMb29raW5nIGF0IHRoZSBgZGFtb3NfcXVvdGFfaXNfZnVsbGAgZnVuY3Rpb24sIHRoZXJlIGFyZSBhIGZldyBpbnRlcmVzdGluZyBjb25kaXRpb25zLiBJZiB0aGUgcXVvdGEgaXNuJiMzOTt0IHNldCwgZmluZSwgaXQgcmV0dXJucyBgZmFsc2VgLiBJZiBgY2hhcmdlZF9zemAgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIGBlc3pgLCBpdCBhbHNvIHJldHVybnMgdHJ1ZSwgbWFraW5nIHNlbnNlLiBCdXQgdGhpcyBuZXh0IGNvbmRpdGlvbiBpcyB3aGVyZSB0aGluZ3MgZ2V0IGEgbGl0dGxlIHRyaWNreTogYHF1b3RhLSZndDtlc3ogLSBxdW90YS0mZ3Q7Y2hhcmdlZF9zeiAmbHQ7IG1pbl9yZWdpb25fc3pgLgoKV2FpdCBhIG1pbnV0ZSwgd2hhdCBoYXBwZW5zIGlmIGBlc3pgIGlzIHplcm8/IE9yLCBpZiBgZXN6YCBpcyBsZXNzIHRoYW4gYG1pbl9yZWdpb25fc3pgIHdoaWxlIGBjaGFyZ2VkX3N6YCBpcyB6ZXJvPyBNeSBpbml0aWFsIHRob3VnaHQgaXMgaXQgd291bGQgZmFpbCBlYXJseSwgYnV0IGxldCBtZSBjaGVjayB0aGF0Li4uIE9rYXksIElmIGBlc3pgIGlzIGxlc3MgdGhhbiBgbWluX3JlZ2lvbl9zemAgYW5kIGBjaGFyZ2VkX3N6YCBpcyB6ZXJvLCB3ZSBnZXQgYGVzeiAtIDAgJmx0OyBtaW5fcmVnaW9uX3N6YCB3aGljaCwgKnllcyosIHJldHVybnMgYHRydWVgLCBpbmRpY2F0aW5nIHRoZSBxdW90YSBpcyBmdWxsIGV2ZW4gYmVmb3JlIGl0JiMzOTtzIGJlZW4gdXNlZC4gQnV0IGlmIGBlc3pgIGlzICplcXVhbCogdG8gemVybywgdGhlIGNvbXBhcmlzb24gYDAgJmd0Oz0gMGAgd291bGQgcmV0dXJuIHRydWUgYXMgd2VsbC4KClRoZW4sIGluIGBkYW1vbl9kb19hcHBseV9zY2hlbWVzYCwgd2UmIzM5O3JlIHNraXBwaW5nIHRoZSBxdW90YSBpZiBgIXF1b3RhLSZndDtlc3pgLiBBbmQsIGJhY2sgaW4gYGRhbW9zX3F1b3RhX2lzX2Z1bGxgLCB0aGVyZSYjMzk7cyBhIGNoZWNrIGZvciBgIXF1b3RhLSZndDtjaGFyZ2VkX3N6YCwgd2hpY2ggd291bGQgcmV0dXJuIGBmYWxzZWAuCgpTbywgaXQgc2VlbXMgdGhhdCB0aGVyZSYjMzk7cyBhIHBvdGVudGlhbCBxdWlyayBpbiB0aGUgbG9naWMgYXJvdW5kIGhvdyBEQU1PUyBoYW5kbGVzIHplcm8tc2l6ZWQgcXVvdGFzIG9yIHF1b3RhcyB0aGF0IGFyZSBzbWFsbGVyIHRoYW4gdGhlIG1pbmltYWwgcmVnaW9uIHNpemUuCgpOb3csIGEgY29tcGxldGVseSBzZXBhcmF0ZSB0aG91Z2h0OiBJcyBEQU1PTiBldmVuIGFjY2Vzc2libGUgYW5kIGZ1enplZCB3aXRoaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVT8gR29vZCBuZXdzLCBpdCBsb29rcyBsaWtlIERBTU9OIGlzIGluZGVlZCByZWFjaGFibGUgdGhyb3VnaCB0aGUgc3lzZnMgaW50ZXJmYWNlIGluIHVzZXIgc3BhY2UuIFRoaXMgbWVhbnMgdGhhdCB1c2Vyc3BhY2UgdG9vbHMgbGlrZSBzeXprYWxsZXIgY2FuIGludGVyYWN0IHdpdGggREFNT04sIGFsbG93aW5nIGZvciB0aGUgY3JlYXRpb24gb2YgY29udGV4dHMsIHNjaGVtZXMsIHF1b3RhcywgYW5kIHRhcmdldHMuIEkgc2hvdWxkIHNlZSBpZiBzeXprYWxsZXIgb3IgdGhlIHN5c2ZzIGFyZSBwcm9wZXJseSBpbnZva2luZyB0aGUgREFNT04gZnVuY3Rpb25zIGluIHRlc3RpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDAwOjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RhbW9uX3N5c2ZzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vZGFtb24mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDM2ODcgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTktXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYzoxMDpERUZJTkVfTVVURVgoZGFtb25fc3lzZnNfbG9jayk7XG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy0xMS1cbi0tXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy0xNS1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jOjE2OnN0cnVjdCBkYW1vbl9zeXNmc191bF9yYW5nZSAqZGFtb25fc3lzZnNfdWxfcmFuZ2VfYWxsb2MoXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy0xNy1cdFx0dW5zaWduZWQgbG9uZyBtaW4sXG4tLVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmMtMTkte1xubW0vZGFtb24vc3lzZnMtY29tbW9uLmM6MjA6XHRzdHJ1Y3QgZGFtb25fc3lzZnNfdWxfcmFuZ2UgKnJhbmdlID0ga21hbGxvY19vYmooKnJhbmdlKTtcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTIxLVxuLS1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jPTMxPXN0YXRpYyBzc2l6ZV90IG1pbl9zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLCBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgKmF0dHIsXG4tLVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmMtMzMte1xubW0vZGFtb24vc3lzZnMtY29tbW9uLmM6MzQ6XHRzdHJ1Y3QgZGFtb25fc3lzZnNfdWxfcmFuZ2UgKnJhbmdlID0gY29udGFpbmVyX29mKGtvYmosXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYzozNTpcdFx0XHRzdHJ1Y3QgZGFtb25fc3lzZnNfdWxfcmFuZ2UsIGtvYmopO1xubW0vZGFtb24vc3lzZnMtY29tbW9uLmMtMzYtXG4tLVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM9NDA9c3RhdGljIHNzaXplX3QgbWluX3N0b3JlKHN0cnVjdCBrb2JqZWN0ICprb2JqLCBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgKmF0dHIsXG4tLVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmMtNDIte1xubW0vZGFtb24vc3lzZnMtY29tbW9uLmM6NDM6XHRzdHJ1Y3QgZGFtb25fc3lzZnNfdWxfcmFuZ2UgKnJhbmdlID0gY29udGFpbmVyX29mKGtvYmosXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYzo0NDpcdFx0XHRzdHJ1Y3QgZGFtb25fc3lzZnNfdWxfcmFuZ2UsIGtvYmopO1xubW0vZGFtb24vc3lzZnMtY29tbW9uLmMtNDUtXHR1bnNpZ25lZCBsb25nIG1pbjtcbi0tXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYz01Nj1zdGF0aWMgc3NpemVfdCBtYXhfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaiwgc3RydWN0IGtvYmpfYXR0cmlidXRlICphdHRyLFxuLS1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTU4LXtcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jOjU5Olx0c3RydWN0IGRhbW9uX3N5c2ZzX3VsX3JhbmdlICpyYW5nZSA9IGNvbnRhaW5lcl9vZihrb2JqLFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM6NjA6XHRcdFx0c3RydWN0IGRhbW9uX3N5c2ZzX3VsX3JhbmdlLCBrb2JqKTtcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTYxLVxuLS1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jPTY1PXN0YXRpYyBzc2l6ZV90IG1heF9zdG9yZShzdHJ1Y3Qga29iamVjdCAqa29iaiwgc3RydWN0IGtvYmpfYXR0cmlidXRlICphdHRyLFxuLS1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTY3LXtcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jOjY4Olx0c3RydWN0IGRhbW9uX3N5c2ZzX3VsX3JhbmdlICpyYW5nZSA9IGNvbnRhaW5lcl9vZihrb2JqLFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM6Njk6XHRcdFx0c3RydWN0IGRhbW9uX3N5c2ZzX3VsX3JhbmdlLCBrb2JqKTtcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTcwLVx0dW5zaWduZWQgbG9uZyBtYXg7XG4tLVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmMtODAtXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYzo4MTp2b2lkIGRhbW9uX3N5c2ZzX3VsX3JhbmdlX3JlbGVhc2Uoc3RydWN0IGtvYmplY3QgKmtvYmopXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy04Mi17XG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYzo4MzpcdGtmcmVlKGNvbnRhaW5lcl9vZihrb2JqLCBzdHJ1Y3QgZGFtb25fc3lzZnNfdWxfcmFuZ2UsIGtvYmopKTtcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTg0LX1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTg1LVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM6ODY6c3RhdGljIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSBkYW1vbl9zeXNmc191bF9yYW5nZV9taW5fYXR0ciA9XG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy04Ny1cdFx0X19BVFRSX1JXX01PREUobWluLCAwNjAwKTtcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTg4LVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM6ODk6c3RhdGljIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSBkYW1vbl9zeXNmc191bF9yYW5nZV9tYXhfYXR0ciA9XG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy05MC1cdFx0X19BVFRSX1JXX01PREUobWF4LCAwNjAwKTtcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTkxLVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM6OTI6c3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmRhbW9uX3N5c2ZzX3VsX3JhbmdlX2F0dHJzW10gPSB7XG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYzo5MzpcdFx1MDAyNmRhbW9uX3N5c2ZzX3VsX3JhbmdlX21pbl9hdHRyLmF0dHIsXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYzo5NDpcdFx1MDAyNmRhbW9uX3N5c2ZzX3VsX3JhbmdlX21heF9hdHRyLmF0dHIsXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy05NS1cdE5VTEwsXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy05Ni19O1xubW0vZGFtb24vc3lzZnMtY29tbW9uLmM6OTc6QVRUUklCVVRFX0dST1VQUyhkYW1vbl9zeXNmc191bF9yYW5nZSk7XG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy05OC1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jOjk5OmNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfdWxfcmFuZ2Vfa3R5cGUgPSB7XG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYzoxMDA6XHQucmVsZWFzZSA9IGRhbW9uX3N5c2ZzX3VsX3JhbmdlX3JlbGVhc2UsXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy0xMDEtXHQuc3lzZnNfb3BzID0gXHUwMDI2a29ial9zeXNmc19vcHMsXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYzoxMDI6XHQuZGVmYXVsdF9ncm91cHMgPSBkYW1vbl9zeXNmc191bF9yYW5nZV9ncm91cHMsXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy0xMDMtfTtcbi0tXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy0xMDUtXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYzoxMDY6c3RhdGljIGJvb2wgZGFtb25fc3lzZnNfbWVtY2dfcGF0aF9lcShzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy0xMDctXHRcdGNoYXIgKm1lbWNnX3BhdGhfYnVmLCBjaGFyICpwYXRoKVxuLS1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTExNi1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jOjExNzppbnQgZGFtb25fc3lzZnNfbWVtY2dfcGF0aF90b19pZChjaGFyICptZW1jZ19wYXRoLCB1NjQgKmlkKVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmMtMTE4LXtcbi0tXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy0xMzQtXHRcdFx0Y29udGludWU7XG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYzoxMzU6XHRcdGlmIChkYW1vbl9zeXNmc19tZW1jZ19wYXRoX2VxKG1lbWNnLCBwYXRoLCBtZW1jZ19wYXRoKSkge1xubW0vZGFtb24vc3lzZnMtY29tbW9uLmMtMTM2LVx0XHRcdCppZCA9IG1lbV9jZ3JvdXBfaWQobWVtY2cpO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTgtXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaDo5OmV4dGVybiBzdHJ1Y3QgbXV0ZXggZGFtb25fc3lzZnNfbG9jaztcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTEwLVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6MTE6c3RydWN0IGRhbW9uX3N5c2ZzX3VsX3JhbmdlIHtcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTEyLVx0c3RydWN0IGtvYmplY3Qga29iajtcbi0tXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC0xNi1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oOjE3OnN0cnVjdCBkYW1vbl9zeXNmc191bF9yYW5nZSAqZGFtb25fc3lzZnNfdWxfcmFuZ2VfYWxsb2MoXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC0xOC1cdFx0dW5zaWduZWQgbG9uZyBtaW4sXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC0xOS1cdFx0dW5zaWduZWQgbG9uZyBtYXgpO1xubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6MjA6dm9pZCBkYW1vbl9zeXNmc191bF9yYW5nZV9yZWxlYXNlKHN0cnVjdCBrb2JqZWN0ICprb2JqKTtcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTIxLVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6MjI6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfdWxfcmFuZ2Vfa3R5cGU7XG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC0yMy1cbi0tXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC0yNy1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oOjI4OnN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVzIHtcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTI5LVx0c3RydWN0IGtvYmplY3Qga29iajtcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oOjMwOlx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZSAqKnNjaGVtZXNfYXJyO1xubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtMzEtXHRpbnQgbnI7XG4tLVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtMzMtXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaDozNDpzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lcyAqZGFtb25fc3lzZnNfc2NoZW1lc19hbGxvYyh2b2lkKTtcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oOjM1OnZvaWQgZGFtb25fc3lzZnNfc2NoZW1lc19ybV9kaXJzKHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVzICpzY2hlbWVzKTtcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTM2LVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6Mzc6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfc2NoZW1lc19rdHlwZTtcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTM4LVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6Mzk6aW50IGRhbW9uX3N5c2ZzX2FkZF9zY2hlbWVzKHN0cnVjdCBkYW1vbl9jdHggKmN0eCxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oOjQwOlx0XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lcyAqc3lzZnNfc2NoZW1lcyk7XG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC00MS1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oOjQyOnZvaWQgZGFtb25fc3lzZnNfc2NoZW1lc191cGRhdGVfc3RhdHMoXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaDo0MzpcdFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZXMgKnN5c2ZzX3NjaGVtZXMsXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC00NC1cdFx0c3RydWN0IGRhbW9uX2N0eCAqY3R4KTtcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTQ1LVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6NDY6dm9pZCBkYW1vc19zeXNmc19wb3B1bGF0ZV9yZWdpb25fZGlyKHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVzICpzeXNmc19zY2hlbWVzLFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtNDctXHRcdHN0cnVjdCBkYW1vbl9jdHggKmN0eCwgc3RydWN0IGRhbW9uX3RhcmdldCAqdCxcbi0tXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC01MC1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oOjUxOmludCBkYW1vbl9zeXNmc19zY2hlbWVzX2NsZWFyX3JlZ2lvbnMoXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaDo1MjpcdFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZXMgKnN5c2ZzX3NjaGVtZXMpO1xubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtNTMtXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaDo1NDppbnQgZGFtb3Nfc3lzZnNfc2V0X3F1b3RhX3Njb3JlcyhzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lcyAqc3lzZnNfc2NoZW1lcyxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTU1LVx0XHRzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oPTU3PXZvaWQgZGFtb3Nfc3lzZnNfdXBkYXRlX2VmZmVjdGl2ZV9xdW90YXMoXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaDo1ODpcdFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZXMgKnN5c2ZzX3NjaGVtZXMsXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC01OS1cdFx0c3RydWN0IGRhbW9uX2N0eCAqY3R4KTtcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTYwLVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6NjE6aW50IGRhbW9uX3N5c2ZzX21lbWNnX3BhdGhfdG9faWQoY2hhciAqbWVtY2dfcGF0aCwgdTY0ICppZCk7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTE0MT1zdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vc19zeXNmc19wcm9iZXNfa3R5cGUgPSB7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE0OS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNTA6c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb24ge1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE1MS1cdHN0cnVjdCBrb2JqZWN0IGtvYmo7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE1OS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNjA6c3RhdGljIHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uICpkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uX2FsbG9jKFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE2MS1cdFx0c3RydWN0IGRhbW9uX3JlZ2lvbiAqcmVnaW9uLCBzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTYyLXtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNjM6XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbiAqc3lzZnNfcmVnaW9uID0ga21hbGxvY19vYmooKnN5c2ZzX3JlZ2lvbik7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTY0LVxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0xNzY9c3RhdGljIGludCBkYW1vc19zeXNmc19yZWdpb25fYWRkX2RpcnMoXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTc3Olx0XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbiAqcmVnaW9uLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE3OC1cdFx0c3RydWN0IGRhbW9uX2N0eCAqY3R4LFxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0yMDI9c3RhdGljIHZvaWQgZGFtb3Nfc3lzZnNfcmVnaW9uX3JtX2RpcnMoXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MjAzOlx0XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbiAqcmVnaW9uKVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTIwNC17XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTIwOT1zdGF0aWMgc3NpemVfdCBzdGFydF9zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLCBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgKmF0dHIsXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTIxMS17XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MjEyOlx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb24gKnJlZ2lvbiA9IGNvbnRhaW5lcl9vZihrb2JqLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjIxMzpcdFx0XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbiwga29iaik7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjE0LVxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0yMTg9c3RhdGljIHNzaXplX3QgZW5kX3Nob3coc3RydWN0IGtvYmplY3QgKmtvYmosIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSAqYXR0cixcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjIwLXtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyMjE6XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbiAqcmVnaW9uID0gY29udGFpbmVyX29mKGtvYmosXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MjIyOlx0XHRcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uLCBrb2JqKTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yMjMtXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTIyNz1zdGF0aWMgc3NpemVfdCBucl9hY2Nlc3Nlc19zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLFxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yMjkte1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjIzMDpcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uICpyZWdpb24gPSBjb250YWluZXJfb2Yoa29iaixcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyMzE6XHRcdFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb24sIGtvYmopO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTIzMi1cbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MjM2PXN0YXRpYyBzc2l6ZV90IGFnZV9zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLCBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgKmF0dHIsXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTIzOC17XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MjM5Olx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb24gKnJlZ2lvbiA9IGNvbnRhaW5lcl9vZihrb2JqLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjI0MDpcdFx0XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbiwga29iaik7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjQxLVxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0yNDU9c3RhdGljIHNzaXplX3Qgc3pfZmlsdGVyX3Bhc3NlZF9zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLFxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yNDcte1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjI0ODpcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uICpyZWdpb24gPSBjb250YWluZXJfb2Yoa29iaixcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyNDk6XHRcdFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb24sIGtvYmopO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTI1MC1cbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjUzLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjI1NDpzdGF0aWMgdm9pZCBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uX3JlbGVhc2Uoc3RydWN0IGtvYmplY3QgKmtvYmopXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjU1LXtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyNTY6XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbiAqcmVnaW9uID0gY29udGFpbmVyX29mKGtvYmosXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MjU3Olx0XHRcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uLCBrb2JqKTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yNTgtXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTI2MS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyNjI6c3RhdGljIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uX3N0YXJ0X2F0dHIgPVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTI2My1cdFx0X19BVFRSX1JPX01PREUoc3RhcnQsIDA0MDApO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTI2NC1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyNjU6c3RhdGljIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uX2VuZF9hdHRyID1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yNjYtXHRcdF9fQVRUUl9ST19NT0RFKGVuZCwgMDQwMCk7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjY3LVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjI2ODpzdGF0aWMgc3RydWN0IGtvYmpfYXR0cmlidXRlIGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb25fbnJfYWNjZXNzZXNfYXR0ciA9XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjY5LVx0XHRfX0FUVFJfUk9fTU9ERShucl9hY2Nlc3NlcywgMDQwMCk7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjcwLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjI3MTpzdGF0aWMgc3RydWN0IGtvYmpfYXR0cmlidXRlIGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb25fYWdlX2F0dHIgPVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTI3Mi1cdFx0X19BVFRSX1JPX01PREUoYWdlLCAwNDAwKTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yNzMtXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6Mjc0OnN0YXRpYyBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbl9zel9maWx0ZXJfcGFzc2VkX2F0dHIgPVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTI3NS1cdFx0X19BVFRSX1JPX01PREUoc3pfZmlsdGVyX3Bhc3NlZCwgMDQwMCk7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjc2LVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjI3NzpzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbl9hdHRyc1tdID0ge1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjI3ODpcdFx1MDAyNmRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb25fc3RhcnRfYXR0ci5hdHRyLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjI3OTpcdFx1MDAyNmRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb25fZW5kX2F0dHIuYXR0cixcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyODA6XHRcdTAwMjZkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uX25yX2FjY2Vzc2VzX2F0dHIuYXR0cixcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyODE6XHRcdTAwMjZkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uX2FnZV9hdHRyLmF0dHIsXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MjgyOlx0XHUwMDI2ZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbl9zel9maWx0ZXJfcGFzc2VkX2F0dHIuYXR0cixcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yODMtXHROVUxMLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTI4NC19O1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjI4NTpBVFRSSUJVVEVfR1JPVVBTKGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb24pO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTI4Ni1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyODc6c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbl9rdHlwZSA9IHtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyODg6XHQucmVsZWFzZSA9IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb25fcmVsZWFzZSxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yODktXHQuc3lzZnNfb3BzID0gXHUwMDI2a29ial9zeXNmc19vcHMsXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MjkwOlx0LmRlZmF1bHRfZ3JvdXBzID0gZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbl9ncm91cHMsXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjkxLX07XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTI5Ni1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyOTc6c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb25zIHtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yOTgtXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zMDMtXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MzA0OnN0YXRpYyBzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbnMgKlxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjMwNTpkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uc19hbGxvYyh2b2lkKVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTMwNi17XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MzA3Olx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb25zICpyZWdpb25zID0ga21hbGxvY19vYmooKnJlZ2lvbnMpO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTMwOC1cbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MzE5PXN0YXRpYyBzc2l6ZV90IHRvdGFsX2J5dGVzX3Nob3coc3RydWN0IGtvYmplY3QgKmtvYmosXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTMyMS17XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MzIyOlx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb25zICpyZWdpb25zID0gY29udGFpbmVyX29mKGtvYmosXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MzIzOlx0XHRcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9ucywga29iaik7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzI0LVxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zMjctXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MzI4OnN0YXRpYyB2b2lkIGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb25zX3JtX2RpcnMoXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MzI5Olx0XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbnMgKnJlZ2lvbnMpXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzMwLXtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzozMzE6XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbiAqciwgKm5leHQ7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzMyLVxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zNDEtXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MzQyOnN0YXRpYyB2b2lkIGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb25zX3JlbGVhc2Uoc3RydWN0IGtvYmplY3QgKmtvYmopXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzQzLXtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzozNDQ6XHRrZnJlZShjb250YWluZXJfb2Yoa29iaiwgc3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb25zLCBrb2JqKSk7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzQ1LX1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zNDYtXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MzQ3OnN0YXRpYyBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbnNfdG90YWxfYnl0ZXNfYXR0ciA9XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzQ4LVx0XHRfX0FUVFJfUk9fTU9ERSh0b3RhbF9ieXRlcywgMDQwMCk7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzQ5LVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjM1MDpzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbnNfYXR0cnNbXSA9IHtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzozNTE6XHRcdTAwMjZkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uc190b3RhbF9ieXRlc19hdHRyLmF0dHIsXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzUyLVx0TlVMTCxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zNTMtfTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzozNTQ6QVRUUklCVVRFX0dST1VQUyhkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9ucyk7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzU1LVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjM1NjpzdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uc19rdHlwZSA9IHtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzozNTc6XHQucmVsZWFzZSA9IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb25zX3JlbGVhc2UsXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzU4LVx0LnN5c2ZzX29wcyA9IFx1MDAyNmtvYmpfc3lzZnNfb3BzLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjM1OTpcdC5kZWZhdWx0X2dyb3VwcyA9IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb25zX2dyb3Vwcyxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zNjAtfTtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzY1LVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjM2NjpzdHJ1Y3QgZGFtb25fc3lzZnNfc3RhdHMge1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTM2Ny1cdHN0cnVjdCBrb2JqZWN0IGtvYmo7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTM3Ny1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzozNzg6c3RhdGljIHN0cnVjdCBkYW1vbl9zeXNmc19zdGF0cyAqZGFtb25fc3lzZnNfc3RhdHNfYWxsb2Modm9pZClcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zNzkte1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjM4MDpcdHJldHVybiBremFsbG9jX29iaihzdHJ1Y3QgZGFtb25fc3lzZnNfc3RhdHMpO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTM4MS19XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTM4Mz1zdGF0aWMgc3NpemVfdCBucl90cmllZF9zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLCBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgKmF0dHIsXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTM4NS17XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6Mzg2Olx0c3RydWN0IGRhbW9uX3N5c2ZzX3N0YXRzICpzdGF0cyA9IGNvbnRhaW5lcl9vZihrb2JqLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjM4NzpcdFx0XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc3RhdHMsIGtvYmopO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTM4OC1cbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MzkyPXN0YXRpYyBzc2l6ZV90IHN6X3RyaWVkX3Nob3coc3RydWN0IGtvYmplY3QgKmtvYmosIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSAqYXR0cixcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzk0LXtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzozOTU6XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc3RhdHMgKnN0YXRzID0gY29udGFpbmVyX29mKGtvYmosXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6Mzk2Olx0XHRcdHN0cnVjdCBkYW1vbl9zeXNmc19zdGF0cywga29iaik7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzk3LVxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz00MDE9c3RhdGljIHNzaXplX3QgbnJfYXBwbGllZF9zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLFxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy00MDMte1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjQwNDpcdHN0cnVjdCBkYW1vbl9zeXNmc19zdGF0cyAqc3RhdHMgPSBjb250YWluZXJfb2Yoa29iaixcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo0MDU6XHRcdFx0c3RydWN0IGRhbW9uX3N5c2ZzX3N0YXRzLCBrb2JqKTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy00MDYtXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTQxMD1zdGF0aWMgc3NpemVfdCBzel9hcHBsaWVkX3Nob3coc3RydWN0IGtvYmplY3QgKmtvYmosXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTQxMi17XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NDEzOlx0c3RydWN0IGRhbW9uX3N5c2ZzX3N0YXRzICpzdGF0cyA9IGNvbnRhaW5lcl9vZihrb2JqLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjQxNDpcdFx0XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc3RhdHMsIGtvYmopO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTQxNS1cbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9NDE5PXN0YXRpYyBzc2l6ZV90IHN6X29wc19maWx0ZXJfcGFzc2VkX3Nob3coc3RydWN0IGtvYmplY3QgKmtvYmosXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTQyMS17XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NDIyOlx0c3RydWN0IGRhbW9uX3N5c2ZzX3N0YXRzICpzdGF0cyA9IGNvbnRhaW5lcl9vZihrb2JqLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjQyMzpcdFx0XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc3RhdHMsIGtvYmopO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTQyNC1cbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9NDI4PXN0YXRpYyBzc2l6ZV90IHF0X2V4Y2VlZHNfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaixcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNDMwLXtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo0MzE6XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc3RhdHMgKnN0YXRzID0gY29udGFpbmVyX29mKGtvYmosXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NDMyOlx0XHRcdHN0cnVjdCBkYW1vbl9zeXNmc19zdGF0cywga29iaik7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNDMzLVxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz00Mzc9c3RhdGljIHNzaXplX3QgbnJfc25hcHNob3RzX3Nob3coc3RydWN0IGtvYmplY3QgKmtvYmosXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTQzOS17XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NDQwOlx0c3RydWN0IGRhbW9uX3N5c2ZzX3N0YXRzICpzdGF0cyA9IGNvbnRhaW5lcl9vZihrb2JqLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjQ0MTpcdFx0XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc3RhdHMsIGtvYmopO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTQ0Mi1cbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9NDQ2PXN0YXRpYyBzc2l6ZV90IG1heF9ucl9zbmFwc2hvdHNfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaixcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNDQ4LXtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo0NDk6XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc3RhdHMgKnN0YXRzID0gY29udGFpbmVyX29mKGtvYmosXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NDUwOlx0XHRcdHN0cnVjdCBkYW1vbl9zeXNmc19zdGF0cywga29iaik7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNDUxLVxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz00NTU9c3RhdGljIHNzaXplX3QgbWF4X25yX3NuYXBzaG90c19zdG9yZShzdHJ1Y3Qga29iamVjdCAqa29iaixcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNDU3LXtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo0NTg6XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc3RhdHMgKnN0YXRzID0gY29udGFpbmVyX29mKGtvYmosXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NDU5Olx0XHRcdHN0cnVjdCBkYW1vbl9zeXNmc19zdGF0cywga29iaik7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNDYwLVx0dW5zaWduZWQgbG9uZyBtYXhfbnJfc25hcHNob3RzLCBlcnIgPSBrc3RydG91bChidWYsIDAsIFx1MDAyNm1heF9ucl9zbmFwc2hvdHMpO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy00NjctXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NDY4OnN0YXRpYyB2b2lkIGRhbW9uX3N5c2ZzX3N0YXRzX3JlbGVhc2Uoc3RydWN0IGtvYmplY3QgKmtvYmopXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNDY5LXtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo0NzA6XHRrZnJlZShjb250YWluZXJfb2Yoa29iaiwgc3RydWN0IGRhbW9uX3N5c2ZzX3N0YXRzLCBrb2JqKSk7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNDcxLX1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy00NzItXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NDczOnN0YXRpYyBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgZGFtb25fc3lzZnNfc3RhdHNfbnJfdHJpZWRfYXR0ciA9XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNDc0LVx0XHRfX0FUVFJfUk9fTU9ERShucl90cmllZCwgMDQwMCk7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNDc1LVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjQ3NjpzdGF0aWMgc3RydWN0IGtvYmpfYXR0cmlidXRlIGRhbW9uX3N5c2ZzX3N0YXRzX3N6X3RyaWVkX2F0dHIgPVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTQ3Ny1cdFx0X19BVFRSX1JPX01PREUoc3pfdHJpZWQsIDA0MDApO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTQ3OC1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo0Nzk6c3RhdGljIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSBkYW1vbl9zeXNmc19zdGF0c19ucl9hcHBsaWVkX2F0dHIgPVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTQ4MC1cdFx0X19BVFRSX1JPX01PREUobnJfYXBwbGllZCwgMDQwMCk7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNDgxLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjQ4MjpzdGF0aWMgc3RydWN0IGtvYmpfYXR0cmlidXRlIGRhbW9uX3N5c2ZzX3N0YXRzX3N6X2FwcGxpZWRfYXR0ciA9XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNDgzLVx0XHRfX0FUVFJfUk9fTU9ERShzel9hcHBsaWVkLCAwNDAwKTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy00ODQtXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NDg1OnN0YXRpYyBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgZGFtb25fc3lzZnNfc3RhdHNfc3pfb3BzX2ZpbHRlcl9wYXNzZWRfYXR0ciA9XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNDg2LVx0XHRfX0FUVFJfUk9fTU9ERShzel9vcHNfZmlsdGVyX3Bhc3NlZCwgMDQwMCk7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNDg3LVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjQ4ODpzdGF0aWMgc3RydWN0IGtvYmpfYXR0cmlidXRlIGRhbW9uX3N5c2ZzX3N0YXRzX3F0X2V4Y2VlZHNfYXR0ciA9XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNDg5LVx0XHRfX0FUVFJfUk9fTU9ERShxdF9leGNlZWRzLCAwNDAwKTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy00OTAtXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NDkxOnN0YXRpYyBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgZGFtb25fc3lzZnNfc3RhdHNfbnJfc25hcHNob3RzX2F0dHIgPVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTQ5Mi1cdFx0X19BVFRSX1JPX01PREUobnJfc25hcHNob3RzLCAwNDAwKTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy00OTMtXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NDk0OnN0YXRpYyBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgZGFtb25fc3lzZnNfc3RhdHNfbWF4X25yX3NuYXBzaG90c19hdHRyID1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy00OTUtXHRcdF9fQVRUUl9SV19NT0RFKG1heF9ucl9zbmFwc2hvdHMsIDA2MDApO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTQ5Ni1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo0OTc6c3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmRhbW9uX3N5c2ZzX3N0YXRzX2F0dHJzW10gPSB7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NDk4Olx0XHUwMDI2ZGFtb25fc3lzZnNfc3RhdHNfbnJfdHJpZWRfYXR0ci5hdHRyLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjQ5OTpcdFx1MDAyNmRhbW9uX3N5c2ZzX3N0YXRzX3N6X3RyaWVkX2F0dHIuYXR0cixcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo1MDA6XHRcdTAwMjZkYW1vbl9zeXNmc19zdGF0c19ucl9hcHBsaWVkX2F0dHIuYXR0cixcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo1MDE6XHRcdTAwMjZkYW1vbl9zeXNmc19zdGF0c19zel9hcHBsaWVkX2F0dHIuYXR0cixcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo1MDI6XHRcdTAwMjZkYW1vbl9zeXNmc19zdGF0c19zel9vcHNfZmlsdGVyX3Bhc3NlZF9hdHRyLmF0dHIsXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NTAzOlx0XHUwMDI2ZGFtb25fc3lzZnNfc3RhdHNfcXRfZXhjZWVkc19hdHRyLmF0dHIsXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NTA0Olx0XHUwMDI2ZGFtb25fc3lzZnNfc3RhdHNfbnJfc25hcHNob3RzX2F0dHIuYXR0cixcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo1MDU6XHRcdTAwMjZkYW1vbl9zeXNmc19zdGF0c19tYXhfbnJfc25hcHNob3RzX2F0dHIuYXR0cixcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy01MDYtXHROVUxMLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTUwNy19O1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjUwODpBVFRSSUJVVEVfR1JPVVBTKGRhbW9uX3N5c2ZzX3N0YXRzKTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy01MDktXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NTEwOnN0YXRpYyBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9uX3N5c2ZzX3N0YXRzX2t0eXBlID0ge1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjUxMTpcdC5yZWxlYXNlID0gZGFtb25fc3lzZnNfc3RhdHNfcmVsZWFzZSxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy01MTItXHQuc3lzZnNfb3BzID0gXHUwMDI2a29ial9zeXNmc19vcHMsXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NTEzOlx0LmRlZmF1bHRfZ3JvdXBzID0gZGFtb25fc3lzZnNfc3RhdHNfZ3JvdXBzLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTUxNC19O1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz01MjM9ZW51bSBkYW1vc19zeXNmc19maWx0ZXJfaGFuZGxlX2xheWVyIHtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNTI4LVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjUyOTpzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlciB7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNTMwLVx0c3RydWN0IGtvYmplY3Qga29iajtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNTQwLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjU0MTpzdGF0aWMgc3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9maWx0ZXIgKmRhbW9uX3N5c2ZzX3NjaGVtZV9maWx0ZXJfYWxsb2MoXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNTQyLVx0XHRlbnVtIGRhbW9zX3N5c2ZzX2ZpbHRlcl9oYW5kbGVfbGF5ZXIgbGF5ZXIpXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNTQzLXtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo1NDQ6XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlciAqZmlsdGVyO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTU0NS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo1NDY6XHRmaWx0ZXIgPSBremFsbG9jX29iaihzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlcik7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNTQ3LVx0aWYgKGZpbHRlcilcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9NTkzPXN0YXRpYyBzc2l6ZV90IHR5cGVfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaixcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNTk1LXtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo1OTY6XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlciAqZmlsdGVyID0gY29udGFpbmVyX29mKGtvYmosXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NTk3Olx0XHRcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfZmlsdGVyLCBrb2JqKTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy01OTgtXHRpbnQgaTtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9NjI3PXN0YXRpYyBzc2l6ZV90IHR5cGVfc3RvcmUoc3RydWN0IGtvYmplY3QgKmtvYmosXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTYyOS17XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NjMwOlx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9maWx0ZXIgKmZpbHRlciA9IGNvbnRhaW5lcl9vZihrb2JqLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjYzMTpcdFx0XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlciwga29iaik7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNjMyLVx0c3NpemVfdCByZXQgPSAtRUlOVkFMO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz02NTI9c3RhdGljIHNzaXplX3QgbWF0Y2hpbmdfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaixcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNjU0LXtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo2NTU6XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlciAqZmlsdGVyID0gY29udGFpbmVyX29mKGtvYmosXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NjU2Olx0XHRcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfZmlsdGVyLCBrb2JqKTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy02NTctXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTY2MT1zdGF0aWMgc3NpemVfdCBtYXRjaGluZ19zdG9yZShzdHJ1Y3Qga29iamVjdCAqa29iaixcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNjYzLXtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo2NjQ6XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlciAqZmlsdGVyID0gY29udGFpbmVyX29mKGtvYmosXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NjY1Olx0XHRcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfZmlsdGVyLCBrb2JqKTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy02NjYtXHRib29sIG1hdGNoaW5nO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz02NzY9c3RhdGljIHNzaXplX3QgYWxsb3dfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaixcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNjc4LXtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo2Nzk6XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlciAqZmlsdGVyID0gY29udGFpbmVyX29mKGtvYmosXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NjgwOlx0XHRcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfZmlsdGVyLCBrb2JqKTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy02ODEtXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTY4NT1zdGF0aWMgc3NpemVfdCBhbGxvd19zdG9yZShzdHJ1Y3Qga29iamVjdCAqa29iaixcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNjg3LXtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo2ODg6XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlciAqZmlsdGVyID0gY29udGFpbmVyX29mKGtvYmosXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6Njg5Olx0XHRcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfZmlsdGVyLCBrb2JqKTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy02OTAtXHRib29sIGFsbG93O1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz03MDA9c3RhdGljIHNzaXplX3QgbWVtY2dfcGF0aF9zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLFxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy03MDIte1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjcwMzpcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfZmlsdGVyICpmaWx0ZXIgPSBjb250YWluZXJfb2Yoa29iaixcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo3MDQ6XHRcdFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9maWx0ZXIsIGtvYmopO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTcwNS1cdGludCBsZW47XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNzA2LVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjcwNzpcdGlmICghbXV0ZXhfdHJ5bG9jayhcdTAwMjZkYW1vbl9zeXNmc19sb2NrKSlcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy03MDgtXHRcdHJldHVybiAtRUJVU1k7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTcxMC1cdFx0XHRmaWx0ZXItXHUwMDNlbWVtY2dfcGF0aCA/IGZpbHRlci1cdTAwM2VtZW1jZ19wYXRoIDogXCYjMzQ7XCYjMzQ7KTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo3MTE6XHRtdXRleF91bmxvY2soXHUwMDI2ZGFtb25fc3lzZnNfbG9jayk7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNzEyLVx0cmV0dXJuIGxlbjtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9NzE1PXN0YXRpYyBzc2l6ZV90IG1lbWNnX3BhdGhfc3RvcmUoc3RydWN0IGtvYmplY3QgKmtvYmosXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTcxNy17XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NzE4Olx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9maWx0ZXIgKmZpbHRlciA9IGNvbnRhaW5lcl9vZihrb2JqLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjcxOTpcdFx0XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlciwga29iaik7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNzIwLVx0Y2hhciAqcGF0aCA9IGttYWxsb2NfYXJyYXkoc2l6ZV9hZGQoY291bnQsIDEpLCBzaXplb2YoKnBhdGgpLFxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy03MjYtXHRzdHJzY3B5KHBhdGgsIGJ1ZiwgY291bnQgJiM0MzsgMSk7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NzI3Olx0aWYgKCFtdXRleF90cnlsb2NrKFx1MDAyNmRhbW9uX3N5c2ZzX2xvY2spKSB7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNzI4LVx0XHRrZnJlZShwYXRoKTtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNzMyLVx0ZmlsdGVyLVx1MDAzZW1lbWNnX3BhdGggPSBwYXRoO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjczMzpcdG11dGV4X3VubG9jayhcdTAwMjZkYW1vbl9zeXNmc19sb2NrKTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy03MzQtXHRyZXR1cm4gY291bnQ7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTczNz1zdGF0aWMgc3NpemVfdCBhZGRyX3N0YXJ0X3Nob3coc3RydWN0IGtvYmplY3QgKmtvYmosXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTczOS17XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NzQwOlx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9maWx0ZXIgKmZpbHRlciA9IGNvbnRhaW5lcl9vZihrb2JqLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjc0MTpcdFx0XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlciwga29iaik7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNzQyLVxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz03NDY9c3RhdGljIHNzaXplX3QgYWRkcl9zdGFydF9zdG9yZShzdHJ1Y3Qga29iamVjdCAqa29iaixcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNzQ4LXtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo3NDk6XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlciAqZmlsdGVyID0gY29udGFpbmVyX29mKGtvYmosXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NzUwOlx0XHRcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfZmlsdGVyLCBrb2JqKTtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy03NTEtXHRpbnQgZXJyID0ga3N0cnRvdWwoYnVmLCAwLCBcdTAwMjZmaWx0ZXItXHUwMDNlYWRkcl9yYW5nZS5zdGFydCk7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTc1Nj1zdGF0aWMgc3NpemVfdCBhZGRyX2VuZF9zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLFxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy03NTgte1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjc1OTpcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfZmlsdGVyICpmaWx0ZXIgPSBjb250YWluZXJfb2Yoa29iaixcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo3NjA6XHRcdFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9maWx0ZXIsIGtvYmopO1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTc2MS1cbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9NzY1PXN0YXRpYyBzc2l6ZV90IGFkZHJfZW5kX3N0b3JlKHN0cnVjdCBrb2JqZWN0ICprb2JqLFxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy03Njcte1xuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDAwOjMzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyMzkyCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMTIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBEQU1PUyBTY2hlbWUgRXhlY3V0aW9uKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEl0IGxvb2tzIGxpa2Ugd2UmIzM5O3JlIGRpdmluZyBpbnRvIHRoZSBpbm5lciB3b3JraW5ncyBvZiBEQU1PUyAoRGF0YSBBY2Nlc3MgTW9uaXRvcmluZyBhbmQgT3BlcmF0aW9ucykgc2NoZW1lcywgd2hpY2ggYXJlIGNydWNpYWwgZm9yIHRoaW5ncyBsaWtlIHF1b3RhIGVuZm9yY2VtZW50LCBtZW1vcnkgcmVjbGFtYXRpb24sIExSVSBzb3J0aW5nLCBhbmQgc3RhdGlzdGljYWwgdHJhY2tpbmcuIFRoZSBjb21taXQgc3BlY2lmaWNhbGx5IHRvdWNoZXMgYG1tL2RhbW9uL2NvcmUuY2AsIGZvY3VzaW5nIG9uIHRoZSBmdW5jdGlvbnMgYGRhbW9zX3F1b3RhX2lzX2Z1bGxgIGFuZCBgZGFtb25fZG9fYXBwbHlfc2NoZW1lc2AuCgpNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB0cmFjZSB0aGUgZXhlY3V0aW9uIGZsb3cuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgb3RoZXIgZnVuY3Rpb25zIGluIGBtbS9kYW1vbi9jb3JlLmNgIGFyZSBpbnZva2VkIGR1cmluZyB0aGUgZXhlY3V0aW9uIG9mIGEgREFNT1Mgc2NoZW1lIG9yIHdoZW4gYSBjb250ZXh0IGlzIGJlaW5nIHByb2Nlc3NlZCB3aXRoaW4gdGhpcyBtb2R1bGUuIFRoZSBnb2FsIGlzIGEgY2xlYXIgcGljdHVyZSBvZiBob3cgdGhlc2Ugc2NoZW1lcyBhcmUgdHJpZ2dlcmVkIGFuZCB3aGF0IHRoZWlyIGRlcGVuZGVuY2llcyBhcmUuCgpUbyBzdGFydCwgSSYjMzk7bGwgaWRlbnRpZnkgdGhlIG5vbi1zdGF0aWMgZW50cnkgcG9pbnRzIHdpdGhpbiBgbW0vZGFtb24vY29yZS5jYC4gS25vd2luZyB0aGUgZXh0ZXJuYWxseSBhY2Nlc3NpYmxlIGZ1bmN0aW9ucyB3aWxsIGdpdmUgbWUgdGhlIGJlc3Qgb3ZlcnZpZXcgb2YgaG93IHRoZSBEQU1PUyBjb3JlIGlzIGludGVyYWN0ZWQgd2l0aCBieSBvdGhlciBtb2R1bGVzIG9yIHRoZSBrZXJuZWwgYXMgYSB3aG9sZS4gVGhpcyBpcyB0aGUgZmlyc3Qgc3RlcCB0b3dhcmRzIHVuZGVyc3RhbmRpbmcgdGhlIGZ1bGwgZXhlY3V0aW9uIHBhdGguCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDAwOjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O15bYS16QS1aX10uKlxcKCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL2RhbW9uL2NvcmUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgODA2IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5tbS9kYW1vbi9jb3JlLmMtMjUtXG5tbS9kYW1vbi9jb3JlLmM6MjY6c3RhdGljIERFRklORV9NVVRFWChkYW1vbl9sb2NrKTtcbm1tL2RhbW9uL2NvcmUuYy0yNy1zdGF0aWMgaW50IG5yX3J1bm5pbmdfY3R4cztcbm1tL2RhbW9uL2NvcmUuYz0yOD1zdGF0aWMgYm9vbCBydW5uaW5nX2V4Y2x1c2l2ZV9jdHhzO1xubW0vZGFtb24vY29yZS5jLTI5LVxubW0vZGFtb24vY29yZS5jOjMwOnN0YXRpYyBERUZJTkVfTVVURVgoZGFtb25fb3BzX2xvY2spO1xubW0vZGFtb24vY29yZS5jLTMxLXN0YXRpYyBzdHJ1Y3QgZGFtb25fb3BlcmF0aW9ucyBkYW1vbl9yZWdpc3RlcmVkX29wc1tOUl9EQU1PTl9PUFNdO1xuLS1cbm1tL2RhbW9uL2NvcmUuYz0zMz1zdGF0aWMgc3RydWN0IGttZW1fY2FjaGUgKmRhbW9uX3JlZ2lvbl9jYWNoZSBfX3JvX2FmdGVyX2luaXQ7XG4tLVxubW0vZGFtb24vY29yZS5jLTM1LS8qIFNob3VsZCBiZSBjYWxsZWQgdW5kZXIgZGFtb25fb3BzX2xvY2sgd2l0aCBpZCBzbWFsbGVyIHRoYW4gTlJfREFNT05fT1BTICovXG5tbS9kYW1vbi9jb3JlLmM6MzY6c3RhdGljIGJvb2wgX19kYW1vbl9pc19yZWdpc3RlcmVkX29wcyhlbnVtIGRhbW9uX29wc19pZCBpZClcbm1tL2RhbW9uL2NvcmUuYy0zNy17XG4tLVxubW0vZGFtb24vY29yZS5jLTUwLSAqL1xubW0vZGFtb24vY29yZS5jOjUxOmJvb2wgZGFtb25faXNfcmVnaXN0ZXJlZF9vcHMoZW51bSBkYW1vbl9vcHNfaWQgaWQpXG5tbS9kYW1vbi9jb3JlLmMtNTIte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy03MS0gKi9cbm1tL2RhbW9uL2NvcmUuYzo3MjppbnQgZGFtb25fcmVnaXN0ZXJfb3BzKHN0cnVjdCBkYW1vbl9vcGVyYXRpb25zICpvcHMpXG5tbS9kYW1vbi9jb3JlLmMtNzMte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy05OC0gKi9cbm1tL2RhbW9uL2NvcmUuYzo5OTppbnQgZGFtb25fc2VsZWN0X29wcyhzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsIGVudW0gZGFtb25fb3BzX2lkIGlkKVxubW0vZGFtb24vY29yZS5jLTEwMC17XG4tLVxubW0vZGFtb24vY29yZS5jLTExNC1cbm1tL2RhbW9uL2NvcmUuYzoxMTU6c3RydWN0IGRhbW9uX3ByZXAgKmRhbW9uX25ld19wcmVwKGVudW0gZGFtb25fcHJlcF9hY3Rpb24gYWN0aW9uKVxubW0vZGFtb24vY29yZS5jLTExNi17XG4tLVxubW0vZGFtb24vY29yZS5jLTEyNi1cbm1tL2RhbW9uL2NvcmUuYzoxMjc6dm9pZCBkYW1vbl9hZGRfcHJlcChzdHJ1Y3QgZGFtb25fcHJvYmUgKnAsIHN0cnVjdCBkYW1vbl9wcmVwICpwcmVwKVxubW0vZGFtb24vY29yZS5jLTEyOC17XG4tLVxubW0vZGFtb24vY29yZS5jLTEzMS1cbm1tL2RhbW9uL2NvcmUuYzoxMzI6c3RhdGljIHZvaWQgZGFtb25fZGVsX3ByZXAoc3RydWN0IGRhbW9uX3ByZXAgKnApXG5tbS9kYW1vbi9jb3JlLmMtMTMzLXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTM2LVxubW0vZGFtb24vY29yZS5jOjEzNzpzdGF0aWMgdm9pZCBkYW1vbl9mcmVlX3ByZXAoc3RydWN0IGRhbW9uX3ByZXAgKnApXG5tbS9kYW1vbi9jb3JlLmMtMTM4LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTQxLVxubW0vZGFtb24vY29yZS5jOjE0MjpzdGF0aWMgdm9pZCBkYW1vbl9kZXN0cm95X3ByZXAoc3RydWN0IGRhbW9uX3ByZXAgKnApXG5tbS9kYW1vbi9jb3JlLmMtMTQzLXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTQ3LVxubW0vZGFtb24vY29yZS5jOjE0ODpzdGF0aWMgc3RydWN0IGRhbW9uX3ByZXAgKmRhbW9uX250aF9wcmVwKGludCBuLCBzdHJ1Y3QgZGFtb25fcHJvYmUgKnApXG5tbS9kYW1vbi9jb3JlLmMtMTQ5LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTU5LVxubW0vZGFtb24vY29yZS5jOjE2MDpzdGF0aWMgYm9vbCBkYW1vbl9oYXNfcHJlcChzdHJ1Y3QgZGFtb25fY3R4ICpjKVxubW0vZGFtb24vY29yZS5jLTE2MS17XG4tLVxubW0vZGFtb24vY29yZS5jLTE3MS1cbm1tL2RhbW9uL2NvcmUuYzoxNzI6c3RydWN0IGRhbW9uX2ZpbHRlciAqZGFtb25fbmV3X2ZpbHRlcihlbnVtIGRhbW9uX2ZpbHRlcl90eXBlIHR5cGUsXG5tbS9kYW1vbi9jb3JlLmMtMTczLVx0XHRib29sIG1hdGNoaW5nLCBib29sIGFsbG93KVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xODYtXG5tbS9kYW1vbi9jb3JlLmM6MTg3OnZvaWQgZGFtb25fYWRkX2ZpbHRlcihzdHJ1Y3QgZGFtb25fcHJvYmUgKnAsIHN0cnVjdCBkYW1vbl9maWx0ZXIgKmYpXG5tbS9kYW1vbi9jb3JlLmMtMTg4LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTkxLVxubW0vZGFtb24vY29yZS5jOjE5MjpzdGF0aWMgdm9pZCBkYW1vbl9kZWxfZmlsdGVyKHN0cnVjdCBkYW1vbl9maWx0ZXIgKmYpXG5tbS9kYW1vbi9jb3JlLmMtMTkzLXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTk2LVxubW0vZGFtb24vY29yZS5jOjE5NzpzdGF0aWMgdm9pZCBkYW1vbl9mcmVlX2ZpbHRlcihzdHJ1Y3QgZGFtb25fZmlsdGVyICpmKVxubW0vZGFtb24vY29yZS5jLTE5OC17XG4tLVxubW0vZGFtb24vY29yZS5jLTIwMS1cbm1tL2RhbW9uL2NvcmUuYzoyMDI6dm9pZCBkYW1vbl9kZXN0cm95X2ZpbHRlcihzdHJ1Y3QgZGFtb25fZmlsdGVyICpmKVxubW0vZGFtb24vY29yZS5jLTIwMy17XG4tLVxubW0vZGFtb24vY29yZS5jLTIwNy1cbm1tL2RhbW9uL2NvcmUuYzoyMDg6c3RhdGljIHN0cnVjdCBkYW1vbl9maWx0ZXIgKmRhbW9uX250aF9maWx0ZXIoaW50IG4sIHN0cnVjdCBkYW1vbl9wcm9iZSAqcClcbm1tL2RhbW9uL2NvcmUuYy0yMDkte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0yMTktXG5tbS9kYW1vbi9jb3JlLmM6MjIwOnN0cnVjdCBkYW1vbl9wcm9iZSAqZGFtb25fbmV3X3Byb2JlKHZvaWQpXG5tbS9kYW1vbi9jb3JlLmMtMjIxLXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMjMzLVxubW0vZGFtb24vY29yZS5jOjIzNDp2b2lkIGRhbW9uX2FkZF9wcm9iZShzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsIHN0cnVjdCBkYW1vbl9wcm9iZSAqcHJvYmUpXG5tbS9kYW1vbi9jb3JlLmMtMjM1LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMjM4LVxubW0vZGFtb24vY29yZS5jOjIzOTpzdGF0aWMgdm9pZCBkYW1vbl9kZWxfcHJvYmUoc3RydWN0IGRhbW9uX3Byb2JlICpwKVxubW0vZGFtb24vY29yZS5jLTI0MC17XG4tLVxubW0vZGFtb24vY29yZS5jLTI0My1cbm1tL2RhbW9uL2NvcmUuYzoyNDQ6c3RhdGljIHZvaWQgZGFtb25fZnJlZV9wcm9iZShzdHJ1Y3QgZGFtb25fcHJvYmUgKnApXG5tbS9kYW1vbi9jb3JlLmMtMjQ1LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMjU1LVxubW0vZGFtb24vY29yZS5jOjI1NjpzdGF0aWMgdm9pZCBkYW1vbl9kZXN0cm95X3Byb2JlKHN0cnVjdCBkYW1vbl9wcm9iZSAqcClcbm1tL2RhbW9uL2NvcmUuYy0yNTcte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0yNjEtXG5tbS9kYW1vbi9jb3JlLmM6MjYyOnN0YXRpYyBzdHJ1Y3QgZGFtb25fcHJvYmUgKmRhbW9uX250aF9wcm9iZShpbnQgbiwgc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxubW0vZGFtb24vY29yZS5jLTI2My17XG4tLVxubW0vZGFtb24vY29yZS5jLTI3My1cbm1tL2RhbW9uL2NvcmUuYzoyNzQ6c3RhdGljIGJvb2wgZGFtb25faGFzX3Byb2JlX3dlaWdodHMoc3RydWN0IGRhbW9uX2N0eCAqYylcbm1tL2RhbW9uL2NvcmUuYy0yNzUte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0zMDUtICovXG5tbS9kYW1vbi9jb3JlLmM6MzA2OnN0YXRpYyB1bnNpZ25lZCBsb25nIGRhbW9uX212c3VtKHVuc2lnbmVkIGxvbmcgY3VycmVudF9ucixcbm1tL2RhbW9uL2NvcmUuYy0zMDctXHRcdHVuc2lnbmVkIGxvbmcgbGFzdF9uciwgdW5zaWduZWQgbG9uZyBsZWZ0X3dpbmRvd19icClcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMzI1LSAqL1xubW0vZGFtb24vY29yZS5jOjMyNjp1bnNpZ25lZCBpbnQgZGFtb25fbnJfYWNjZXNzZXNfbXZzdW0oc3RydWN0IGRhbW9uX3JlZ2lvbiAqcixcbm1tL2RhbW9uL2NvcmUuYy0zMjctXHRcdHN0cnVjdCBkYW1vbl9jdHggKmN0eClcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMzQ5LVxubW0vZGFtb24vY29yZS5jOjM1MDp1bnNpZ25lZCBjaGFyIGRhbW9uX3Byb2JlX2hpdHNfbXZzdW0oaW50IHByb2JlX2lkeCwgc3RydWN0IGRhbW9uX3JlZ2lvbiAqcixcbm1tL2RhbW9uL2NvcmUuYy0zNTEtXHRcdHN0cnVjdCBkYW1vbl9jdHggKmN0eClcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMzc0LSNpZmRlZiBDT05GSUdfREFNT05fREVCVUdfU0FOSVRZXG5tbS9kYW1vbi9jb3JlLmM6Mzc1OnN0YXRpYyB2b2lkIGRhbW9uX3ZlcmlmeV9uZXdfcmVnaW9uKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kKVxubW0vZGFtb24vY29yZS5jLTM3Ni17XG4tLVxubW0vZGFtb24vY29yZS5jLTM3OS0jZWxzZVxubW0vZGFtb24vY29yZS5jOjM4MDpzdGF0aWMgdm9pZCBkYW1vbl92ZXJpZnlfbmV3X3JlZ2lvbih1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZClcbm1tL2RhbW9uL2NvcmUuYy0zODEte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0zODktICovXG5tbS9kYW1vbi9jb3JlLmM6MzkwOnN0cnVjdCBkYW1vbl9yZWdpb24gKmRhbW9uX25ld19yZWdpb24odW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQpXG5tbS9kYW1vbi9jb3JlLmMtMzkxLXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtNDE0LVxubW0vZGFtb24vY29yZS5jOjQxNTpzdGF0aWMgdm9pZCBkYW1vbl9hZGRfcmVnaW9uKHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsIHN0cnVjdCBkYW1vbl90YXJnZXQgKnQpXG5tbS9kYW1vbi9jb3JlLmMtNDE2LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtNDIzLSAqL1xubW0vZGFtb24vY29yZS5jOjQyNDpzdGF0aWMgaW5saW5lIHZvaWQgZGFtb25faW5zZXJ0X3JlZ2lvbihzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLFxubW0vZGFtb24vY29yZS5jLTQyNS1cdFx0c3RydWN0IGRhbW9uX3JlZ2lvbiAqcHJldiwgc3RydWN0IGRhbW9uX3JlZ2lvbiAqbmV4dCxcbi0tXG5tbS9kYW1vbi9jb3JlLmMtNDMyLSNpZmRlZiBDT05GSUdfREFNT05fREVCVUdfU0FOSVRZXG5tbS9kYW1vbi9jb3JlLmM6NDMzOnN0YXRpYyB2b2lkIGRhbW9uX3ZlcmlmeV9kZWxfcmVnaW9uKHN0cnVjdCBkYW1vbl90YXJnZXQgKnQpXG5tbS9kYW1vbi9jb3JlLmMtNDM0LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtNDM3LSNlbHNlXG5tbS9kYW1vbi9jb3JlLmM6NDM4OnN0YXRpYyB2b2lkIGRhbW9uX3ZlcmlmeV9kZWxfcmVnaW9uKHN0cnVjdCBkYW1vbl90YXJnZXQgKnQpXG5tbS9kYW1vbi9jb3JlLmMtNDM5LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtNDQyLVxubW0vZGFtb24vY29yZS5jOjQ0MzpzdGF0aWMgdm9pZCBkYW1vbl9kZWxfcmVnaW9uKHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsIHN0cnVjdCBkYW1vbl90YXJnZXQgKnQpXG5tbS9kYW1vbi9jb3JlLmMtNDQ0LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtNDUwLVxubW0vZGFtb24vY29yZS5jOjQ1MTpzdGF0aWMgdm9pZCBkYW1vbl9mcmVlX3JlZ2lvbihzdHJ1Y3QgZGFtb25fcmVnaW9uICpyKVxubW0vZGFtb24vY29yZS5jLTQ1Mi17XG4tLVxubW0vZGFtb24vY29yZS5jLTQ1NS1cbm1tL2RhbW9uL2NvcmUuYzo0NTY6c3RhdGljIHZvaWQgZGFtb25fZGVzdHJveV9yZWdpb24oc3RydWN0IGRhbW9uX3JlZ2lvbiAqcixcbm1tL2RhbW9uL2NvcmUuYy00NTctXHRcdHN0cnVjdCBkYW1vbl90YXJnZXQgKnQpXG4tLVxubW0vZGFtb24vY29yZS5jLTQ2Mi1cbm1tL2RhbW9uL2NvcmUuYzo0NjM6c3RhdGljIGJvb2wgZGFtb25faXNfbGFzdF9yZWdpb24oc3RydWN0IGRhbW9uX3JlZ2lvbiAqcixcbm1tL2RhbW9uL2NvcmUuYy00NjQtXHRcdHN0cnVjdCBkYW1vbl90YXJnZXQgKnQpXG4tLVxubW0vZGFtb24vY29yZS5jLTQ3Ni0gKi9cbm1tL2RhbW9uL2NvcmUuYzo0Nzc6dW5zaWduZWQgaW50IGRhbW9uX3Byb2JlX2hpdHNfd3N1bShzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLCBib29sIGxhc3QsXG5tbS9kYW1vbi9jb3JlLmMtNDc4LVx0XHRzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXG4tLVxubW0vZGFtb24vY29yZS5jLTQ5Ny0gKi9cbm1tL2RhbW9uL2NvcmUuYzo0OTg6c3RhdGljIGJvb2wgZGFtb25faW50ZXJzZWN0KHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsXG5tbS9kYW1vbi9jb3JlLmMtNDk5LVx0XHRzdHJ1Y3QgZGFtb25fYWRkcl9yYW5nZSAqcmUpXG4tLVxubW0vZGFtb24vY29yZS5jLTUwNi0gKi9cbm1tL2RhbW9uL2NvcmUuYzo1MDc6c3RhdGljIGludCBkYW1vbl9maWxsX3JlZ2lvbnNfaG9sZXMoc3RydWN0IGRhbW9uX3JlZ2lvbiAqZmlyc3QsXG5tbS9kYW1vbi9jb3JlLmMtNTA4LVx0XHRzdHJ1Y3QgZGFtb25fcmVnaW9uICpsYXN0LCBzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0KVxuLS1cbm1tL2RhbW9uL2NvcmUuYy01MzktICovXG5tbS9kYW1vbi9jb3JlLmM6NTQwOmludCBkYW1vbl9zZXRfcmVnaW9ucyhzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0LCBzdHJ1Y3QgZGFtb25fYWRkcl9yYW5nZSAqcmFuZ2VzLFxubW0vZGFtb24vY29yZS5jLTU0MS1cdFx0dW5zaWduZWQgaW50IG5yX3JhbmdlcywgdW5zaWduZWQgbG9uZyBtaW5fcmVnaW9uX3N6KVxuLS1cbm1tL2RhbW9uL2NvcmUuYy02MzAtXG5tbS9kYW1vbi9jb3JlLmM6NjMxOnN0cnVjdCBkYW1vc19maWx0ZXIgKmRhbW9zX25ld19maWx0ZXIoZW51bSBkYW1vc19maWx0ZXJfdHlwZSB0eXBlLFxubW0vZGFtb24vY29yZS5jLTYzMi1cdFx0Ym9vbCBtYXRjaGluZywgYm9vbCBhbGxvdylcbi0tXG5tbS9kYW1vbi9jb3JlLmMtNjUyLSAqL1xubW0vZGFtb24vY29yZS5jOjY1Mzpib29sIGRhbW9zX2ZpbHRlcl9mb3Jfb3BzKGVudW0gZGFtb3NfZmlsdGVyX3R5cGUgdHlwZSlcbm1tL2RhbW9uL2NvcmUuYy02NTQte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy02NjQtXG5tbS9kYW1vbi9jb3JlLmM6NjY1OnZvaWQgZGFtb3NfYWRkX2ZpbHRlcihzdHJ1Y3QgZGFtb3MgKnMsIHN0cnVjdCBkYW1vc19maWx0ZXIgKmYpXG5tbS9kYW1vbi9jb3JlLmMtNjY2LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtNjcyLVxubW0vZGFtb24vY29yZS5jOjY3MzpzdGF0aWMgdm9pZCBkYW1vc19kZWxfZmlsdGVyKHN0cnVjdCBkYW1vc19maWx0ZXIgKmYpXG5tbS9kYW1vbi9jb3JlLmMtNjc0LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtNjc3LVxubW0vZGFtb24vY29yZS5jOjY3ODpzdGF0aWMgdm9pZCBkYW1vc19mcmVlX2ZpbHRlcihzdHJ1Y3QgZGFtb3NfZmlsdGVyICpmKVxubW0vZGFtb24vY29yZS5jLTY3OS17XG4tLVxubW0vZGFtb24vY29yZS5jLTY4Mi1cbm1tL2RhbW9uL2NvcmUuYzo2ODM6dm9pZCBkYW1vc19kZXN0cm95X2ZpbHRlcihzdHJ1Y3QgZGFtb3NfZmlsdGVyICpmKVxubW0vZGFtb24vY29yZS5jLTY4NC17XG4tLVxubW0vZGFtb24vY29yZS5jLTY4OC1cbm1tL2RhbW9uL2NvcmUuYzo2ODk6c3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKmRhbW9zX25ld19xdW90YV9nb2FsKFxubW0vZGFtb24vY29yZS5jLTY5MC1cdFx0ZW51bSBkYW1vc19xdW90YV9nb2FsX21ldHJpYyBtZXRyaWMsXG4tLVxubW0vZGFtb24vY29yZS5jLTcwNS1cbm1tL2RhbW9uL2NvcmUuYzo3MDY6dm9pZCBkYW1vc19hZGRfcXVvdGFfZ29hbChzdHJ1Y3QgZGFtb3NfcXVvdGEgKnEsIHN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpnKVxubW0vZGFtb24vY29yZS5jLTcwNy17XG4tLVxubW0vZGFtb24vY29yZS5jLTcxMC1cbm1tL2RhbW9uL2NvcmUuYzo3MTE6c3RhdGljIHZvaWQgZGFtb3NfZGVsX3F1b3RhX2dvYWwoc3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKmcpXG5tbS9kYW1vbi9jb3JlLmMtNzEyLXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtNzE1LVxubW0vZGFtb24vY29yZS5jOjcxNjpzdGF0aWMgdm9pZCBkYW1vc19mcmVlX3F1b3RhX2dvYWwoc3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKmcpXG5tbS9kYW1vbi9jb3JlLmMtNzE3LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtNzIwLVxubW0vZGFtb24vY29yZS5jOjcyMTp2b2lkIGRhbW9zX2Rlc3Ryb3lfcXVvdGFfZ29hbChzdHJ1Y3QgZGFtb3NfcXVvdGFfZ29hbCAqZylcbm1tL2RhbW9uL2NvcmUuYy03MjIte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy03MjYtXG5tbS9kYW1vbi9jb3JlLmM6NzI3OnN0YXRpYyBib29sIGRhbW9zX3F1b3RhX2dvYWxzX2VtcHR5KHN0cnVjdCBkYW1vc19xdW90YSAqcSlcbm1tL2RhbW9uL2NvcmUuYy03Mjgte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy03MzItLyogaW5pdGlhbGl6ZSBmaWVsZHMgb2YgQHF1b3RhIHRoYXQgbm9ybWFsbHkgQVBJIHVzZXJzIHdvdWxkbiYjMzk7dCBzZXQgKi9cbm1tL2RhbW9uL2NvcmUuYzo3MzM6c3RhdGljIHN0cnVjdCBkYW1vc19xdW90YSAqZGFtb3NfcXVvdGFfaW5pdChzdHJ1Y3QgZGFtb3NfcXVvdGEgKnF1b3RhKVxubW0vZGFtb24vY29yZS5jLTczNC17XG4tLVxubW0vZGFtb24vY29yZS5jLTc0NS1cbm1tL2RhbW9uL2NvcmUuYzo3NDY6c3RydWN0IGRhbW9zICpkYW1vbl9uZXdfc2NoZW1lKHN0cnVjdCBkYW1vc19hY2Nlc3NfcGF0dGVybiAqcGF0dGVybixcbm1tL2RhbW9uL2NvcmUuYy03NDctXHRcdFx0ZW51bSBkYW1vc19hY3Rpb24gYWN0aW9uLFxuLS1cbm1tL2RhbW9uL2NvcmUuYy03ODctXG5tbS9kYW1vbi9jb3JlLmM6Nzg4OnN0YXRpYyB2b2lkIGRhbW9zX3NldF9uZXh0X2FwcGx5X3NpcyhzdHJ1Y3QgZGFtb3MgKnMsIHN0cnVjdCBkYW1vbl9jdHggKmN0eClcbm1tL2RhbW9uL2NvcmUuYy03ODkte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy03OTgtXG5tbS9kYW1vbi9jb3JlLmM6Nzk5OnZvaWQgZGFtb25fYWRkX3NjaGVtZShzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsIHN0cnVjdCBkYW1vcyAqcylcbm1tL2RhbW9uL2NvcmUuYy04MDAte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy04MDQtXG5tbS9kYW1vbi9jb3JlLmM6ODA1OnN0YXRpYyB2b2lkIGRhbW9uX2RlbF9zY2hlbWUoc3RydWN0IGRhbW9zICpzKVxubW0vZGFtb24vY29yZS5jLTgwNi17XG4tLVxubW0vZGFtb24vY29yZS5jLTgwOS1cbm1tL2RhbW9uL2NvcmUuYzo4MTA6c3RhdGljIHZvaWQgZGFtb25fZnJlZV9zY2hlbWUoc3RydWN0IGRhbW9zICpzKVxubW0vZGFtb24vY29yZS5jLTgxMS17XG4tLVxubW0vZGFtb24vY29yZS5jLTgxNC1cbm1tL2RhbW9uL2NvcmUuYzo4MTU6dm9pZCBkYW1vbl9kZXN0cm95X3NjaGVtZShzdHJ1Y3QgZGFtb3MgKnMpXG5tbS9kYW1vbi9jb3JlLmMtODE2LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtODM5LSAqL1xubW0vZGFtb24vY29yZS5jOjg0MDpzdHJ1Y3QgZGFtb25fdGFyZ2V0ICpkYW1vbl9uZXdfdGFyZ2V0KHZvaWQpXG5tbS9kYW1vbi9jb3JlLmMtODQxLXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtODU2LVxubW0vZGFtb24vY29yZS5jOjg1Nzp2b2lkIGRhbW9uX2FkZF90YXJnZXQoc3RydWN0IGRhbW9uX2N0eCAqY3R4LCBzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0KVxubW0vZGFtb24vY29yZS5jLTg1OC17XG4tLVxubW0vZGFtb24vY29yZS5jLTg2NC0gKi9cbm1tL2RhbW9uL2NvcmUuYzo4NjU6aW50IGRhbW9uX3NldF90YXJnZXRfcGlkKHN0cnVjdCBkYW1vbl90YXJnZXQgKnQsIGludCBwaWQpXG5tbS9kYW1vbi9jb3JlLmMtODY2LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtODcyLVxubW0vZGFtb24vY29yZS5jOjg3MzpzdGF0aWMgdm9pZCBkYW1vbl9kZWxfdGFyZ2V0KHN0cnVjdCBkYW1vbl90YXJnZXQgKnQpXG5tbS9kYW1vbi9jb3JlLmMtODc0LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtODc3LVxubW0vZGFtb24vY29yZS5jOjg3ODp2b2lkIGRhbW9uX2ZyZWVfdGFyZ2V0KHN0cnVjdCBkYW1vbl90YXJnZXQgKnQpXG5tbS9kYW1vbi9jb3JlLmMtODc5LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtODg2LVxubW0vZGFtb24vY29yZS5jOjg4Nzp2b2lkIGRhbW9uX2Rlc3Ryb3lfdGFyZ2V0KHN0cnVjdCBkYW1vbl90YXJnZXQgKnQsIHN0cnVjdCBkYW1vbl9jdHggKmN0eClcbm1tL2RhbW9uL2NvcmUuYy04ODgte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy04OTYtXG5tbS9kYW1vbi9jb3JlLmM6ODk3OnVuc2lnbmVkIGludCBkYW1vbl9ucl9yZWdpb25zKHN0cnVjdCBkYW1vbl90YXJnZXQgKnQpXG5tbS9kYW1vbi9jb3JlLmMtODk4LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtOTAxLVxubW0vZGFtb24vY29yZS5jOjkwMjpzdHJ1Y3QgZGFtb25fY3R4ICpkYW1vbl9uZXdfY3R4KHZvaWQpXG5tbS9kYW1vbi9jb3JlLmMtOTAzLXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtOTQxLVxubW0vZGFtb24vY29yZS5jOjk0MjpzdGF0aWMgdm9pZCBkYW1vbl9kZXN0cm95X3RhcmdldHMoc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxubW0vZGFtb24vY29yZS5jLTk0My17XG4tLVxubW0vZGFtb24vY29yZS5jLTk0OS1cbm1tL2RhbW9uL2NvcmUuYzo5NTA6dm9pZCBkYW1vbl9kZXN0cm95X2N0eChzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXG5tbS9kYW1vbi9jb3JlLmMtOTUxLXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtOTY1LVxubW0vZGFtb24vY29yZS5jOjk2NjpzdGF0aWMgYm9vbCBkYW1vbl9hdHRyc19lcXVhbHMoY29uc3Qgc3RydWN0IGRhbW9uX2F0dHJzICphdHRyczEsXG5tbS9kYW1vbi9jb3JlLmMtOTY3LVx0XHRjb25zdCBzdHJ1Y3QgZGFtb25fYXR0cnMgKmF0dHJzMilcbi0tXG5tbS9kYW1vbi9jb3JlLmMtOTgyLVxubW0vZGFtb24vY29yZS5jOjk4MzpzdGF0aWMgdW5zaWduZWQgaW50IGRhbW9uX2FnZV9mb3JfbmV3X2F0dHJzKHVuc2lnbmVkIGludCBhZ2UsXG5tbS9kYW1vbi9jb3JlLmMtOTg0LVx0XHRzdHJ1Y3QgZGFtb25fYXR0cnMgKm9sZF9hdHRycywgc3RydWN0IGRhbW9uX2F0dHJzICpuZXdfYXR0cnMpXG4tLVxubW0vZGFtb24vY29yZS5jLTk4OS0vKiBjb252ZXJ0IHNhbXBsZSByYXRpbyBpbiBicCAocGVyIDEwLDAwMCkgdG8gY291bnQgKi9cbm1tL2RhbW9uL2NvcmUuYzo5OTA6c3RhdGljIHVuc2lnbmVkIGludCBkYW1vbl9zYW1wbGVfYnBfdG9fY291bnQoXG5tbS9kYW1vbi9jb3JlLmMtOTkxLVx0XHR1bnNpZ25lZCBpbnQgYnAsIHN0cnVjdCBkYW1vbl9hdHRycyAqYXR0cnMpXG4tLVxubW0vZGFtb24vY29yZS5jLTk5Ni0vKiBjb252ZXJ0IHNhbXBsZSBjb3VudCB0byByYXRpbyBpbiBicCAocGVyIDEwLDAwMCkgKi9cbm1tL2RhbW9uL2NvcmUuYzo5OTc6c3RhdGljIHVuc2lnbmVkIGludCBkYW1vbl9zYW1wbGVfY291bnRfdG9fYnAoXG5tbS9kYW1vbi9jb3JlLmMtOTk4LVx0XHR1bnNpZ25lZCBpbnQgY291bnQsIHN0cnVjdCBkYW1vbl9hdHRycyAqYXR0cnMpXG4tLVxubW0vZGFtb24vY29yZS5jLTEwMDItXG5tbS9kYW1vbi9jb3JlLmM6MTAwMzpzdGF0aWMgdW5zaWduZWQgaW50IGRhbW9uX25yX3NhbXBsZXNfZm9yX25ld19hdHRycyh1bnNpZ25lZCBpbnQgbnIsXG5tbS9kYW1vbi9jb3JlLmMtMTAwNC1cdFx0c3RydWN0IGRhbW9uX2F0dHJzICpvbGRfYXR0cnMsIHN0cnVjdCBkYW1vbl9hdHRycyAqbmV3X2F0dHJzKVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xMDA5LVxubW0vZGFtb24vY29yZS5jOjEwMTA6c3RhdGljIHZvaWQgZGFtb25fdXBkYXRlX3Byb2JlX2hpdHMoc3RydWN0IGRhbW9uX3JlZ2lvbiAqcixcbm1tL2RhbW9uL2NvcmUuYy0xMDExLVx0XHRzdHJ1Y3QgZGFtb25fYXR0cnMgKm9sZF9hdHRycywgc3RydWN0IGRhbW9uX2F0dHJzICpuZXdfYXR0cnMsXG4tLVxubW0vZGFtb24vY29yZS5jLTEwMjktXG5tbS9kYW1vbi9jb3JlLmM6MTAzMDpzdGF0aWMgdm9pZCBkYW1vbl91cGRhdGVfbW9uaXRvcmluZ19yZXN1bHQoc3RydWN0IGRhbW9uX3JlZ2lvbiAqcixcbm1tL2RhbW9uL2NvcmUuYy0xMDMxLVx0XHRzdHJ1Y3QgZGFtb25fYXR0cnMgKm9sZF9hdHRycywgc3RydWN0IGRhbW9uX2F0dHJzICpuZXdfYXR0cnMsXG4tLVxubW0vZGFtb24vY29yZS5jLTEwNTktICovXG5tbS9kYW1vbi9jb3JlLmM6MTA2MDpzdGF0aWMgdm9pZCBkYW1vbl91cGRhdGVfbW9uaXRvcmluZ19yZXN1bHRzKHN0cnVjdCBkYW1vbl9jdHggKmN0eCxcbm1tL2RhbW9uL2NvcmUuYy0xMDYxLVx0XHRzdHJ1Y3QgZGFtb25fYXR0cnMgKm5ld19hdHRycywgYm9vbCBhZ2dyZWdhdGluZylcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTA4Mi0gKi9cbm1tL2RhbW9uL2NvcmUuYzoxMDgzOnN0YXRpYyBib29sIGRhbW9uX3ZhbGlkX2ludGVydmFsc19nb2FsKHN0cnVjdCBkYW1vbl9hdHRycyAqYXR0cnMpXG5tbS9kYW1vbi9jb3JlLmMtMTA4NC17XG4tLVxubW0vZGFtb24vY29yZS5jLTExMTctICovXG5tbS9kYW1vbi9jb3JlLmM6MTExODppbnQgZGFtb25fc2V0X2F0dHJzKHN0cnVjdCBkYW1vbl9jdHggKmN0eCwgc3RydWN0IGRhbW9uX2F0dHJzICphdHRycylcbm1tL2RhbW9uL2NvcmUuYy0xMTE5LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTE2NS0gKi9cbm1tL2RhbW9uL2NvcmUuYzoxMTY2OnZvaWQgZGFtb25fc2V0X3NjaGVtZXMoc3RydWN0IGRhbW9uX2N0eCAqY3R4LCBzdHJ1Y3QgZGFtb3MgKipzY2hlbWVzLFxubW0vZGFtb24vY29yZS5jLTExNjctXHRcdFx0c3NpemVfdCBucl9zY2hlbWVzKVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xMTc3LVxubW0vZGFtb24vY29yZS5jOjExNzg6c3RhdGljIHN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpkYW1vc19udGhfcXVvdGFfZ29hbChcbm1tL2RhbW9uL2NvcmUuYy0xMTc5LVx0XHRpbnQgbiwgc3RydWN0IGRhbW9zX3F1b3RhICpxKVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xMTkwLVxubW0vZGFtb24vY29yZS5jOjExOTE6c3RhdGljIHZvaWQgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxfdW5pb24oXG5tbS9kYW1vbi9jb3JlLmMtMTE5Mi1cdFx0c3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKmRzdCwgc3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKnNyYylcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTIxNC1cbm1tL2RhbW9uL2NvcmUuYzoxMjE1OnN0YXRpYyB2b2lkIGRhbW9zX2NvbW1pdF9xdW90YV9nb2FsKFxubW0vZGFtb24vY29yZS5jLTEyMTYtXHRcdHN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpkc3QsIHN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpzcmMpXG4tLVxubW0vZGFtb24vY29yZS5jLTEyMzYtICovXG5tbS9kYW1vbi9jb3JlLmM6MTIzNzppbnQgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxzKHN0cnVjdCBkYW1vc19xdW90YSAqZHN0LCBzdHJ1Y3QgZGFtb3NfcXVvdGEgKnNyYylcbm1tL2RhbW9uL2NvcmUuYy0xMjM4LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTI2MS1cbm1tL2RhbW9uL2NvcmUuYzoxMjYyOnN0YXRpYyBpbnQgZGFtb3NfY29tbWl0X3F1b3RhKHN0cnVjdCBkYW1vc19xdW90YSAqZHN0LCBzdHJ1Y3QgZGFtb3NfcXVvdGEgKnNyYylcbm1tL2RhbW9uL2NvcmUuYy0xMjYzLXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTI4MC1cbm1tL2RhbW9uL2NvcmUuYzoxMjgxOnN0YXRpYyBzdHJ1Y3QgZGFtb3NfZmlsdGVyICpkYW1vc19udGhfY29yZV9maWx0ZXIoaW50IG4sIHN0cnVjdCBkYW1vcyAqcylcbm1tL2RhbW9uL2NvcmUuYy0xMjgyLXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTI5Mi1cbm1tL2RhbW9uL2NvcmUuYzoxMjkzOnN0YXRpYyBzdHJ1Y3QgZGFtb3NfZmlsdGVyICpkYW1vc19udGhfb3BzX2ZpbHRlcihpbnQgbiwgc3RydWN0IGRhbW9zICpzKVxubW0vZGFtb24vY29yZS5jLTEyOTQte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0xMzA0LVxubW0vZGFtb24vY29yZS5jOjEzMDU6c3RhdGljIHZvaWQgZGFtb3NfY29tbWl0X2ZpbHRlcl9hcmcoXG5tbS9kYW1vbi9jb3JlLmMtMTMwNi1cdFx0c3RydWN0IGRhbW9zX2ZpbHRlciAqZHN0LCBzdHJ1Y3QgZGFtb3NfZmlsdGVyICpzcmMpXG4tLVxubW0vZGFtb24vY29yZS5jLTEzMjUtXG5tbS9kYW1vbi9jb3JlLmM6MTMyNjpzdGF0aWMgdm9pZCBkYW1vc19jb21taXRfZmlsdGVyKFxubW0vZGFtb24vY29yZS5jLTEzMjctXHRcdHN0cnVjdCBkYW1vc19maWx0ZXIgKmRzdCwgc3RydWN0IGRhbW9zX2ZpbHRlciAqc3JjKVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xMzM0LVxubW0vZGFtb24vY29yZS5jOjEzMzU6c3RhdGljIGludCBkYW1vc19jb21taXRfY29yZV9maWx0ZXJzKHN0cnVjdCBkYW1vcyAqZHN0LCBzdHJ1Y3QgZGFtb3MgKnNyYylcbm1tL2RhbW9uL2NvcmUuYy0xMzM2LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTM2Mi1cbm1tL2RhbW9uL2NvcmUuYzoxMzYzOnN0YXRpYyBpbnQgZGFtb3NfY29tbWl0X29wc19maWx0ZXJzKHN0cnVjdCBkYW1vcyAqZHN0LCBzdHJ1Y3QgZGFtb3MgKnNyYylcbm1tL2RhbW9uL2NvcmUuYy0xMzY0LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTM5NS0gKi9cbm1tL2RhbW9uL2NvcmUuYzoxMzk2OnN0YXRpYyBib29sIGRhbW9zX2ZpbHRlcnNfZGVmYXVsdF9yZWplY3Qoc3RydWN0IGxpc3RfaGVhZCAqZmlsdGVycylcbm1tL2RhbW9uL2NvcmUuYy0xMzk3LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTQwNS1cbm1tL2RhbW9uL2NvcmUuYzoxNDA2OnN0YXRpYyB2b2lkIGRhbW9zX3NldF9maWx0ZXJzX2RlZmF1bHRfcmVqZWN0KHN0cnVjdCBkYW1vcyAqcylcbm1tL2RhbW9uL2NvcmUuYy0xNDA3LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTQxNi1cbm1tL2RhbW9uL2NvcmUuYzoxNDE3OnN0YXRpYyBib29sIGRhbW9uX3ZhbGlkX3Byb2JlX3BhcmFtcyhzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXG5tbS9kYW1vbi9jb3JlLmMtMTQxOC17XG4tLVxubW0vZGFtb24vY29yZS5jLTE0NjEtICovXG5tbS9kYW1vbi9jb3JlLmM6MTQ2MjpzdGF0aWMgaW50IGRhbW9zX2NvbW1pdF9kZXN0cyhzdHJ1Y3QgZGFtb3NfbWlncmF0ZV9kZXN0cyAqZHN0LFxubW0vZGFtb24vY29yZS5jLTE0NjMtXHRcdHN0cnVjdCBkYW1vc19taWdyYXRlX2Rlc3RzICpzcmMpXG4tLVxubW0vZGFtb24vY29yZS5jLTE0OTItXG5tbS9kYW1vbi9jb3JlLmM6MTQ5MzpzdGF0aWMgaW50IGRhbW9zX2NvbW1pdF9maWx0ZXJzKHN0cnVjdCBkYW1vcyAqZHN0LCBzdHJ1Y3QgZGFtb3MgKnNyYylcbm1tL2RhbW9uL2NvcmUuYy0xNDk0LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTUwNi1cbm1tL2RhbW9uL2NvcmUuYzoxNTA3OnN0YXRpYyBzdHJ1Y3QgZGFtb3MgKmRhbW9uX250aF9zY2hlbWUoaW50IG4sIHN0cnVjdCBkYW1vbl9jdHggKmN0eClcbm1tL2RhbW9uL2NvcmUuYy0xNTA4LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTUxOC1cbm1tL2RhbW9uL2NvcmUuYzoxNTE5OnN0YXRpYyBpbnQgZGFtb3NfY29tbWl0KHN0cnVjdCBkYW1vcyAqZHN0LCBzdHJ1Y3QgZGFtb3MgKnNyYylcbm1tL2RhbW9uL2NvcmUuYy0xNTIwLXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTU0NS1cbm1tL2RhbW9uL2NvcmUuYzoxNTQ2OnN0YXRpYyBpbnQgZGFtb25fY29tbWl0X3NjaGVtZXMoc3RydWN0IGRhbW9uX2N0eCAqZHN0LCBzdHJ1Y3QgZGFtb25fY3R4ICpzcmMpXG5tbS9kYW1vbi9jb3JlLmMtMTU0Ny17XG4tLVxubW0vZGFtb24vY29yZS5jLTE1ODEtXG5tbS9kYW1vbi9jb3JlLmM6MTU4MjpzdGF0aWMgc3RydWN0IGRhbW9uX3RhcmdldCAqZGFtb25fbnRoX3RhcmdldChpbnQgbiwgc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxubW0vZGFtb24vY29yZS5jLTE1ODMte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0xNjAwLSAqL1xubW0vZGFtb24vY29yZS5jOjE2MDE6c3RhdGljIGludCBkYW1vbl9jb21taXRfdGFyZ2V0X3JlZ2lvbnMoc3RydWN0IGRhbW9uX3RhcmdldCAqZHN0LFxubW0vZGFtb24vY29yZS5jLTE2MDItXHRcdHN0cnVjdCBkYW1vbl90YXJnZXQgKnNyYywgdW5zaWduZWQgbG9uZyBzcmNfbWluX3JlZ2lvbl9zeilcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTYzNS1cbm1tL2RhbW9uL2NvcmUuYzoxNjM2OnN0YXRpYyBpbnQgZGFtb25fY29tbWl0X3RhcmdldChcbm1tL2RhbW9uL2NvcmUuYy0xNjM3LVx0XHRzdHJ1Y3QgZGFtb25fdGFyZ2V0ICpkc3QsIGJvb2wgZHN0X2hhc19waWQsXG4tLVxubW0vZGFtb24vY29yZS5jLTE2NjItICovXG5tbS9kYW1vbi9jb3JlLmM6MTY2MzpzdGF0aWMgdm9pZCBkYW1vbl9yZXZlcnRfdGFyZ2V0X2NvbW1pdHMoc3RydWN0IGRhbW9uX2N0eCAqZHN0LFxubW0vZGFtb24vY29yZS5jLTE2NjQtXHRcdHN0cnVjdCBkYW1vbl90YXJnZXQgKmZhaWxlZCwgc3RydWN0IGRhbW9uX2N0eCAqc3JjKVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xNjc4LVxubW0vZGFtb24vY29yZS5jOjE2Nzk6c3RhdGljIGludCBkYW1vbl9jb21taXRfdGFyZ2V0cyhcbm1tL2RhbW9uL2NvcmUuYy0xNjgwLVx0XHRzdHJ1Y3QgZGFtb25fY3R4ICpkc3QsIHN0cnVjdCBkYW1vbl9jdHggKnNyYylcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTc0My1cbm1tL2RhbW9uL2NvcmUuYzoxNzQ0OnN0YXRpYyB2b2lkIGRhbW9uX2NvbW1pdF9wcmVwKHN0cnVjdCBkYW1vbl9wcmVwICpkc3QsIHN0cnVjdCBkYW1vbl9wcmVwICpzcmMpXG5tbS9kYW1vbi9jb3JlLmMtMTc0NS17XG4tLVxubW0vZGFtb24vY29yZS5jLTE3NDgtXG5tbS9kYW1vbi9jb3JlLmM6MTc0OTpzdGF0aWMgaW50IGRhbW9uX2NvbW1pdF9wcmVwcyhzdHJ1Y3QgZGFtb25fcHJvYmUgKmRzdCwgc3RydWN0IGRhbW9uX3Byb2JlICpzcmMpXG5tbS9kYW1vbi9jb3JlLmMtMTc1MC17XG4tLVxubW0vZGFtb24vY29yZS5jLTE3NzMtXG5tbS9kYW1vbi9jb3JlLmM6MTc3NDpzdGF0aWMgdm9pZCBkYW1vbl9jb21taXRfZmlsdGVyKHN0cnVjdCBkYW1vbl9maWx0ZXIgKmRzdCxcbm1tL2RhbW9uL2NvcmUuYy0xNzc1LVx0XHRzdHJ1Y3QgZGFtb25fZmlsdGVyICpzcmMpXG4tLVxubW0vZGFtb24vY29yZS5jLTE3ODgtXG5tbS9kYW1vbi9jb3JlLmM6MTc4OTpzdGF0aWMgaW50IGRhbW9uX2NvbW1pdF9maWx0ZXJzKHN0cnVjdCBkYW1vbl9wcm9iZSAqZHN0LFxubW0vZGFtb24vY29yZS5jLTE3OTAtXHRcdHN0cnVjdCBkYW1vbl9wcm9iZSAqc3JjKVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xODIyLVxubW0vZGFtb24vY29yZS5jOjE4MjM6c3RhdGljIGludCBkYW1vbl9jb21taXRfcHJvYmVzKHN0cnVjdCBkYW1vbl9jdHggKmRzdCwgc3RydWN0IGRhbW9uX2N0eCAqc3JjKVxubW0vZGFtb24vY29yZS5jLTE4MjQte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0xODYxLVxubW0vZGFtb24vY29yZS5jOjE4NjI6c3RhdGljIGludCBfX2RhbW9uX2NvbW1pdF9jdHgoc3RydWN0IGRhbW9uX2N0eCAqZHN0LCBzdHJ1Y3QgZGFtb25fY3R4ICpzcmMpXG5tbS9kYW1vbi9jb3JlLmMtMTg2My17XG4tLVxubW0vZGFtb24vY29yZS5jLTE5MTktXG5tbS9kYW1vbi9jb3JlLmM6MTkyMDpzdGF0aWMgc3RydWN0IGRhbW9uX2N0eCAqZGFtb25fbmV3X3Rlc3RfY3R4KHN0cnVjdCBkYW1vbl9jdHggKmRzdClcbm1tL2RhbW9uL2NvcmUuYy0xOTIxLXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTk0OC0gKi9cbm1tL2RhbW9uL2NvcmUuYzoxOTQ5OmludCBkYW1vbl9jb21taXRfY3R4KHN0cnVjdCBkYW1vbl9jdHggKmRzdCwgc3RydWN0IGRhbW9uX2N0eCAqc3JjKVxubW0vZGFtb24vY29yZS5jLTE5NTAte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0xOTY2LS8qIFJldHVybnMgdGhlIHNpemUgdXBwZXIgbGltaXQgZm9yIGVhY2ggbW9uaXRvcmluZyByZWdpb24gKi9cbm1tL2RhbW9uL2NvcmUuYzoxOTY3OnN0YXRpYyB1bnNpZ25lZCBsb25nIGRhbW9uX3JlZ2lvbl9zel9saW1pdChzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXG5tbS9kYW1vbi9jb3JlLmMtMTk2OC17XG4tLVxubW0vZGFtb24vY29yZS5jLTE5ODUtXG5tbS9kYW1vbi9jb3JlLmM6MTk4NjpzdGF0aWMgaW50IGRhbW9uX3NwbGl0X3JlZ2lvbl9hdChzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0LFxubW0vZGFtb24vY29yZS5jLTE5ODctXHRcdFx0XHQgIHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsIHVuc2lnbmVkIGxvbmcgc3pfcik7XG4tLVxubW0vZGFtb24vY29yZS5jLTIwMDEtICovXG5tbS9kYW1vbi9jb3JlLmM6MjAwMjpzdGF0aWMgdW5zaWduZWQgbG9uZyBkYW1vbl9hcHBseV9taW5fbnJfcmVnaW9ucyhzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXG5tbS9kYW1vbi9jb3JlLmMtMjAwMy17XG4tLVxubW0vZGFtb24vY29yZS5jLTIwMjEtXG5tbS9kYW1vbi9jb3JlLmM6MjAyMjpzdGF0aWMgaW50IGtkYW1vbmRfZm4odm9pZCAqZGF0YSk7XG5tbS9kYW1vbi9jb3JlLmMtMjAyMy1cbi0tXG5tbS9kYW1vbi9jb3JlLmMtMjAzMS0gKi9cbm1tL2RhbW9uL2NvcmUuYzoyMDMyOnN0YXRpYyBpbnQgX19kYW1vbl9zdGFydChzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXG5tbS9kYW1vbi9jb3JlLmMtMjAzMy17XG4tLVxubW0vZGFtb24vY29yZS5jLTIwNjgtICovXG5tbS9kYW1vbi9jb3JlLmM6MjA2OTppbnQgZGFtb25fc3RhcnQoc3RydWN0IGRhbW9uX2N0eCAqKmN0eHMsIGludCBucl9jdHhzLCBib29sIGV4Y2x1c2l2ZSlcbm1tL2RhbW9uL2NvcmUuYy0yMDcwLXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMjExMy0gKi9cbm1tL2RhbW9uL2NvcmUuYzoyMTE0OnN0YXRpYyB2b2lkIF9fZGFtb25fc3RvcChzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXG5tbS9kYW1vbi9jb3JlLmMtMjExNS17XG4tLVxubW0vZGFtb24vY29yZS5jLTIxMzMtICovXG5tbS9kYW1vbi9jb3JlLmM6MjEzNDp2b2lkIGRhbW9uX3N0b3Aoc3RydWN0IGRhbW9uX2N0eCAqKmN0eHMsIGludCBucl9jdHhzKVxubW0vZGFtb24vY29yZS5jLTIxMzUte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0yMTQ4LSAqL1xubW0vZGFtb24vY29yZS5jOjIxNDk6Ym9vbCBkYW1vbl9pc19ydW5uaW5nKHN0cnVjdCBkYW1vbl9jdHggKmN0eClcblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAwMDozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTUxOAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDg4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGFuYWx5emluZyB0aGlzIGNvZGU6CgoqKkRpdmluZyBpbnRvIHRoZSBEQU1PTiBJbXBsZW1lbnRhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgREFNT04mIzM5O3MgY29yZSBmdW5jdGlvbmFsaXR5LiBJJiMzOTttIHNlZWluZyBhIHNlcXVlbmNlIG9mIGZ1bmN0aW9ucyBoZXJlOiBgZGFtb25fc3RhcnRgLCBgZGFtb25fc3RvcGAsIGBkYW1vbl9jb21taXRfY3R4YCwgYGRhbW9uX3NldF9hdHRyc2AsIGBkYW1vbl9zZXRfc2NoZW1lc2AsIGBkYW1vbl9zZXRfcmVnaW9uc2AsIGBkYW1vbl9jYWxsYCwgZXRjLiBUaGlzIGdpdmVzIG1lIGEgZ29vZCBvdmVydmlldyBvZiB0aGUgdHlwaWNhbCBvcGVyYXRpb25hbCBmbG93LiBJIGNhbiBzZWUgdGhlIGhpZ2gtbGV2ZWwgc3RlcHMgaW52b2x2ZWQgLSBzdGFydGluZywgc3RvcHBpbmcsIGNvbW1pdHRpbmcgY29udGV4dCwgc2V0dGluZyBhdHRyaWJ1dGVzLCBjb25maWd1cmluZyBzY2hlbWVzIGFuZCByZWdpb25zLCBhbmQgZmluYWxseSB0aGUgYWN0dWFsICYjMzQ7ZGFtb25fY2FsbCYjMzQ7IGl0c2VsZi4gVGhpcyBzdWdnZXN0cyBhIHBhdHRlcm4gb2YgaW5pdGlhbGl6YXRpb24sIGNvbmZpZ3VyYXRpb24sIGFuZCB0aGVuIGFjdGl2ZSBtb25pdG9yaW5nLgoKTm93LCBJIHdhbnQgdG8gdHJhY2UgaG93IHRoZSBzY2hlbWVzIGFyZSBhcHBsaWVkLiBJJiMzOTttIGdvaW5nIHRvIGRpZyBpbnRvIHRoZSBgZGFtb25fZG9fYXBwbHlfc2NoZW1lc2AgZnVuY3Rpb24uIFRoaXMgaXMgd2hlcmUgdGhlIHNjaGVtZXMgZGVmaW5lZCBieSBgZGFtb25fc2V0X3NjaGVtZXNgIGdldCBpbXBsZW1lbnRlZCwgc28gdGhpcyBpcyBjcml0aWNhbC4gSSYjMzk7bGwgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIGFuZCBob3cgdGhhdCBmdW5jdGlvbiBpcyAqY2FsbGVkKiBpbiBgbW0vZGFtb24vY29yZS5jYC4gS25vd2luZyB0aGUgY2FsbCBjaGFpbiB3aWxsIGlsbHVtaW5hdGUgaG93IERBTU9OIGFjdHVhbGx5IHVzZXMgdGhlIHNjaGVtZXMgSSYjMzk7dmUgZGVmaW5lZCB0byBvcHRpbWl6ZSBtZW1vcnkgYWNjZXNzLiBJJiMzOTtsbCBmb2N1cyBvbiB0aGUgY2FsbGluZyBjb250ZXh0IHdpdGhpbiB0aGUgREFNT04gY29yZSB0byB1bmRlcnN0YW5kIGhvdyBpdCBmaXRzIGludG8gdGhlIG92ZXJhbGwgbW9uaXRvcmluZyBhbmQgb3B0aW1pemF0aW9uIHByb2Nlc3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDAwOjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RhbW9uX2RvX2FwcGx5X3NjaGVtZXMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9kYW1vbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9kYW1vbi9jb3JlLmM9MjY2OT1zdGF0aWMgdm9pZCBkYW1vc19hcHBseV9zY2hlbWUoc3RydWN0IGRhbW9uX2N0eCAqYywgc3RydWN0IGRhbW9uX3RhcmdldCAqdCxcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMjczOS1cbm1tL2RhbW9uL2NvcmUuYzoyNzQwOnN0YXRpYyB2b2lkIGRhbW9uX2RvX2FwcGx5X3NjaGVtZXMoc3RydWN0IGRhbW9uX2N0eCAqYyxcbm1tL2RhbW9uL2NvcmUuYy0yNzQxLVx0XHRcdFx0ICAgc3RydWN0IGRhbW9uX3RhcmdldCAqdCxcbi0tXG5tbS9kYW1vbi9jb3JlLmM9Mjc5NT1zdGF0aWMgdm9pZCBkYW1vc19hcHBseV90YXJnZXQoc3RydWN0IGRhbW9uX2N0eCAqYywgc3RydWN0IGRhbW9uX3RhcmdldCAqdCxcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMjgwMi1cbm1tL2RhbW9uL2NvcmUuYzoyODAzOlx0XHRkYW1vbl9kb19hcHBseV9zY2hlbWVzKGMsIHQsIHIpO1xubW0vZGFtb24vY29yZS5jLTI4MDQtXHRcdC8qXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDAwOjMzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMyMTc1CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogNDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uCgoqKlRyYWNpbmcgdGhlIENhbGwgQ2hhaW46IGBkYW1vc19hcHBseV90YXJnZXRgKioKClJpZ2h0LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYGRhbW9zX2FwcGx5X3RhcmdldGAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCB3aGVyZSYjMzk7cyB0aGlzIGJlaW5nIGNhbGxlZCBmcm9tPyAgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGNvbnRleHQuIEtub3dpbmcgdGhlIGVudHJ5IHBvaW50cywgdGhlIGZ1bmN0aW9ucyB0aGF0IGZlZWQgaW50byBgZGFtb3NfYXBwbHlfdGFyZ2V0YCwgaXMgY3JpdGljYWwgZm9yIGdyYXNwaW5nIGl0cyBwdXJwb3NlIGFuZCBwb3RlbnRpYWwgc2lkZSBlZmZlY3RzLiBUaGUgY29kZSBzdWdnZXN0cyBpdCYjMzk7cyBjb25uZWN0ZWQgdG8gYGtkYW1vbmRfZm5gLCBga2RhbW9uZF9hcHBseV9zY2hlbWVzYCwgb3Igc29tZSBvdGhlciBzaW1pbGFyIG1vZHVsZXMgb3IgZnVuY3Rpb25zLiBJIHNob3VsZCBleGFtaW5lIHRoZSBjYWxsIGdyYXBoIOKAkyBzZWUgd2hhdCYjMzk7cyBpbnZva2luZyBgZGFtb3NfYXBwbHlfdGFyZ2V0YC4gVGhhdCYjMzk7bGwgZ2l2ZSBtZSBhIHNvbGlkIHBpY3R1cmUuIExldCYjMzk7cyBkaWcgaW50byB0aGUgY2FsbGVycyBhbmQgc2VlIHdoYXQgd2UgY2FuIGZpbmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDAwOjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RhbW9zX2FwcGx5X3RhcmdldCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL2RhbW9uJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL2RhbW9uL2NvcmUuYz0yNzQwPXN0YXRpYyB2b2lkIGRhbW9uX2RvX2FwcGx5X3NjaGVtZXMoc3RydWN0IGRhbW9uX2N0eCAqYyxcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMjc3Ny0vKlxubW0vZGFtb24vY29yZS5jOjI3Nzg6ICogZGFtb3NfYXBwbHlfdGFyZ2V0KCkgLSBBcHBseSBEQU1PUyBzY2hlbWVzIHRvIGEgZ2l2ZW4gdGFyZ2V0LlxubW0vZGFtb24vY29yZS5jLTI3NzktICogQGM6XHRcdFx0bW9uaXRvcmluZyBjb250ZXh0IHRvIGFwcGx5IGl0cyBEQU1PUyBzY2hlbWVzIHRvLi5cbi0tXG5tbS9kYW1vbi9jb3JlLmMtMjc5NC0gKi9cbm1tL2RhbW9uL2NvcmUuYzoyNzk1OnN0YXRpYyB2b2lkIGRhbW9zX2FwcGx5X3RhcmdldChzdHJ1Y3QgZGFtb25fY3R4ICpjLCBzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0LFxubW0vZGFtb24vY29yZS5jLTI3OTYtXHRcdHVuc2lnbmVkIGxvbmcgbWF4X3JlZ2lvbl9zeilcbi0tXG5tbS9kYW1vbi9jb3JlLmM9MzM1Nz1zdGF0aWMgdm9pZCBrZGFtb25kX2FwcGx5X3NjaGVtZXMoc3RydWN0IGRhbW9uX2N0eCAqYylcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMzM4My1cdFx0XHRjb250aW51ZTtcbm1tL2RhbW9uL2NvcmUuYzozMzg0Olx0XHRkYW1vc19hcHBseV90YXJnZXQoYywgdCwgbWF4X3JlZ2lvbl9zeik7XG5tbS9kYW1vbi9jb3JlLmMtMzM4NS1cdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDMgMDA6MzQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzI3MzcKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA1NjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgREFNT04gRnV6emluZyBTdHJhdGVneSoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBnb2FsIGlzIHRvIGRldGVybWluZSBpZiBhbmQgaG93IHRvIGZ1enogREFNT04uIEZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgY29yZSBmdW5jdGlvbiwgc28gSSYjMzk7bGwgZm9sbG93IHRoZSBleGVjdXRpb24gcGF0aCB3aXRoaW4gdGhlIGBrZGFtb25kYCBsb29wOiBga2RhbW9uZF9mbmAgLSZndDsgYGtkYW1vbmRfYXBwbHlfc2NoZW1lc2AgLSZndDsgYGRhbW9zX2FwcGx5X3RhcmdldGAgLSZndDsgYGRhbW9uX2RvX2FwcGx5X3NjaGVtZXNgIC0mZ3Q7IGBkYW1vc19xdW90YV9pc19mdWxsYCBhbmQgYGRhbW9zX2FwcGx5X3NjaGVtZWAuIFRoaXMgZ2l2ZXMgbWUgYSBnb29kIHN0YXJ0aW5nIHBvaW50IGZvciBpZGVudGlmeWluZyBjcml0aWNhbCBjb2RlIHBhdGhzLgoKTmV4dCwgSSYjMzk7bGwgY29uZmlybSBEQU1PTiYjMzk7cyBLY29uZmlnIGRlcGVuZGVuY2llcy4gTG9va2luZyBhdCBgbW0vZGFtb24vS2NvbmZpZ2AsIEkgc2VlIGl0JiMzOTtzIGNvbnRyb2xsZWQgYnkgdGhlIGBjb25maWcgREFNT05gIG9wdGlvbiwgd2l0aCBhZGRpdGlvbmFsIG9wdGlvbnMgZm9yIGBEQU1PTl9TWVNGU2AsIGBEQU1PTl9WQUREUmAsIGFuZCBgREFNT05fUEFERFJgLiBUaGlzIHRlbGxzIG1lIGhvdyBEQU1PTiBjYW4gYmUgY29uZmlndXJlZCBhbmQgYWN0aXZhdGVkLgoKTm93LCB0aGUgY3J1Y2lhbCBxdWVzdGlvbjogaXMgREFNT04gZnV6emFibGU/IEFic29sdXRlbHkuIEl04oCZcyBmdW5jdGlvbmFsIGtlcm5lbCBjb2RlLCBwYXJ0IG9mIHRoZSBtZW1vcnkgbWFuYWdlbWVudCBzdWJzeXN0ZW0uIFRoZSBwYXRjaCBmaXhlcyBxdW90YSBsb2dpYyB0aGF0IGNvdWxkIGJlIGEgc291cmNlIG9mIHZ1bG5lcmFiaWxpdGllcy4gSSYjMzk7bSBhbHJlYWR5IHNlZWluZyBgZGFtb3NfcXVvdGFfaXNfZnVsbGAgYW5kIGBkYW1vbl9kb19hcHBseV9zY2hlbWVzYCBhcyBwb3RlbnRpYWwgYXJlYXMgdG8gdGFyZ2V0LiBJdCYjMzk7cyBhbHNvIGZ1bGx5IHJlYWNoYWJsZSB0aHJvdWdoIHN5c2ZzIChgL3N5cy9rZXJuZWwvbW0vZGFtb24vLi4uYCksIG1ha2luZyBpdCBlYXNpbHkgYWNjZXNzaWJsZSBpbiBhIHN0YW5kYXJkIFFFTVUgb3IgR0NFIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBXb3J0aEZ1enppbmc9dHJ1ZSwgZGVmaW5pdGVseS4KCkZpbmFsbHksIEkgbmVlZCB0byBwaW5wb2ludCB0aGUgcmlnaHQgZm9jdXMgc3ltYm9scy4gSSYjMzk7bGwgY29uY2VudHJhdGUgb24gbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnRzLiBMZXQmIzM5O3Mgc2VlLi4uIGBkYW1vbl9zdGFydGAsIGBkYW1vbl9zdG9wYCwgYGRhbW9uX2NvbW1pdF9jdHhgLCBgZGFtb25fc2V0X2F0dHJzYCwgYGRhbW9uX3NldF9zY2hlbWVzYCwgYGRhbW9uX3NldF9yZWdpb25zYCwgYGRhbW9uX3N5c2ZzX2FkZF9zY2hlbWVzYCBsb29rIHByb21pc2luZy4gSSYjMzk7bGwgZG91YmxlLWNoZWNrIGBtbS9kYW1vbi9jb3JlLmNgLCBgbW0vZGFtb24vc3lzZnMuY2AgYW5kIGBtbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmNgIHRvIGlkZW50aWZ5IGFueSBvdGhlciByZWxldmFudCBmdW5jdGlvbnMuIFRoaXMgaXMgYSBzb2xpZCBzdGFydGluZyBwb2ludCBmb3IgYSBmdXp6aW5nIGNhbXBhaWduLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAwMDozNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteaW50IGRhbW9uX3xedm9pZCBkYW1vbl98XnN0cnVjdCBkYW1vbl8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9kYW1vbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9kYW1vbi9jb3JlLmM9NTE9Ym9vbCBkYW1vbl9pc19yZWdpc3RlcmVkX29wcyhlbnVtIGRhbW9uX29wc19pZCBpZClcbi0tXG5tbS9kYW1vbi9jb3JlLmMtNzEtICovXG5tbS9kYW1vbi9jb3JlLmM6NzI6aW50IGRhbW9uX3JlZ2lzdGVyX29wcyhzdHJ1Y3QgZGFtb25fb3BlcmF0aW9ucyAqb3BzKVxubW0vZGFtb24vY29yZS5jLTczLXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtOTgtICovXG5tbS9kYW1vbi9jb3JlLmM6OTk6aW50IGRhbW9uX3NlbGVjdF9vcHMoc3RydWN0IGRhbW9uX2N0eCAqY3R4LCBlbnVtIGRhbW9uX29wc19pZCBpZClcbm1tL2RhbW9uL2NvcmUuYy0xMDAte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0xMTQtXG5tbS9kYW1vbi9jb3JlLmM6MTE1OnN0cnVjdCBkYW1vbl9wcmVwICpkYW1vbl9uZXdfcHJlcChlbnVtIGRhbW9uX3ByZXBfYWN0aW9uIGFjdGlvbilcbm1tL2RhbW9uL2NvcmUuYy0xMTYte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0xMjYtXG5tbS9kYW1vbi9jb3JlLmM6MTI3OnZvaWQgZGFtb25fYWRkX3ByZXAoc3RydWN0IGRhbW9uX3Byb2JlICpwLCBzdHJ1Y3QgZGFtb25fcHJlcCAqcHJlcClcbm1tL2RhbW9uL2NvcmUuYy0xMjgte1xuLS1cbm1tL2RhbW9uL2NvcmUuYz0xNjA9c3RhdGljIGJvb2wgZGFtb25faGFzX3ByZXAoc3RydWN0IGRhbW9uX2N0eCAqYylcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTcxLVxubW0vZGFtb24vY29yZS5jOjE3MjpzdHJ1Y3QgZGFtb25fZmlsdGVyICpkYW1vbl9uZXdfZmlsdGVyKGVudW0gZGFtb25fZmlsdGVyX3R5cGUgdHlwZSxcbm1tL2RhbW9uL2NvcmUuYy0xNzMtXHRcdGJvb2wgbWF0Y2hpbmcsIGJvb2wgYWxsb3cpXG4tLVxubW0vZGFtb24vY29yZS5jLTE4Ni1cbm1tL2RhbW9uL2NvcmUuYzoxODc6dm9pZCBkYW1vbl9hZGRfZmlsdGVyKHN0cnVjdCBkYW1vbl9wcm9iZSAqcCwgc3RydWN0IGRhbW9uX2ZpbHRlciAqZilcbm1tL2RhbW9uL2NvcmUuYy0xODgte1xuLS1cbm1tL2RhbW9uL2NvcmUuYz0xOTc9c3RhdGljIHZvaWQgZGFtb25fZnJlZV9maWx0ZXIoc3RydWN0IGRhbW9uX2ZpbHRlciAqZilcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMjAxLVxubW0vZGFtb24vY29yZS5jOjIwMjp2b2lkIGRhbW9uX2Rlc3Ryb3lfZmlsdGVyKHN0cnVjdCBkYW1vbl9maWx0ZXIgKmYpXG5tbS9kYW1vbi9jb3JlLmMtMjAzLXtcbi0tXG5tbS9kYW1vbi9jb3JlLmM9MjA4PXN0YXRpYyBzdHJ1Y3QgZGFtb25fZmlsdGVyICpkYW1vbl9udGhfZmlsdGVyKGludCBuLCBzdHJ1Y3QgZGFtb25fcHJvYmUgKnApXG4tLVxubW0vZGFtb24vY29yZS5jLTIxOS1cbm1tL2RhbW9uL2NvcmUuYzoyMjA6c3RydWN0IGRhbW9uX3Byb2JlICpkYW1vbl9uZXdfcHJvYmUodm9pZClcbm1tL2RhbW9uL2NvcmUuYy0yMjEte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0yMzMtXG5tbS9kYW1vbi9jb3JlLmM6MjM0OnZvaWQgZGFtb25fYWRkX3Byb2JlKHN0cnVjdCBkYW1vbl9jdHggKmN0eCwgc3RydWN0IGRhbW9uX3Byb2JlICpwcm9iZSlcbm1tL2RhbW9uL2NvcmUuYy0yMzUte1xuLS1cbm1tL2RhbW9uL2NvcmUuYz0zODA9c3RhdGljIHZvaWQgZGFtb25fdmVyaWZ5X25ld19yZWdpb24odW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQpXG4tLVxubW0vZGFtb24vY29yZS5jLTM4OS0gKi9cbm1tL2RhbW9uL2NvcmUuYzozOTA6c3RydWN0IGRhbW9uX3JlZ2lvbiAqZGFtb25fbmV3X3JlZ2lvbih1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZClcbm1tL2RhbW9uL2NvcmUuYy0zOTEte1xuLS1cbm1tL2RhbW9uL2NvcmUuYz01MDc9c3RhdGljIGludCBkYW1vbl9maWxsX3JlZ2lvbnNfaG9sZXMoc3RydWN0IGRhbW9uX3JlZ2lvbiAqZmlyc3QsXG4tLVxubW0vZGFtb24vY29yZS5jLTUzOS0gKi9cbm1tL2RhbW9uL2NvcmUuYzo1NDA6aW50IGRhbW9uX3NldF9yZWdpb25zKHN0cnVjdCBkYW1vbl90YXJnZXQgKnQsIHN0cnVjdCBkYW1vbl9hZGRyX3JhbmdlICpyYW5nZXMsXG5tbS9kYW1vbi9jb3JlLmMtNTQxLVx0XHR1bnNpZ25lZCBpbnQgbnJfcmFuZ2VzLCB1bnNpZ25lZCBsb25nIG1pbl9yZWdpb25fc3opXG4tLVxubW0vZGFtb24vY29yZS5jPTc4OD1zdGF0aWMgdm9pZCBkYW1vc19zZXRfbmV4dF9hcHBseV9zaXMoc3RydWN0IGRhbW9zICpzLCBzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXG4tLVxubW0vZGFtb24vY29yZS5jLTc5OC1cbm1tL2RhbW9uL2NvcmUuYzo3OTk6dm9pZCBkYW1vbl9hZGRfc2NoZW1lKHN0cnVjdCBkYW1vbl9jdHggKmN0eCwgc3RydWN0IGRhbW9zICpzKVxubW0vZGFtb24vY29yZS5jLTgwMC17XG4tLVxubW0vZGFtb24vY29yZS5jPTgxMD1zdGF0aWMgdm9pZCBkYW1vbl9mcmVlX3NjaGVtZShzdHJ1Y3QgZGFtb3MgKnMpXG4tLVxubW0vZGFtb24vY29yZS5jLTgxNC1cbm1tL2RhbW9uL2NvcmUuYzo4MTU6dm9pZCBkYW1vbl9kZXN0cm95X3NjaGVtZShzdHJ1Y3QgZGFtb3MgKnMpXG5tbS9kYW1vbi9jb3JlLmMtODE2LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtODM5LSAqL1xubW0vZGFtb24vY29yZS5jOjg0MDpzdHJ1Y3QgZGFtb25fdGFyZ2V0ICpkYW1vbl9uZXdfdGFyZ2V0KHZvaWQpXG5tbS9kYW1vbi9jb3JlLmMtODQxLXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtODU2LVxubW0vZGFtb24vY29yZS5jOjg1Nzp2b2lkIGRhbW9uX2FkZF90YXJnZXQoc3RydWN0IGRhbW9uX2N0eCAqY3R4LCBzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0KVxubW0vZGFtb24vY29yZS5jLTg1OC17XG4tLVxubW0vZGFtb24vY29yZS5jLTg2NC0gKi9cbm1tL2RhbW9uL2NvcmUuYzo4NjU6aW50IGRhbW9uX3NldF90YXJnZXRfcGlkKHN0cnVjdCBkYW1vbl90YXJnZXQgKnQsIGludCBwaWQpXG5tbS9kYW1vbi9jb3JlLmMtODY2LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmM9ODczPXN0YXRpYyB2b2lkIGRhbW9uX2RlbF90YXJnZXQoc3RydWN0IGRhbW9uX3RhcmdldCAqdClcbi0tXG5tbS9kYW1vbi9jb3JlLmMtODc3LVxubW0vZGFtb24vY29yZS5jOjg3ODp2b2lkIGRhbW9uX2ZyZWVfdGFyZ2V0KHN0cnVjdCBkYW1vbl90YXJnZXQgKnQpXG5tbS9kYW1vbi9jb3JlLmMtODc5LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtODg2LVxubW0vZGFtb24vY29yZS5jOjg4Nzp2b2lkIGRhbW9uX2Rlc3Ryb3lfdGFyZ2V0KHN0cnVjdCBkYW1vbl90YXJnZXQgKnQsIHN0cnVjdCBkYW1vbl9jdHggKmN0eClcbm1tL2RhbW9uL2NvcmUuYy04ODgte1xuLS1cbm1tL2RhbW9uL2NvcmUuYz04OTc9dW5zaWduZWQgaW50IGRhbW9uX25yX3JlZ2lvbnMoc3RydWN0IGRhbW9uX3RhcmdldCAqdClcbi0tXG5tbS9kYW1vbi9jb3JlLmMtOTAxLVxubW0vZGFtb24vY29yZS5jOjkwMjpzdHJ1Y3QgZGFtb25fY3R4ICpkYW1vbl9uZXdfY3R4KHZvaWQpXG5tbS9kYW1vbi9jb3JlLmMtOTAzLXtcbi0tXG5tbS9kYW1vbi9jb3JlLmM9OTQyPXN0YXRpYyB2b2lkIGRhbW9uX2Rlc3Ryb3lfdGFyZ2V0cyhzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXG4tLVxubW0vZGFtb24vY29yZS5jLTk0OS1cbm1tL2RhbW9uL2NvcmUuYzo5NTA6dm9pZCBkYW1vbl9kZXN0cm95X2N0eChzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXG5tbS9kYW1vbi9jb3JlLmMtOTUxLXtcbi0tXG5tbS9kYW1vbi9jb3JlLmM9MTA4Mz1zdGF0aWMgYm9vbCBkYW1vbl92YWxpZF9pbnRlcnZhbHNfZ29hbChzdHJ1Y3QgZGFtb25fYXR0cnMgKmF0dHJzKVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xMTE3LSAqL1xubW0vZGFtb24vY29yZS5jOjExMTg6aW50IGRhbW9uX3NldF9hdHRycyhzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsIHN0cnVjdCBkYW1vbl9hdHRycyAqYXR0cnMpXG5tbS9kYW1vbi9jb3JlLmMtMTExOS17XG4tLVxubW0vZGFtb24vY29yZS5jLTExNjUtICovXG5tbS9kYW1vbi9jb3JlLmM6MTE2Njp2b2lkIGRhbW9uX3NldF9zY2hlbWVzKHN0cnVjdCBkYW1vbl9jdHggKmN0eCwgc3RydWN0IGRhbW9zICoqc2NoZW1lcyxcbm1tL2RhbW9uL2NvcmUuYy0xMTY3LVx0XHRcdHNzaXplX3QgbnJfc2NoZW1lcylcbi0tXG5tbS9kYW1vbi9jb3JlLmM9MTkyMD1zdGF0aWMgc3RydWN0IGRhbW9uX2N0eCAqZGFtb25fbmV3X3Rlc3RfY3R4KHN0cnVjdCBkYW1vbl9jdHggKmRzdClcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMTk0OC0gKi9cbm1tL2RhbW9uL2NvcmUuYzoxOTQ5OmludCBkYW1vbl9jb21taXRfY3R4KHN0cnVjdCBkYW1vbl9jdHggKmRzdCwgc3RydWN0IGRhbW9uX2N0eCAqc3JjKVxubW0vZGFtb24vY29yZS5jLTE5NTAte1xuLS1cbm1tL2RhbW9uL2NvcmUuYz0yMDMyPXN0YXRpYyBpbnQgX19kYW1vbl9zdGFydChzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXG4tLVxubW0vZGFtb24vY29yZS5jLTIwNjgtICovXG5tbS9kYW1vbi9jb3JlLmM6MjA2OTppbnQgZGFtb25fc3RhcnQoc3RydWN0IGRhbW9uX2N0eCAqKmN0eHMsIGludCBucl9jdHhzLCBib29sIGV4Y2x1c2l2ZSlcbm1tL2RhbW9uL2NvcmUuYy0yMDcwLXtcbi0tXG5tbS9kYW1vbi9jb3JlLmM9MjExND1zdGF0aWMgdm9pZCBfX2RhbW9uX3N0b3Aoc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0yMTMzLSAqL1xubW0vZGFtb24vY29yZS5jOjIxMzQ6dm9pZCBkYW1vbl9zdG9wKHN0cnVjdCBkYW1vbl9jdHggKipjdHhzLCBpbnQgbnJfY3R4cylcbm1tL2RhbW9uL2NvcmUuYy0yMTM1LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmM9MjE0OT1ib29sIGRhbW9uX2lzX3J1bm5pbmcoc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0yMTY0LSAqL1xubW0vZGFtb24vY29yZS5jOjIxNjU6aW50IGRhbW9uX2tkYW1vbmRfcGlkKHN0cnVjdCBkYW1vbl9jdHggKmN0eClcbm1tL2RhbW9uL2NvcmUuYy0yMTY2LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMjIwMC0gKi9cbm1tL2RhbW9uL2NvcmUuYzoyMjAxOmludCBkYW1vbl9jYWxsKHN0cnVjdCBkYW1vbl9jdHggKmN0eCwgc3RydWN0IGRhbW9uX2NhbGxfY29udHJvbCAqY29udHJvbClcbm1tL2RhbW9uL2NvcmUuYy0yMjAyLXtcbi0tXG5tbS9kYW1vbi9jb3JlLmM9Mzg5MD1zdGF0aWMgaW50IGtkYW1vbmRfZm4odm9pZCAqZGF0YSlcbi0tXG5tbS9kYW1vbi9jb3JlLmMtNDA2My1cbm1tL2RhbW9uL2NvcmUuYzo0MDY0OnN0cnVjdCBkYW1vbl9zeXN0ZW1fcmFtX3JhbmdlX3dhbGtfYXJnIHtcbm1tL2RhbW9uL2NvcmUuYy00MDY1LVx0Ym9vbCB3YWxrZWQ7XG4tLVxubW0vZGFtb24vY29yZS5jPTQwOTQ9c3RhdGljIGJvb2wgZGFtb25fZmluZF9zeXN0ZW1fcmFtc19yYW5nZSh1bnNpZ25lZCBsb25nICpzdGFydCxcbi0tXG5tbS9kYW1vbi9jb3JlLmMtNDEyNS0gKi9cbm1tL2RhbW9uL2NvcmUuYzo0MTI2OmludCBkYW1vbl9zZXRfcmVnaW9uX3N5c3RlbV9yYW1zX2RlZmF1bHQoc3RydWN0IGRhbW9uX3RhcmdldCAqdCxcbm1tL2RhbW9uL2NvcmUuYy00MTI3LVx0XHRcdHVuc2lnbmVkIGxvbmcgKnN0YXJ0LCB1bnNpZ25lZCBsb25nICplbmQsXG4tLVxubW0vZGFtb24vY29yZS5jLTQxNTAtICovXG5tbS9kYW1vbi9jb3JlLmM6NDE1MTp2b2lkIGRhbW9uX3VwZGF0ZV9yZWdpb25fYWNjZXNzX3JhdGUoc3RydWN0IGRhbW9uX3JlZ2lvbiAqciwgYm9vbCBhY2Nlc3NlZClcbm1tL2RhbW9uL2NvcmUuYy00MTUyLXtcbi0tXG5tbS9kYW1vbi9tb2R1bGVzLWNvbW1vbi5jLTE0LSAqL1xubW0vZGFtb24vbW9kdWxlcy1jb21tb24uYzoxNTppbnQgZGFtb25fbW9kdWxlc19uZXdfcGFkZHJfY3R4X3RhcmdldChzdHJ1Y3QgZGFtb25fY3R4ICoqY3R4cCxcbm1tL2RhbW9uL21vZHVsZXMtY29tbW9uLmMtMTYtXHRcdHN0cnVjdCBkYW1vbl90YXJnZXQgKip0YXJnZXRwKVxuLS1cbm1tL2RhbW9uL21vZHVsZXMtY29tbW9uLmgtNDUtXG5tbS9kYW1vbi9tb2R1bGVzLWNvbW1vbi5oOjQ2OmludCBkYW1vbl9tb2R1bGVzX25ld19wYWRkcl9jdHhfdGFyZ2V0KHN0cnVjdCBkYW1vbl9jdHggKipjdHhwLFxubW0vZGFtb24vbW9kdWxlcy1jb21tb24uaC00Ny1cdFx0c3RydWN0IGRhbW9uX3RhcmdldCAqKnRhcmdldHApO1xuLS1cbm1tL2RhbW9uL29wcy1jb21tb24uYz0yND1zdHJ1Y3QgZm9saW8gKmRhbW9uX2dldF9mb2xpbyh1bnNpZ25lZCBsb25nIHBmbilcbi0tXG5tbS9kYW1vbi9vcHMtY29tbW9uLmMtNDEtXG5tbS9kYW1vbi9vcHMtY29tbW9uLmM6NDI6dm9pZCBkYW1vbl9wdGVwX21rb2xkKHB0ZV90ICpwdGUsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHIpXG5tbS9kYW1vbi9vcHMtY29tbW9uLmMtNDMte1xuLS1cbm1tL2RhbW9uL29wcy1jb21tb24uYy03Mi1cbm1tL2RhbW9uL29wcy1jb21tb24uYzo3Mzp2b2lkIGRhbW9uX3BtZHBfbWtvbGQocG1kX3QgKnBtZCwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgYWRkcilcbm1tL2RhbW9uL29wcy1jb21tb24uYy03NC17XG4tLVxubW0vZGFtb24vb3BzLWNvbW1vbi5jLTEwMy1cbm1tL2RhbW9uL29wcy1jb21tb24uYzoxMDQ6aW50IGRhbW9uX2hvdF9zY29yZShzdHJ1Y3QgZGFtb25fY3R4ICpjLCBzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLFxubW0vZGFtb24vb3BzLWNvbW1vbi5jLTEwNS1cdFx0XHRzdHJ1Y3QgZGFtb3MgKnMpXG4tLVxubW0vZGFtb24vb3BzLWNvbW1vbi5jLTE0OS1cbm1tL2RhbW9uL29wcy1jb21tb24uYzoxNTA6aW50IGRhbW9uX2NvbGRfc2NvcmUoc3RydWN0IGRhbW9uX2N0eCAqYywgc3RydWN0IGRhbW9uX3JlZ2lvbiAqcixcbm1tL2RhbW9uL29wcy1jb21tb24uYy0xNTEtXHRcdFx0c3RydWN0IGRhbW9zICpzKVxuLS1cbm1tL2RhbW9uL29wcy1jb21tb24uYz0xNTk9c3RhdGljIGJvb2wgZGFtb25fZm9saW9fbWtvbGRfb25lKHN0cnVjdCBmb2xpbyAqZm9saW8sXG4tLVxubW0vZGFtb24vb3BzLWNvbW1vbi5jLTE3My1cbm1tL2RhbW9uL29wcy1jb21tb24uYzoxNzQ6dm9pZCBkYW1vbl9mb2xpb19ta29sZChzdHJ1Y3QgZm9saW8gKmZvbGlvKVxubW0vZGFtb24vb3BzLWNvbW1vbi5jLTE3NS17XG4tLVxubW0vZGFtb24vb3BzLWNvbW1vbi5oPTg9c3RydWN0IGZvbGlvICpkYW1vbl9nZXRfZm9saW8odW5zaWduZWQgbG9uZyBwZm4pO1xubW0vZGFtb24vb3BzLWNvbW1vbi5oLTktXG5tbS9kYW1vbi9vcHMtY29tbW9uLmg6MTA6dm9pZCBkYW1vbl9wdGVwX21rb2xkKHB0ZV90ICpwdGUsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHIpO1xubW0vZGFtb24vb3BzLWNvbW1vbi5oOjExOnZvaWQgZGFtb25fcG1kcF9ta29sZChwbWRfdCAqcG1kLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBhZGRyKTtcbm1tL2RhbW9uL29wcy1jb21tb24uaDoxMjp2b2lkIGRhbW9uX2ZvbGlvX21rb2xkKHN0cnVjdCBmb2xpbyAqZm9saW8pO1xubW0vZGFtb24vb3BzLWNvbW1vbi5oLTEzLWJvb2wgZGFtb25fZm9saW9feW91bmcoc3RydWN0IGZvbGlvICpmb2xpbyk7XG5tbS9kYW1vbi9vcHMtY29tbW9uLmgtMTQtXG5tbS9kYW1vbi9vcHMtY29tbW9uLmg6MTU6aW50IGRhbW9uX2NvbGRfc2NvcmUoc3RydWN0IGRhbW9uX2N0eCAqYywgc3RydWN0IGRhbW9uX3JlZ2lvbiAqcixcbm1tL2RhbW9uL29wcy1jb21tb24uaC0xNi1cdFx0XHRzdHJ1Y3QgZGFtb3MgKnMpO1xubW0vZGFtb24vb3BzLWNvbW1vbi5oOjE3OmludCBkYW1vbl9ob3Rfc2NvcmUoc3RydWN0IGRhbW9uX2N0eCAqYywgc3RydWN0IGRhbW9uX3JlZ2lvbiAqcixcbm1tL2RhbW9uL29wcy1jb21tb24uaC0xOC1cdFx0XHRzdHJ1Y3QgZGFtb3MgKnMpO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jPTEwPURFRklORV9NVVRFWChkYW1vbl9zeXNmc19sb2NrKTtcbi0tXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy0xNS1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jOjE2OnN0cnVjdCBkYW1vbl9zeXNmc191bF9yYW5nZSAqZGFtb25fc3lzZnNfdWxfcmFuZ2VfYWxsb2MoXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy0xNy1cdFx0dW5zaWduZWQgbG9uZyBtaW4sXG4tLVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM9NjU9c3RhdGljIHNzaXplX3QgbWF4X3N0b3JlKHN0cnVjdCBrb2JqZWN0ICprb2JqLCBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgKmF0dHIsXG4tLVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmMtODAtXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYzo4MTp2b2lkIGRhbW9uX3N5c2ZzX3VsX3JhbmdlX3JlbGVhc2Uoc3RydWN0IGtvYmplY3QgKmtvYmopXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy04Mi17XG4tLVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM9MTA2PXN0YXRpYyBib29sIGRhbW9uX3N5c2ZzX21lbWNnX3BhdGhfZXEoc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnLFxuLS1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTExNi1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jOjExNzppbnQgZGFtb25fc3lzZnNfbWVtY2dfcGF0aF90b19pZChjaGFyICptZW1jZ19wYXRoLCB1NjQgKmlkKVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmMtMTE4LXtcbi0tXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaD05PWV4dGVybiBzdHJ1Y3QgbXV0ZXggZGFtb25fc3lzZnNfbG9jaztcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTEwLVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6MTE6c3RydWN0IGRhbW9uX3N5c2ZzX3VsX3JhbmdlIHtcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTEyLVx0c3RydWN0IGtvYmplY3Qga29iajtcbi0tXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC0xNi1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oOjE3OnN0cnVjdCBkYW1vbl9zeXNmc191bF9yYW5nZSAqZGFtb25fc3lzZnNfdWxfcmFuZ2VfYWxsb2MoXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC0xOC1cdFx0dW5zaWduZWQgbG9uZyBtaW4sXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC0xOS1cdFx0dW5zaWduZWQgbG9uZyBtYXgpO1xubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6MjA6dm9pZCBkYW1vbl9zeXNmc191bF9yYW5nZV9yZWxlYXNlKHN0cnVjdCBrb2JqZWN0ICprb2JqKTtcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTIxLVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg9MjI9ZXh0ZXJuIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfdWxfcmFuZ2Vfa3R5cGU7XG4tLVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtMjctXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaDoyODpzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lcyB7XG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC0yOS1cdHN0cnVjdCBrb2JqZWN0IGtvYmo7XG4tLVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtMzMtXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaDozNDpzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lcyAqZGFtb25fc3lzZnNfc2NoZW1lc19hbGxvYyh2b2lkKTtcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oOjM1OnZvaWQgZGFtb25fc3lzZnNfc2NoZW1lc19ybV9kaXJzKHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVzICpzY2hlbWVzKTtcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTM2LVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg9Mzc9ZXh0ZXJuIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfc2NoZW1lc19rdHlwZTtcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTM4LVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6Mzk6aW50IGRhbW9uX3N5c2ZzX2FkZF9zY2hlbWVzKHN0cnVjdCBkYW1vbl9jdHggKmN0eCxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTQwLVx0XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lcyAqc3lzZnNfc2NoZW1lcyk7XG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC00MS1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oOjQyOnZvaWQgZGFtb25fc3lzZnNfc2NoZW1lc191cGRhdGVfc3RhdHMoXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC00My1cdFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZXMgKnN5c2ZzX3NjaGVtZXMsXG4tLVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg9NDY9dm9pZCBkYW1vc19zeXNmc19wb3B1bGF0ZV9yZWdpb25fZGlyKHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVzICpzeXNmc19zY2hlbWVzLFxuLS1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTUwLVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6NTE6aW50IGRhbW9uX3N5c2ZzX3NjaGVtZXNfY2xlYXJfcmVnaW9ucyhcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTUyLVx0XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lcyAqc3lzZnNfc2NoZW1lcyk7XG4tLVxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg9NTc9dm9pZCBkYW1vc19zeXNmc191cGRhdGVfZWZmZWN0aXZlX3F1b3Rhcyhcbi0tXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC02MC1cbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oOjYxOmludCBkYW1vbl9zeXNmc19tZW1jZ19wYXRoX3RvX2lkKGNoYXIgKm1lbWNnX3BhdGgsIHU2NCAqaWQpO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0xNDE9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb3Nfc3lzZnNfcHJvYmVzX2t0eXBlID0ge1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNDktXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTUwOnN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uIHtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNTEtXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0yODc9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbl9rdHlwZSA9IHtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjk2LVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjI5NzpzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbnMge1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTI5OC1cdHN0cnVjdCBrb2JqZWN0IGtvYmo7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTM1Nj1zdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uc19rdHlwZSA9IHtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzY1LVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjM2NjpzdHJ1Y3QgZGFtb25fc3lzZnNfc3RhdHMge1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTM2Ny1cdHN0cnVjdCBrb2JqZWN0IGtvYmo7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTUyMz1lbnVtIGRhbW9zX3N5c2ZzX2ZpbHRlcl9oYW5kbGVfbGF5ZXIge1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy01MjgtXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NTI5OnN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfZmlsdGVyIHtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy01MzAtXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz04ODI9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlcl9rdHlwZSA9IHtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtODkxLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjg5MjpzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlcnMge1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTg5My1cdHN0cnVjdCBrb2JqZWN0IGtvYmo7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTEwMTA9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlcnNfa3R5cGUgPSB7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEwMTktXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTAyMDpzdHJ1Y3QgZGFtb25fc3lzZnNfd2F0ZXJtYXJrcyB7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTAyMS1cdHN0cnVjdCBrb2JqZWN0IGtvYmo7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTE1NjQ9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb3Nfc3lzZnNfcXVvdGFfZ29hbHNfa3R5cGUgPSB7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE1NzMtXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTU3NDpzdHJ1Y3QgZGFtb25fc3lzZnNfd2VpZ2h0cyB7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTU3NS1cdHN0cnVjdCBrb2JqZWN0IGtvYmo7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTE2NzQ9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfd2VpZ2h0c19rdHlwZSA9IHtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTY4My1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNjg0OnN0cnVjdCBkYW1vbl9zeXNmc19xdW90YXMge1xubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE2ODUtXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0xOTQ5PXN0YXRpYyBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9uX3N5c2ZzX3F1b3Rhc19rdHlwZSA9IHtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTk1OC1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxOTU5OnN0cnVjdCBkYW1vbl9zeXNmc19hY2Nlc3NfcGF0dGVybiB7XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTk2MC1cdHN0cnVjdCBrb2JqZWN0IGtvYmo7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTE5NjY9c3RhdGljXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTk2NzpzdHJ1Y3QgZGFtb25fc3lzZnNfYWNjZXNzX3BhdHRlcm4gKmRhbW9uX3N5c2ZzX2FjY2Vzc19wYXR0ZXJuX2FsbG9jKHZvaWQpXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTk2OC17XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTIyNDQ9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb3Nfc3lzZnNfZGVzdHNfa3R5cGUgPSB7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTIyNTMtXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MjI1NDpzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lIHtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yMjU1LVx0c3RydWN0IGtvYmplY3Qga29iajtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MjY3ND1zdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vbl9zeXNmc19zY2hlbWVfa3R5cGUgPSB7XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTI2ODMtXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MjY4NDpzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lcyAqZGFtb25fc3lzZnNfc2NoZW1lc19hbGxvYyh2b2lkKVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTI2ODUte1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yNjg4LVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjI2ODk6dm9pZCBkYW1vbl9zeXNmc19zY2hlbWVzX3JtX2RpcnMoc3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZXMgKnNjaGVtZXMpXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjY5MC17XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTI5NzQ9c3RhdGljIHN0cnVjdCBkYW1vcyAqZGFtb25fc3lzZnNfbWtfc2NoZW1lKFxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zMDQ3LVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjMwNDg6aW50IGRhbW9uX3N5c2ZzX2FkZF9zY2hlbWVzKHN0cnVjdCBkYW1vbl9jdHggKmN0eCxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zMDQ5LVx0XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lcyAqc3lzZnNfc2NoZW1lcylcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzA2Ni1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzozMDY3OnZvaWQgZGFtb25fc3lzZnNfc2NoZW1lc191cGRhdGVfc3RhdHMoXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzA2OC1cdFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZXMgKnN5c2ZzX3NjaGVtZXMsXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTMxMDU9dm9pZCBkYW1vc19zeXNmc19wb3B1bGF0ZV9yZWdpb25fZGlyKHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVzICpzeXNmc19zY2hlbWVzLFxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zMTUxLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjMxNTI6aW50IGRhbW9uX3N5c2ZzX3NjaGVtZXNfY2xlYXJfcmVnaW9ucyhcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zMTUzLVx0XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lcyAqc3lzZnNfc2NoZW1lcylcbi0tXG5tbS9kYW1vbi9zeXNmcy5jLTE0LVxubW0vZGFtb24vc3lzZnMuYzoxNTpzdHJ1Y3QgZGFtb25fc3lzZnNfcmVnaW9uIHtcbm1tL2RhbW9uL3N5c2ZzLmMtMTYtXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLmM9ODE9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfcmVnaW9uX2t0eXBlID0ge1xuLS1cbm1tL2RhbW9uL3N5c2ZzLmMtOTAtXG5tbS9kYW1vbi9zeXNmcy5jOjkxOnN0cnVjdCBkYW1vbl9zeXNmc19yZWdpb25zIHtcbm1tL2RhbW9uL3N5c2ZzLmMtOTItXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLmM9MjAwPXN0YXRpYyBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9uX3N5c2ZzX3JlZ2lvbnNfa3R5cGUgPSB7XG4tLVxubW0vZGFtb24vc3lzZnMuYy0yMDktXG5tbS9kYW1vbi9zeXNmcy5jOjIxMDpzdHJ1Y3QgZGFtb25fc3lzZnNfdGFyZ2V0IHtcbm1tL2RhbW9uL3N5c2ZzLmMtMjExLVx0c3RydWN0IGtvYmplY3Qga29iajtcbi0tXG5tbS9kYW1vbi9zeXNmcy5jPTMwNz1zdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vbl9zeXNmc190YXJnZXRfa3R5cGUgPSB7XG4tLVxubW0vZGFtb24vc3lzZnMuYy0zMTYtXG5tbS9kYW1vbi9zeXNmcy5jOjMxNzpzdHJ1Y3QgZGFtb25fc3lzZnNfdGFyZ2V0cyB7XG5tbS9kYW1vbi9zeXNmcy5jLTMxOC1cdHN0cnVjdCBrb2JqZWN0IGtvYmo7XG4tLVxubW0vZGFtb24vc3lzZnMuYz00MzU9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfdGFyZ2V0c19rdHlwZSA9IHtcbi0tXG5tbS9kYW1vbi9zeXNmcy5jLTQ0NC1cbm1tL2RhbW9uL3N5c2ZzLmM6NDQ1OnN0cnVjdCBkYW1vbl9zeXNmc19pbnRlcnZhbHNfZ29hbCB7XG5tbS9kYW1vbi9zeXNmcy5jLTQ0Ni1cdHN0cnVjdCBrb2JqZWN0IGtvYmo7XG4tLVxubW0vZGFtb24vc3lzZnMuYz01OTI9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfaW50ZXJ2YWxzX2dvYWxfa3R5cGUgPSB7XG4tLVxubW0vZGFtb24vc3lzZnMuYy02MDEtXG5tbS9kYW1vbi9zeXNmcy5jOjYwMjpzdHJ1Y3QgZGFtb25fc3lzZnNfaW50ZXJ2YWxzIHtcbm1tL2RhbW9uL3N5c2ZzLmMtNjAzLVx0c3RydWN0IGtvYmplY3Qga29iajtcbi0tXG5tbS9kYW1vbi9zeXNmcy5jPTc0Nj1zdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vbl9zeXNmc19pbnRlcnZhbHNfa3R5cGUgPSB7XG4tLVxubW0vZGFtb24vc3lzZnMuYy03NTUtXG5tbS9kYW1vbi9zeXNmcy5jOjc1NjpzdHJ1Y3QgZGFtb25fc3lzZnNfcHJlcCB7XG5tbS9kYW1vbi9zeXNmcy5jLTc1Ny1cdHN0cnVjdCBrb2JqZWN0IGtvYmo7XG4tLVxubW0vZGFtb24vc3lzZnMuYz03NjE9c3RhdGljIHN0cnVjdCBkYW1vbl9zeXNmc19wcmVwICpkYW1vbl9zeXNmc19wcmVwX2FsbG9jKHZvaWQpXG4tLVxubW0vZGFtb24vc3lzZnMuYy03NzEtXG5tbS9kYW1vbi9zeXNmcy5jOjc3MjpzdHJ1Y3QgZGFtb25fc3lzZnNfcHJlcF9hY3Rpb25fbmFtZSB7XG5tbS9kYW1vbi9zeXNmcy5jLTc3My1cdGNvbnN0IGVudW0gZGFtb25fcHJlcF9hY3Rpb24gYWN0aW9uO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLmM9ODQzPXN0YXRpYyBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9uX3N5c2ZzX3ByZXBfa3R5cGUgPSB7XG4tLVxubW0vZGFtb24vc3lzZnMuYy04NTItXG5tbS9kYW1vbi9zeXNmcy5jOjg1MzpzdHJ1Y3QgZGFtb25fc3lzZnNfcHJlcHMge1xubW0vZGFtb24vc3lzZnMuYy04NTQtXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLmM9OTYyPXN0YXRpYyBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9uX3N5c2ZzX3ByZXBzX2t0eXBlID0ge1xuLS1cbm1tL2RhbW9uL3N5c2ZzLmMtOTcxLVxubW0vZGFtb24vc3lzZnMuYzo5NzI6c3RydWN0IGRhbW9uX3N5c2ZzX2ZpbHRlciB7XG5tbS9kYW1vbi9zeXNmcy5jLTk3My1cdHN0cnVjdCBrb2JqZWN0IGtvYmo7XG4tLVxubW0vZGFtb24vc3lzZnMuYz05ODA9c3RhdGljIHN0cnVjdCBkYW1vbl9zeXNmc19maWx0ZXIgKmRhbW9uX3N5c2ZzX2ZpbHRlcl9hbGxvYyh2b2lkKVxuLS1cbm1tL2RhbW9uL3N5c2ZzLmMtOTg0LVxubW0vZGFtb24vc3lzZnMuYzo5ODU6c3RydWN0IGRhbW9uX3N5c2ZzX2ZpbHRlcl90eXBlX25hbWUge1xubW0vZGFtb24vc3lzZnMuYy05ODYtXHRlbnVtIGRhbW9uX2ZpbHRlcl90eXBlIHR5cGU7XG4tLVxubW0vZGFtb24vc3lzZnMuYz0xMTU2PXN0YXRpYyBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9uX3N5c2ZzX2ZpbHRlcl9rdHlwZSA9IHtcbi0tXG5tbS9kYW1vbi9zeXNmcy5jLTExNjUtXG5tbS9kYW1vbi9zeXNmcy5jOjExNjY6c3RydWN0IGRhbW9uX3N5c2ZzX2ZpbHRlcnMge1xubW0vZGFtb24vc3lzZnMuYy0xMTY3LVx0c3RydWN0IGtvYmplY3Qga29iajtcbi0tXG5tbS9kYW1vbi9zeXNmcy5jPTEyNzU9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfZmlsdGVyc19rdHlwZSA9IHtcbi0tXG5tbS9kYW1vbi9zeXNmcy5jLTEyODQtXG5tbS9kYW1vbi9zeXNmcy5jOjEyODU6c3RydWN0IGRhbW9uX3N5c2ZzX3Byb2JlIHtcbm1tL2RhbW9uL3N5c2ZzLmMtMTI4Ni1cdHN0cnVjdCBrb2JqZWN0IGtvYmo7XG4tLVxubW0vZGFtb24vc3lzZnMuYz0xMzgyPXN0YXRpYyBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9uX3N5c2ZzX3Byb2JlX2t0eXBlID0ge1xuLS1cbm1tL2RhbW9uL3N5c2ZzLmMtMTM5MS1cbm1tL2RhbW9uL3N5c2ZzLmM6MTM5MjpzdHJ1Y3QgZGFtb25fc3lzZnNfcHJvYmVzIHtcbm1tL2RhbW9uL3N5c2ZzLmMtMTM5My1cdHN0cnVjdCBrb2JqZWN0IGtvYmo7XG4tLVxubW0vZGFtb24vc3lzZnMuYz0xNTExPXN0YXRpYyBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9uX3N5c2ZzX3Byb2Jlc19rdHlwZSA9IHtcbi0tXG5tbS9kYW1vbi9zeXNmcy5jLTE1MjAtXG5tbS9kYW1vbi9zeXNmcy5jOjE1MjE6c3RydWN0IGRhbW9uX3N5c2ZzX2F0dHJzIHtcbm1tL2RhbW9uL3N5c2ZzLmMtMTUyMi1cdHN0cnVjdCBrb2JqZWN0IGtvYmo7XG4tLVxubW0vZGFtb24vc3lzZnMuYz0xNjE3PXN0YXRpYyBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9uX3N5c2ZzX2F0dHJzX2t0eXBlID0ge1xuLS1cbm1tL2RhbW9uL3N5c2ZzLmMtMTYyNi1cbm1tL2RhbW9uL3N5c2ZzLmM6MTYyNzpzdHJ1Y3QgZGFtb25fc3lzZnNfb3BzX25hbWUge1xubW0vZGFtb24vc3lzZnMuYy0xNjI4LVx0ZW51bSBkYW1vbl9vcHNfaWQgb3BzX2lkO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLmM9MTYzMj1zdGF0aWMgY29uc3Qgc3RydWN0IGRhbW9uX3N5c2ZzX29wc19uYW1lIGRhbW9uX3N5c2ZzX29wc19uYW1lc1tdID0ge1xuLS1cbm1tL2RhbW9uL3N5c2ZzLmMtMTY0Ni1cbm1tL2RhbW9uL3N5c2ZzLmM6MTY0NzpzdHJ1Y3QgZGFtb25fc3lzZnNfY29udGV4dCB7XG5tbS9kYW1vbi9zeXNmcy5jLTE2NDgtXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLmM9MTg5Mz1zdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vbl9zeXNmc19jb250ZXh0X2t0eXBlID0ge1xuLS1cbm1tL2RhbW9uL3N5c2ZzLmMtMTkwMi1cbm1tL2RhbW9uL3N5c2ZzLmM6MTkwMzpzdHJ1Y3QgZGFtb25fc3lzZnNfY29udGV4dHMge1xubW0vZGFtb24vc3lzZnMuYy0xOTA0LVx0c3RydWN0IGtvYmplY3Qga29iajtcbi0tXG5tbS9kYW1vbi9zeXNmcy5jPTIwMjI9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfY29udGV4dHNfa3R5cGUgPSB7XG4tLVxubW0vZGFtb24vc3lzZnMuYy0yMDMxLVxubW0vZGFtb24vc3lzZnMuYzoyMDMyOnN0cnVjdCBkYW1vbl9zeXNmc19rZGFtb25kIHtcbm1tL2RhbW9uL3N5c2ZzLmMtMjAzMy1cdHN0cnVjdCBrb2JqZWN0IGtvYmo7XG4tLVxubW0vZGFtb24vc3lzZnMuYz0yNTY5PXN0YXRpYyBpbnQgZGFtb25fc3lzZnNfZGFtb25fY2FsbChpbnQgKCpmbikodm9pZCAqZGF0YSksXG4tLVxubW0vZGFtb24vc3lzZnMuYy0yNTgyLVxubW0vZGFtb24vc3lzZnMuYzoyNTgzOnN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVzX3dhbGtfZGF0YSB7XG5tbS9kYW1vbi9zeXNmcy5jLTI1ODQtXHRzdHJ1Y3QgZGFtb25fc3lzZnNfa2RhbW9uZCAqc3lzZnNfa2RhbW9uZDtcbi0tXG5tbS9kYW1vbi9zeXNmcy5jPTI3Njc9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfa2RhbW9uZF9rdHlwZSA9IHtcbi0tXG5tbS9kYW1vbi9zeXNmcy5jLTI3NzYtXG5tbS9kYW1vbi9zeXNmcy5jOjI3Nzc6c3RydWN0IGRhbW9uX3N5c2ZzX2tkYW1vbmRzIHtcbm1tL2RhbW9uL3N5c2ZzLmMtMjc3OC1cdHN0cnVjdCBrb2JqZWN0IGtvYmo7XG4tLVxubW0vZGFtb24vc3lzZnMuYz0yOTEyPXN0YXRpYyBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9uX3N5c2ZzX2tkYW1vbmRzX2t0eXBlID0ge1xuLS1cbm1tL2RhbW9uL3N5c2ZzLmMtMjkyMS1cbm1tL2RhbW9uL3N5c2ZzLmM6MjkyMjpzdHJ1Y3QgZGFtb25fc3lzZnNfdWlfZGlyIHtcbm1tL2RhbW9uL3N5c2ZzLmMtMjkyMy1cdHN0cnVjdCBrb2JqZWN0IGtvYmo7XG4tLVxubW0vZGFtb24vdmFkZHIuYz0zNjk9c3RhdGljIHZvaWQgZGFtb25fdmFfcHJlcGFyZV9hY2Nlc3NfY2hlY2tzKHN0cnVjdCBkYW1vbl9jdHggKmN0eClcbi0tXG5tbS9kYW1vbi92YWRkci5jLTM4NC1cbm1tL2RhbW9uL3ZhZGRyLmM6Mzg1OnN0cnVjdCBkYW1vbl95b3VuZ193YWxrX3ByaXZhdGUge1xubW0vZGFtb24vdmFkZHIuYy0zODYtXHRib29sIHlvdW5nO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAwMDozNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MjgwMQoJCQkJCQkJb3V0cHV0OiAyMjAKCQkJCQkJCXRob3VnaHRzOiAzMzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiBUaGlzIERBTU9OIFBhdGNoKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgREFNT1MsIHdoaWNoIGFzIEkgcmVjYWxsLCBpcyB0aGUgc2V0IG9mIERBTU9OLWJhc2VkIE9wZXJhdGlvbiBTY2hlbWVzIHdpdGhpbiBEQU1PTiBpdHNlbGYuIFdlIG5lZWQgdG8gYmUgc3VyZSB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb25zIGFyZSBzZXQ6IGBEQU1PTmAsIGBEQU1PTl9QQUREUmAgb3IgYERBTU9OX1ZBRERSYCwgYERBTU9OX1NZU0ZTYCwgYW5kIGBTWVNGU2AuIFRob3NlIGFyZSB0aGUgY29yZSBidWlsZGluZyBibG9ja3MgZm9yIHRoaXMgdG8gZXZlbiAqZnVuY3Rpb24qLgoKSSBzZWUgd2UmIzM5O3JlIGZvY3VzZWQgb24gdGhlc2Ugc3ltYm9sczogYGRhbW9uX3N0YXJ0YCwgYGRhbW9uX2NvbW1pdF9jdHhgLCBgZGFtb25fc3lzZnNfYWRkX3NjaGVtZXNgLCBgZGFtb25fc2V0X3NjaGVtZXNgLCBgZGFtb25fbmV3X3NjaGVtZWAsIGFuZCBgZGFtb25fYWRkX3NjaGVtZWAuIENsZWFybHksIHRoaXMgcGF0Y2ggaXMgZGlnZ2luZyBkZWVwIGludG8gdGhlIGluaXRpYWxpemF0aW9uIGFuZCBzY2hlbWUgbWFuYWdlbWVudCBvZiBEQU1PTi4KCldlIG5lZWQgdG8gdmVyaWZ5IHRoaXMgY2FyZWZ1bGx5LiBJdCBsb29rcyBsaWtlIGl0JiMzOTtzIHdvcnRoIGZ1enppbmcgYW5kIHRob3NlIGFyZSBvdXIgZW5hYmxlZCBjb25maWdzLgoKVGhlIHJlYXNvbmluZyBoZXJlIGlzIGNyaXRpY2FsLiBUaGlzIHBhdGNoIGlzIGNoYW5naW5nIHRoZSBxdW90YSBjaGVjayBsb2dpYyDigJMgc3BlY2lmaWNhbGx5LCBob3cgYGRhbW9zX3F1b3RhX2lzX2Z1bGxgIGFuZCBgZGFtb25fZG9fYXBwbHlfc2NoZW1lc2AgaGFuZGxlIHNpdHVhdGlvbnMgd2hlcmUgdGhlIGNoYXJnZWQgc2l6ZSBvciBlZmZlY3RpdmUgc2l6ZSBpcyB6ZXJvLiBUaGlzIGNvdWxkIGhhdmUgc2lnbmlmaWNhbnQgaW1wbGljYXRpb25zIGZvciBtZW1vcnkgbWFuYWdlbWVudCwgcGFydGljdWxhcmx5IGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB3aGVyZSBEQU1PTiBpcyBvZnRlbiBlbXBsb3llZCB0aHJvdWdoIHRoZSBzeXNmcyBpbnRlcmZhY2UuIFdlJiMzOTtyZSB0YWxraW5nIGFib3V0IHByZXZlbnRpbmcgcHJlbWF0dXJlIHF1b3RhIGV4aGF1c3Rpb24gYW5kIGVuc3VyaW5nIHRoZSBzY2hlbWVzIGFyZSBhcHBsaWVkICpjb3JyZWN0bHkqIG5vdy4gVGhpcyBkaXJlY3RseSBpbXBhY3RzIHRoZSBjb3JlIGxvZ2ljIG9mIHNjaGVtZSBhcHBsaWNhdGlvbiBhbmQgbWVtb3J5IG1hbmFnZW1lbnQgd2l0aGluIERBTU9OLgoKQWxyaWdodCwgSSYjMzk7bSByZWFkeSB0byBgc2V0LXJlc3VsdHNgLiBJIG5lZWQgYSBkZWVwZXIgZGl2ZSBpbnRvIHRoZXNlIHNjaGVtZSBhcHBsaWNhdGlvbiBjaGFuZ2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAwMDozNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7REFNT04mIzM0OywKICAgICYjMzQ7REFNT05fU1lTRlMmIzM0OywKICAgICYjMzQ7REFNT05fUEFERFImIzM0OywKICAgICYjMzQ7REFNT05fVkFERFImIzM0OywKICAgICYjMzQ7U1lTRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkYW1vbl9zdGFydCYjMzQ7LAogICAgJiMzNDtkYW1vbl9jb21taXRfY3R4JiMzNDssCiAgICAmIzM0O2RhbW9uX3N5c2ZzX2FkZF9zY2hlbWVzJiMzNDssCiAgICAmIzM0O2RhbW9uX3NldF9zY2hlbWVzJiMzNDssCiAgICAmIzM0O2RhbW9uX25ld19zY2hlbWUmIzM0OywKICAgICYjMzQ7ZGFtb25fYWRkX3NjaGVtZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCB1cGRhdGVzIERBTU9OIE9wZXJhdGlvbiBTY2hlbWVzIChEQU1PUykgcXVvdGEgaGFuZGxpbmcgbG9naWMgd2l0aGluIG1tL2RhbW9uL2NvcmUuYyAoc3BlY2lmaWNhbGx5IGluIGRhbW9zX3F1b3RhX2lzX2Z1bGwgYW5kIGRhbW9uX2RvX2FwcGx5X3NjaGVtZXMpIHNvIHRoYXQgc2NoZW1lcyBhcmUgbm90IGluY29ycmVjdGx5IGNvbnNpZGVyZWQgZnVsbCB3aGVuIG5vIHF1b3RhIGhhcyBiZWVuIGNoYXJnZWQgeWV0LCBhbmQgZW1wdHkgcXVvdGFzIChlc3ogPT0gMCkgYXJlIHNraXBwZWQgcHJvcGVybHkuIFRoaXMgZnVuY3Rpb25hbGx5IGFmZmVjdHMgREFNT04gc2NoZW1lIGV2YWx1YXRpb24gYW5kIGNhbiBiZSB0ZXN0ZWQvZXhlcmNpc2VkIHZpYSB0aGUgREFNT04gc3lzZnMgaW50ZXJmYWNlIGluIHZpcnR1YWxpemVkIHRlc3QgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtEQU1PTiYjMzQ7LAogICAgJiMzNDtEQU1PTl9TWVNGUyYjMzQ7LAogICAgJiMzNDtEQU1PTl9QQUREUiYjMzQ7LAogICAgJiMzNDtEQU1PTl9WQUREUiYjMzQ7LAogICAgJiMzNDtTWVNGUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2RhbW9uX3N0YXJ0JiMzNDssCiAgICAmIzM0O2RhbW9uX2NvbW1pdF9jdHgmIzM0OywKICAgICYjMzQ7ZGFtb25fc3lzZnNfYWRkX3NjaGVtZXMmIzM0OywKICAgICYjMzQ7ZGFtb25fc2V0X3NjaGVtZXMmIzM0OywKICAgICYjMzQ7ZGFtb25fbmV3X3NjaGVtZSYjMzQ7LAogICAgJiMzNDtkYW1vbl9hZGRfc2NoZW1lJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHVwZGF0ZXMgREFNT04gT3BlcmF0aW9uIFNjaGVtZXMgKERBTU9TKSBxdW90YSBoYW5kbGluZyBsb2dpYyB3aXRoaW4gbW0vZGFtb24vY29yZS5jIChzcGVjaWZpY2FsbHkgaW4gZGFtb3NfcXVvdGFfaXNfZnVsbCBhbmQgZGFtb25fZG9fYXBwbHlfc2NoZW1lcykgc28gdGhhdCBzY2hlbWVzIGFyZSBub3QgaW5jb3JyZWN0bHkgY29uc2lkZXJlZCBmdWxsIHdoZW4gbm8gcXVvdGEgaGFzIGJlZW4gY2hhcmdlZCB5ZXQsIGFuZCBlbXB0eSBxdW90YXMgKGVzeiA9PSAwKSBhcmUgc2tpcHBlZCBwcm9wZXJseS4gVGhpcyBmdW5jdGlvbmFsbHkgYWZmZWN0cyBEQU1PTiBzY2hlbWUgZXZhbHVhdGlvbiBhbmQgY2FuIGJlIHRlc3RlZC9leGVyY2lzZWQgdmlhIHRoZSBEQU1PTiBzeXNmcyBpbnRlcmZhY2UgaW4gdmlydHVhbGl6ZWQgdGVzdCBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDAwOjM0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDMgMDA6MzQ8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBxdW90YSBjaGVja2luZyBsb2dpYyBpbiBEQU1PTiAobW0vZGFtb24vY29yZS5jKSBieSBhZGRpbmcgZWFybHkgcmV0dXJuL2NvbnRpbnVlIGNoZWNrcyB3aGVuIHF1b3RhLVx1MDAzZWNoYXJnZWRfc3ogaXMgMCBpbiBkYW1vc19xdW90YV9pc19mdWxsKCkgYW5kIHdoZW4gcXVvdGEtXHUwMDNlZXN6IGlzIDAgaW4gZGFtb25fZG9fYXBwbHlfc2NoZW1lcygpLiBUaGVzZSBjaGFuZ2VzIHB1cmVseSBhZmZlY3QgaW50ZXJuYWwgY29udHJvbCBmbG93IGFuZCBhY2NvdW50aW5nIGluIERBTU9OLiBObyBuZXcgYWxsb2NhdGlvbnMsIHN0YWNrL2hlYXAgYnVmZmVycywgb3IgY29waWVzIHRvIHVzZXIgc3BhY2UgYXJlIGludHJvZHVjZWQsIG5vciBpcyB0aGVyZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcyBvciBpbmZvcm1hdGlvbiBsZWFrcy4gVGhlcmVmb3JlLCBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBpcyBub3QgcmVxdWlyZWQgYW5kIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcgaXMgc3VmZmljaWVudC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYTkyZjhmYjA1MDZiNDRkMDI1MGQ3NDkyOWMxNTU1Yzk0NGM0OTMyYQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgU2VwIDMgMDA6MzM6MjMgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9tbS9kYW1vbi9jb3JlLmMgYi9tbS9kYW1vbi9jb3JlLmMKaW5kZXggZGYyMjYyMTc2NTkxMS4uZjhjNzg0ZGYyNDYwMCAxMDA2NDQKLS0tIGEvbW0vZGFtb24vY29yZS5jCiYjNDM7JiM0MzsmIzQzOyBiL21tL2RhbW9uL2NvcmUuYwpAQCAtMjY1NSw2ICYjNDM7MjY1NSw4IEBAIHN0YXRpYyBib29sIGRhbW9zX3F1b3RhX2lzX2Z1bGwoc3RydWN0IGRhbW9zX3F1b3RhICpxdW90YSwKIHsKIAlpZiAoIWRhbW9zX3F1b3RhX2lzX3NldChxdW90YSkpCiAJCXJldHVybiBmYWxzZTsKJiM0MzsJaWYgKCFxdW90YS0mZ3Q7Y2hhcmdlZF9zeikKJiM0MzsJCXJldHVybiBmYWxzZTsKIAlpZiAocXVvdGEtJmd0O2NoYXJnZWRfc3ogJmd0Oz0gcXVvdGEtJmd0O2VzeikKIAkJcmV0dXJuIHRydWU7CiAJLyoKQEAgLTI3NTAsNiAmIzQzOzI3NTIsOSBAQCBzdGF0aWMgdm9pZCBkYW1vbl9kb19hcHBseV9zY2hlbWVzKHN0cnVjdCBkYW1vbl9jdHggKmMsCiAJCWlmICghcy0mZ3Q7d21hcmtzLmFjdGl2YXRlZCkKIAkJCWNvbnRpbnVlOwogCiYjNDM7CQlpZiAoIXF1b3RhLSZndDtlc3opCiYjNDM7CQkJY29udGludWU7CiYjNDM7CiAJCS8qIENoZWNrIHRoZSBxdW90YSAqLwogCQlpZiAoZGFtb3NfcXVvdGFfaXNfZnVsbChxdW90YSwgYy0mZ3Q7bWluX3JlZ2lvbl9zeikpCiAJCQljb250aW51ZTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDAwOjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxNTkKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiA0OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIERBTU9OIFBhdGNoKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gTXkgZmlyc3QgbW92ZSBpcyBhbHdheXMgdG8gZ2V0IGEgc29saWQgZ3Jhc3Agb2YgdGhlIHN1cnJvdW5kaW5nIGNvbnRleHQuIFNvLCBJJiMzOTttIGdvaW5nIHRvIHB1bGwgdXAgdGhlIGBtbS9kYW1vbi9jb3JlLmNgIGZpbGUgYW5kIHN0YXJ0IGJ5IGdldHRpbmcgYSBicm9hZCB2aWV3IHdpdGggYHJlYWQtZmlsZWAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb2RlYmFzZSBhcm91bmQgdGhlIHBhdGNoIGJlZm9yZSBJIHN0YXJ0IHRvIHBhcnNlIHRoZSBzcGVjaWZpYyBjaGFuZ2VzLiBUaGF0IGdpdmVzIG1lIHRoZSBuZWNlc3NhcnkgZm91bmRhdGlvbiB0byBlZmZlY3RpdmVseSBjcml0aXF1ZSB0aGlzIHdvcmsuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDAwOjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bW0vZGFtb24vY29yZS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjY0NSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MjY0NTpcdFx0XHRxdW90YS1cdTAwM2VjaGFyZ2VkX3N6ICYjNDM7PSBzel9yZWdpb247XG4yNjQ2Olx0XHRlbHNlXG4yNjQ3Olx0XHRcdHF1b3RhLVx1MDAzZWNoYXJnZWRfc3ogJiM0Mzs9IHN6X2FwcGxpZWQgJiM0MzsgbXVsdF9mcmFjKFxuMjY0ODpcdFx0XHRcdFx0KHN6X3JlZ2lvbiAtIHN6X2FwcGxpZWQpLFxuMjY0OTpcdFx0XHRcdFx0cXVvdGEtXHUwMDNlZmFpbF9jaGFyZ2VfbnVtLFxuMjY1MDpcdFx0XHRcdFx0cXVvdGEtXHUwMDNlZmFpbF9jaGFyZ2VfZGVub20pO1xuMjY1MTpcdH1cbjI2NTI6XHRcbjI2NTM6XHRzdGF0aWMgYm9vbCBkYW1vc19xdW90YV9pc19mdWxsKHN0cnVjdCBkYW1vc19xdW90YSAqcXVvdGEsXG4yNjU0Olx0XHRcdHVuc2lnbmVkIGxvbmcgbWluX3JlZ2lvbl9zeilcbjI2NTU6XHR7XG4yNjU2Olx0XHRpZiAoIWRhbW9zX3F1b3RhX2lzX3NldChxdW90YSkpXG4yNjU3Olx0XHRcdHJldHVybiBmYWxzZTtcbjI2NTg6XHRcdGlmICghcXVvdGEtXHUwMDNlY2hhcmdlZF9zeilcbjI2NTk6XHRcdFx0cmV0dXJuIGZhbHNlO1xuMjY2MDpcdFx0aWYgKHF1b3RhLVx1MDAzZWNoYXJnZWRfc3ogXHUwMDNlPSBxdW90YS1cdTAwM2Vlc3opXG4yNjYxOlx0XHRcdHJldHVybiB0cnVlO1xuMjY2MjpcdFx0LypcbjI2NjM6XHRcdCAqIERBTU9TIGFjdGlvbiBpcyBhcHBsaWVkIHBlciByZWdpb24sIHNvIFx1MDAzY21pbl9yZWdpb25fc3ogcmVtYWluaW5nXG4yNjY0Olx0XHQgKiBxdW90YSBtZWFucyB0aGUgcXVvdGEgaXMgZWZmZWN0aXZlbHkgZnVsbC5cbjI2NjU6XHRcdCAqL1xuMjY2NjpcdFx0cmV0dXJuIHF1b3RhLVx1MDAzZWVzeiAtIHF1b3RhLVx1MDAzZWNoYXJnZWRfc3ogXHUwMDNjIG1pbl9yZWdpb25fc3o7XG4yNjY3Olx0fVxuMjY2ODpcdFxuMjY2OTpcdHN0YXRpYyB2b2lkIGRhbW9zX2FwcGx5X3NjaGVtZShzdHJ1Y3QgZGFtb25fY3R4ICpjLCBzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0LFxuMjY3MDpcdFx0XHRzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLCBzdHJ1Y3QgZGFtb3MgKnMpXG4yNjcxOlx0e1xuMjY3MjpcdFx0c3RydWN0IGRhbW9zX3F1b3RhICpxdW90YSA9IFx1MDAyNnMtXHUwMDNlcXVvdGE7XG4yNjczOlx0XHR1bnNpZ25lZCBsb25nIHN6ID0gZGFtb25fc3pfcmVnaW9uKHIpO1xuMjY3NDpcdFx0c3RydWN0IHRpbWVzcGVjNjQgYmVnaW4sIGVuZDtcbjI2NzU6XHRcdHVuc2lnbmVkIGxvbmcgc3pfYXBwbGllZCA9IDA7XG4yNjc2Olx0XHR1bnNpZ25lZCBsb25nIHN6X29wc19maWx0ZXJfcGFzc2VkID0gMDtcbjI2Nzc6XHRcdC8qXG4yNjc4Olx0XHQgKiBXZSBwbGFuIHRvIHN1cHBvcnQgbXVsdGlwbGUgY29udGV4dCBwZXIga2RhbW9uZCwgYXMgREFNT04gc3lzZnNcbjI2Nzk6XHRcdCAqIGltcGxpZXMgd2l0aCAmIzM5O25yX2NvbnRleHRzJiMzOTsgZmlsZS4gIE5ldmVydGhlbGVzcywgb25seSBzaW5nbGUgY29udGV4dFxuMjY4MDpcdFx0ICogcGVyIGtkYW1vbmQgaXMgc3VwcG9ydGVkIGZvciBub3cuICBTbywgd2UgY2FuIHNpbXBseSB1c2UgJiMzOTswJiMzOTsgY29udGV4dFxuMjY4MTpcdFx0ICogaW5kZXggaGVyZS5cbjI2ODI6XHRcdCAqL1xuMjY4MzpcdFx0dW5zaWduZWQgaW50IGNpZHggPSAwO1xuMjY4NDpcdFx0c3RydWN0IGRhbW9zICpzaXRlcjtcdFx0Lyogc2NoZW1lcyBpdGVyYXRvciAqL1xuMjY4NTpcdFx0dW5zaWduZWQgaW50IHNpZHggPSAwO1xuMjY4NjpcdFx0c3RydWN0IGRhbW9uX3RhcmdldCAqdGl0ZXI7XHQvKiB0YXJnZXRzIGl0ZXJhdG9yICovXG4yNjg3Olx0XHR1bnNpZ25lZCBpbnQgdGlkeCA9IDAsIG5yX2FjY2Vzc2VzID0gMDtcbjI2ODg6XHRcdGJvb2wgZG9fdHJhY2UgPSBmYWxzZTtcbjI2ODk6XHRcbjI2OTA6XHRcdC8qIGdldCBpbmRpY2VzIGZvciB0cmFjZV9kYW1vc19iZWZvcmVfYXBwbHkoKSAqL1xuMjY5MTpcdFx0aWYgKHRyYWNlX2RhbW9zX2JlZm9yZV9hcHBseV9lbmFibGVkKCkpIHtcbjI2OTI6XHRcdFx0ZGFtb25fZm9yX2VhY2hfc2NoZW1lKHNpdGVyLCBjKSB7XG4yNjkzOlx0XHRcdFx0aWYgKHNpdGVyID09IHMpXG4yNjk0Olx0XHRcdFx0XHRicmVhaztcbjI2OTU6XHRcdFx0XHRzaWR4JiM0MzsmIzQzOztcbjI2OTY6XHRcdFx0fVxuMjY5NzpcdFx0XHRkYW1vbl9mb3JfZWFjaF90YXJnZXQodGl0ZXIsIGMpIHtcbjI2OTg6XHRcdFx0XHRpZiAodGl0ZXIgPT0gdClcbjI2OTk6XHRcdFx0XHRcdGJyZWFrO1xuMjcwMDpcdFx0XHRcdHRpZHgmIzQzOyYjNDM7O1xuMjcwMTpcdFx0XHR9XG4yNzAyOlx0XHRcdG5yX2FjY2Vzc2VzID0gZGFtb25fbnJfYWNjZXNzZXNfbXZzdW0ociwgYyk7XG4yNzAzOlx0XHRcdGRvX3RyYWNlID0gdHJ1ZTtcbjI3MDQ6XHRcdH1cbjI3MDU6XHRcbjI3MDY6XHRcdGlmIChjLVx1MDAzZW9wcy5hcHBseV9zY2hlbWUpIHtcbjI3MDc6XHRcdFx0aWYgKGRhbW9zX3F1b3RhX2lzX3NldChxdW90YSkgXHUwMDI2XHUwMDI2XG4yNzA4Olx0XHRcdFx0XHRxdW90YS1cdTAwM2VjaGFyZ2VkX3N6ICYjNDM7IHN6IFx1MDAzZSBxdW90YS1cdTAwM2Vlc3opIHtcbjI3MDk6XHRcdFx0XHRzeiA9IEFMSUdOX0RPV04ocXVvdGEtXHUwMDNlZXN6IC0gcXVvdGEtXHUwMDNlY2hhcmdlZF9zeixcbjI3MTA6XHRcdFx0XHRcdFx0Yy1cdTAwM2VtaW5fcmVnaW9uX3N6KTtcbjI3MTE6XHRcdFx0XHRpZiAoIXN6KVxuMjcxMjpcdFx0XHRcdFx0Z290byB1cGRhdGVfc3RhdDtcbjI3MTM6XHRcdFx0XHRpZiAoZGFtb25fc3BsaXRfcmVnaW9uX2F0KHQsIHIsIHN6KSlcbjI3MTQ6XHRcdFx0XHRcdGdvdG8gdXBkYXRlX3N0YXQ7XG4yNzE1Olx0XHRcdH1cbjI3MTY6XHRcdFx0aWYgKGRhbW9zX2NvcmVfZmlsdGVyX291dChjLCB0LCByLCBzKSlcbjI3MTc6XHRcdFx0XHRyZXR1cm47XG4yNzE4Olx0XHRcdGt0aW1lX2dldF9jb2Fyc2VfdHM2NChcdTAwMjZiZWdpbik7XG4yNzE5Olx0XHRcdHRyYWNlX2RhbW9zX2JlZm9yZV9hcHBseShjaWR4LCBzaWR4LCB0aWR4LCByLCBucl9hY2Nlc3NlcyxcbjI3MjA6XHRcdFx0XHRcdGRhbW9uX25yX3JlZ2lvbnModCksIGRvX3RyYWNlKTtcbjI3MjE6XHRcdFx0c3pfYXBwbGllZCA9IGMtXHUwMDNlb3BzLmFwcGx5X3NjaGVtZShjLCB0LCByLCBzLFxuMjcyMjpcdFx0XHRcdFx0XHUwMDI2c3pfb3BzX2ZpbHRlcl9wYXNzZWQpO1xuMjcyMzpcdFx0XHRkYW1vc193YWxrX2NhbGxfd2FsayhjLCB0LCByLCBzLCBzel9vcHNfZmlsdGVyX3Bhc3NlZCk7XG4yNzI0Olx0XHRcdGt0aW1lX2dldF9jb2Fyc2VfdHM2NChcdTAwMjZlbmQpO1xuMjcyNTpcdFx0XHRxdW90YS1cdTAwM2V0b3RhbF9jaGFyZ2VkX25zICYjNDM7PSB0aW1lc3BlYzY0X3RvX25zKFx1MDAyNmVuZCkgLVxuMjcyNjpcdFx0XHRcdHRpbWVzcGVjNjRfdG9fbnMoXHUwMDI2YmVnaW4pO1xuMjcyNzpcdFx0XHRkYW1vc19jaGFyZ2VfcXVvdGEocXVvdGEsIHN6LCBzel9hcHBsaWVkKTtcbjI3Mjg6XHRcdFx0aWYgKGRhbW9zX3F1b3RhX2lzX2Z1bGwocXVvdGEsIGMtXHUwMDNlbWluX3JlZ2lvbl9zeikpIHtcbjI3Mjk6XHRcdFx0XHRxdW90YS1cdTAwM2VjaGFyZ2VfdGFyZ2V0X2Zyb20gPSB0O1xuMjczMDpcdFx0XHRcdHF1b3RhLVx1MDAzZWNoYXJnZV9hZGRyX2Zyb20gPSByLVx1MDAzZWFyLmVuZDtcbjI3MzE6XHRcdFx0fVxuMjczMjpcdFx0fVxuMjczMzpcdFx0aWYgKHMtXHUwMDNlYWN0aW9uICE9IERBTU9TX1NUQVQpXG4yNzM0Olx0XHRcdHItXHUwMDNlYWdlID0gMDtcbjI3MzU6XHRcbjI3MzY6XHR1cGRhdGVfc3RhdDpcbjI3Mzc6XHRcdGRhbW9zX3VwZGF0ZV9zdGF0KHMsIHN6LCBzel9hcHBsaWVkLCBzel9vcHNfZmlsdGVyX3Bhc3NlZCk7XG4yNzM4Olx0fVxuMjczOTpcdFxuMjc0MDpcdHN0YXRpYyB2b2lkIGRhbW9uX2RvX2FwcGx5X3NjaGVtZXMoc3RydWN0IGRhbW9uX2N0eCAqYyxcbjI3NDE6XHRcdFx0XHRcdCAgIHN0cnVjdCBkYW1vbl90YXJnZXQgKnQsXG4yNzQyOlx0XHRcdFx0XHQgICBzdHJ1Y3QgZGFtb25fcmVnaW9uICpyKVxuMjc0MzpcdHtcbjI3NDQ6XHRcdHN0cnVjdCBkYW1vcyAqcztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDMgMDA6MzQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzk3MAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBJJiMzOTttIHJlYWR5IHRvIGRpdmUgaW50byB0aGlzLiBMZXQmIzM5O3Mgc2VlLi4uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByZW1haW5pbmcgcGllY2VzIG9mIHRoZSBgZGFtb25fZG9fYXBwbHlfc2NoZW1lc2AgZnVuY3Rpb24uIEkgYWxyZWFkeSBoYXZlIGEgZ29vZCBncmFzcCBvZiB0aGUgZm91bmRhdGlvbmFsIHBhcnRzIG9mIHRoaXMgc3lzdGVtLCBidXQgSSYjMzk7bSBwcm9iYWJseSBtaXNzaW5nIHNvbWUgY3JpdGljYWwgbnVhbmNlcyB0byBmdWxseSBncm9rIGhvdyBpdCYjMzk7cyBhbGwgd29ya2luZy4gSSYjMzk7bSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gaG93IGl0IGhhbmRsZXMgZWRnZSBjYXNlcyBvciBvcHRpbWl6YXRpb25zLCBhcyB0aG9zZSBhcmUgdXN1YWxseSB0aGUga2V5IHRvIHJlYWxseSB1bmRlcnN0YW5kaW5nIHRoZSBkZXNpZ24gcGhpbG9zb3BoeSBiZWhpbmQgYW4gaW1wbGVtZW50YXRpb24uIEkmIzM5O20gYW50aWNpcGF0aW5nIHRoYXQgdGhlc2UgcmVtYWluaW5nIGNvbXBvbmVudHMgd2lsbCBjbGFyaWZ5IHRoZSBvdmVyYWxsIHB1cnBvc2UgYW5kIGV4cGVjdGVkIG91dGNvbWVzIGZvciB0aGUgZGlmZmVyZW50IG1ldGhvZHMuIFRoaXMgd2lsbCBwcm9iYWJseSB0b3VjaCBvbiB0aGUgaW50ZWdyYXRpb24gd2l0aCB0aGUgbGFyZ2VyIHN5c3RlbS4gVGltZSB0byBkaWcgaW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDAwOjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bW0vZGFtb24vY29yZS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjc0MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsyNzQwOlx0c3RhdGljIHZvaWQgZGFtb25fZG9fYXBwbHlfc2NoZW1lcyhzdHJ1Y3QgZGFtb25fY3R4ICpjLFxuMjc0MTpcdFx0XHRcdFx0ICAgc3RydWN0IGRhbW9uX3RhcmdldCAqdCxcbjI3NDI6XHRcdFx0XHRcdCAgIHN0cnVjdCBkYW1vbl9yZWdpb24gKnIpXG4yNzQzOlx0e1xuMjc0NDpcdFx0c3RydWN0IGRhbW9zICpzO1xuMjc0NTpcdFxuMjc0NjpcdFx0ZGFtb25fZm9yX2VhY2hfc2NoZW1lKHMsIGMpIHtcbjI3NDc6XHRcdFx0c3RydWN0IGRhbW9zX3F1b3RhICpxdW90YSA9IFx1MDAyNnMtXHUwMDNlcXVvdGE7XG4yNzQ4Olx0XG4yNzQ5Olx0XHRcdGlmICh0aW1lX2JlZm9yZShjLVx1MDAzZXBhc3NlZF9zYW1wbGVfaW50ZXJ2YWxzLCBzLVx1MDAzZW5leHRfYXBwbHlfc2lzKSlcbjI3NTA6XHRcdFx0XHRjb250aW51ZTtcbjI3NTE6XHRcbjI3NTI6XHRcdFx0aWYgKCFzLVx1MDAzZXdtYXJrcy5hY3RpdmF0ZWQpXG4yNzUzOlx0XHRcdFx0Y29udGludWU7XG4yNzU0Olx0XG4yNzU1Olx0XHRcdGlmICghcXVvdGEtXHUwMDNlZXN6KVxuMjc1NjpcdFx0XHRcdGNvbnRpbnVlO1xuMjc1NzpcdFxuMjc1ODpcdFx0XHQvKiBDaGVjayB0aGUgcXVvdGEgKi9cbjI3NTk6XHRcdFx0aWYgKGRhbW9zX3F1b3RhX2lzX2Z1bGwocXVvdGEsIGMtXHUwMDNlbWluX3JlZ2lvbl9zeikpXG4yNzYwOlx0XHRcdFx0Y29udGludWU7XG4yNzYxOlx0XG4yNzYyOlx0XHRcdGlmIChkYW1vc19za2lwX2NoYXJnZWRfcmVnaW9uKHQsIHIsIHMsIGMtXHUwMDNlbWluX3JlZ2lvbl9zeikpXG4yNzYzOlx0XHRcdFx0Y29udGludWU7XG4yNzY0Olx0XG4yNzY1Olx0XHRcdGlmIChzLVx1MDAzZW1heF9ucl9zbmFwc2hvdHMgXHUwMDI2XHUwMDI2XG4yNzY2Olx0XHRcdFx0XHRzLVx1MDAzZW1heF9ucl9zbmFwc2hvdHMgXHUwMDNjPSBzLVx1MDAzZXN0YXQubnJfc25hcHNob3RzKVxuMjc2NzpcdFx0XHRcdGNvbnRpbnVlO1xuMjc2ODpcdFxuMjc2OTpcdFx0XHRpZiAoZGFtb3NfdmFsaWRfdGFyZ2V0KGMsIHIsIHMpKVxuMjc3MDpcdFx0XHRcdGRhbW9zX2FwcGx5X3NjaGVtZShjLCB0LCByLCBzKTtcbjI3NzE6XHRcbjI3NzI6XHRcdFx0aWYgKGRhbW9uX2lzX2xhc3RfcmVnaW9uKHIsIHQpKVxuMjc3MzpcdFx0XHRcdHMtXHUwMDNlc3RhdC5ucl9zbmFwc2hvdHMmIzQzOyYjNDM7O1xuMjc3NDpcdFx0fVxuMjc3NTpcdH1cbjI3NzY6XHRcbjI3Nzc6XHQvKlxuMjc3ODpcdCAqIGRhbW9zX2FwcGx5X3RhcmdldCgpIC0gQXBwbHkgREFNT1Mgc2NoZW1lcyB0byBhIGdpdmVuIHRhcmdldC5cbjI3Nzk6XHQgKiBAYzpcdFx0XHRtb25pdG9yaW5nIGNvbnRleHQgdG8gYXBwbHkgaXRzIERBTU9TIHNjaGVtZXMgdG8uLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAwMDozNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NzQzCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMjg2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBUaGlzIFBhdGNoOiBEQU1PUyBRdW90YSBDb25zaWRlcmF0aW9ucyoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2ggYW5kIHVuZGVyc3RhbmQgdGhlIGludGVudCBhbmQgaXRzIGltcGFjdCBvbiB0aGUgREFNT1MgcXVvdGEgbWFuYWdlbWVudC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGV4YW1pbmUgdGhlIHNwZWNpZmljIGNvZGUgbW9kaWZpY2F0aW9ucyB3aXRoaW4gdGhlIGBkYW1vc19xdW90YV9pc19mdWxsYCBhbmQgYGRhbW9uX2RvX2FwcGx5X3NjaGVtZXNgIGZ1bmN0aW9ucy4KCkZpcnN0LCBsb29raW5nIGF0IGBkYW1vc19xdW90YV9pc19mdWxsYCwgSSBpbW1lZGlhdGVseSBzZWUgdGhlIGFkZGVkIGNvbmRpdGlvbmFsIGNoZWNrcy4gSXQgc2VlbXMgdGhlIGNvZGUgbm93IGV4cGxpY2l0bHkgaGFuZGxlcyBjYXNlcyB3aGVyZSBgcXVvdGEtJmd0O2NoYXJnZWRfc3pgIGlzIHplcm8gKm9yKiBgcXVvdGEtJmd0O2VzemAgKHRoZSAqZSp4dGVuc2libGUgKnMqaXplKSBpcyB6ZXJvLiAgVGhlIG9yaWdpbmFsIGxvZ2ljIGFscmVhZHkgaGFuZGxlZCB0aGUgdW5zZXQgcXVvdGEgY2hlY2sgKGAhZGFtb3NfcXVvdGFfaXNfc2V0KHF1b3RhKWApLiAgSXQgbWFrZXMgc2Vuc2U7IHdlIGRvbiYjMzk7dCB3YW50IHRvIGRlY2xhcmUgYSBxdW90YSBhcyAmIzM0O2Z1bGwmIzM0OyBpZiBub3RoaW5nIGhhcyBiZWVuIGNoYXJnZWQgb3IgdGhlIHNpemUgaXMgemVyby4gVGhlIGNvbW1lbnQgYWJvdXQgJiMzNDtlZmZlY3RpdmUgZnVsbG5lc3MmIzM0OyByZWxhdGVkIHRvIGBtaW5fcmVnaW9uX3N6YCBpcyBzb21ldGhpbmcgSSBuZWVkIHRvIGtlZXAgaW4gbWluZCwgdG9vLgoKTW92aW5nIG9uIHRvIGBkYW1vbl9kb19hcHBseV9zY2hlbWVzYCwgaXQgbG9va3MgbGlrZSB0aGUgbmV3IGNoZWNrIGBpZiAoIXF1b3RhLSZndDtlc3opYCBub3cgcHJldmVudHMgcXVvdGEgY2hlY2tzIGZyb20gb2NjdXJyaW5nIGlmIHRoZSBxdW90YSBzaXplIGhhcyBub3QgYmVlbiBzZXQuIFdpdGhvdXQgdGhpcywgdGhlc2UgcXVvdGEgY2hlY2tzIHdvdWxkIGxpa2VseSBoYXZlIGJlZW4gdHJpZ2dlcmluZyBpbmNvcnJlY3QgYmVoYXZpb3IsIGFuZCB0aGUgY2hlY2tzIGNhbiBub3cgc2FmZWx5IGJlIHNraXBwZWQuCgpUbyBnZXQgYSBmdWxsIGdyYXNwIG9mIHRoZSBwcm9ibGVtIHRoaXMgaXMgc29sdmluZywgSSBuZWVkIHRvIHNlZSBob3cgYGRhbW9zX3F1b3RhYCBvYmplY3RzIGFyZSBpbml0aWFsaXplZCwgaG93IGBlc3pgIGFuZCBgY2hhcmdlZF9zemAgYXJlIG1hbmFnZWQsIGFuZCB3aGVyZSBgZGFtb3NfcXVvdGFfaXNfc2V0YCBpcyB1c2VkLiBJJiMzOTtsbCBuZWVkIHRvIHJ1biBhIHF1aWNrIGBncmVwYCBmb3IgdGhlIGBkYW1vc19xdW90YV9pc19zZXRgIGFuZCBgZXN6YCBtZW1iZXJzIHRvIGdldCBhIGJyb2FkZXIgdmlldyBvZiB0aGUgcXVvdGEmIzM5O3MgbGlmZWN5Y2xlLiBUaGlzIGlzIGxpa2VseSBhZGRyZXNzaW5nIGEgc2NlbmFyaW8gd2hlcmUgdGhlIHF1b3RhIG1pZ2h0IG5vdCBiZSBwcm9wZXJseSBpbml0aWFsaXplZCwgY2F1c2luZyBzcHVyaW91cyAmIzM0O2Z1bGwmIzM0OyBhbGVydHMgb3IgaW5jb3JyZWN0IGNhbGN1bGF0aW9ucywgb3IgbWF5YmUgaXQmIzM5O3MganVzdCBhYm91dCBlbnN1cmluZyB0aGVyZSYjMzk7cyBhIGRlZmluZWQgcXVvdGEgKmJlZm9yZSogd2Ugc3RhcnQgZW5mb3JjaW5nIGl0LiBVbmRlcnN0YW5kaW5nIHRoZSBpbml0aWFsaXphdGlvbiBhbmQgdXNhZ2Ugd2lsbCBjbGFyaWZ5IHdoZXRoZXIgdGhpcyBpcyBhIHJvYnVzdG5lc3MgZml4IG9yIGEgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uLCBvciBwZXJoYXBzIGEgY29tYmluYXRpb24gb2YgYm90aC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDMgMDA6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGFtb3NfcXVvdGFfaXNfc2V0fGVzeiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL2RhbW9uLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9kYW1vbi9jb3JlLmM9NzMzPXN0YXRpYyBzdHJ1Y3QgZGFtb3NfcXVvdGEgKmRhbW9zX3F1b3RhX2luaXQoc3RydWN0IGRhbW9zX3F1b3RhICpxdW90YSlcbm1tL2RhbW9uL2NvcmUuYy03MzQte1xubW0vZGFtb24vY29yZS5jOjczNTpcdHF1b3RhLVx1MDAzZWVzeiA9IDA7XG5tbS9kYW1vbi9jb3JlLmMtNzM2LVx0cXVvdGEtXHUwMDNldG90YWxfY2hhcmdlZF9zeiA9IDA7XG4tLVxubW0vZGFtb24vY29yZS5jLTc0MS1cdHF1b3RhLVx1MDAzZWNoYXJnZV9hZGRyX2Zyb20gPSAwO1xubW0vZGFtb24vY29yZS5jOjc0MjpcdHF1b3RhLVx1MDAzZWVzel9icCA9IDA7XG5tbS9kYW1vbi9jb3JlLmMtNzQzLVx0cmV0dXJuIHF1b3RhO1xuLS1cbm1tL2RhbW9uL2NvcmUuYz0yMzcxPXN0YXRpYyBib29sIF9fZGFtb3NfdmFsaWRfdGFyZ2V0KHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsIHN0cnVjdCBkYW1vcyAqcyxcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMjM4Ni0vKlxubW0vZGFtb24vY29yZS5jOjIzODc6ICogZGFtb3NfcXVvdGFfaXNfc2V0KCkgLSBSZXR1cm4gaWYgdGhlIGdpdmVuIHF1b3RhIGlzIGFjdHVhbGx5IHNldC5cbm1tL2RhbW9uL2NvcmUuYy0yMzg4LSAqIEBxdW90YTpcdFRoZSBxdW90YSB0byBjaGVjay5cbi0tXG5tbS9kYW1vbi9jb3JlLmMtMjM5MS0gKi9cbm1tL2RhbW9uL2NvcmUuYzoyMzkyOnN0YXRpYyBib29sIGRhbW9zX3F1b3RhX2lzX3NldChzdHJ1Y3QgZGFtb3NfcXVvdGEgKnF1b3RhKVxubW0vZGFtb24vY29yZS5jLTIzOTMte1xubW0vZGFtb24vY29yZS5jOjIzOTQ6XHRyZXR1cm4gcXVvdGEtXHUwMDNlZXN6IHx8IHF1b3RhLVx1MDAzZXN6IHx8IHF1b3RhLVx1MDAzZW1zIHx8XG5tbS9kYW1vbi9jb3JlLmMtMjM5NS1cdFx0IWRhbW9zX3F1b3RhX2dvYWxzX2VtcHR5KHF1b3RhKTtcbi0tXG5tbS9kYW1vbi9jb3JlLmM9MjM5OD1zdGF0aWMgYm9vbCBkYW1vc192YWxpZF90YXJnZXQoc3RydWN0IGRhbW9uX2N0eCAqYywgc3RydWN0IGRhbW9uX3JlZ2lvbiAqcixcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMjQwMi1cbm1tL2RhbW9uL2NvcmUuYzoyNDAzOlx0aWYgKCFyZXQgfHwgIWRhbW9zX3F1b3RhX2lzX3NldChcdTAwMjZzLVx1MDAzZXF1b3RhKSB8fCAhYy1cdTAwM2VvcHMuZ2V0X3NjaGVtZV9zY29yZSlcbm1tL2RhbW9uL2NvcmUuYy0yNDA0LVx0XHRyZXR1cm4gcmV0O1xuLS1cbm1tL2RhbW9uL2NvcmUuYz0yNjUzPXN0YXRpYyBib29sIGRhbW9zX3F1b3RhX2lzX2Z1bGwoc3RydWN0IGRhbW9zX3F1b3RhICpxdW90YSxcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMjY1NS17XG5tbS9kYW1vbi9jb3JlLmM6MjY1NjpcdGlmICghZGFtb3NfcXVvdGFfaXNfc2V0KHF1b3RhKSlcbm1tL2RhbW9uL2NvcmUuYy0yNjU3LVx0XHRyZXR1cm4gZmFsc2U7XG4tLVxubW0vZGFtb24vY29yZS5jLTI2NTktXHRcdHJldHVybiBmYWxzZTtcbm1tL2RhbW9uL2NvcmUuYzoyNjYwOlx0aWYgKHF1b3RhLVx1MDAzZWNoYXJnZWRfc3ogXHUwMDNlPSBxdW90YS1cdTAwM2Vlc3opXG5tbS9kYW1vbi9jb3JlLmMtMjY2MS1cdFx0cmV0dXJuIHRydWU7XG4tLVxubW0vZGFtb24vY29yZS5jLTI2NjUtXHQgKi9cbm1tL2RhbW9uL2NvcmUuYzoyNjY2Olx0cmV0dXJuIHF1b3RhLVx1MDAzZWVzeiAtIHF1b3RhLVx1MDAzZWNoYXJnZWRfc3ogXHUwMDNjIG1pbl9yZWdpb25fc3o7XG5tbS9kYW1vbi9jb3JlLmMtMjY2Ny19XG4tLVxubW0vZGFtb24vY29yZS5jPTI2Njk9c3RhdGljIHZvaWQgZGFtb3NfYXBwbHlfc2NoZW1lKHN0cnVjdCBkYW1vbl9jdHggKmMsIHN0cnVjdCBkYW1vbl90YXJnZXQgKnQsXG4tLVxubW0vZGFtb24vY29yZS5jLTI3MDYtXHRpZiAoYy1cdTAwM2VvcHMuYXBwbHlfc2NoZW1lKSB7XG5tbS9kYW1vbi9jb3JlLmM6MjcwNzpcdFx0aWYgKGRhbW9zX3F1b3RhX2lzX3NldChxdW90YSkgXHUwMDI2XHUwMDI2XG5tbS9kYW1vbi9jb3JlLmM6MjcwODpcdFx0XHRcdHF1b3RhLVx1MDAzZWNoYXJnZWRfc3ogJiM0Mzsgc3ogXHUwMDNlIHF1b3RhLVx1MDAzZWVzeikge1xubW0vZGFtb24vY29yZS5jOjI3MDk6XHRcdFx0c3ogPSBBTElHTl9ET1dOKHF1b3RhLVx1MDAzZWVzeiAtIHF1b3RhLVx1MDAzZWNoYXJnZWRfc3osXG5tbS9kYW1vbi9jb3JlLmMtMjcxMC1cdFx0XHRcdFx0Yy1cdTAwM2VtaW5fcmVnaW9uX3N6KTtcbi0tXG5tbS9kYW1vbi9jb3JlLmM9Mjc0MD1zdGF0aWMgdm9pZCBkYW1vbl9kb19hcHBseV9zY2hlbWVzKHN0cnVjdCBkYW1vbl9jdHggKmMsXG4tLVxubW0vZGFtb24vY29yZS5jLTI3NTQtXG5tbS9kYW1vbi9jb3JlLmM6Mjc1NTpcdFx0aWYgKCFxdW90YS1cdTAwM2Vlc3opXG5tbS9kYW1vbi9jb3JlLmMtMjc1Ni1cdFx0XHRjb250aW51ZTtcbi0tXG5tbS9kYW1vbi9jb3JlLmM9MzE4NT1zdGF0aWMgdW5zaWduZWQgbG9uZyBkYW1vc19xdW90YV9zY29yZShzdHJ1Y3QgZGFtb25fY3R4ICpjLCBzdHJ1Y3QgZGFtb3MgKnMpXG4tLVxubW0vZGFtb24vY29yZS5jLTMyMDAtXG5tbS9kYW1vbi9jb3JlLmM6MzIwMTpzdGF0aWMgdm9pZCBkYW1vc19nb2FsX3R1bmVfZXN6X2JwX2NvbnNpc3Qoc3RydWN0IGRhbW9uX2N0eCAqYywgc3RydWN0IGRhbW9zICpzKVxubW0vZGFtb24vY29yZS5jLTMyMDIte1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0zMjA1LVxubW0vZGFtb24vY29yZS5jOjMyMDY6XHRxdW90YS1cdTAwM2Vlc3pfYnAgPSBkYW1vbl9mZWVkX2xvb3BfbmV4dF9pbnB1dChcbm1tL2RhbW9uL2NvcmUuYzozMjA3Olx0XHRcdG1heChxdW90YS1cdTAwM2Vlc3pfYnAsIDEwMDAwVUwpLCBzY29yZSk7XG5tbS9kYW1vbi9jb3JlLmMtMzIwOC19XG5tbS9kYW1vbi9jb3JlLmMtMzIwOS1cbm1tL2RhbW9uL2NvcmUuYzozMjEwOnN0YXRpYyB2b2lkIGRhbW9zX2dvYWxfdHVuZV9lc3pfYnBfdGVtcG9yYWwoc3RydWN0IGRhbW9uX2N0eCAqYyxcbm1tL2RhbW9uL2NvcmUuYy0zMjExLVx0XHRzdHJ1Y3QgZGFtb3MgKnMpXG4tLVxubW0vZGFtb24vY29yZS5jLTMyMTYtXHRpZiAoc2NvcmUgXHUwMDNlPSAxMDAwMClcbm1tL2RhbW9uL2NvcmUuYzozMjE3Olx0XHRxdW90YS1cdTAwM2Vlc3pfYnAgPSAwO1xubW0vZGFtb24vY29yZS5jLTMyMTgtXHRlbHNlIGlmIChxdW90YS1cdTAwM2Vzeilcbm1tL2RhbW9uL2NvcmUuYzozMjE5Olx0XHRxdW90YS1cdTAwM2Vlc3pfYnAgPSBxdW90YS1cdTAwM2VzeiAqIDEwMDAwO1xubW0vZGFtb24vY29yZS5jLTMyMjAtXHRlbHNlXG5tbS9kYW1vbi9jb3JlLmM6MzIyMTpcdFx0cXVvdGEtXHUwMDNlZXN6X2JwID0gVUxPTkdfTUFYO1xubW0vZGFtb24vY29yZS5jLTMyMjItfVxuLS1cbm1tL2RhbW9uL2NvcmUuYz0zMjI3PXN0YXRpYyB2b2lkIGRhbW9zX3NldF9lZmZlY3RpdmVfcXVvdGEoc3RydWN0IGRhbW9uX2N0eCAqY3R4LCBzdHJ1Y3QgZGFtb3MgKnMpXG4tLVxubW0vZGFtb24vY29yZS5jLTMyMzAtXHR1bnNpZ25lZCBsb25nIHRocm91Z2hwdXQ7XG5tbS9kYW1vbi9jb3JlLmM6MzIzMTpcdHVuc2lnbmVkIGxvbmcgZXN6ID0gVUxPTkdfTUFYO1xubW0vZGFtb24vY29yZS5jLTMyMzItXG5tbS9kYW1vbi9jb3JlLmMtMzIzMy1cdGlmICghcXVvdGEtXHUwMDNlbXMgXHUwMDI2XHUwMDI2IGxpc3RfZW1wdHkoXHUwMDI2cXVvdGEtXHUwMDNlZ29hbHMpKSB7XG5tbS9kYW1vbi9jb3JlLmM6MzIzNDpcdFx0cXVvdGEtXHUwMDNlZXN6ID0gcXVvdGEtXHUwMDNlc3o7XG5tbS9kYW1vbi9jb3JlLmMtMzIzNS1cdFx0cmV0dXJuO1xuLS1cbm1tL2RhbW9uL2NvcmUuYy0zMjM5LVx0XHRpZiAocXVvdGEtXHUwMDNlZ29hbF90dW5lciA9PSBEQU1PU19RVU9UQV9HT0FMX1RVTkVSX0NPTlNJU1QpXG5tbS9kYW1vbi9jb3JlLmM6MzI0MDpcdFx0XHRkYW1vc19nb2FsX3R1bmVfZXN6X2JwX2NvbnNpc3QoY3R4LCBzKTtcbm1tL2RhbW9uL2NvcmUuYy0zMjQxLVx0XHRlbHNlIGlmIChxdW90YS1cdTAwM2Vnb2FsX3R1bmVyID09IERBTU9TX1FVT1RBX0dPQUxfVFVORVJfVEVNUE9SQUwpXG5tbS9kYW1vbi9jb3JlLmM6MzI0MjpcdFx0XHRkYW1vc19nb2FsX3R1bmVfZXN6X2JwX3RlbXBvcmFsKGN0eCwgcyk7XG5tbS9kYW1vbi9jb3JlLmM6MzI0MzpcdFx0ZXN6ID0gcXVvdGEtXHUwMDNlZXN6X2JwIC8gMTAwMDA7XG5tbS9kYW1vbi9jb3JlLmMtMzI0NC1cdH1cbi0tXG5tbS9kYW1vbi9jb3JlLmMtMzI1MS1cdFx0XHR0aHJvdWdocHV0ID0gUEFHRV9TSVpFICogMTAyNDtcbm1tL2RhbW9uL2NvcmUuYzozMjUyOlx0XHRlc3ogPSBtaW4odGhyb3VnaHB1dCAqIHF1b3RhLVx1MDAzZW1zLCBlc3opO1xubW0vZGFtb24vY29yZS5jOjMyNTM6XHRcdGVzeiA9IG1heChjdHgtXHUwMDNlbWluX3JlZ2lvbl9zeiwgZXN6KTtcbm1tL2RhbW9uL2NvcmUuYy0zMjU0LVx0fVxubW0vZGFtb24vY29yZS5jLTMyNTUtXG5tbS9kYW1vbi9jb3JlLmM6MzI1NjpcdGlmIChxdW90YS1cdTAwM2VzeiBcdTAwMjZcdTAwMjYgcXVvdGEtXHUwMDNlc3ogXHUwMDNjIGVzeilcbm1tL2RhbW9uL2NvcmUuYzozMjU3Olx0XHRlc3ogPSBxdW90YS1cdTAwM2Vzejtcbm1tL2RhbW9uL2NvcmUuYy0zMjU4LVxubW0vZGFtb24vY29yZS5jOjMyNTk6XHRxdW90YS1cdTAwM2Vlc3ogPSBlc3o7XG5tbS9kYW1vbi9jb3JlLmMtMzI2MC19XG5tbS9kYW1vbi9jb3JlLmMtMzI2MS1cbm1tL2RhbW9uL2NvcmUuYzozMjYyOnN0YXRpYyB2b2lkIGRhbW9zX3RyYWNlX2VzeihzdHJ1Y3QgZGFtb25fY3R4ICpjLCBzdHJ1Y3QgZGFtb3MgKnMsXG5tbS9kYW1vbi9jb3JlLmMtMzI2My1cdFx0c3RydWN0IGRhbW9zX3F1b3RhICpxdW90YSlcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMzI3Mi1cdH1cbm1tL2RhbW9uL2NvcmUuYzozMjczOlx0dHJhY2VfZGFtb3NfZXN6KGNpZHgsIHNpZHgsIHF1b3RhLVx1MDAzZWVzeik7XG5tbS9kYW1vbi9jb3JlLmMtMzI3NC19XG4tLVxubW0vZGFtb24vY29yZS5jPTMyNzY9c3RhdGljIHZvaWQgZGFtb3NfYWRqdXN0X3F1b3RhKHN0cnVjdCBkYW1vbl9jdHggKmMsIHN0cnVjdCBkYW1vcyAqcylcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMzI4MC1cdHN0cnVjdCBkYW1vbl9yZWdpb24gKnI7XG5tbS9kYW1vbi9jb3JlLmM6MzI4MTpcdHVuc2lnbmVkIGxvbmcgY3VtdWxhdGVkX3N6LCBjYWNoZWRfZXN6O1xubW0vZGFtb24vY29yZS5jLTMyODItXHR1bnNpZ25lZCBpbnQgc2NvcmUsIG1heF9zY29yZSA9IDA7XG4tLVxubW0vZGFtb24vY29yZS5jLTMyOTAtXHRcdGRhbW9zX3NldF9lZmZlY3RpdmVfcXVvdGEoYywgcyk7XG5tbS9kYW1vbi9jb3JlLmM6MzI5MTpcdFx0aWYgKHRyYWNlX2RhbW9zX2Vzel9lbmFibGVkKCkpXG5tbS9kYW1vbi9jb3JlLmM6MzI5MjpcdFx0XHRkYW1vc190cmFjZV9lc3ooYywgcywgcXVvdGEpO1xubW0vZGFtb24vY29yZS5jLTMyOTMtXHR9XG4tLVxubW0vZGFtb24vY29yZS5jLTMzMDMtXHRcdHF1b3RhLVx1MDAzZWNoYXJnZWRfc3ogPSAwO1xubW0vZGFtb24vY29yZS5jOjMzMDQ6XHRcdGlmICh0cmFjZV9kYW1vc19lc3pfZW5hYmxlZCgpKVxubW0vZGFtb24vY29yZS5jOjMzMDU6XHRcdFx0Y2FjaGVkX2VzeiA9IHF1b3RhLVx1MDAzZWVzejtcbm1tL2RhbW9uL2NvcmUuYy0zMzA2LVx0XHRkYW1vc19zZXRfZWZmZWN0aXZlX3F1b3RhKGMsIHMpO1xubW0vZGFtb24vY29yZS5jOjMzMDc6XHRcdGlmICh0cmFjZV9kYW1vc19lc3pfZW5hYmxlZCgpIFx1MDAyNlx1MDAyNiBxdW90YS1cdTAwM2Vlc3ogIT0gY2FjaGVkX2Vzeilcbm1tL2RhbW9uL2NvcmUuYzozMzA4Olx0XHRcdGRhbW9zX3RyYWNlX2VzeihjLCBzLCBxdW90YSk7XG5tbS9kYW1vbi9jb3JlLmMtMzMwOS1cdH1cbi0tXG5tbS9kYW1vbi9jb3JlLmMtMzMzNC1cdFx0Y3VtdWxhdGVkX3N6ICYjNDM7PSBjLVx1MDAzZXJlZ2lvbnNfc2NvcmVfaGlzdG9ncmFtW3Njb3JlXTtcbm1tL2RhbW9uL2NvcmUuYzozMzM1Olx0XHRpZiAoY3VtdWxhdGVkX3N6IFx1MDAzZT0gcXVvdGEtXHUwMDNlZXN6IHx8ICFzY29yZSlcbm1tL2RhbW9uL2NvcmUuYy0zMzM2LVx0XHRcdGJyZWFrO1xuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0yOTMzPXZvaWQgZGFtb3Nfc3lzZnNfdXBkYXRlX2VmZmVjdGl2ZV9xdW90YXMoXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTI5NDgtXHRcdFx0c3lzZnNfc2NoZW1lcy1cdTAwM2VzY2hlbWVzX2FycltzY2hlbWVzX2lkeCYjNDM7JiM0MztdLVx1MDAzZXF1b3Rhcztcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyOTQ5Olx0XHRzeXNmc19xdW90YXMtXHUwMDNlZWZmZWN0aXZlX3N6ID0gc2NoZW1lLVx1MDAzZXF1b3RhLmVzejtcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yOTUwLVx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAwMDozNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MzkwCgkJCQkJCQlvdXRwdXQ6IDE1MwoJCQkJCQkJdGhvdWdodHM6IDUzMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipQYXRjaCBBbmFseXNpcyBhbmQgS01TQU4gQXNzZXNzbWVudCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgZG93biB0aGlzIHBhdGNoLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCBpdCBsb29rcyBsaWtlIGEgdGFyZ2V0ZWQgZml4IHdpdGhpbiB0aGUgREFNT04gcXVvdGEgbG9naWMuIEZpcnN0LCB0aGUgYGRhbW9zX3F1b3RhX2lzX2Z1bGxgIGZ1bmN0aW9uLiBJIHNlZSB0aGF0IHRoZXJlJiMzOTtzIGEgbmV3IGNoZWNrOiBgaWYgKCFxdW90YS0mZ3Q7Y2hhcmdlZF9zeikgcmV0dXJuIGZhbHNlO2AuIFJpZ2h0LCBwcmV2aW91c2x5LCBpZiB0aGUgYGNoYXJnZWRfc3pgIHdhcyB6ZXJvLCBvciBwb3RlbnRpYWxseSBpZiB0aGVyZSB3YXMgYSBzdWJ0bGUgdW5kZXJmbG93IGlzc3VlLCB0aGUgbG9naWMgY291bGQgaW5jb3JyZWN0bHkgZmxhZyB0aGUgcXVvdGEgYXMgZnVsbCB3aGVuIGl0IHdhc24mIzM5O3QuIFRoZSBzdWJzZXF1ZW50IGNoZWNrIGZvciBgcXVvdGEtJmd0O2VzeiAtIHF1b3RhLSZndDtjaGFyZ2VkX3N6ICZsdDsgbWluX3JlZ2lvbl9zemAgd2FzIHRoZSBjdWxwcml0LiBUaGlzIG5ldyBjb25kaXRpb25hbCBndWFyZHMgYWdhaW5zdCB0aGF0LgoKVGhlbiwgaW4gYGRhbW9uX2RvX2FwcGx5X3NjaGVtZXNgLCB3ZSYjMzk7cmUgYWRkaW5nIGFub3RoZXIgc2FmZWd1YXJkOiBgaWYgKCFxdW90YS0mZ3Q7ZXN6KSBjb250aW51ZTtgLiAgTWFrZXMgc2Vuc2UuIFdlJiMzOTtyZSBub3cgc2tpcHBpbmcgc2NoZW1lIGFwcGxpY2F0aW9uIGlmIHRoZSBlZmZlY3RpdmUgc2l6ZSAoYGVzemApIGlzIHplcm8uIFRoaXMgcHJldmVudHMgcG90ZW50aWFsIGlzc3VlcyBmdXJ0aGVyIGRvd24gdGhlIGxpbmUgaWYgdGhlcmUmIzM5O3Mgbm8gZGVmaW5lZCBxdW90YSBzaXplLgoKTm93LCB0aGUgY3J1Y2lhbCBxdWVzdGlvbjogdW5pbml0aWFsaXplZCBtZW1vcnkuIElzIHRoaXMgcGF0Y2ggaW50cm9kdWNpbmcgYSB2dWxuZXJhYmlsaXR5PyBObywgSSBkb24mIzM5O3QgdGhpbmsgc28uIFRoZXJlJiMzOTtzIG5vIGludHJvZHVjdGlvbiBvZiBuZXcga2VybmVsIHN0cnVjdHVyZXMgd2l0aCB1bmluaXRpYWxpemVkIGRhdGEuIE5vIGNvcHlpbmcgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdG8gdXNlciBzcGFjZS4gTm8gbmV3IGFsbG9jYXRpb25zIG9uIHRoZSBzdGFjayBvciBoZWFwLiBJdCYjMzk7cyBhbGwgaW50ZXJuYWwgbG9naWMgd2l0aGluIHRoZSBEQU1PTiBxdW90YSBjYWxjdWxhdGlvbnMuIE5vIGJyYW5jaGluZyBvbiB1bml0aWFsaXplZCB2YXJpYWJsZXMsIG5vIHVuc2FmZSBwb2ludGVyIG1hbmlwdWxhdGlvbiBvciBvdXQtb2YtYm91bmRzIHJlYWRzLiBUaGUgYHF1b3RhYCBzdHJ1Y3R1cmUgaXRzZWxmIHNob3VsZCBiZSBmdWxseSBpbml0aWFsaXplZCwgYW5kIHdlJiMzOTtyZSBqdXN0IGFsdGVyaW5nIHRoZSBjb25kaXRpb25zIHVuZGVyIHdoaWNoIHRoZSBxdW90YSBpcyBjb25zaWRlcmVkICYjMzQ7ZnVsbCYjMzQ7IG9yICYjMzQ7YXBwbGljYWJsZS4mIzM0OwoKU28sIGdpdmVuIGFsbCB0aGF0LCBLTVNBTiBpc24mIzM5O3QgbmVlZGVkIGhlcmUuIFRoZSBwYXRjaCBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgYW55IG5ldyBhdmVudWVzIGZvciBtZW1vcnkgc2FmZXR5IGlzc3VlcyByZWxhdGVkIHRvIHVuaXRpYWxpemVkIG1lbW9yeS4gQW55IGV4aXN0aW5nIG1lbW9yeSBzYWZldHkgaXNzdWVzIHdpdGhpbiBEQU1PTiBvciBpdHMgcmVsYXRlZCBsb2dpYyB3aWxsIGJlIGFkZXF1YXRlbHkgaGFuZGxlZCBieSBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nIGFuZCB0aGUgZXhpc3RpbmcgYnVnIGRldGVjdG9ycy4gVGhpcyBwYXRjaCBpcyBwdXJlbHkgYSBsb2dpYyBjb3JyZWN0aW9uIHdpdGhpbiBhbiBleGlzdGluZyBhcmVhLgoKQWxyaWdodCwgSSYjMzk7bSBjb25maWRlbnQgaW4gdGhhdCBhbmFseXNpcy4gVGltZSB0byByZWNvcmQgdGhlIHJlc3VsdHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDAwOjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHF1b3RhIGNoZWNraW5nIGxvZ2ljIGluIERBTU9OIChtbS9kYW1vbi9jb3JlLmMpIGJ5IGFkZGluZyBlYXJseSByZXR1cm4vY29udGludWUgY2hlY2tzIHdoZW4gcXVvdGEtXHUwMDNlY2hhcmdlZF9zeiBpcyAwIGluIGRhbW9zX3F1b3RhX2lzX2Z1bGwoKSBhbmQgd2hlbiBxdW90YS1cdTAwM2Vlc3ogaXMgMCBpbiBkYW1vbl9kb19hcHBseV9zY2hlbWVzKCkuIFRoZXNlIGNoYW5nZXMgcHVyZWx5IGFmZmVjdCBpbnRlcm5hbCBjb250cm9sIGZsb3cgYW5kIGFjY291bnRpbmcgaW4gREFNT04uIE5vIG5ldyBhbGxvY2F0aW9ucywgc3RhY2svaGVhcCBidWZmZXJzLCBvciBjb3BpZXMgdG8gdXNlciBzcGFjZSBhcmUgaW50cm9kdWNlZCwgbm9yIGlzIHRoZXJlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIG9yIGluZm9ybWF0aW9uIGxlYWtzLiBUaGVyZWZvcmUsIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIGlzIG5vdCByZXF1aXJlZCBhbmQgc3RhbmRhcmQgS0FTQU4gZnV6emluZyBpcyBzdWZmaWNpZW50LiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgcXVvdGEgY2hlY2tpbmcgbG9naWMgaW4gREFNT04gKG1tL2RhbW9uL2NvcmUuYykgYnkgYWRkaW5nIGVhcmx5IHJldHVybi9jb250aW51ZSBjaGVja3Mgd2hlbiBxdW90YS1cdTAwM2VjaGFyZ2VkX3N6IGlzIDAgaW4gZGFtb3NfcXVvdGFfaXNfZnVsbCgpIGFuZCB3aGVuIHF1b3RhLVx1MDAzZWVzeiBpcyAwIGluIGRhbW9uX2RvX2FwcGx5X3NjaGVtZXMoKS4gVGhlc2UgY2hhbmdlcyBwdXJlbHkgYWZmZWN0IGludGVybmFsIGNvbnRyb2wgZmxvdyBhbmQgYWNjb3VudGluZyBpbiBEQU1PTi4gTm8gbmV3IGFsbG9jYXRpb25zLCBzdGFjay9oZWFwIGJ1ZmZlcnMsIG9yIGNvcGllcyB0byB1c2VyIHNwYWNlIGFyZSBpbnRyb2R1Y2VkLCBub3IgaXMgdGhlcmUgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgb3IgaW5mb3JtYXRpb24gbGVha3MuIFRoZXJlZm9yZSwgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgaXMgbm90IHJlcXVpcmVkIGFuZCBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nIGlzIHN1ZmZpY2llbnQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDAwOjMzOjI0LjA0NjMwNDM4OVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcxMzg4OTEyNTk1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkRBTU9OXCIsXG4gICAgXCJEQU1PTl9TWVNGU1wiLFxuICAgIFwiREFNT05fUEFERFJcIixcbiAgICBcIkRBTU9OX1ZBRERSXCIsXG4gICAgXCJTWVNGU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRhbW9uX3N0YXJ0XCIsXG4gICAgXCJkYW1vbl9jb21taXRfY3R4XCIsXG4gICAgXCJkYW1vbl9zeXNmc19hZGRfc2NoZW1lc1wiLFxuICAgIFwiZGFtb25fc2V0X3NjaGVtZXNcIixcbiAgICBcImRhbW9uX25ld19zY2hlbWVcIixcbiAgICBcImRhbW9uX2FkZF9zY2hlbWVcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHF1b3RhIGNoZWNraW5nIGxvZ2ljIGluIERBTU9OIChtbS9kYW1vbi9jb3JlLmMpIGJ5IGFkZGluZyBlYXJseSByZXR1cm4vY29udGludWUgY2hlY2tzIHdoZW4gcXVvdGEtXFx1MDAzZWNoYXJnZWRfc3ogaXMgMCBpbiBkYW1vc19xdW90YV9pc19mdWxsKCkgYW5kIHdoZW4gcXVvdGEtXFx1MDAzZWVzeiBpcyAwIGluIGRhbW9uX2RvX2FwcGx5X3NjaGVtZXMoKS4gVGhlc2UgY2hhbmdlcyBwdXJlbHkgYWZmZWN0IGludGVybmFsIGNvbnRyb2wgZmxvdyBhbmQgYWNjb3VudGluZyBpbiBEQU1PTi4gTm8gbmV3IGFsbG9jYXRpb25zLCBzdGFjay9oZWFwIGJ1ZmZlcnMsIG9yIGNvcGllcyB0byB1c2VyIHNwYWNlIGFyZSBpbnRyb2R1Y2VkLCBub3IgaXMgdGhlcmUgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgb3IgaW5mb3JtYXRpb24gbGVha3MuIFRoZXJlZm9yZSwgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgaXMgbm90IHJlcXVpcmVkIGFuZCBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nIGlzIHN1ZmZpY2llbnQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggdXBkYXRlcyBEQU1PTiBPcGVyYXRpb24gU2NoZW1lcyAoREFNT1MpIHF1b3RhIGhhbmRsaW5nIGxvZ2ljIHdpdGhpbiBtbS9kYW1vbi9jb3JlLmMgKHNwZWNpZmljYWxseSBpbiBkYW1vc19xdW90YV9pc19mdWxsIGFuZCBkYW1vbl9kb19hcHBseV9zY2hlbWVzKSBzbyB0aGF0IHNjaGVtZXMgYXJlIG5vdCBpbmNvcnJlY3RseSBjb25zaWRlcmVkIGZ1bGwgd2hlbiBubyBxdW90YSBoYXMgYmVlbiBjaGFyZ2VkIHlldCwgYW5kIGVtcHR5IHF1b3RhcyAoZXN6ID09IDApIGFyZSBza2lwcGVkIHByb3Blcmx5LiBUaGlzIGZ1bmN0aW9uYWxseSBhZmZlY3RzIERBTU9OIHNjaGVtZSBldmFsdWF0aW9uIGFuZCBjYW4gYmUgdGVzdGVkL2V4ZXJjaXNlZCB2aWEgdGhlIERBTU9OIHN5c2ZzIGludGVyZmFjZSBpbiB2aXJ0dWFsaXplZCB0ZXN0IGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMDA6MzM6MjQuMDQ2MzEwMzE5WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzIxMTgzMTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBhOTJmOGZiMDUwNmI0NGQwMjUwZDc0OTI5YzE1NTVjOTQ0YzQ5MzJhXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgU2VwIDMgMDA6MzM6MjMgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbW0vZGFtb24vY29yZS5jIGIvbW0vZGFtb24vY29yZS5jXFxuaW5kZXggZGYyMjYyMTc2NTkxMS4uZjhjNzg0ZGYyNDYwMCAxMDA2NDRcXG4tLS0gYS9tbS9kYW1vbi9jb3JlLmNcXG4rKysgYi9tbS9kYW1vbi9jb3JlLmNcXG5AQCAtMjY1NSw2ICsyNjU1LDggQEAgc3RhdGljIGJvb2wgZGFtb3NfcXVvdGFfaXNfZnVsbChzdHJ1Y3QgZGFtb3NfcXVvdGEgKnF1b3RhLFxcbiB7XFxuIFxcdGlmICghZGFtb3NfcXVvdGFfaXNfc2V0KHF1b3RhKSlcXG4gXFx0XFx0cmV0dXJuIGZhbHNlO1xcbitcXHRpZiAoIXF1b3RhLVxcdTAwM2VjaGFyZ2VkX3N6KVxcbitcXHRcXHRyZXR1cm4gZmFsc2U7XFxuIFxcdGlmIChxdW90YS1cXHUwMDNlY2hhcmdlZF9zeiBcXHUwMDNlPSBxdW90YS1cXHUwMDNlZXN6KVxcbiBcXHRcXHRyZXR1cm4gdHJ1ZTtcXG4gXFx0LypcXG5AQCAtMjc1MCw2ICsyNzUyLDkgQEAgc3RhdGljIHZvaWQgZGFtb25fZG9fYXBwbHlfc2NoZW1lcyhzdHJ1Y3QgZGFtb25fY3R4ICpjLFxcbiBcXHRcXHRpZiAoIXMtXFx1MDAzZXdtYXJrcy5hY3RpdmF0ZWQpXFxuIFxcdFxcdFxcdGNvbnRpbnVlO1xcbiBcXG4rXFx0XFx0aWYgKCFxdW90YS1cXHUwMDNlZXN6KVxcbitcXHRcXHRcXHRjb250aW51ZTtcXG4rXFxuIFxcdFxcdC8qIENoZWNrIHRoZSBxdW90YSAqL1xcbiBcXHRcXHRpZiAoZGFtb3NfcXVvdGFfaXNfZnVsbChxdW90YSwgYy1cXHUwMDNlbWluX3JlZ2lvbl9zeikpXFxuIFxcdFxcdFxcdGNvbnRpbnVlO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wM1QwMDozMzoyNC42MTg5OTAzODVaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjQ1NTEyMjMyNjA5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkRBTU9OXCIsXG4gICAgXCJEQU1PTl9TWVNGU1wiLFxuICAgIFwiREFNT05fUEFERFJcIixcbiAgICBcIkRBTU9OX1ZBRERSXCIsXG4gICAgXCJTWVNGU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRhbW9uX3N0YXJ0XCIsXG4gICAgXCJkYW1vbl9jb21taXRfY3R4XCIsXG4gICAgXCJkYW1vbl9zeXNmc19hZGRfc2NoZW1lc1wiLFxuICAgIFwiZGFtb25fc2V0X3NjaGVtZXNcIixcbiAgICBcImRhbW9uX25ld19zY2hlbWVcIixcbiAgICBcImRhbW9uX2FkZF9zY2hlbWVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCB1cGRhdGVzIERBTU9OIE9wZXJhdGlvbiBTY2hlbWVzIChEQU1PUykgcXVvdGEgaGFuZGxpbmcgbG9naWMgd2l0aGluIG1tL2RhbW9uL2NvcmUuYyAoc3BlY2lmaWNhbGx5IGluIGRhbW9zX3F1b3RhX2lzX2Z1bGwgYW5kIGRhbW9uX2RvX2FwcGx5X3NjaGVtZXMpIHNvIHRoYXQgc2NoZW1lcyBhcmUgbm90IGluY29ycmVjdGx5IGNvbnNpZGVyZWQgZnVsbCB3aGVuIG5vIHF1b3RhIGhhcyBiZWVuIGNoYXJnZWQgeWV0LCBhbmQgZW1wdHkgcXVvdGFzIChlc3ogPT0gMCkgYXJlIHNraXBwZWQgcHJvcGVybHkuIFRoaXMgZnVuY3Rpb25hbGx5IGFmZmVjdHMgREFNT04gc2NoZW1lIGV2YWx1YXRpb24gYW5kIGNhbiBiZSB0ZXN0ZWQvZXhlcmNpc2VkIHZpYSB0aGUgREFNT04gc3lzZnMgaW50ZXJmYWNlIGluIHZpcnR1YWxpemVkIHRlc3QgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBhOTJmOGZiMDUwNmI0NGQwMjUwZDc0OTI5YzE1NTVjOTQ0YzQ5MzJhXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBTZXAgMyAwMDozMzoyMyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL21tL2RhbW9uL2NvcmUuYyBiL21tL2RhbW9uL2NvcmUuY1xuaW5kZXggZGYyMjYyMTc2NTkxMS4uZjhjNzg0ZGYyNDYwMCAxMDA2NDRcbi0tLSBhL21tL2RhbW9uL2NvcmUuY1xuKysrIGIvbW0vZGFtb24vY29yZS5jXG5AQCAtMjY1NSw2ICsyNjU1LDggQEAgc3RhdGljIGJvb2wgZGFtb3NfcXVvdGFfaXNfZnVsbChzdHJ1Y3QgZGFtb3NfcXVvdGEgKnF1b3RhLFxuIHtcbiBcdGlmICghZGFtb3NfcXVvdGFfaXNfc2V0KHF1b3RhKSlcbiBcdFx0cmV0dXJuIGZhbHNlO1xuK1x0aWYgKCFxdW90YS1cdTAwM2VjaGFyZ2VkX3N6KVxuK1x0XHRyZXR1cm4gZmFsc2U7XG4gXHRpZiAocXVvdGEtXHUwMDNlY2hhcmdlZF9zeiBcdTAwM2U9IHF1b3RhLVx1MDAzZWVzeilcbiBcdFx0cmV0dXJuIHRydWU7XG4gXHQvKlxuQEAgLTI3NTAsNiArMjc1Miw5IEBAIHN0YXRpYyB2b2lkIGRhbW9uX2RvX2FwcGx5X3NjaGVtZXMoc3RydWN0IGRhbW9uX2N0eCAqYyxcbiBcdFx0aWYgKCFzLVx1MDAzZXdtYXJrcy5hY3RpdmF0ZWQpXG4gXHRcdFx0Y29udGludWU7XG4gXG4rXHRcdGlmICghcXVvdGEtXHUwMDNlZXN6KVxuK1x0XHRcdGNvbnRpbnVlO1xuK1xuIFx0XHQvKiBDaGVjayB0aGUgcXVvdGEgKi9cbiBcdFx0aWYgKGRhbW9zX3F1b3RhX2lzX2Z1bGwocXVvdGEsIGMtXHUwMDNlbWluX3JlZ2lvbl9zeikpXG4gXHRcdFx0Y29udGludWU7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wM1QwMDozMzoyNC42MTg5OTE1NzZaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0NzUyNTU5MzYxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYW5hbHlzaXMgb2YgdGhlIHNpdHVhdGlvbiwgdGFpbG9yZWQgZm9yIG15IGZlbGxvdyBleHBlcnRzOlxuXG4qKkluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgREFNT04gUGF0Y2gqKlxuXG5BbHJpZ2h0LCBsZXQncyBkaXZlIGluLiBGaXJzdCwgSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGlzIHBhdGNoLiBJdCBsb29rcyBsaWtlIHRoZSBtYWluIGltcGFjdCBpcyBvbiBgbW0vZGFtb24vY29yZS5jYC4gTm8gc3VycHJpc2VzIHRoZXJlOyBjb3JlIERBTU9OIGZ1bmN0aW9uYWxpdHkgb2Z0ZW4gcmVzaWRlcyBpbiBmaWxlcyBsaWtlIHRoYXQuIE15IGltbWVkaWF0ZSBuZXh0IHN0ZXAgaXMgdG8gZ2V0IGEgc29saWQgZ3Jhc3Agb24gd2hhdCdzIGNoYW5nZWQgd2l0aGluIHRoYXQgY29yZSBmaWxlLCBhbmQgYWxzbyB0byBkb3VibGUgY2hlY2sgdGhlIEtjb25maWcgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBEQU1PTiBpdHNlbGYuIEFsd2F5cyBnb29kIHRvIHJ1bGUgb3V0IGFueSB1bmV4cGVjdGVkIGZlYXR1cmUgZmxhZ3Mgb3IgZGlzYWJsZWQgY29tcG9uZW50cy5cblxuSSdtIHRoaW5raW5nIEknbGwgcmVhY2ggZm9yIGBncmVwcGVyYCBvciBgcmVhZC1maWxlYCB0byB6ZXJvIGluIG9uIHNwZWNpZmljIHBhcnRzIG9mIGBtbS9kYW1vbi9jb3JlLmNgLiBJJ20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIGxpbmVzIGFyb3VuZCAyNjU1IGFuZCAyNzUwLiBUaGF0IHNob3VsZCBnaXZlIG1lIHRoZSBxdWljayBpbnNpZ2h0IEkgbmVlZCB0byBmdWxseSB1bmRlcnN0YW5kIHRoZSBlZmZlY3RzIG9mIHRoaXMgcGF0Y2guIFRpbWUgdG8gZ2V0IHRvIHdvcmsuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxNjIsIk91dHB1dFRva2VucyI6NjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDAwOjMzOjI5LjM3MTU1NDAwN1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxNjUxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJtbS9kYW1vbi9jb3JlLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMjY1MCxcbiAgXCJMaW5lQ291bnRcIjogNjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMjY1MDpcXHRcXHRcXHRcXHRcXHRxdW90YS1cXHUwMDNlZmFpbF9jaGFyZ2VfZGVub20pO1xcbjI2NTE6XFx0fVxcbjI2NTI6XFx0XFxuMjY1MzpcXHRzdGF0aWMgYm9vbCBkYW1vc19xdW90YV9pc19mdWxsKHN0cnVjdCBkYW1vc19xdW90YSAqcXVvdGEsXFxuMjY1NDpcXHRcXHRcXHR1bnNpZ25lZCBsb25nIG1pbl9yZWdpb25fc3opXFxuMjY1NTpcXHR7XFxuMjY1NjpcXHRcXHRpZiAoIWRhbW9zX3F1b3RhX2lzX3NldChxdW90YSkpXFxuMjY1NzpcXHRcXHRcXHRyZXR1cm4gZmFsc2U7XFxuMjY1ODpcXHRcXHRpZiAoIXF1b3RhLVxcdTAwM2VjaGFyZ2VkX3N6KVxcbjI2NTk6XFx0XFx0XFx0cmV0dXJuIGZhbHNlO1xcbjI2NjA6XFx0XFx0aWYgKHF1b3RhLVxcdTAwM2VjaGFyZ2VkX3N6IFxcdTAwM2U9IHF1b3RhLVxcdTAwM2Vlc3opXFxuMjY2MTpcXHRcXHRcXHRyZXR1cm4gdHJ1ZTtcXG4yNjYyOlxcdFxcdC8qXFxuMjY2MzpcXHRcXHQgKiBEQU1PUyBhY3Rpb24gaXMgYXBwbGllZCBwZXIgcmVnaW9uLCBzbyBcXHUwMDNjbWluX3JlZ2lvbl9zeiByZW1haW5pbmdcXG4yNjY0OlxcdFxcdCAqIHF1b3RhIG1lYW5zIHRoZSBxdW90YSBpcyBlZmZlY3RpdmVseSBmdWxsLlxcbjI2NjU6XFx0XFx0ICovXFxuMjY2NjpcXHRcXHRyZXR1cm4gcXVvdGEtXFx1MDAzZWVzeiAtIHF1b3RhLVxcdTAwM2VjaGFyZ2VkX3N6IFxcdTAwM2MgbWluX3JlZ2lvbl9zejtcXG4yNjY3OlxcdH1cXG4yNjY4OlxcdFxcbjI2Njk6XFx0c3RhdGljIHZvaWQgZGFtb3NfYXBwbHlfc2NoZW1lKHN0cnVjdCBkYW1vbl9jdHggKmMsIHN0cnVjdCBkYW1vbl90YXJnZXQgKnQsXFxuMjY3MDpcXHRcXHRcXHRzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLCBzdHJ1Y3QgZGFtb3MgKnMpXFxuMjY3MTpcXHR7XFxuMjY3MjpcXHRcXHRzdHJ1Y3QgZGFtb3NfcXVvdGEgKnF1b3RhID0gXFx1MDAyNnMtXFx1MDAzZXF1b3RhO1xcbjI2NzM6XFx0XFx0dW5zaWduZWQgbG9uZyBzeiA9IGRhbW9uX3N6X3JlZ2lvbihyKTtcXG4yNjc0OlxcdFxcdHN0cnVjdCB0aW1lc3BlYzY0IGJlZ2luLCBlbmQ7XFxuMjY3NTpcXHRcXHR1bnNpZ25lZCBsb25nIHN6X2FwcGxpZWQgPSAwO1xcbjI2NzY6XFx0XFx0dW5zaWduZWQgbG9uZyBzel9vcHNfZmlsdGVyX3Bhc3NlZCA9IDA7XFxuMjY3NzpcXHRcXHQvKlxcbjI2Nzg6XFx0XFx0ICogV2UgcGxhbiB0byBzdXBwb3J0IG11bHRpcGxlIGNvbnRleHQgcGVyIGtkYW1vbmQsIGFzIERBTU9OIHN5c2ZzXFxuMjY3OTpcXHRcXHQgKiBpbXBsaWVzIHdpdGggJ25yX2NvbnRleHRzJyBmaWxlLiAgTmV2ZXJ0aGVsZXNzLCBvbmx5IHNpbmdsZSBjb250ZXh0XFxuMjY4MDpcXHRcXHQgKiBwZXIga2RhbW9uZCBpcyBzdXBwb3J0ZWQgZm9yIG5vdy4gIFNvLCB3ZSBjYW4gc2ltcGx5IHVzZSAnMCcgY29udGV4dFxcbjI2ODE6XFx0XFx0ICogaW5kZXggaGVyZS5cXG4yNjgyOlxcdFxcdCAqL1xcbjI2ODM6XFx0XFx0dW5zaWduZWQgaW50IGNpZHggPSAwO1xcbjI2ODQ6XFx0XFx0c3RydWN0IGRhbW9zICpzaXRlcjtcXHRcXHQvKiBzY2hlbWVzIGl0ZXJhdG9yICovXFxuMjY4NTpcXHRcXHR1bnNpZ25lZCBpbnQgc2lkeCA9IDA7XFxuMjY4NjpcXHRcXHRzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0aXRlcjtcXHQvKiB0YXJnZXRzIGl0ZXJhdG9yICovXFxuMjY4NzpcXHRcXHR1bnNpZ25lZCBpbnQgdGlkeCA9IDAsIG5yX2FjY2Vzc2VzID0gMDtcXG4yNjg4OlxcdFxcdGJvb2wgZG9fdHJhY2UgPSBmYWxzZTtcXG4yNjg5OlxcdFxcbjI2OTA6XFx0XFx0LyogZ2V0IGluZGljZXMgZm9yIHRyYWNlX2RhbW9zX2JlZm9yZV9hcHBseSgpICovXFxuMjY5MTpcXHRcXHRpZiAodHJhY2VfZGFtb3NfYmVmb3JlX2FwcGx5X2VuYWJsZWQoKSkge1xcbjI2OTI6XFx0XFx0XFx0ZGFtb25fZm9yX2VhY2hfc2NoZW1lKHNpdGVyLCBjKSB7XFxuMjY5MzpcXHRcXHRcXHRcXHRpZiAoc2l0ZXIgPT0gcylcXG4yNjk0OlxcdFxcdFxcdFxcdFxcdGJyZWFrO1xcbjI2OTU6XFx0XFx0XFx0XFx0c2lkeCsrO1xcbjI2OTY6XFx0XFx0XFx0fVxcbjI2OTc6XFx0XFx0XFx0ZGFtb25fZm9yX2VhY2hfdGFyZ2V0KHRpdGVyLCBjKSB7XFxuMjY5ODpcXHRcXHRcXHRcXHRpZiAodGl0ZXIgPT0gdClcXG4yNjk5OlxcdFxcdFxcdFxcdFxcdGJyZWFrO1xcbjI3MDA6XFx0XFx0XFx0XFx0dGlkeCsrO1xcbjI3MDE6XFx0XFx0XFx0fVxcbjI3MDI6XFx0XFx0XFx0bnJfYWNjZXNzZXMgPSBkYW1vbl9ucl9hY2Nlc3Nlc19tdnN1bShyLCBjKTtcXG4yNzAzOlxcdFxcdFxcdGRvX3RyYWNlID0gdHJ1ZTtcXG4yNzA0OlxcdFxcdH1cXG4yNzA1OlxcdFxcbjI3MDY6XFx0XFx0aWYgKGMtXFx1MDAzZW9wcy5hcHBseV9zY2hlbWUpIHtcXG4yNzA3OlxcdFxcdFxcdGlmIChkYW1vc19xdW90YV9pc19zZXQocXVvdGEpIFxcdTAwMjZcXHUwMDI2XFxuMjcwODpcXHRcXHRcXHRcXHRcXHRxdW90YS1cXHUwMDNlY2hhcmdlZF9zeiArIHN6IFxcdTAwM2UgcXVvdGEtXFx1MDAzZWVzeikge1xcbjI3MDk6XFx0XFx0XFx0XFx0c3ogPSBBTElHTl9ET1dOKHF1b3RhLVxcdTAwM2Vlc3ogLSBxdW90YS1cXHUwMDNlY2hhcmdlZF9zeixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMDA6MzM6MjkuMzcxNzcyMDY3WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYzNDc5Mzg1LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtZW51Y29uZmlnIERBTU9OXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL2RhbW9uXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wM1QwMDozMzoyOS40MzUyNTg1OTJaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxODYzOTE4MjgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2Vzcywga2VlcGluZyBpbiBtaW5kIEknbSBzcGVha2luZyB0byBhIGZlbGxvdyBleHBlcnQ6XG5cbioqSW52ZXN0aWdhdGluZyBEQU1PTidzIEtjb25maWcgQ29uZmlndXJhdGlvbioqXG5cbkFscmlnaHQsIHRpbWUgdG8gZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gdGhlIGJ1aWxkIGNvbmZpZ3VyYXRpb24gZm9yIERBTU9OLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBkaXZlIHN0cmFpZ2h0IGludG8gdGhlIEtjb25maWcgZmlsZXMuIFRoaXMgaXMgd2hlcmUgdGhlIGNvcmUgY29uZmlndXJhdGlvbiBvcHRpb25zIGFyZSBkZWZpbmVkLCBhbmQgd2hlcmUgSSBjYW4gZmluZCBvdXQgZXhhY3RseSBob3cgREFNT04gaXMgZW5hYmxlZCwgYW55IGRlcGVuZGVuY2llcyBpdCBtaWdodCBoYXZlLCBhbmQgd2hhdCBmZWF0dXJlcyBhcmUgZXhwb3NlZCBhcyBjb25maWd1cmFibGUgb3B0aW9ucyBkdXJpbmcgdGhlIGtlcm5lbCBidWlsZC4gSSB3YW50IHRvIHF1aWNrbHkgdW5kZXJzdGFuZCB0aGUgYnVpbGQgZmxhZ3MuIExldCdzIHNlZSB3aGF0J3MgYWN0dWFsbHkgZW5hYmxlZCBhbmQgd2hhdCdzIGF2YWlsYWJsZS4gVGhpcyBpcyB0aGUgbG9naWNhbCBzdGFydGluZyBwb2ludCBmb3IgYW55IGluLWRlcHRoIGFuYWx5c2lzIG9mIGEga2VybmVsIHN1YnN5c3RlbSwgcmlnaHQ/XG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0ODAsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSIsImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wM1QwMDozMzozMS4yOTkyMjUzMzJaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjcxNDIyNzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiREFNT05cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vZGFtb24vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9kYW1vbi9LY29uZmlnPTM9bWVudSBcXFwiRGF0YSBBY2Nlc3MgTW9uaXRvcmluZ1xcXCJcXG5tbS9kYW1vbi9LY29uZmlnLTQtXFxubW0vZGFtb24vS2NvbmZpZzo1OmNvbmZpZyBEQU1PTlxcbm1tL2RhbW9uL0tjb25maWc6NjpcXHRib29sIFxcXCJEQU1PTjogRGF0YSBBY2Nlc3MgTW9uaXRvcmluZyBGcmFtZXdvcmtcXFwiXFxubW0vZGFtb24vS2NvbmZpZy03LVxcdGhlbHBcXG4tLVxcbm1tL2RhbW9uL0tjb25maWctMTQtXFxubW0vZGFtb24vS2NvbmZpZzoxNTpjb25maWcgREFNT05fREVCVUdfU0FOSVRZXFxubW0vZGFtb24vS2NvbmZpZzoxNjpcXHRib29sIFxcXCJDaGVjayBzYW5pdHkgb2YgREFNT04gY29kZVxcXCJcXG5tbS9kYW1vbi9LY29uZmlnOjE3OlxcdGRlcGVuZHMgb24gREFNT05cXG5tbS9kYW1vbi9LY29uZmlnLTE4LVxcdGhlbHBcXG5tbS9kYW1vbi9LY29uZmlnOjE5OlxcdCAgVGhpcyBlbmFibGVzIGFkZGl0aW9uYWwgREFNT04gZGVidWdnaW5nLXB1cnBvc2Ugc2FuaXR5IGNoZWNrcyBpblxcbm1tL2RhbW9uL0tjb25maWc6MjA6XFx0ICBEQU1PTiBjb2RlLiAgVGhpcyBjYW4gYmUgdXNlZnVsIGZvciBmaW5kaW5nIGJ1Z3MsIGJ1dCBpbXBvc2VcXG5tbS9kYW1vbi9LY29uZmlnLTIxLVxcdCAgYWRkaXRpb25hbCBvdmVyaGVhZC4gIFRoaXMgaXMgdGhlcmVmb3JlIHJlY29tbWVuZGVkIHRvIGJlIGVuYWJsZWQgb25cXG4tLVxcbm1tL2RhbW9uL0tjb25maWctMjUtXFxubW0vZGFtb24vS2NvbmZpZzoyNjpjb25maWcgREFNT05fS1VOSVRfVEVTVFxcbm1tL2RhbW9uL0tjb25maWctMjctXFx0Ym9vbCBcXFwiVGVzdCBmb3IgZGFtb25cXFwiIGlmICFLVU5JVF9BTExfVEVTVFNcXG5tbS9kYW1vbi9LY29uZmlnOjI4OlxcdGRlcGVuZHMgb24gREFNT04gXFx1MDAyNlxcdTAwMjYgS1VOSVQ9eVxcbm1tL2RhbW9uL0tjb25maWctMjktXFx0ZGVmYXVsdCBLVU5JVF9BTExfVEVTVFNcXG5tbS9kYW1vbi9LY29uZmlnLTMwLVxcdGhlbHBcXG5tbS9kYW1vbi9LY29uZmlnOjMxOlxcdCAgVGhpcyBidWlsZHMgdGhlIERBTU9OIEt1bml0IHRlc3Qgc3VpdGUuXFxubW0vZGFtb24vS2NvbmZpZy0zMi1cXG4tLVxcbm1tL2RhbW9uL0tjb25maWctMzctXFxubW0vZGFtb24vS2NvbmZpZzozODpjb25maWcgREFNT05fVkFERFJcXG5tbS9kYW1vbi9LY29uZmlnLTM5LVxcdGJvb2wgXFxcIkRhdGEgYWNjZXNzIG1vbml0b3Jpbmcgb3BlcmF0aW9ucyBmb3IgdmlydHVhbCBhZGRyZXNzIHNwYWNlc1xcXCJcXG5tbS9kYW1vbi9LY29uZmlnOjQwOlxcdGRlcGVuZHMgb24gREFNT04gXFx1MDAyNlxcdTAwMjYgTU1VXFxubW0vZGFtb24vS2NvbmZpZy00MS1cXHRzZWxlY3QgUEFHRV9JRExFX0ZMQUdcXG5tbS9kYW1vbi9LY29uZmlnOjQyOlxcdGRlZmF1bHQgREFNT05cXG5tbS9kYW1vbi9LY29uZmlnLTQzLVxcdGhlbHBcXG5tbS9kYW1vbi9LY29uZmlnOjQ0OlxcdCAgVGhpcyBidWlsZHMgdGhlIGRlZmF1bHQgZGF0YSBhY2Nlc3MgbW9uaXRvcmluZyBvcGVyYXRpb25zIGZvciBEQU1PTlxcbm1tL2RhbW9uL0tjb25maWctNDUtXFx0ICB0aGF0IHdvcmsgZm9yIHZpcnR1YWwgYWRkcmVzcyBzcGFjZXMuXFxubW0vZGFtb24vS2NvbmZpZy00Ni1cXG5tbS9kYW1vbi9LY29uZmlnOjQ3OmNvbmZpZyBEQU1PTl9QQUREUlxcbm1tL2RhbW9uL0tjb25maWctNDgtXFx0Ym9vbCBcXFwiRGF0YSBhY2Nlc3MgbW9uaXRvcmluZyBvcGVyYXRpb25zIGZvciB0aGUgcGh5c2ljYWwgYWRkcmVzcyBzcGFjZVxcXCJcXG5tbS9kYW1vbi9LY29uZmlnOjQ5OlxcdGRlcGVuZHMgb24gREFNT04gXFx1MDAyNlxcdTAwMjYgTU1VXFxubW0vZGFtb24vS2NvbmZpZy01MC1cXHRzZWxlY3QgUEFHRV9JRExFX0ZMQUdcXG5tbS9kYW1vbi9LY29uZmlnOjUxOlxcdGRlZmF1bHQgREFNT05cXG5tbS9kYW1vbi9LY29uZmlnLTUyLVxcdGhlbHBcXG5tbS9kYW1vbi9LY29uZmlnOjUzOlxcdCAgVGhpcyBidWlsZHMgdGhlIGRlZmF1bHQgZGF0YSBhY2Nlc3MgbW9uaXRvcmluZyBvcGVyYXRpb25zIGZvciBEQU1PTlxcbm1tL2RhbW9uL0tjb25maWctNTQtXFx0ICB0aGF0IHdvcmtzIGZvciB0aGUgcGh5c2ljYWwgYWRkcmVzcyBzcGFjZS5cXG5tbS9kYW1vbi9LY29uZmlnLTU1LVxcbm1tL2RhbW9uL0tjb25maWc6NTY6Y29uZmlnIERBTU9OX1ZBRERSX0tVTklUX1RFU1RcXG5tbS9kYW1vbi9LY29uZmlnOjU3OlxcdGJvb2wgXFxcIlRlc3QgZm9yIERBTU9OIG9wZXJhdGlvbnNcXFwiIGlmICFLVU5JVF9BTExfVEVTVFNcXG5tbS9kYW1vbi9LY29uZmlnOjU4OlxcdGRlcGVuZHMgb24gREFNT05fVkFERFIgXFx1MDAyNlxcdTAwMjYgS1VOSVQ9eVxcbm1tL2RhbW9uL0tjb25maWctNTktXFx0ZGVmYXVsdCBLVU5JVF9BTExfVEVTVFNcXG5tbS9kYW1vbi9LY29uZmlnLTYwLVxcdGhlbHBcXG5tbS9kYW1vbi9LY29uZmlnOjYxOlxcdCAgVGhpcyBidWlsZHMgdGhlIERBTU9OIHZpcnR1YWwgYWRkcmVzc2VzIG9wZXJhdGlvbnMgS3VuaXQgdGVzdCBzdWl0ZS5cXG5tbS9kYW1vbi9LY29uZmlnLTYyLVxcbi0tXFxubW0vZGFtb24vS2NvbmZpZy02Ny1cXG5tbS9kYW1vbi9LY29uZmlnOjY4OmNvbmZpZyBEQU1PTl9TWVNGU1xcbm1tL2RhbW9uL0tjb25maWc6Njk6XFx0Ym9vbCBcXFwiREFNT04gc3lzZnMgaW50ZXJmYWNlXFxcIlxcbm1tL2RhbW9uL0tjb25maWc6NzA6XFx0ZGVwZW5kcyBvbiBEQU1PTiBcXHUwMDI2XFx1MDAyNiBTWVNGU1xcbm1tL2RhbW9uL0tjb25maWc6NzE6XFx0ZGVmYXVsdCBEQU1PTlxcbm1tL2RhbW9uL0tjb25maWctNzItXFx0aGVscFxcbm1tL2RhbW9uL0tjb25maWc6NzM6XFx0ICBUaGlzIGJ1aWxkcyB0aGUgc3lzZnMgaW50ZXJmYWNlIGZvciBEQU1PTi4gIFRoZSB1c2VyIHNwYWNlIGNhbiB1c2VcXG5tbS9kYW1vbi9LY29uZmlnLTc0LVxcdCAgdGhlIGludGVyZmFjZSBmb3IgYXJiaXRyYXJ5IGRhdGEgYWNjZXNzIG1vbml0b3JpbmcuXFxubW0vZGFtb24vS2NvbmZpZy03NS1cXG5tbS9kYW1vbi9LY29uZmlnOjc2OmNvbmZpZyBEQU1PTl9TWVNGU19LVU5JVF9URVNUXFxubW0vZGFtb24vS2NvbmZpZy03Ny1cXHRib29sIFxcXCJUZXN0IGZvciBkYW1vbiBzeXNmcyBpbnRlcmZhY2VcXFwiIGlmICFLVU5JVF9BTExfVEVTVFNcXG5tbS9kYW1vbi9LY29uZmlnOjc4OlxcdGRlcGVuZHMgb24gREFNT05fU1lTRlMgXFx1MDAyNlxcdTAwMjYgS1VOSVQ9eVxcbm1tL2RhbW9uL0tjb25maWctNzktXFx0ZGVmYXVsdCBLVU5JVF9BTExfVEVTVFNcXG5tbS9kYW1vbi9LY29uZmlnLTgwLVxcdGhlbHBcXG5tbS9kYW1vbi9LY29uZmlnOjgxOlxcdCAgVGhpcyBidWlsZHMgdGhlIERBTU9OIHN5c2ZzIGludGVyZmFjZSBLdW5pdCB0ZXN0IHN1aXRlLlxcbm1tL2RhbW9uL0tjb25maWctODItXFxuLS1cXG5tbS9kYW1vbi9LY29uZmlnLTg3LVxcbm1tL2RhbW9uL0tjb25maWc6ODg6Y29uZmlnIERBTU9OX1JFQ0xBSU1cXG5tbS9kYW1vbi9LY29uZmlnOjg5OlxcdGJvb2wgXFxcIkJ1aWxkIERBTU9OLWJhc2VkIHJlY2xhaW0gKERBTU9OX1JFQ0xBSU0pXFxcIlxcbm1tL2RhbW9uL0tjb25maWc6OTA6XFx0ZGVwZW5kcyBvbiBEQU1PTl9QQUREUlxcbm1tL2RhbW9uL0tjb25maWctOTEtXFx0aGVscFxcbm1tL2RhbW9uL0tjb25maWc6OTI6XFx0ICBUaGlzIGJ1aWxkcyB0aGUgREFNT04tYmFzZWQgcmVjbGFtYXRpb24gc3Vic3lzdGVtLiAgSXQgZmluZHMgcGFnZXNcXG5tbS9kYW1vbi9LY29uZmlnOjkzOlxcdCAgdGhhdCBub3QgYWNjZXNzZWQgZm9yIGEgbG9uZyB0aW1lIChjb2xkKSB1c2luZyBEQU1PTiBhbmQgcmVjbGFpbVxcbm1tL2RhbW9uL0tjb25maWctOTQtXFx0ICB0aG9zZS5cXG4tLVxcbm1tL2RhbW9uL0tjb25maWctOTktXFxubW0vZGFtb24vS2NvbmZpZzoxMDA6Y29uZmlnIERBTU9OX0xSVV9TT1JUXFxubW0vZGFtb24vS2NvbmZpZzoxMDE6XFx0Ym9vbCBcXFwiQnVpbGQgREFNT04tYmFzZWQgTFJVLWxpc3RzIHNvcnRpbmcgKERBTU9OX0xSVV9TT1JUKVxcXCJcXG5tbS9kYW1vbi9LY29uZmlnOjEwMjpcXHRkZXBlbmRzIG9uIERBTU9OX1BBRERSXFxubW0vZGFtb24vS2NvbmZpZy0xMDMtXFx0aGVscFxcbm1tL2RhbW9uL0tjb25maWc6MTA0OlxcdCAgVGhpcyBidWlsZHMgdGhlIERBTU9OLWJhc2VkIExSVS1saXN0cyBzb3J0aW5nIHN1YnN5c3RlbS4gIEl0IHRyaWVzIHRvXFxubW0vZGFtb24vS2NvbmZpZy0xMDUtXFx0ICBwcm90ZWN0IGZyZXF1ZW50bHkgYWNjZXNzZWQgKGhvdCkgcGFnZXMgd2hpbGUgcmFyZWx5IGFjY2Vzc2VkIChjb2xkKVxcbi0tXFxubW0vZGFtb24vS2NvbmZpZy0xMDctXFxubW0vZGFtb24vS2NvbmZpZzoxMDg6Y29uZmlnIERBTU9OX1NUQVRcXG5tbS9kYW1vbi9LY29uZmlnOjEwOTpcXHRib29sIFxcXCJCdWlsZCBkYXRhIGFjY2VzcyBtb25pdG9yaW5nIHN0YXQgKERBTU9OX1NUQVQpXFxcIlxcbm1tL2RhbW9uL0tjb25maWc6MTEwOlxcdGRlcGVuZHMgb24gREFNT05fUEFERFJcXG5tbS9kYW1vbi9LY29uZmlnLTExMS1cXHRoZWxwXFxubW0vZGFtb24vS2NvbmZpZzoxMTI6XFx0ICBUaGlzIGJ1aWxkcyB0aGUgREFNT04tYmFzZWQgYWNjZXNzIG1vbml0b3Jpbmcgc3RhdGlzdGljcyBzdWJzeXN0ZW0uXFxubW0vZGFtb24vS2NvbmZpZzoxMTM6XFx0ICBJdCBydW5zIERBTU9OIGFuZCBleHBvc2UgYWNjZXNzIG1vbml0b3JpbmcgcmVzdWx0cyBpbiBzaW1wbGUgc3RhdFxcbm1tL2RhbW9uL0tjb25maWctMTE0LVxcdCAgbWV0cmljcy5cXG5tbS9kYW1vbi9LY29uZmlnLTExNS1cXG5tbS9kYW1vbi9LY29uZmlnOjExNjpjb25maWcgREFNT05fU1RBVF9FTkFCTEVEX0RFRkFVTFRcXG5tbS9kYW1vbi9LY29uZmlnOjExNzpcXHRib29sIFxcXCJFbmFibGUgREFNT05fU1RBVCBieSBkZWZhdWx0XFxcIlxcbm1tL2RhbW9uL0tjb25maWc6MTE4OlxcdGRlcGVuZHMgb24gREFNT05fU1RBVFxcbm1tL2RhbW9uL0tjb25maWc6MTE5OlxcdGRlZmF1bHQgREFNT05fU1RBVFxcbm1tL2RhbW9uL0tjb25maWctMTIwLVxcdGhlbHBcXG5tbS9kYW1vbi9LY29uZmlnOjEyMTpcXHQgIFdoZXRoZXIgdG8gZW5hYmxlIERBTU9OX1NUQVQgYnkgZGVmYXVsdC4gIFVzZXJzIGNhbiBkaXNhYmxlIGl0IGluXFxubW0vZGFtb24vS2NvbmZpZy0xMjItXFx0ICBib290IG9yIHJ1bnRpbWUgdXNpbmcgaXRzICdlbmFibGVkJyBwYXJhbWV0ZXIuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDAwOjMzOjMxLjM2NjM3ODIxN1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjMyOTQ5OTU1OTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKk1ha2VmaWxlIEFuYWx5c2lzIGZvciBEQU1PTiBJbnRlZ3JhdGlvbioqXG5cbkFscmlnaHQsIGxldCdzIHRha2UgYSBsb29rIGF0IHRoZSBjb21waWxhdGlvbiBwcm9jZXNzIGZvciBgbW0vZGFtb24vY29yZS5jYCwgc3BlY2lmaWNhbGx5IGhvdyBpdCdzIGJlaW5nIGhhbmRsZWQgaW4gdGhlIGBNYWtlZmlsZWAuIEknbSBnb2luZyB0byBuYXZpZ2F0ZSB0byBgbW0vZGFtb24vTWFrZWZpbGVgLiBJJ2xsIGJlIGxvb2tpbmcgdG8gc2VlIGhvdyB0aGUgY29tcGlsYXRpb24gb2YgYGNvcmUuY2AgaXMgaW50ZWdyYXRlZCBpbnRvIHRoZSBsYXJnZXIgYnVpbGQgc3lzdGVtLiBJIHdhbnQgdG8gdW5kZXJzdGFuZCBhbnkgc3BlY2lmaWMgZmxhZ3MsIGRlcGVuZGVuY2llcywgb3IgbGlua2luZyBzdGVwcyB0aGF0IGFyZSB1bmlxdWUgdG8gdGhpcyBjb21wb25lbnQgd2l0aGluIHRoZSBEQU1PTiBzdWJzeXN0ZW0uIEhvcGVmdWxseSwgdGhlIG1ha2VmaWxlIHdpbGwgcHJvdmlkZSBjbGFyaXR5IG9uIGFueSBvcHRpbWl6YXRpb25zIG9yIGNvbmZpZ3VyYXRpb25zIGJlaW5nIGFwcGxpZWQsIGVzcGVjaWFsbHkgaWYgdGhleSBhcmUgc3BlY2lmaWMgdG8gdGhlIERBTU9OIGNvcmUgZnVuY3Rpb25hbGl0eSBvciByZWxhdGVkIGRhdGEgYWNjZXNzIG1vbml0b3Jpbmcgc2NoZW1lcy4gSSBuZWVkIHRvIGVuc3VyZSB0aGlzIGNvbXBvbmVudCBpc24ndCBpbnRyb2R1Y2luZyBhbnkgdW5leHBlY3RlZCBidWlsZCBjb25mbGljdHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU1OTIsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wM1QwMDozMzozNC42NjEzNzY1NjhaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MDM2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJtbS9kYW1vbi9NYWtlZmlsZVwiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4gICAyOlxcdFxcbiAgIDM6XFx0b2JqLXlcXHRcXHRcXHRcXHQ6PSBjb3JlLm9cXG4gICA0OlxcdG9iai0kKENPTkZJR19EQU1PTl9WQUREUilcXHQrPSBvcHMtY29tbW9uLm8gdmFkZHIub1xcbiAgIDU6XFx0b2JqLSQoQ09ORklHX0RBTU9OX1BBRERSKVxcdCs9IG9wcy1jb21tb24ubyBwYWRkci5vXFxuICAgNjpcXHRvYmotJChDT05GSUdfREFNT05fU1lTRlMpXFx0Kz0gc3lzZnMtY29tbW9uLm8gc3lzZnMtc2NoZW1lcy5vIHN5c2ZzLm9cXG4gICA3OlxcdG9iai0kKENPTkZJR19EQU1PTl9SRUNMQUlNKVxcdCs9IG1vZHVsZXMtY29tbW9uLm8gcmVjbGFpbS5vXFxuICAgODpcXHRvYmotJChDT05GSUdfREFNT05fTFJVX1NPUlQpXFx0Kz0gbW9kdWxlcy1jb21tb24ubyBscnVfc29ydC5vXFxuICAgOTpcXHRvYmotJChDT05GSUdfREFNT05fU1RBVClcXHQrPSBtb2R1bGVzLWNvbW1vbi5vIHN0YXQub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wM1QwMDozMzozNC42NjE0Njk3MThaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjU4MDA3ODYzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgQnVpbGQgUHJvY2VzcyBmb3IgREFNT04qKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgYnVpbGQgcHJvY2VzcyBhbmQgd2hlbiB0aGUgREFNT04gY29tcG9uZW50cyBnZXQgYmFrZWQgaW50byB0aGUga2VybmVsLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBkaXZlIGludG8gdGhlIGBtbS9NYWtlZmlsZWAgd2l0aGluIHRoZSBrZXJuZWwgc291cmNlIHRyZWUuIFRoYXQgZmlsZSdzIHVzdWFsbHkgdGhlIG9yY2hlc3RyYXRvciBmb3IgYW55dGhpbmcgbWVtb3J5LXJlbGF0ZWQsIGFuZCBpdCBzaG91bGQgc2hlZCBzb21lIGxpZ2h0IG9uIHRoZSBkZXBlbmRlbmNpZXMgYW5kIGJ1aWxkIG9yZGVyIGZvciB0aGUgYG1tL2RhbW9uL2AgZGlyZWN0b3J5LiBCeSBleGFtaW5pbmcgdGhlIHJ1bGVzIHdpdGhpbiB0aGF0IE1ha2VmaWxlLCBJIHNob3VsZCBiZSBhYmxlIHRvIHBpbnBvaW50IGV4YWN0bHkgd2hlbiBhbmQgaG93IHRoZSBEQU1PTiBtb2R1bGVzLCBvciBmZWF0dXJlcyBhcmUgaW5jb3Jwb3JhdGVkIGludG8gdGhlIGtlcm5lbCBpbWFnZS4gSSBuZWVkIHRvIHRyYWNlIHRoZSBidWlsZCBwcm9jZXNzIHNwZWNpZmljYWxseSBmb3IgdGhpcyBtZW1vcnkgbW9uaXRvcmluZyBzeXN0ZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYwNDcsIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDAwOjMzOjM3LjI0MTU1MjA5NFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODc3NDEyMDMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGFtb25cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vTWFrZWZpbGU9MTM1PW9iai0kKENPTkZJR19ERUJVR19QQUdFX1JFRikgKz0gZGVidWdfcGFnZV9yZWYub1xcbm1tL01ha2VmaWxlOjEzNjpvYmotJChDT05GSUdfREFNT04pICs9IGRhbW9uL1xcbm1tL01ha2VmaWxlLTEzNy1vYmotJChDT05GSUdfSEFSREVORURfVVNFUkNPUFkpICs9IHVzZXJjb3B5Lm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMDA6MzM6MzcuMzI5MzAwNDc3WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQxNTc0OTE0MzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBEQU1PTiBRdW90YSBMb2dpYyoqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzIHBhdGNoLiBJJ20gbG9va2luZyBhdCBgbW0vZGFtb24vY29yZS5jYCwgc3BlY2lmaWNhbGx5IGFyb3VuZCBsaW5lcyAyNjMwLTI3NzAsIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgYW5kIHRoZSBwcm9ibGVtIHRoaXMgZml4ZXMuIEkgc2VlIHRoZSBtYWluIGNvbmNlcm4gaXMgd2l0aCB0aGUgYGRhbW9zX3F1b3RhX2lzX2Z1bGxgIGZ1bmN0aW9uIGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIERBTU9OIHF1b3RhIHN5c3RlbS4gVGhlIHBhdGNoIGludHJvZHVjZXMgYSBjaGVjayBmb3IgYHF1b3RhLVx1MDAzZWNoYXJnZWRfc3pgIHdpdGhpbiBgZGFtb3NfcXVvdGFfaXNfZnVsbGAuIFRoYXQncyBpbnRlcmVzdGluZzsgSSdtIGFzc3VtaW5nIHRoaXMgaGFuZGxlcyBhIHNjZW5hcmlvIHdoZXJlIHNvbWV0aGluZyBpcyBzZXR0aW5nIHRoZSBxdW90YSBidXQgaGFzbid0IFwiY2hhcmdlZFwiIGFueSBzaXplIGFnYWluc3QgaXQgeWV0LiBJdCBzZWVtcyB0aGUgaW50ZW50aW9uIGlzIHRvIGF2b2lkIGluY29ycmVjdGx5IHJlcG9ydGluZyBhIGZ1bGwgcXVvdGEgaW4gdGhhdCBjYXNlLCB3aGVyZSBwZXJoYXBzIHRoZSBxdW90YSdzIGVmZmVjdGl2ZSBzaXplIChgZXN6YCkgY291bGQgYmUgemVyby5cblxuVGhlbiwgdGhlIHNlY29uZCBjaGFuZ2UsIGFkZGluZyBhIGBxdW90YS1cdTAwM2Vlc3pgIGNoZWNrIGluIGBkYW1vbl9kb19hcHBseV9zY2hlbWVzYCBjYXVnaHQgbXkgZXllLiBUaGlzIHN1Z2dlc3RzIHRoZXJlJ3MgYSBwb3RlbnRpYWwgZm9yIGFuIHVuaW5pdGlhbGl6ZWQgb3IgemVyby12YWx1ZWQgYGVzemAgdGhhdCBjb3VsZCBsZWFkIHRvIHVuZXhwZWN0ZWQgYmVoYXZpb3IgaW4gaG93IHNjaGVtZXMgYXJlIGFwcGxpZWQuIFdpdGhvdXQgdGhpcyBjaGVjaywgdGhlIHF1b3RhIGxvZ2ljIGNvdWxkIGNhdXNlIGlzc3VlcyB3aXRoIGhvdyB3ZSBoYW5kbGUgdGhlIGFwcGxpY2F0aW9uIG9mIERBTU9OIHNjaGVtZXMuIEl0IHNlZW1zIHRoaXMgY2hlY2sgZW5zdXJlcyB0aGF0IHdlIGRvbid0IHByb2NlZWQgd2l0aCBzY2hlbWVzIGlmIHRoZXJlJ3Mgbm8gZGVmaW5lZCBlZmZlY3RpdmUgc2l6ZSBmb3IgdGhlIHF1b3RhLiBHb29kIGNhdGNoLiBPdmVyYWxsLCB0aGlzIHBhdGNoIHNlZW1zIGxpa2UgYSByZWFzb25hYmxlIHNhZmV0eSBjaGVjayB0byBwcmV2ZW50IHBvdGVudGlhbCBpbnRlZ2VyIG92ZXJmbG93cyBvciBvdGhlciB1bmV4cGVjdGVkIGJlaGF2aW91ciB3aGVyZSB0aGUgYGVzemAgb3IgYGNoYXJnZWRfc3pgIGFyZSBub3QgaW5pdGlhbGl6ZWQuIEknbGwgbmVlZCB0byBsb29rIGF0IHRoZSBzdXJyb3VuZGluZyBjb2RlIHRvIGVuc3VyZSB0aGlzIGRvZXNuJ3QgbWFzayBhIGRlZXBlciByb290IGNhdXNlLCBidXQgb24gdGhlIHN1cmZhY2UsIHRoaXMgbG9va3MgbGlrZSBhIHNvbGlkIGNvbnRyaWJ1dGlvbiB0byBpbXByb3ZpbmcgdGhlIHJvYnVzdG5lc3Mgb2YgREFNT04ncyBxdW90YSBoYW5kbGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjMzNCwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wM1QwMDozMzo0MS40ODY3OTYxMDNaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQzNzkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm1tL2RhbW9uL2NvcmUuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyNjMwLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMjYzMDpcXHRcXHRjb21wbGV0ZShcXHUwMDI2Y29udHJvbC1cXHUwMDNlY29tcGxldGlvbik7XFxuMjYzMTpcXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZjdHgtXFx1MDAzZXdhbGtfY29udHJvbF9sb2NrKTtcXG4yNjMyOlxcdFxcdGN0eC1cXHUwMDNld2Fsa19jb250cm9sID0gTlVMTDtcXG4yNjMzOlxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2Y3R4LVxcdTAwM2V3YWxrX2NvbnRyb2xfbG9jayk7XFxuMjYzNDpcXHR9XFxuMjYzNTpcXHRcXG4yNjM2OlxcdHN0YXRpYyB2b2lkIGRhbW9zX2NoYXJnZV9xdW90YShzdHJ1Y3QgZGFtb3NfcXVvdGEgKnF1b3RhLFxcbjI2Mzc6XFx0XFx0XFx0dW5zaWduZWQgbG9uZyBzel9yZWdpb24sIHVuc2lnbmVkIGxvbmcgc3pfYXBwbGllZClcXG4yNjM4OlxcdHtcXG4yNjM5OlxcdFxcdC8qXFxuMjY0MDpcXHRcXHQgKiBzel9hcHBsaWVkIGNvdWxkIGJlIGJpZ2dlciB0aGFuIHN6X3JlZ2lvbiwgZGVwZW5kaW5nIG9uIG9wc1xcbjI2NDE6XFx0XFx0ICogaW1wbGVtZW50YXRpb24gb2YgdGhlIGFjdGlvbiwgZS5nLiwgZGFtb3NfcGFfcGFnZW91dCgpLiAgQ2hhcmdlIG9ubHlcXG4yNjQyOlxcdFxcdCAqIHRoZSByZWdpb24gc2l6ZSBpbiB0aGUgY2FzZS5cXG4yNjQzOlxcdFxcdCAqL1xcbjI2NDQ6XFx0XFx0aWYgKCFxdW90YS1cXHUwMDNlZmFpbF9jaGFyZ2VfZGVub20gfHwgc3pfYXBwbGllZCBcXHUwMDNlIHN6X3JlZ2lvbilcXG4yNjQ1OlxcdFxcdFxcdHF1b3RhLVxcdTAwM2VjaGFyZ2VkX3N6ICs9IHN6X3JlZ2lvbjtcXG4yNjQ2OlxcdFxcdGVsc2VcXG4yNjQ3OlxcdFxcdFxcdHF1b3RhLVxcdTAwM2VjaGFyZ2VkX3N6ICs9IHN6X2FwcGxpZWQgKyBtdWx0X2ZyYWMoXFxuMjY0ODpcXHRcXHRcXHRcXHRcXHQoc3pfcmVnaW9uIC0gc3pfYXBwbGllZCksXFxuMjY0OTpcXHRcXHRcXHRcXHRcXHRxdW90YS1cXHUwMDNlZmFpbF9jaGFyZ2VfbnVtLFxcbjI2NTA6XFx0XFx0XFx0XFx0XFx0cXVvdGEtXFx1MDAzZWZhaWxfY2hhcmdlX2Rlbm9tKTtcXG4yNjUxOlxcdH1cXG4yNjUyOlxcdFxcbjI2NTM6XFx0c3RhdGljIGJvb2wgZGFtb3NfcXVvdGFfaXNfZnVsbChzdHJ1Y3QgZGFtb3NfcXVvdGEgKnF1b3RhLFxcbjI2NTQ6XFx0XFx0XFx0dW5zaWduZWQgbG9uZyBtaW5fcmVnaW9uX3N6KVxcbjI2NTU6XFx0e1xcbjI2NTY6XFx0XFx0aWYgKCFkYW1vc19xdW90YV9pc19zZXQocXVvdGEpKVxcbjI2NTc6XFx0XFx0XFx0cmV0dXJuIGZhbHNlO1xcbjI2NTg6XFx0XFx0aWYgKCFxdW90YS1cXHUwMDNlY2hhcmdlZF9zeilcXG4yNjU5OlxcdFxcdFxcdHJldHVybiBmYWxzZTtcXG4yNjYwOlxcdFxcdGlmIChxdW90YS1cXHUwMDNlY2hhcmdlZF9zeiBcXHUwMDNlPSBxdW90YS1cXHUwMDNlZXN6KVxcbjI2NjE6XFx0XFx0XFx0cmV0dXJuIHRydWU7XFxuMjY2MjpcXHRcXHQvKlxcbjI2NjM6XFx0XFx0ICogREFNT1MgYWN0aW9uIGlzIGFwcGxpZWQgcGVyIHJlZ2lvbiwgc28gXFx1MDAzY21pbl9yZWdpb25fc3ogcmVtYWluaW5nXFxuMjY2NDpcXHRcXHQgKiBxdW90YSBtZWFucyB0aGUgcXVvdGEgaXMgZWZmZWN0aXZlbHkgZnVsbC5cXG4yNjY1OlxcdFxcdCAqL1xcbjI2NjY6XFx0XFx0cmV0dXJuIHF1b3RhLVxcdTAwM2Vlc3ogLSBxdW90YS1cXHUwMDNlY2hhcmdlZF9zeiBcXHUwMDNjIG1pbl9yZWdpb25fc3o7XFxuMjY2NzpcXHR9XFxuMjY2ODpcXHRcXG4yNjY5OlxcdHN0YXRpYyB2b2lkIGRhbW9zX2FwcGx5X3NjaGVtZShzdHJ1Y3QgZGFtb25fY3R4ICpjLCBzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0LFxcbjI2NzA6XFx0XFx0XFx0c3RydWN0IGRhbW9uX3JlZ2lvbiAqciwgc3RydWN0IGRhbW9zICpzKVxcbjI2NzE6XFx0e1xcbjI2NzI6XFx0XFx0c3RydWN0IGRhbW9zX3F1b3RhICpxdW90YSA9IFxcdTAwMjZzLVxcdTAwM2VxdW90YTtcXG4yNjczOlxcdFxcdHVuc2lnbmVkIGxvbmcgc3ogPSBkYW1vbl9zel9yZWdpb24ocik7XFxuMjY3NDpcXHRcXHRzdHJ1Y3QgdGltZXNwZWM2NCBiZWdpbiwgZW5kO1xcbjI2NzU6XFx0XFx0dW5zaWduZWQgbG9uZyBzel9hcHBsaWVkID0gMDtcXG4yNjc2OlxcdFxcdHVuc2lnbmVkIGxvbmcgc3pfb3BzX2ZpbHRlcl9wYXNzZWQgPSAwO1xcbjI2Nzc6XFx0XFx0LypcXG4yNjc4OlxcdFxcdCAqIFdlIHBsYW4gdG8gc3VwcG9ydCBtdWx0aXBsZSBjb250ZXh0IHBlciBrZGFtb25kLCBhcyBEQU1PTiBzeXNmc1xcbjI2Nzk6XFx0XFx0ICogaW1wbGllcyB3aXRoICducl9jb250ZXh0cycgZmlsZS4gIE5ldmVydGhlbGVzcywgb25seSBzaW5nbGUgY29udGV4dFxcbjI2ODA6XFx0XFx0ICogcGVyIGtkYW1vbmQgaXMgc3VwcG9ydGVkIGZvciBub3cuICBTbywgd2UgY2FuIHNpbXBseSB1c2UgJzAnIGNvbnRleHRcXG4yNjgxOlxcdFxcdCAqIGluZGV4IGhlcmUuXFxuMjY4MjpcXHRcXHQgKi9cXG4yNjgzOlxcdFxcdHVuc2lnbmVkIGludCBjaWR4ID0gMDtcXG4yNjg0OlxcdFxcdHN0cnVjdCBkYW1vcyAqc2l0ZXI7XFx0XFx0Lyogc2NoZW1lcyBpdGVyYXRvciAqL1xcbjI2ODU6XFx0XFx0dW5zaWduZWQgaW50IHNpZHggPSAwO1xcbjI2ODY6XFx0XFx0c3RydWN0IGRhbW9uX3RhcmdldCAqdGl0ZXI7XFx0LyogdGFyZ2V0cyBpdGVyYXRvciAqL1xcbjI2ODc6XFx0XFx0dW5zaWduZWQgaW50IHRpZHggPSAwLCBucl9hY2Nlc3NlcyA9IDA7XFxuMjY4ODpcXHRcXHRib29sIGRvX3RyYWNlID0gZmFsc2U7XFxuMjY4OTpcXHRcXG4yNjkwOlxcdFxcdC8qIGdldCBpbmRpY2VzIGZvciB0cmFjZV9kYW1vc19iZWZvcmVfYXBwbHkoKSAqL1xcbjI2OTE6XFx0XFx0aWYgKHRyYWNlX2RhbW9zX2JlZm9yZV9hcHBseV9lbmFibGVkKCkpIHtcXG4yNjkyOlxcdFxcdFxcdGRhbW9uX2Zvcl9lYWNoX3NjaGVtZShzaXRlciwgYykge1xcbjI2OTM6XFx0XFx0XFx0XFx0aWYgKHNpdGVyID09IHMpXFxuMjY5NDpcXHRcXHRcXHRcXHRcXHRicmVhaztcXG4yNjk1OlxcdFxcdFxcdFxcdHNpZHgrKztcXG4yNjk2OlxcdFxcdFxcdH1cXG4yNjk3OlxcdFxcdFxcdGRhbW9uX2Zvcl9lYWNoX3RhcmdldCh0aXRlciwgYykge1xcbjI2OTg6XFx0XFx0XFx0XFx0aWYgKHRpdGVyID09IHQpXFxuMjY5OTpcXHRcXHRcXHRcXHRcXHRicmVhaztcXG4yNzAwOlxcdFxcdFxcdFxcdHRpZHgrKztcXG4yNzAxOlxcdFxcdFxcdH1cXG4yNzAyOlxcdFxcdFxcdG5yX2FjY2Vzc2VzID0gZGFtb25fbnJfYWNjZXNzZXNfbXZzdW0ociwgYyk7XFxuMjcwMzpcXHRcXHRcXHRkb190cmFjZSA9IHRydWU7XFxuMjcwNDpcXHRcXHR9XFxuMjcwNTpcXHRcXG4yNzA2OlxcdFxcdGlmIChjLVxcdTAwM2VvcHMuYXBwbHlfc2NoZW1lKSB7XFxuMjcwNzpcXHRcXHRcXHRpZiAoZGFtb3NfcXVvdGFfaXNfc2V0KHF1b3RhKSBcXHUwMDI2XFx1MDAyNlxcbjI3MDg6XFx0XFx0XFx0XFx0XFx0cXVvdGEtXFx1MDAzZWNoYXJnZWRfc3ogKyBzeiBcXHUwMDNlIHF1b3RhLVxcdTAwM2Vlc3opIHtcXG4yNzA5OlxcdFxcdFxcdFxcdHN6ID0gQUxJR05fRE9XTihxdW90YS1cXHUwMDNlZXN6IC0gcXVvdGEtXFx1MDAzZWNoYXJnZWRfc3osXFxuMjcxMDpcXHRcXHRcXHRcXHRcXHRcXHRjLVxcdTAwM2VtaW5fcmVnaW9uX3N6KTtcXG4yNzExOlxcdFxcdFxcdFxcdGlmICghc3opXFxuMjcxMjpcXHRcXHRcXHRcXHRcXHRnb3RvIHVwZGF0ZV9zdGF0O1xcbjI3MTM6XFx0XFx0XFx0XFx0aWYgKGRhbW9uX3NwbGl0X3JlZ2lvbl9hdCh0LCByLCBzeikpXFxuMjcxNDpcXHRcXHRcXHRcXHRcXHRnb3RvIHVwZGF0ZV9zdGF0O1xcbjI3MTU6XFx0XFx0XFx0fVxcbjI3MTY6XFx0XFx0XFx0aWYgKGRhbW9zX2NvcmVfZmlsdGVyX291dChjLCB0LCByLCBzKSlcXG4yNzE3OlxcdFxcdFxcdFxcdHJldHVybjtcXG4yNzE4OlxcdFxcdFxcdGt0aW1lX2dldF9jb2Fyc2VfdHM2NChcXHUwMDI2YmVnaW4pO1xcbjI3MTk6XFx0XFx0XFx0dHJhY2VfZGFtb3NfYmVmb3JlX2FwcGx5KGNpZHgsIHNpZHgsIHRpZHgsIHIsIG5yX2FjY2Vzc2VzLFxcbjI3MjA6XFx0XFx0XFx0XFx0XFx0ZGFtb25fbnJfcmVnaW9ucyh0KSwgZG9fdHJhY2UpO1xcbjI3MjE6XFx0XFx0XFx0c3pfYXBwbGllZCA9IGMtXFx1MDAzZW9wcy5hcHBseV9zY2hlbWUoYywgdCwgciwgcyxcXG4yNzIyOlxcdFxcdFxcdFxcdFxcdFxcdTAwMjZzel9vcHNfZmlsdGVyX3Bhc3NlZCk7XFxuMjcyMzpcXHRcXHRcXHRkYW1vc193YWxrX2NhbGxfd2FsayhjLCB0LCByLCBzLCBzel9vcHNfZmlsdGVyX3Bhc3NlZCk7XFxuMjcyNDpcXHRcXHRcXHRrdGltZV9nZXRfY29hcnNlX3RzNjQoXFx1MDAyNmVuZCk7XFxuMjcyNTpcXHRcXHRcXHRxdW90YS1cXHUwMDNldG90YWxfY2hhcmdlZF9ucyArPSB0aW1lc3BlYzY0X3RvX25zKFxcdTAwMjZlbmQpIC1cXG4yNzI2OlxcdFxcdFxcdFxcdHRpbWVzcGVjNjRfdG9fbnMoXFx1MDAyNmJlZ2luKTtcXG4yNzI3OlxcdFxcdFxcdGRhbW9zX2NoYXJnZV9xdW90YShxdW90YSwgc3osIHN6X2FwcGxpZWQpO1xcbjI3Mjg6XFx0XFx0XFx0aWYgKGRhbW9zX3F1b3RhX2lzX2Z1bGwocXVvdGEsIGMtXFx1MDAzZW1pbl9yZWdpb25fc3opKSB7XFxuMjcyOTpcXHRcXHRcXHRcXHRxdW90YS1cXHUwMDNlY2hhcmdlX3RhcmdldF9mcm9tID0gdDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMDA6MzM6NDEuNDg3MDQyOTUzWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjYxNDY3Nzk4NTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZCwgaW4gdGhlIGZpcnN0IHBlcnNvbiwgYXNzdW1pbmcgYSBmaWVsZCBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBSZWxldmFudCBTZWN0aW9uKipcblxuUmlnaHQsIGxldCdzIHRha2UgYSBsb29rIGF0IGxpbmVzIDI3MzAtMjc3MC4gSSBuZWVkIHRvIGJlIHN1cmUgSSdtIG5vdCBtaXNzaW5nIGFueXRoaW5nIGNyaXRpY2FsIGluIHRoaXMgc2VjdGlvbi4gSSB3YW50IHRvIHplcm8gaW4gb24gdGhlIGNvcmUgb2YgdGhlIGlkZWEuIFdoYXQgYXJlIHRoZSBrZXkgYXJndW1lbnRzIGJlaW5nIG1hZGUgaGVyZT8gQXJlIHRoZXkgc3VwcG9ydGluZyB0aGUgY3VycmVudCB3b3JrLCBvciBkbyB0aGV5IG9mZmVyIHNvbWUgY2hhbGxlbmdpbmcgaWRlYXM/IEkgbmVlZCB0byBiZSBvYmplY3RpdmUsIGFuZCB0aGF0IGFsc28gbWVhbnMgYmVpbmcgY2FyZWZ1bCBub3QgdG8gZ2V0IGNhdWdodCBpbiBhIG5lZ2F0aXZlIGZlZWRiYWNrIGxvb3AgaWYgaXQgaGFwcGVucyB0byBiZSBjaGFsbGVuZ2luZy4gT2theSwgbGV0J3MgZGl2ZSBpbnRvIGl0IGFuZCBzZWUgd2hhdCB3ZSBoYXZlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NzI3LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wM1QwMDozMzo0Ny42MzM4MjU4NThaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjEwNDUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm1tL2RhbW9uL2NvcmUuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyNzMwLFxuICBcIkxpbmVDb3VudFwiOiA0NVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIyNzMwOlxcdFxcdFxcdFxcdHF1b3RhLVxcdTAwM2VjaGFyZ2VfYWRkcl9mcm9tID0gci1cXHUwMDNlYXIuZW5kO1xcbjI3MzE6XFx0XFx0XFx0fVxcbjI3MzI6XFx0XFx0fVxcbjI3MzM6XFx0XFx0aWYgKHMtXFx1MDAzZWFjdGlvbiAhPSBEQU1PU19TVEFUKVxcbjI3MzQ6XFx0XFx0XFx0ci1cXHUwMDNlYWdlID0gMDtcXG4yNzM1OlxcdFxcbjI3MzY6XFx0dXBkYXRlX3N0YXQ6XFxuMjczNzpcXHRcXHRkYW1vc191cGRhdGVfc3RhdChzLCBzeiwgc3pfYXBwbGllZCwgc3pfb3BzX2ZpbHRlcl9wYXNzZWQpO1xcbjI3Mzg6XFx0fVxcbjI3Mzk6XFx0XFxuMjc0MDpcXHRzdGF0aWMgdm9pZCBkYW1vbl9kb19hcHBseV9zY2hlbWVzKHN0cnVjdCBkYW1vbl9jdHggKmMsXFxuMjc0MTpcXHRcXHRcXHRcXHRcXHQgICBzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0LFxcbjI3NDI6XFx0XFx0XFx0XFx0XFx0ICAgc3RydWN0IGRhbW9uX3JlZ2lvbiAqcilcXG4yNzQzOlxcdHtcXG4yNzQ0OlxcdFxcdHN0cnVjdCBkYW1vcyAqcztcXG4yNzQ1OlxcdFxcbjI3NDY6XFx0XFx0ZGFtb25fZm9yX2VhY2hfc2NoZW1lKHMsIGMpIHtcXG4yNzQ3OlxcdFxcdFxcdHN0cnVjdCBkYW1vc19xdW90YSAqcXVvdGEgPSBcXHUwMDI2cy1cXHUwMDNlcXVvdGE7XFxuMjc0ODpcXHRcXG4yNzQ5OlxcdFxcdFxcdGlmICh0aW1lX2JlZm9yZShjLVxcdTAwM2VwYXNzZWRfc2FtcGxlX2ludGVydmFscywgcy1cXHUwMDNlbmV4dF9hcHBseV9zaXMpKVxcbjI3NTA6XFx0XFx0XFx0XFx0Y29udGludWU7XFxuMjc1MTpcXHRcXG4yNzUyOlxcdFxcdFxcdGlmICghcy1cXHUwMDNld21hcmtzLmFjdGl2YXRlZClcXG4yNzUzOlxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbjI3NTQ6XFx0XFxuMjc1NTpcXHRcXHRcXHRpZiAoIXF1b3RhLVxcdTAwM2Vlc3opXFxuMjc1NjpcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4yNzU3OlxcdFxcbjI3NTg6XFx0XFx0XFx0LyogQ2hlY2sgdGhlIHF1b3RhICovXFxuMjc1OTpcXHRcXHRcXHRpZiAoZGFtb3NfcXVvdGFfaXNfZnVsbChxdW90YSwgYy1cXHUwMDNlbWluX3JlZ2lvbl9zeikpXFxuMjc2MDpcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4yNzYxOlxcdFxcbjI3NjI6XFx0XFx0XFx0aWYgKGRhbW9zX3NraXBfY2hhcmdlZF9yZWdpb24odCwgciwgcywgYy1cXHUwMDNlbWluX3JlZ2lvbl9zeikpXFxuMjc2MzpcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4yNzY0OlxcdFxcbjI3NjU6XFx0XFx0XFx0aWYgKHMtXFx1MDAzZW1heF9ucl9zbmFwc2hvdHMgXFx1MDAyNlxcdTAwMjZcXG4yNzY2OlxcdFxcdFxcdFxcdFxcdHMtXFx1MDAzZW1heF9ucl9zbmFwc2hvdHMgXFx1MDAzYz0gcy1cXHUwMDNlc3RhdC5ucl9zbmFwc2hvdHMpXFxuMjc2NzpcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4yNzY4OlxcdFxcbjI3Njk6XFx0XFx0XFx0aWYgKGRhbW9zX3ZhbGlkX3RhcmdldChjLCByLCBzKSlcXG4yNzcwOlxcdFxcdFxcdFxcdGRhbW9zX2FwcGx5X3NjaGVtZShjLCB0LCByLCBzKTtcXG4yNzcxOlxcdFxcbjI3NzI6XFx0XFx0XFx0aWYgKGRhbW9uX2lzX2xhc3RfcmVnaW9uKHIsIHQpKVxcbjI3NzM6XFx0XFx0XFx0XFx0cy1cXHUwMDNlc3RhdC5ucl9zbmFwc2hvdHMrKztcXG4yNzc0OlxcdFxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMDA6MzM6NDcuNjM0MDM4MzU4WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjU5MTU5MzM1NTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIERBTU9OIFF1b3RhIEJlaGF2aW9yKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBXZSdyZSBsb29raW5nIGF0IGhvdyBEQU1PUywgd2hpY2ggaXMgYmFzZWQgb24gREFNT04gb3BlcmF0aW9uIHNjaGVtZXMsIGhhbmRsZXMgcXVvdGFzLCBzcGVjaWZpY2FsbHkgdGhlIGNhc2VzIHdoZXJlIHRoZSBlZmZlY3RpdmUgc2l6ZSAoYHF1b3RhLVx1MDAzZWVzemApIG9yIHRoZSBjaGFyZ2VkIHNpemUgKGBxdW90YS1cdTAwM2VjaGFyZ2VkX3N6YCkgaXMgemVyby4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGxvZ2ljIGZsb3cgaGVyZSwgcGFydGljdWxhcmx5IGJlZm9yZSB0aGlzIHBhdGNoIHdhcyBhcHBsaWVkLlxuXG5Mb29raW5nIGF0IHRoZSBgZGFtb3NfcXVvdGFfaXNfZnVsbGAgZnVuY3Rpb24sIHRoZXJlIGFyZSBhIGZldyBpbnRlcmVzdGluZyBjb25kaXRpb25zLiBJZiB0aGUgcXVvdGEgaXNuJ3Qgc2V0LCBmaW5lLCBpdCByZXR1cm5zIGBmYWxzZWAuIElmIGBjaGFyZ2VkX3N6YCBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gYGVzemAsIGl0IGFsc28gcmV0dXJucyB0cnVlLCBtYWtpbmcgc2Vuc2UuIEJ1dCB0aGlzIG5leHQgY29uZGl0aW9uIGlzIHdoZXJlIHRoaW5ncyBnZXQgYSBsaXR0bGUgdHJpY2t5OiBgcXVvdGEtXHUwMDNlZXN6IC0gcXVvdGEtXHUwMDNlY2hhcmdlZF9zeiBcdTAwM2MgbWluX3JlZ2lvbl9zemAuXG5cbldhaXQgYSBtaW51dGUsIHdoYXQgaGFwcGVucyBpZiBgZXN6YCBpcyB6ZXJvPyBPciwgaWYgYGVzemAgaXMgbGVzcyB0aGFuIGBtaW5fcmVnaW9uX3N6YCB3aGlsZSBgY2hhcmdlZF9zemAgaXMgemVybz8gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIGl0IHdvdWxkIGZhaWwgZWFybHksIGJ1dCBsZXQgbWUgY2hlY2sgdGhhdC4uLiBPa2F5LCBJZiBgZXN6YCBpcyBsZXNzIHRoYW4gYG1pbl9yZWdpb25fc3pgIGFuZCBgY2hhcmdlZF9zemAgaXMgemVybywgd2UgZ2V0IGBlc3ogLSAwIFx1MDAzYyBtaW5fcmVnaW9uX3N6YCB3aGljaCwgKnllcyosIHJldHVybnMgYHRydWVgLCBpbmRpY2F0aW5nIHRoZSBxdW90YSBpcyBmdWxsIGV2ZW4gYmVmb3JlIGl0J3MgYmVlbiB1c2VkLiBCdXQgaWYgYGVzemAgaXMgKmVxdWFsKiB0byB6ZXJvLCB0aGUgY29tcGFyaXNvbiBgMCBcdTAwM2U9IDBgIHdvdWxkIHJldHVybiB0cnVlIGFzIHdlbGwuXG5cblRoZW4sIGluIGBkYW1vbl9kb19hcHBseV9zY2hlbWVzYCwgd2UncmUgc2tpcHBpbmcgdGhlIHF1b3RhIGlmIGAhcXVvdGEtXHUwMDNlZXN6YC4gQW5kLCBiYWNrIGluIGBkYW1vc19xdW90YV9pc19mdWxsYCwgdGhlcmUncyBhIGNoZWNrIGZvciBgIXF1b3RhLVx1MDAzZWNoYXJnZWRfc3pgLCB3aGljaCB3b3VsZCByZXR1cm4gYGZhbHNlYC5cblxuU28sIGl0IHNlZW1zIHRoYXQgdGhlcmUncyBhIHBvdGVudGlhbCBxdWlyayBpbiB0aGUgbG9naWMgYXJvdW5kIGhvdyBEQU1PUyBoYW5kbGVzIHplcm8tc2l6ZWQgcXVvdGFzIG9yIHF1b3RhcyB0aGF0IGFyZSBzbWFsbGVyIHRoYW4gdGhlIG1pbmltYWwgcmVnaW9uIHNpemUuXG5cbk5vdywgYSBjb21wbGV0ZWx5IHNlcGFyYXRlIHRob3VnaHQ6IElzIERBTU9OIGV2ZW4gYWNjZXNzaWJsZSBhbmQgZnV6emVkIHdpdGhpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VPyBHb29kIG5ld3MsIGl0IGxvb2tzIGxpa2UgREFNT04gaXMgaW5kZWVkIHJlYWNoYWJsZSB0aHJvdWdoIHRoZSBzeXNmcyBpbnRlcmZhY2UgaW4gdXNlciBzcGFjZS4gVGhpcyBtZWFucyB0aGF0IHVzZXJzcGFjZSB0b29scyBsaWtlIHN5emthbGxlciBjYW4gaW50ZXJhY3Qgd2l0aCBEQU1PTiwgYWxsb3dpbmcgZm9yIHRoZSBjcmVhdGlvbiBvZiBjb250ZXh0cywgc2NoZW1lcywgcXVvdGFzLCBhbmQgdGFyZ2V0cy4gSSBzaG91bGQgc2VlIGlmIHN5emthbGxlciBvciB0aGUgc3lzZnMgYXJlIHByb3Blcmx5IGludm9raW5nIHRoZSBEQU1PTiBmdW5jdGlvbnMgaW4gdGVzdGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6OTU3MiwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ2MSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDAwOjMzOjUzLjU0OTk3NTAyWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MTA1Mjc3NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkYW1vbl9zeXNmc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9kYW1vblwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDM2ODcgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTktXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM6MTA6REVGSU5FX01VVEVYKGRhbW9uX3N5c2ZzX2xvY2spO1xcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTExLVxcbi0tXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmMtMTUtXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM6MTY6c3RydWN0IGRhbW9uX3N5c2ZzX3VsX3JhbmdlICpkYW1vbl9zeXNmc191bF9yYW5nZV9hbGxvYyhcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy0xNy1cXHRcXHR1bnNpZ25lZCBsb25nIG1pbixcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTE5LXtcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYzoyMDpcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfdWxfcmFuZ2UgKnJhbmdlID0ga21hbGxvY19vYmooKnJhbmdlKTtcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy0yMS1cXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jPTMxPXN0YXRpYyBzc2l6ZV90IG1pbl9zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLCBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgKmF0dHIsXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy0zMy17XFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM6MzQ6XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3VsX3JhbmdlICpyYW5nZSA9IGNvbnRhaW5lcl9vZihrb2JqLFxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jOjM1OlxcdFxcdFxcdHN0cnVjdCBkYW1vbl9zeXNmc191bF9yYW5nZSwga29iaik7XFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmMtMzYtXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYz00MD1zdGF0aWMgc3NpemVfdCBtaW5fc3RvcmUoc3RydWN0IGtvYmplY3QgKmtvYmosIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSAqYXR0cixcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTQyLXtcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYzo0MzpcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfdWxfcmFuZ2UgKnJhbmdlID0gY29udGFpbmVyX29mKGtvYmosXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM6NDQ6XFx0XFx0XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3VsX3JhbmdlLCBrb2JqKTtcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy00NS1cXHR1bnNpZ25lZCBsb25nIG1pbjtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jPTU2PXN0YXRpYyBzc2l6ZV90IG1heF9zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLCBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgKmF0dHIsXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy01OC17XFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM6NTk6XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3VsX3JhbmdlICpyYW5nZSA9IGNvbnRhaW5lcl9vZihrb2JqLFxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jOjYwOlxcdFxcdFxcdHN0cnVjdCBkYW1vbl9zeXNmc191bF9yYW5nZSwga29iaik7XFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmMtNjEtXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYz02NT1zdGF0aWMgc3NpemVfdCBtYXhfc3RvcmUoc3RydWN0IGtvYmplY3QgKmtvYmosIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSAqYXR0cixcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTY3LXtcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYzo2ODpcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfdWxfcmFuZ2UgKnJhbmdlID0gY29udGFpbmVyX29mKGtvYmosXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM6Njk6XFx0XFx0XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3VsX3JhbmdlLCBrb2JqKTtcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy03MC1cXHR1bnNpZ25lZCBsb25nIG1heDtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTgwLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jOjgxOnZvaWQgZGFtb25fc3lzZnNfdWxfcmFuZ2VfcmVsZWFzZShzdHJ1Y3Qga29iamVjdCAqa29iailcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy04Mi17XFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM6ODM6XFx0a2ZyZWUoY29udGFpbmVyX29mKGtvYmosIHN0cnVjdCBkYW1vbl9zeXNmc191bF9yYW5nZSwga29iaikpO1xcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTg0LX1cXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy04NS1cXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYzo4NjpzdGF0aWMgc3RydWN0IGtvYmpfYXR0cmlidXRlIGRhbW9uX3N5c2ZzX3VsX3JhbmdlX21pbl9hdHRyID1cXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy04Ny1cXHRcXHRfX0FUVFJfUldfTU9ERShtaW4sIDA2MDApO1xcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTg4LVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jOjg5OnN0YXRpYyBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgZGFtb25fc3lzZnNfdWxfcmFuZ2VfbWF4X2F0dHIgPVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTkwLVxcdFxcdF9fQVRUUl9SV19NT0RFKG1heCwgMDYwMCk7XFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmMtOTEtXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM6OTI6c3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmRhbW9uX3N5c2ZzX3VsX3JhbmdlX2F0dHJzW10gPSB7XFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM6OTM6XFx0XFx1MDAyNmRhbW9uX3N5c2ZzX3VsX3JhbmdlX21pbl9hdHRyLmF0dHIsXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM6OTQ6XFx0XFx1MDAyNmRhbW9uX3N5c2ZzX3VsX3JhbmdlX21heF9hdHRyLmF0dHIsXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmMtOTUtXFx0TlVMTCxcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy05Ni19O1xcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jOjk3OkFUVFJJQlVURV9HUk9VUFMoZGFtb25fc3lzZnNfdWxfcmFuZ2UpO1xcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTk4LVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jOjk5OmNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfdWxfcmFuZ2Vfa3R5cGUgPSB7XFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM6MTAwOlxcdC5yZWxlYXNlID0gZGFtb25fc3lzZnNfdWxfcmFuZ2VfcmVsZWFzZSxcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy0xMDEtXFx0LnN5c2ZzX29wcyA9IFxcdTAwMjZrb2JqX3N5c2ZzX29wcyxcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYzoxMDI6XFx0LmRlZmF1bHRfZ3JvdXBzID0gZGFtb25fc3lzZnNfdWxfcmFuZ2VfZ3JvdXBzLFxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTEwMy19O1xcbi0tXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmMtMTA1LVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jOjEwNjpzdGF0aWMgYm9vbCBkYW1vbl9zeXNmc19tZW1jZ19wYXRoX2VxKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZyxcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy0xMDctXFx0XFx0Y2hhciAqbWVtY2dfcGF0aF9idWYsIGNoYXIgKnBhdGgpXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy0xMTYtXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM6MTE3OmludCBkYW1vbl9zeXNmc19tZW1jZ19wYXRoX3RvX2lkKGNoYXIgKm1lbWNnX3BhdGgsIHU2NCAqaWQpXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmMtMTE4LXtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTEzNC1cXHRcXHRcXHRjb250aW51ZTtcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYzoxMzU6XFx0XFx0aWYgKGRhbW9uX3N5c2ZzX21lbWNnX3BhdGhfZXEobWVtY2csIHBhdGgsIG1lbWNnX3BhdGgpKSB7XFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmMtMTM2LVxcdFxcdFxcdCppZCA9IG1lbV9jZ3JvdXBfaWQobWVtY2cpO1xcbi0tXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtOC1cXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaDo5OmV4dGVybiBzdHJ1Y3QgbXV0ZXggZGFtb25fc3lzZnNfbG9jaztcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC0xMC1cXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaDoxMTpzdHJ1Y3QgZGFtb25fc3lzZnNfdWxfcmFuZ2Uge1xcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTEyLVxcdHN0cnVjdCBrb2JqZWN0IGtvYmo7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC0xNi1cXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaDoxNzpzdHJ1Y3QgZGFtb25fc3lzZnNfdWxfcmFuZ2UgKmRhbW9uX3N5c2ZzX3VsX3JhbmdlX2FsbG9jKFxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTE4LVxcdFxcdHVuc2lnbmVkIGxvbmcgbWluLFxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTE5LVxcdFxcdHVuc2lnbmVkIGxvbmcgbWF4KTtcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaDoyMDp2b2lkIGRhbW9uX3N5c2ZzX3VsX3JhbmdlX3JlbGVhc2Uoc3RydWN0IGtvYmplY3QgKmtvYmopO1xcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTIxLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oOjIyOmV4dGVybiBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9uX3N5c2ZzX3VsX3JhbmdlX2t0eXBlO1xcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTIzLVxcbi0tXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtMjctXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6Mjg6c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZXMge1xcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTI5LVxcdHN0cnVjdCBrb2JqZWN0IGtvYmo7XFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6MzA6XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZSAqKnNjaGVtZXNfYXJyO1xcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTMxLVxcdGludCBucjtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTMzLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oOjM0OnN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVzICpkYW1vbl9zeXNmc19zY2hlbWVzX2FsbG9jKHZvaWQpO1xcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oOjM1OnZvaWQgZGFtb25fc3lzZnNfc2NoZW1lc19ybV9kaXJzKHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVzICpzY2hlbWVzKTtcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC0zNi1cXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaDozNzpleHRlcm4gY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vbl9zeXNmc19zY2hlbWVzX2t0eXBlO1xcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTM4LVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oOjM5OmludCBkYW1vbl9zeXNmc19hZGRfc2NoZW1lcyhzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6NDA6XFx0XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZXMgKnN5c2ZzX3NjaGVtZXMpO1xcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTQxLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oOjQyOnZvaWQgZGFtb25fc3lzZnNfc2NoZW1lc191cGRhdGVfc3RhdHMoXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6NDM6XFx0XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZXMgKnN5c2ZzX3NjaGVtZXMsXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtNDQtXFx0XFx0c3RydWN0IGRhbW9uX2N0eCAqY3R4KTtcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC00NS1cXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaDo0Njp2b2lkIGRhbW9zX3N5c2ZzX3BvcHVsYXRlX3JlZ2lvbl9kaXIoc3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZXMgKnN5c2ZzX3NjaGVtZXMsXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtNDctXFx0XFx0c3RydWN0IGRhbW9uX2N0eCAqY3R4LCBzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0LFxcbi0tXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtNTAtXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6NTE6aW50IGRhbW9uX3N5c2ZzX3NjaGVtZXNfY2xlYXJfcmVnaW9ucyhcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaDo1MjpcXHRcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lcyAqc3lzZnNfc2NoZW1lcyk7XFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtNTMtXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6NTQ6aW50IGRhbW9zX3N5c2ZzX3NldF9xdW90YV9zY29yZXMoc3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZXMgKnN5c2ZzX3NjaGVtZXMsXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtNTUtXFx0XFx0c3RydWN0IGRhbW9uX2N0eCAqY3R4KTtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oPTU3PXZvaWQgZGFtb3Nfc3lzZnNfdXBkYXRlX2VmZmVjdGl2ZV9xdW90YXMoXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6NTg6XFx0XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZXMgKnN5c2ZzX3NjaGVtZXMsXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtNTktXFx0XFx0c3RydWN0IGRhbW9uX2N0eCAqY3R4KTtcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC02MC1cXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaDo2MTppbnQgZGFtb25fc3lzZnNfbWVtY2dfcGF0aF90b19pZChjaGFyICptZW1jZ19wYXRoLCB1NjQgKmlkKTtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0xNDE9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb3Nfc3lzZnNfcHJvYmVzX2t0eXBlID0ge1xcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE0OS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTUwOnN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uIHtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTUxLVxcdHN0cnVjdCBrb2JqZWN0IGtvYmo7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTU5LVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNjA6c3RhdGljIHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uICpkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uX2FsbG9jKFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNjEtXFx0XFx0c3RydWN0IGRhbW9uX3JlZ2lvbiAqcmVnaW9uLCBzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE2Mi17XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE2MzpcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbiAqc3lzZnNfcmVnaW9uID0ga21hbGxvY19vYmooKnN5c2ZzX3JlZ2lvbik7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE2NC1cXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0xNzY9c3RhdGljIGludCBkYW1vc19zeXNmc19yZWdpb25fYWRkX2RpcnMoXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjE3NzpcXHRcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbiAqcmVnaW9uLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNzgtXFx0XFx0c3RydWN0IGRhbW9uX2N0eCAqY3R4LFxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTIwMj1zdGF0aWMgdm9pZCBkYW1vc19zeXNmc19yZWdpb25fcm1fZGlycyhcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MjAzOlxcdFxcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uICpyZWdpb24pXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTIwNC17XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MjA5PXN0YXRpYyBzc2l6ZV90IHN0YXJ0X3Nob3coc3RydWN0IGtvYmplY3QgKmtvYmosIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSAqYXR0cixcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yMTEte1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyMTI6XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb24gKnJlZ2lvbiA9IGNvbnRhaW5lcl9vZihrb2JqLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyMTM6XFx0XFx0XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb24sIGtvYmopO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yMTQtXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MjE4PXN0YXRpYyBzc2l6ZV90IGVuZF9zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLCBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgKmF0dHIsXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjIwLXtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MjIxOlxcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uICpyZWdpb24gPSBjb250YWluZXJfb2Yoa29iaixcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MjIyOlxcdFxcdFxcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uLCBrb2JqKTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjIzLVxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTIyNz1zdGF0aWMgc3NpemVfdCBucl9hY2Nlc3Nlc19zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLFxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTIyOS17XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjIzMDpcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbiAqcmVnaW9uID0gY29udGFpbmVyX29mKGtvYmosXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjIzMTpcXHRcXHRcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbiwga29iaik7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTIzMi1cXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0yMzY9c3RhdGljIHNzaXplX3QgYWdlX3Nob3coc3RydWN0IGtvYmplY3QgKmtvYmosIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSAqYXR0cixcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yMzgte1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyMzk6XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb24gKnJlZ2lvbiA9IGNvbnRhaW5lcl9vZihrb2JqLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyNDA6XFx0XFx0XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb24sIGtvYmopO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yNDEtXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MjQ1PXN0YXRpYyBzc2l6ZV90IHN6X2ZpbHRlcl9wYXNzZWRfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaixcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yNDcte1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyNDg6XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb24gKnJlZ2lvbiA9IGNvbnRhaW5lcl9vZihrb2JqLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyNDk6XFx0XFx0XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb24sIGtvYmopO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yNTAtXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjUzLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyNTQ6c3RhdGljIHZvaWQgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbl9yZWxlYXNlKHN0cnVjdCBrb2JqZWN0ICprb2JqKVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yNTUte1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyNTY6XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb24gKnJlZ2lvbiA9IGNvbnRhaW5lcl9vZihrb2JqLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyNTc6XFx0XFx0XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb24sIGtvYmopO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yNTgtXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjYxLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyNjI6c3RhdGljIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uX3N0YXJ0X2F0dHIgPVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yNjMtXFx0XFx0X19BVFRSX1JPX01PREUoc3RhcnQsIDA0MDApO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yNjQtXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjI2NTpzdGF0aWMgc3RydWN0IGtvYmpfYXR0cmlidXRlIGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb25fZW5kX2F0dHIgPVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yNjYtXFx0XFx0X19BVFRSX1JPX01PREUoZW5kLCAwNDAwKTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjY3LVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyNjg6c3RhdGljIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uX25yX2FjY2Vzc2VzX2F0dHIgPVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yNjktXFx0XFx0X19BVFRSX1JPX01PREUobnJfYWNjZXNzZXMsIDA0MDApO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yNzAtXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjI3MTpzdGF0aWMgc3RydWN0IGtvYmpfYXR0cmlidXRlIGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb25fYWdlX2F0dHIgPVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yNzItXFx0XFx0X19BVFRSX1JPX01PREUoYWdlLCAwNDAwKTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjczLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyNzQ6c3RhdGljIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uX3N6X2ZpbHRlcl9wYXNzZWRfYXR0ciA9XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTI3NS1cXHRcXHRfX0FUVFJfUk9fTU9ERShzel9maWx0ZXJfcGFzc2VkLCAwNDAwKTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjc2LVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyNzc6c3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb25fYXR0cnNbXSA9IHtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6Mjc4OlxcdFxcdTAwMjZkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uX3N0YXJ0X2F0dHIuYXR0cixcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6Mjc5OlxcdFxcdTAwMjZkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uX2VuZF9hdHRyLmF0dHIsXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjI4MDpcXHRcXHUwMDI2ZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbl9ucl9hY2Nlc3Nlc19hdHRyLmF0dHIsXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjI4MTpcXHRcXHUwMDI2ZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbl9hZ2VfYXR0ci5hdHRyLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyODI6XFx0XFx1MDAyNmRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb25fc3pfZmlsdGVyX3Bhc3NlZF9hdHRyLmF0dHIsXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTI4My1cXHROVUxMLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yODQtfTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6Mjg1OkFUVFJJQlVURV9HUk9VUFMoZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbik7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTI4Ni1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6Mjg3OnN0YXRpYyBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb25fa3R5cGUgPSB7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjI4ODpcXHQucmVsZWFzZSA9IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb25fcmVsZWFzZSxcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjg5LVxcdC5zeXNmc19vcHMgPSBcXHUwMDI2a29ial9zeXNmc19vcHMsXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjI5MDpcXHQuZGVmYXVsdF9ncm91cHMgPSBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uX2dyb3VwcyxcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjkxLX07XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjk2LVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyOTc6c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb25zIHtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjk4LVxcdHN0cnVjdCBrb2JqZWN0IGtvYmo7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzAzLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzozMDQ6c3RhdGljIHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9ucyAqXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjMwNTpkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uc19hbGxvYyh2b2lkKVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zMDYte1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzozMDc6XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb25zICpyZWdpb25zID0ga21hbGxvY19vYmooKnJlZ2lvbnMpO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zMDgtXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MzE5PXN0YXRpYyBzc2l6ZV90IHRvdGFsX2J5dGVzX3Nob3coc3RydWN0IGtvYmplY3QgKmtvYmosXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzIxLXtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MzIyOlxcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9ucyAqcmVnaW9ucyA9IGNvbnRhaW5lcl9vZihrb2JqLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzozMjM6XFx0XFx0XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb25zLCBrb2JqKTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzI0LVxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTMyNy1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MzI4OnN0YXRpYyB2b2lkIGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb25zX3JtX2RpcnMoXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjMyOTpcXHRcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbnMgKnJlZ2lvbnMpXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTMzMC17XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjMzMTpcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbiAqciwgKm5leHQ7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTMzMi1cXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zNDEtXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjM0MjpzdGF0aWMgdm9pZCBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uc19yZWxlYXNlKHN0cnVjdCBrb2JqZWN0ICprb2JqKVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zNDMte1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzozNDQ6XFx0a2ZyZWUoY29udGFpbmVyX29mKGtvYmosIHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9ucywga29iaikpO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zNDUtfVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zNDYtXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjM0NzpzdGF0aWMgc3RydWN0IGtvYmpfYXR0cmlidXRlIGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb25zX3RvdGFsX2J5dGVzX2F0dHIgPVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zNDgtXFx0XFx0X19BVFRSX1JPX01PREUodG90YWxfYnl0ZXMsIDA0MDApO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zNDktXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjM1MDpzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbnNfYXR0cnNbXSA9IHtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MzUxOlxcdFxcdTAwMjZkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uc190b3RhbF9ieXRlc19hdHRyLmF0dHIsXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTM1Mi1cXHROVUxMLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zNTMtfTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MzU0OkFUVFJJQlVURV9HUk9VUFMoZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbnMpO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zNTUtXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjM1NjpzdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uc19rdHlwZSA9IHtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MzU3OlxcdC5yZWxlYXNlID0gZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbnNfcmVsZWFzZSxcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzU4LVxcdC5zeXNmc19vcHMgPSBcXHUwMDI2a29ial9zeXNmc19vcHMsXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjM1OTpcXHQuZGVmYXVsdF9ncm91cHMgPSBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9uc19ncm91cHMsXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTM2MC19O1xcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTM2NS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MzY2OnN0cnVjdCBkYW1vbl9zeXNmc19zdGF0cyB7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTM2Ny1cXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTM3Ny1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6Mzc4OnN0YXRpYyBzdHJ1Y3QgZGFtb25fc3lzZnNfc3RhdHMgKmRhbW9uX3N5c2ZzX3N0YXRzX2FsbG9jKHZvaWQpXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTM3OS17XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjM4MDpcXHRyZXR1cm4ga3phbGxvY19vYmooc3RydWN0IGRhbW9uX3N5c2ZzX3N0YXRzKTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzgxLX1cXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0zODM9c3RhdGljIHNzaXplX3QgbnJfdHJpZWRfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaiwgc3RydWN0IGtvYmpfYXR0cmlidXRlICphdHRyLFxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTM4NS17XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjM4NjpcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc3RhdHMgKnN0YXRzID0gY29udGFpbmVyX29mKGtvYmosXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjM4NzpcXHRcXHRcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc3RhdHMsIGtvYmopO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zODgtXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MzkyPXN0YXRpYyBzc2l6ZV90IHN6X3RyaWVkX3Nob3coc3RydWN0IGtvYmplY3QgKmtvYmosIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSAqYXR0cixcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zOTQte1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzozOTU6XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3N0YXRzICpzdGF0cyA9IGNvbnRhaW5lcl9vZihrb2JqLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzozOTY6XFx0XFx0XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3N0YXRzLCBrb2JqKTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzk3LVxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTQwMT1zdGF0aWMgc3NpemVfdCBucl9hcHBsaWVkX3Nob3coc3RydWN0IGtvYmplY3QgKmtvYmosXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNDAzLXtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NDA0OlxcdHN0cnVjdCBkYW1vbl9zeXNmc19zdGF0cyAqc3RhdHMgPSBjb250YWluZXJfb2Yoa29iaixcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NDA1OlxcdFxcdFxcdHN0cnVjdCBkYW1vbl9zeXNmc19zdGF0cywga29iaik7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTQwNi1cXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz00MTA9c3RhdGljIHNzaXplX3Qgc3pfYXBwbGllZF9zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLFxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTQxMi17XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjQxMzpcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc3RhdHMgKnN0YXRzID0gY29udGFpbmVyX29mKGtvYmosXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjQxNDpcXHRcXHRcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc3RhdHMsIGtvYmopO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy00MTUtXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9NDE5PXN0YXRpYyBzc2l6ZV90IHN6X29wc19maWx0ZXJfcGFzc2VkX3Nob3coc3RydWN0IGtvYmplY3QgKmtvYmosXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNDIxLXtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NDIyOlxcdHN0cnVjdCBkYW1vbl9zeXNmc19zdGF0cyAqc3RhdHMgPSBjb250YWluZXJfb2Yoa29iaixcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NDIzOlxcdFxcdFxcdHN0cnVjdCBkYW1vbl9zeXNmc19zdGF0cywga29iaik7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTQyNC1cXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz00Mjg9c3RhdGljIHNzaXplX3QgcXRfZXhjZWVkc19zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLFxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTQzMC17XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjQzMTpcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc3RhdHMgKnN0YXRzID0gY29udGFpbmVyX29mKGtvYmosXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjQzMjpcXHRcXHRcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc3RhdHMsIGtvYmopO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy00MzMtXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9NDM3PXN0YXRpYyBzc2l6ZV90IG5yX3NuYXBzaG90c19zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLFxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTQzOS17XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjQ0MDpcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc3RhdHMgKnN0YXRzID0gY29udGFpbmVyX29mKGtvYmosXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjQ0MTpcXHRcXHRcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc3RhdHMsIGtvYmopO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy00NDItXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9NDQ2PXN0YXRpYyBzc2l6ZV90IG1heF9ucl9zbmFwc2hvdHNfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaixcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy00NDgte1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo0NDk6XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3N0YXRzICpzdGF0cyA9IGNvbnRhaW5lcl9vZihrb2JqLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo0NTA6XFx0XFx0XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3N0YXRzLCBrb2JqKTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNDUxLVxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTQ1NT1zdGF0aWMgc3NpemVfdCBtYXhfbnJfc25hcHNob3RzX3N0b3JlKHN0cnVjdCBrb2JqZWN0ICprb2JqLFxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTQ1Ny17XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjQ1ODpcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc3RhdHMgKnN0YXRzID0gY29udGFpbmVyX29mKGtvYmosXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjQ1OTpcXHRcXHRcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc3RhdHMsIGtvYmopO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy00NjAtXFx0dW5zaWduZWQgbG9uZyBtYXhfbnJfc25hcHNob3RzLCBlcnIgPSBrc3RydG91bChidWYsIDAsIFxcdTAwMjZtYXhfbnJfc25hcHNob3RzKTtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy00NjctXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjQ2ODpzdGF0aWMgdm9pZCBkYW1vbl9zeXNmc19zdGF0c19yZWxlYXNlKHN0cnVjdCBrb2JqZWN0ICprb2JqKVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy00Njkte1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo0NzA6XFx0a2ZyZWUoY29udGFpbmVyX29mKGtvYmosIHN0cnVjdCBkYW1vbl9zeXNmc19zdGF0cywga29iaikpO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy00NzEtfVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy00NzItXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjQ3MzpzdGF0aWMgc3RydWN0IGtvYmpfYXR0cmlidXRlIGRhbW9uX3N5c2ZzX3N0YXRzX25yX3RyaWVkX2F0dHIgPVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy00NzQtXFx0XFx0X19BVFRSX1JPX01PREUobnJfdHJpZWQsIDA0MDApO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy00NzUtXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjQ3NjpzdGF0aWMgc3RydWN0IGtvYmpfYXR0cmlidXRlIGRhbW9uX3N5c2ZzX3N0YXRzX3N6X3RyaWVkX2F0dHIgPVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy00NzctXFx0XFx0X19BVFRSX1JPX01PREUoc3pfdHJpZWQsIDA0MDApO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy00NzgtXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjQ3OTpzdGF0aWMgc3RydWN0IGtvYmpfYXR0cmlidXRlIGRhbW9uX3N5c2ZzX3N0YXRzX25yX2FwcGxpZWRfYXR0ciA9XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTQ4MC1cXHRcXHRfX0FUVFJfUk9fTU9ERShucl9hcHBsaWVkLCAwNDAwKTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNDgxLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo0ODI6c3RhdGljIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSBkYW1vbl9zeXNmc19zdGF0c19zel9hcHBsaWVkX2F0dHIgPVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy00ODMtXFx0XFx0X19BVFRSX1JPX01PREUoc3pfYXBwbGllZCwgMDQwMCk7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTQ4NC1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NDg1OnN0YXRpYyBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgZGFtb25fc3lzZnNfc3RhdHNfc3pfb3BzX2ZpbHRlcl9wYXNzZWRfYXR0ciA9XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTQ4Ni1cXHRcXHRfX0FUVFJfUk9fTU9ERShzel9vcHNfZmlsdGVyX3Bhc3NlZCwgMDQwMCk7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTQ4Ny1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NDg4OnN0YXRpYyBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgZGFtb25fc3lzZnNfc3RhdHNfcXRfZXhjZWVkc19hdHRyID1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNDg5LVxcdFxcdF9fQVRUUl9ST19NT0RFKHF0X2V4Y2VlZHMsIDA0MDApO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy00OTAtXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjQ5MTpzdGF0aWMgc3RydWN0IGtvYmpfYXR0cmlidXRlIGRhbW9uX3N5c2ZzX3N0YXRzX25yX3NuYXBzaG90c19hdHRyID1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNDkyLVxcdFxcdF9fQVRUUl9ST19NT0RFKG5yX3NuYXBzaG90cywgMDQwMCk7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTQ5My1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NDk0OnN0YXRpYyBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgZGFtb25fc3lzZnNfc3RhdHNfbWF4X25yX3NuYXBzaG90c19hdHRyID1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNDk1LVxcdFxcdF9fQVRUUl9SV19NT0RFKG1heF9ucl9zbmFwc2hvdHMsIDA2MDApO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy00OTYtXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjQ5NzpzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqZGFtb25fc3lzZnNfc3RhdHNfYXR0cnNbXSA9IHtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NDk4OlxcdFxcdTAwMjZkYW1vbl9zeXNmc19zdGF0c19ucl90cmllZF9hdHRyLmF0dHIsXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjQ5OTpcXHRcXHUwMDI2ZGFtb25fc3lzZnNfc3RhdHNfc3pfdHJpZWRfYXR0ci5hdHRyLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo1MDA6XFx0XFx1MDAyNmRhbW9uX3N5c2ZzX3N0YXRzX25yX2FwcGxpZWRfYXR0ci5hdHRyLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo1MDE6XFx0XFx1MDAyNmRhbW9uX3N5c2ZzX3N0YXRzX3N6X2FwcGxpZWRfYXR0ci5hdHRyLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo1MDI6XFx0XFx1MDAyNmRhbW9uX3N5c2ZzX3N0YXRzX3N6X29wc19maWx0ZXJfcGFzc2VkX2F0dHIuYXR0cixcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NTAzOlxcdFxcdTAwMjZkYW1vbl9zeXNmc19zdGF0c19xdF9leGNlZWRzX2F0dHIuYXR0cixcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NTA0OlxcdFxcdTAwMjZkYW1vbl9zeXNmc19zdGF0c19ucl9zbmFwc2hvdHNfYXR0ci5hdHRyLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo1MDU6XFx0XFx1MDAyNmRhbW9uX3N5c2ZzX3N0YXRzX21heF9ucl9zbmFwc2hvdHNfYXR0ci5hdHRyLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy01MDYtXFx0TlVMTCxcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNTA3LX07XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjUwODpBVFRSSUJVVEVfR1JPVVBTKGRhbW9uX3N5c2ZzX3N0YXRzKTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNTA5LVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo1MTA6c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfc3RhdHNfa3R5cGUgPSB7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjUxMTpcXHQucmVsZWFzZSA9IGRhbW9uX3N5c2ZzX3N0YXRzX3JlbGVhc2UsXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTUxMi1cXHQuc3lzZnNfb3BzID0gXFx1MDAyNmtvYmpfc3lzZnNfb3BzLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo1MTM6XFx0LmRlZmF1bHRfZ3JvdXBzID0gZGFtb25fc3lzZnNfc3RhdHNfZ3JvdXBzLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy01MTQtfTtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz01MjM9ZW51bSBkYW1vc19zeXNmc19maWx0ZXJfaGFuZGxlX2xheWVyIHtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy01MjgtXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjUyOTpzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlciB7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTUzMC1cXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTU0MC1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NTQxOnN0YXRpYyBzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlciAqZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlcl9hbGxvYyhcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNTQyLVxcdFxcdGVudW0gZGFtb3Nfc3lzZnNfZmlsdGVyX2hhbmRsZV9sYXllciBsYXllcilcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNTQzLXtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NTQ0OlxcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfZmlsdGVyICpmaWx0ZXI7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTU0NS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NTQ2OlxcdGZpbHRlciA9IGt6YWxsb2Nfb2JqKHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfZmlsdGVyKTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNTQ3LVxcdGlmIChmaWx0ZXIpXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9NTkzPXN0YXRpYyBzc2l6ZV90IHR5cGVfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaixcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy01OTUte1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo1OTY6XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9maWx0ZXIgKmZpbHRlciA9IGNvbnRhaW5lcl9vZihrb2JqLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo1OTc6XFx0XFx0XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9maWx0ZXIsIGtvYmopO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy01OTgtXFx0aW50IGk7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9NjI3PXN0YXRpYyBzc2l6ZV90IHR5cGVfc3RvcmUoc3RydWN0IGtvYmplY3QgKmtvYmosXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNjI5LXtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NjMwOlxcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfZmlsdGVyICpmaWx0ZXIgPSBjb250YWluZXJfb2Yoa29iaixcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NjMxOlxcdFxcdFxcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfZmlsdGVyLCBrb2JqKTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNjMyLVxcdHNzaXplX3QgcmV0ID0gLUVJTlZBTDtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz02NTI9c3RhdGljIHNzaXplX3QgbWF0Y2hpbmdfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaixcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy02NTQte1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo2NTU6XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9maWx0ZXIgKmZpbHRlciA9IGNvbnRhaW5lcl9vZihrb2JqLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo2NTY6XFx0XFx0XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9maWx0ZXIsIGtvYmopO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy02NTctXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9NjYxPXN0YXRpYyBzc2l6ZV90IG1hdGNoaW5nX3N0b3JlKHN0cnVjdCBrb2JqZWN0ICprb2JqLFxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTY2My17XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjY2NDpcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlciAqZmlsdGVyID0gY29udGFpbmVyX29mKGtvYmosXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjY2NTpcXHRcXHRcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlciwga29iaik7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTY2Ni1cXHRib29sIG1hdGNoaW5nO1xcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTY3Nj1zdGF0aWMgc3NpemVfdCBhbGxvd19zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLFxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTY3OC17XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjY3OTpcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlciAqZmlsdGVyID0gY29udGFpbmVyX29mKGtvYmosXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjY4MDpcXHRcXHRcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlciwga29iaik7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTY4MS1cXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz02ODU9c3RhdGljIHNzaXplX3QgYWxsb3dfc3RvcmUoc3RydWN0IGtvYmplY3QgKmtvYmosXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNjg3LXtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6Njg4OlxcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfZmlsdGVyICpmaWx0ZXIgPSBjb250YWluZXJfb2Yoa29iaixcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6Njg5OlxcdFxcdFxcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfZmlsdGVyLCBrb2JqKTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNjkwLVxcdGJvb2wgYWxsb3c7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9NzAwPXN0YXRpYyBzc2l6ZV90IG1lbWNnX3BhdGhfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaixcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy03MDIte1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo3MDM6XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9maWx0ZXIgKmZpbHRlciA9IGNvbnRhaW5lcl9vZihrb2JqLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo3MDQ6XFx0XFx0XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9maWx0ZXIsIGtvYmopO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy03MDUtXFx0aW50IGxlbjtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNzA2LVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo3MDc6XFx0aWYgKCFtdXRleF90cnlsb2NrKFxcdTAwMjZkYW1vbl9zeXNmc19sb2NrKSlcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNzA4LVxcdFxcdHJldHVybiAtRUJVU1k7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNzEwLVxcdFxcdFxcdGZpbHRlci1cXHUwMDNlbWVtY2dfcGF0aCA/IGZpbHRlci1cXHUwMDNlbWVtY2dfcGF0aCA6IFxcXCJcXFwiKTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NzExOlxcdG11dGV4X3VubG9jayhcXHUwMDI2ZGFtb25fc3lzZnNfbG9jayk7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTcxMi1cXHRyZXR1cm4gbGVuO1xcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTcxNT1zdGF0aWMgc3NpemVfdCBtZW1jZ19wYXRoX3N0b3JlKHN0cnVjdCBrb2JqZWN0ICprb2JqLFxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTcxNy17XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjcxODpcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlciAqZmlsdGVyID0gY29udGFpbmVyX29mKGtvYmosXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjcxOTpcXHRcXHRcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlciwga29iaik7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTcyMC1cXHRjaGFyICpwYXRoID0ga21hbGxvY19hcnJheShzaXplX2FkZChjb3VudCwgMSksIHNpemVvZigqcGF0aCksXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNzI2LVxcdHN0cnNjcHkocGF0aCwgYnVmLCBjb3VudCArIDEpO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo3Mjc6XFx0aWYgKCFtdXRleF90cnlsb2NrKFxcdTAwMjZkYW1vbl9zeXNmc19sb2NrKSkge1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy03MjgtXFx0XFx0a2ZyZWUocGF0aCk7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNzMyLVxcdGZpbHRlci1cXHUwMDNlbWVtY2dfcGF0aCA9IHBhdGg7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjczMzpcXHRtdXRleF91bmxvY2soXFx1MDAyNmRhbW9uX3N5c2ZzX2xvY2spO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy03MzQtXFx0cmV0dXJuIGNvdW50O1xcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTczNz1zdGF0aWMgc3NpemVfdCBhZGRyX3N0YXJ0X3Nob3coc3RydWN0IGtvYmplY3QgKmtvYmosXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNzM5LXtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NzQwOlxcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfZmlsdGVyICpmaWx0ZXIgPSBjb250YWluZXJfb2Yoa29iaixcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6NzQxOlxcdFxcdFxcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfZmlsdGVyLCBrb2JqKTtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNzQyLVxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTc0Nj1zdGF0aWMgc3NpemVfdCBhZGRyX3N0YXJ0X3N0b3JlKHN0cnVjdCBrb2JqZWN0ICprb2JqLFxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTc0OC17XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjc0OTpcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlciAqZmlsdGVyID0gY29udGFpbmVyX29mKGtvYmosXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjc1MDpcXHRcXHRcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlciwga29iaik7XFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTc1MS1cXHRpbnQgZXJyID0ga3N0cnRvdWwoYnVmLCAwLCBcXHUwMDI2ZmlsdGVyLVxcdTAwM2VhZGRyX3JhbmdlLnN0YXJ0KTtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz03NTY9c3RhdGljIHNzaXplX3QgYWRkcl9lbmRfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaixcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy03NTgte1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo3NTk6XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9maWx0ZXIgKmZpbHRlciA9IGNvbnRhaW5lcl9vZihrb2JqLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo3NjA6XFx0XFx0XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9maWx0ZXIsIGtvYmopO1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy03NjEtXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9NzY1PXN0YXRpYyBzc2l6ZV90IGFkZHJfZW5kX3N0b3JlKHN0cnVjdCBrb2JqZWN0ICprb2JqLFxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTc2Ny17XFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDAwOjMzOjUzLjYyMTAzMzcwNVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMzk0ODA3NTE5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBEQU1PUyBTY2hlbWUgRXhlY3V0aW9uKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBJdCBsb29rcyBsaWtlIHdlJ3JlIGRpdmluZyBpbnRvIHRoZSBpbm5lciB3b3JraW5ncyBvZiBEQU1PUyAoRGF0YSBBY2Nlc3MgTW9uaXRvcmluZyBhbmQgT3BlcmF0aW9ucykgc2NoZW1lcywgd2hpY2ggYXJlIGNydWNpYWwgZm9yIHRoaW5ncyBsaWtlIHF1b3RhIGVuZm9yY2VtZW50LCBtZW1vcnkgcmVjbGFtYXRpb24sIExSVSBzb3J0aW5nLCBhbmQgc3RhdGlzdGljYWwgdHJhY2tpbmcuIFRoZSBjb21taXQgc3BlY2lmaWNhbGx5IHRvdWNoZXMgYG1tL2RhbW9uL2NvcmUuY2AsIGZvY3VzaW5nIG9uIHRoZSBmdW5jdGlvbnMgYGRhbW9zX3F1b3RhX2lzX2Z1bGxgIGFuZCBgZGFtb25fZG9fYXBwbHlfc2NoZW1lc2AuXG5cbk15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIHRyYWNlIHRoZSBleGVjdXRpb24gZmxvdy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBvdGhlciBmdW5jdGlvbnMgaW4gYG1tL2RhbW9uL2NvcmUuY2AgYXJlIGludm9rZWQgZHVyaW5nIHRoZSBleGVjdXRpb24gb2YgYSBEQU1PUyBzY2hlbWUgb3Igd2hlbiBhIGNvbnRleHQgaXMgYmVpbmcgcHJvY2Vzc2VkIHdpdGhpbiB0aGlzIG1vZHVsZS4gVGhlIGdvYWwgaXMgYSBjbGVhciBwaWN0dXJlIG9mIGhvdyB0aGVzZSBzY2hlbWVzIGFyZSB0cmlnZ2VyZWQgYW5kIHdoYXQgdGhlaXIgZGVwZW5kZW5jaWVzIGFyZS5cblxuVG8gc3RhcnQsIEknbGwgaWRlbnRpZnkgdGhlIG5vbi1zdGF0aWMgZW50cnkgcG9pbnRzIHdpdGhpbiBgbW0vZGFtb24vY29yZS5jYC4gS25vd2luZyB0aGUgZXh0ZXJuYWxseSBhY2Nlc3NpYmxlIGZ1bmN0aW9ucyB3aWxsIGdpdmUgbWUgdGhlIGJlc3Qgb3ZlcnZpZXcgb2YgaG93IHRoZSBEQU1PUyBjb3JlIGlzIGludGVyYWN0ZWQgd2l0aCBieSBvdGhlciBtb2R1bGVzIG9yIHRoZSBrZXJuZWwgYXMgYSB3aG9sZS4gVGhpcyBpcyB0aGUgZmlyc3Qgc3RlcCB0b3dhcmRzIHVuZGVyc3RhbmRpbmcgdGhlIGZ1bGwgZXhlY3V0aW9uIHBhdGguXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyMzkyLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDAwOjMzOjU2LjAxNTg0MzgyM1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAwNjU2MDUzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5bYS16QS1aX10uKlxcXFwoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL2RhbW9uL2NvcmUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDgwNiBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxubW0vZGFtb24vY29yZS5jLTI1LVxcbm1tL2RhbW9uL2NvcmUuYzoyNjpzdGF0aWMgREVGSU5FX01VVEVYKGRhbW9uX2xvY2spO1xcbm1tL2RhbW9uL2NvcmUuYy0yNy1zdGF0aWMgaW50IG5yX3J1bm5pbmdfY3R4cztcXG5tbS9kYW1vbi9jb3JlLmM9Mjg9c3RhdGljIGJvb2wgcnVubmluZ19leGNsdXNpdmVfY3R4cztcXG5tbS9kYW1vbi9jb3JlLmMtMjktXFxubW0vZGFtb24vY29yZS5jOjMwOnN0YXRpYyBERUZJTkVfTVVURVgoZGFtb25fb3BzX2xvY2spO1xcbm1tL2RhbW9uL2NvcmUuYy0zMS1zdGF0aWMgc3RydWN0IGRhbW9uX29wZXJhdGlvbnMgZGFtb25fcmVnaXN0ZXJlZF9vcHNbTlJfREFNT05fT1BTXTtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz0zMz1zdGF0aWMgc3RydWN0IGttZW1fY2FjaGUgKmRhbW9uX3JlZ2lvbl9jYWNoZSBfX3JvX2FmdGVyX2luaXQ7XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMzUtLyogU2hvdWxkIGJlIGNhbGxlZCB1bmRlciBkYW1vbl9vcHNfbG9jayB3aXRoIGlkIHNtYWxsZXIgdGhhbiBOUl9EQU1PTl9PUFMgKi9cXG5tbS9kYW1vbi9jb3JlLmM6MzY6c3RhdGljIGJvb2wgX19kYW1vbl9pc19yZWdpc3RlcmVkX29wcyhlbnVtIGRhbW9uX29wc19pZCBpZClcXG5tbS9kYW1vbi9jb3JlLmMtMzcte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTUwLSAqL1xcbm1tL2RhbW9uL2NvcmUuYzo1MTpib29sIGRhbW9uX2lzX3JlZ2lzdGVyZWRfb3BzKGVudW0gZGFtb25fb3BzX2lkIGlkKVxcbm1tL2RhbW9uL2NvcmUuYy01Mi17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtNzEtICovXFxubW0vZGFtb24vY29yZS5jOjcyOmludCBkYW1vbl9yZWdpc3Rlcl9vcHMoc3RydWN0IGRhbW9uX29wZXJhdGlvbnMgKm9wcylcXG5tbS9kYW1vbi9jb3JlLmMtNzMte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTk4LSAqL1xcbm1tL2RhbW9uL2NvcmUuYzo5OTppbnQgZGFtb25fc2VsZWN0X29wcyhzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsIGVudW0gZGFtb25fb3BzX2lkIGlkKVxcbm1tL2RhbW9uL2NvcmUuYy0xMDAte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTExNC1cXG5tbS9kYW1vbi9jb3JlLmM6MTE1OnN0cnVjdCBkYW1vbl9wcmVwICpkYW1vbl9uZXdfcHJlcChlbnVtIGRhbW9uX3ByZXBfYWN0aW9uIGFjdGlvbilcXG5tbS9kYW1vbi9jb3JlLmMtMTE2LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xMjYtXFxubW0vZGFtb24vY29yZS5jOjEyNzp2b2lkIGRhbW9uX2FkZF9wcmVwKHN0cnVjdCBkYW1vbl9wcm9iZSAqcCwgc3RydWN0IGRhbW9uX3ByZXAgKnByZXApXFxubW0vZGFtb24vY29yZS5jLTEyOC17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTMxLVxcbm1tL2RhbW9uL2NvcmUuYzoxMzI6c3RhdGljIHZvaWQgZGFtb25fZGVsX3ByZXAoc3RydWN0IGRhbW9uX3ByZXAgKnApXFxubW0vZGFtb24vY29yZS5jLTEzMy17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTM2LVxcbm1tL2RhbW9uL2NvcmUuYzoxMzc6c3RhdGljIHZvaWQgZGFtb25fZnJlZV9wcmVwKHN0cnVjdCBkYW1vbl9wcmVwICpwKVxcbm1tL2RhbW9uL2NvcmUuYy0xMzgte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTE0MS1cXG5tbS9kYW1vbi9jb3JlLmM6MTQyOnN0YXRpYyB2b2lkIGRhbW9uX2Rlc3Ryb3lfcHJlcChzdHJ1Y3QgZGFtb25fcHJlcCAqcClcXG5tbS9kYW1vbi9jb3JlLmMtMTQzLXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xNDctXFxubW0vZGFtb24vY29yZS5jOjE0ODpzdGF0aWMgc3RydWN0IGRhbW9uX3ByZXAgKmRhbW9uX250aF9wcmVwKGludCBuLCBzdHJ1Y3QgZGFtb25fcHJvYmUgKnApXFxubW0vZGFtb24vY29yZS5jLTE0OS17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTU5LVxcbm1tL2RhbW9uL2NvcmUuYzoxNjA6c3RhdGljIGJvb2wgZGFtb25faGFzX3ByZXAoc3RydWN0IGRhbW9uX2N0eCAqYylcXG5tbS9kYW1vbi9jb3JlLmMtMTYxLXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xNzEtXFxubW0vZGFtb24vY29yZS5jOjE3MjpzdHJ1Y3QgZGFtb25fZmlsdGVyICpkYW1vbl9uZXdfZmlsdGVyKGVudW0gZGFtb25fZmlsdGVyX3R5cGUgdHlwZSxcXG5tbS9kYW1vbi9jb3JlLmMtMTczLVxcdFxcdGJvb2wgbWF0Y2hpbmcsIGJvb2wgYWxsb3cpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTg2LVxcbm1tL2RhbW9uL2NvcmUuYzoxODc6dm9pZCBkYW1vbl9hZGRfZmlsdGVyKHN0cnVjdCBkYW1vbl9wcm9iZSAqcCwgc3RydWN0IGRhbW9uX2ZpbHRlciAqZilcXG5tbS9kYW1vbi9jb3JlLmMtMTg4LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xOTEtXFxubW0vZGFtb24vY29yZS5jOjE5MjpzdGF0aWMgdm9pZCBkYW1vbl9kZWxfZmlsdGVyKHN0cnVjdCBkYW1vbl9maWx0ZXIgKmYpXFxubW0vZGFtb24vY29yZS5jLTE5My17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTk2LVxcbm1tL2RhbW9uL2NvcmUuYzoxOTc6c3RhdGljIHZvaWQgZGFtb25fZnJlZV9maWx0ZXIoc3RydWN0IGRhbW9uX2ZpbHRlciAqZilcXG5tbS9kYW1vbi9jb3JlLmMtMTk4LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0yMDEtXFxubW0vZGFtb24vY29yZS5jOjIwMjp2b2lkIGRhbW9uX2Rlc3Ryb3lfZmlsdGVyKHN0cnVjdCBkYW1vbl9maWx0ZXIgKmYpXFxubW0vZGFtb24vY29yZS5jLTIwMy17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMjA3LVxcbm1tL2RhbW9uL2NvcmUuYzoyMDg6c3RhdGljIHN0cnVjdCBkYW1vbl9maWx0ZXIgKmRhbW9uX250aF9maWx0ZXIoaW50IG4sIHN0cnVjdCBkYW1vbl9wcm9iZSAqcClcXG5tbS9kYW1vbi9jb3JlLmMtMjA5LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0yMTktXFxubW0vZGFtb24vY29yZS5jOjIyMDpzdHJ1Y3QgZGFtb25fcHJvYmUgKmRhbW9uX25ld19wcm9iZSh2b2lkKVxcbm1tL2RhbW9uL2NvcmUuYy0yMjEte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTIzMy1cXG5tbS9kYW1vbi9jb3JlLmM6MjM0OnZvaWQgZGFtb25fYWRkX3Byb2JlKHN0cnVjdCBkYW1vbl9jdHggKmN0eCwgc3RydWN0IGRhbW9uX3Byb2JlICpwcm9iZSlcXG5tbS9kYW1vbi9jb3JlLmMtMjM1LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0yMzgtXFxubW0vZGFtb24vY29yZS5jOjIzOTpzdGF0aWMgdm9pZCBkYW1vbl9kZWxfcHJvYmUoc3RydWN0IGRhbW9uX3Byb2JlICpwKVxcbm1tL2RhbW9uL2NvcmUuYy0yNDAte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTI0My1cXG5tbS9kYW1vbi9jb3JlLmM6MjQ0OnN0YXRpYyB2b2lkIGRhbW9uX2ZyZWVfcHJvYmUoc3RydWN0IGRhbW9uX3Byb2JlICpwKVxcbm1tL2RhbW9uL2NvcmUuYy0yNDUte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTI1NS1cXG5tbS9kYW1vbi9jb3JlLmM6MjU2OnN0YXRpYyB2b2lkIGRhbW9uX2Rlc3Ryb3lfcHJvYmUoc3RydWN0IGRhbW9uX3Byb2JlICpwKVxcbm1tL2RhbW9uL2NvcmUuYy0yNTcte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTI2MS1cXG5tbS9kYW1vbi9jb3JlLmM6MjYyOnN0YXRpYyBzdHJ1Y3QgZGFtb25fcHJvYmUgKmRhbW9uX250aF9wcm9iZShpbnQgbiwgc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxcbm1tL2RhbW9uL2NvcmUuYy0yNjMte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTI3My1cXG5tbS9kYW1vbi9jb3JlLmM6Mjc0OnN0YXRpYyBib29sIGRhbW9uX2hhc19wcm9iZV93ZWlnaHRzKHN0cnVjdCBkYW1vbl9jdHggKmMpXFxubW0vZGFtb24vY29yZS5jLTI3NS17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMzA1LSAqL1xcbm1tL2RhbW9uL2NvcmUuYzozMDY6c3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb25fbXZzdW0odW5zaWduZWQgbG9uZyBjdXJyZW50X25yLFxcbm1tL2RhbW9uL2NvcmUuYy0zMDctXFx0XFx0dW5zaWduZWQgbG9uZyBsYXN0X25yLCB1bnNpZ25lZCBsb25nIGxlZnRfd2luZG93X2JwKVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTMyNS0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6MzI2OnVuc2lnbmVkIGludCBkYW1vbl9ucl9hY2Nlc3Nlc19tdnN1bShzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLFxcbm1tL2RhbW9uL2NvcmUuYy0zMjctXFx0XFx0c3RydWN0IGRhbW9uX2N0eCAqY3R4KVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTM0OS1cXG5tbS9kYW1vbi9jb3JlLmM6MzUwOnVuc2lnbmVkIGNoYXIgZGFtb25fcHJvYmVfaGl0c19tdnN1bShpbnQgcHJvYmVfaWR4LCBzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLFxcbm1tL2RhbW9uL2NvcmUuYy0zNTEtXFx0XFx0c3RydWN0IGRhbW9uX2N0eCAqY3R4KVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTM3NC0jaWZkZWYgQ09ORklHX0RBTU9OX0RFQlVHX1NBTklUWVxcbm1tL2RhbW9uL2NvcmUuYzozNzU6c3RhdGljIHZvaWQgZGFtb25fdmVyaWZ5X25ld19yZWdpb24odW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQpXFxubW0vZGFtb24vY29yZS5jLTM3Ni17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMzc5LSNlbHNlXFxubW0vZGFtb24vY29yZS5jOjM4MDpzdGF0aWMgdm9pZCBkYW1vbl92ZXJpZnlfbmV3X3JlZ2lvbih1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZClcXG5tbS9kYW1vbi9jb3JlLmMtMzgxLXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0zODktICovXFxubW0vZGFtb24vY29yZS5jOjM5MDpzdHJ1Y3QgZGFtb25fcmVnaW9uICpkYW1vbl9uZXdfcmVnaW9uKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kKVxcbm1tL2RhbW9uL2NvcmUuYy0zOTEte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTQxNC1cXG5tbS9kYW1vbi9jb3JlLmM6NDE1OnN0YXRpYyB2b2lkIGRhbW9uX2FkZF9yZWdpb24oc3RydWN0IGRhbW9uX3JlZ2lvbiAqciwgc3RydWN0IGRhbW9uX3RhcmdldCAqdClcXG5tbS9kYW1vbi9jb3JlLmMtNDE2LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy00MjMtICovXFxubW0vZGFtb24vY29yZS5jOjQyNDpzdGF0aWMgaW5saW5lIHZvaWQgZGFtb25faW5zZXJ0X3JlZ2lvbihzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLFxcbm1tL2RhbW9uL2NvcmUuYy00MjUtXFx0XFx0c3RydWN0IGRhbW9uX3JlZ2lvbiAqcHJldiwgc3RydWN0IGRhbW9uX3JlZ2lvbiAqbmV4dCxcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy00MzItI2lmZGVmIENPTkZJR19EQU1PTl9ERUJVR19TQU5JVFlcXG5tbS9kYW1vbi9jb3JlLmM6NDMzOnN0YXRpYyB2b2lkIGRhbW9uX3ZlcmlmeV9kZWxfcmVnaW9uKHN0cnVjdCBkYW1vbl90YXJnZXQgKnQpXFxubW0vZGFtb24vY29yZS5jLTQzNC17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtNDM3LSNlbHNlXFxubW0vZGFtb24vY29yZS5jOjQzODpzdGF0aWMgdm9pZCBkYW1vbl92ZXJpZnlfZGVsX3JlZ2lvbihzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0KVxcbm1tL2RhbW9uL2NvcmUuYy00Mzkte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTQ0Mi1cXG5tbS9kYW1vbi9jb3JlLmM6NDQzOnN0YXRpYyB2b2lkIGRhbW9uX2RlbF9yZWdpb24oc3RydWN0IGRhbW9uX3JlZ2lvbiAqciwgc3RydWN0IGRhbW9uX3RhcmdldCAqdClcXG5tbS9kYW1vbi9jb3JlLmMtNDQ0LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy00NTAtXFxubW0vZGFtb24vY29yZS5jOjQ1MTpzdGF0aWMgdm9pZCBkYW1vbl9mcmVlX3JlZ2lvbihzdHJ1Y3QgZGFtb25fcmVnaW9uICpyKVxcbm1tL2RhbW9uL2NvcmUuYy00NTIte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTQ1NS1cXG5tbS9kYW1vbi9jb3JlLmM6NDU2OnN0YXRpYyB2b2lkIGRhbW9uX2Rlc3Ryb3lfcmVnaW9uKHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsXFxubW0vZGFtb24vY29yZS5jLTQ1Ny1cXHRcXHRzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0KVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTQ2Mi1cXG5tbS9kYW1vbi9jb3JlLmM6NDYzOnN0YXRpYyBib29sIGRhbW9uX2lzX2xhc3RfcmVnaW9uKHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsXFxubW0vZGFtb24vY29yZS5jLTQ2NC1cXHRcXHRzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0KVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTQ3Ni0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6NDc3OnVuc2lnbmVkIGludCBkYW1vbl9wcm9iZV9oaXRzX3dzdW0oc3RydWN0IGRhbW9uX3JlZ2lvbiAqciwgYm9vbCBsYXN0LFxcbm1tL2RhbW9uL2NvcmUuYy00NzgtXFx0XFx0c3RydWN0IGRhbW9uX2N0eCAqY3R4KVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTQ5Ny0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6NDk4OnN0YXRpYyBib29sIGRhbW9uX2ludGVyc2VjdChzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLFxcbm1tL2RhbW9uL2NvcmUuYy00OTktXFx0XFx0c3RydWN0IGRhbW9uX2FkZHJfcmFuZ2UgKnJlKVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTUwNi0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6NTA3OnN0YXRpYyBpbnQgZGFtb25fZmlsbF9yZWdpb25zX2hvbGVzKHN0cnVjdCBkYW1vbl9yZWdpb24gKmZpcnN0LFxcbm1tL2RhbW9uL2NvcmUuYy01MDgtXFx0XFx0c3RydWN0IGRhbW9uX3JlZ2lvbiAqbGFzdCwgc3RydWN0IGRhbW9uX3RhcmdldCAqdClcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy01MzktICovXFxubW0vZGFtb24vY29yZS5jOjU0MDppbnQgZGFtb25fc2V0X3JlZ2lvbnMoc3RydWN0IGRhbW9uX3RhcmdldCAqdCwgc3RydWN0IGRhbW9uX2FkZHJfcmFuZ2UgKnJhbmdlcyxcXG5tbS9kYW1vbi9jb3JlLmMtNTQxLVxcdFxcdHVuc2lnbmVkIGludCBucl9yYW5nZXMsIHVuc2lnbmVkIGxvbmcgbWluX3JlZ2lvbl9zeilcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy02MzAtXFxubW0vZGFtb24vY29yZS5jOjYzMTpzdHJ1Y3QgZGFtb3NfZmlsdGVyICpkYW1vc19uZXdfZmlsdGVyKGVudW0gZGFtb3NfZmlsdGVyX3R5cGUgdHlwZSxcXG5tbS9kYW1vbi9jb3JlLmMtNjMyLVxcdFxcdGJvb2wgbWF0Y2hpbmcsIGJvb2wgYWxsb3cpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtNjUyLSAqL1xcbm1tL2RhbW9uL2NvcmUuYzo2NTM6Ym9vbCBkYW1vc19maWx0ZXJfZm9yX29wcyhlbnVtIGRhbW9zX2ZpbHRlcl90eXBlIHR5cGUpXFxubW0vZGFtb24vY29yZS5jLTY1NC17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtNjY0LVxcbm1tL2RhbW9uL2NvcmUuYzo2NjU6dm9pZCBkYW1vc19hZGRfZmlsdGVyKHN0cnVjdCBkYW1vcyAqcywgc3RydWN0IGRhbW9zX2ZpbHRlciAqZilcXG5tbS9kYW1vbi9jb3JlLmMtNjY2LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy02NzItXFxubW0vZGFtb24vY29yZS5jOjY3MzpzdGF0aWMgdm9pZCBkYW1vc19kZWxfZmlsdGVyKHN0cnVjdCBkYW1vc19maWx0ZXIgKmYpXFxubW0vZGFtb24vY29yZS5jLTY3NC17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtNjc3LVxcbm1tL2RhbW9uL2NvcmUuYzo2Nzg6c3RhdGljIHZvaWQgZGFtb3NfZnJlZV9maWx0ZXIoc3RydWN0IGRhbW9zX2ZpbHRlciAqZilcXG5tbS9kYW1vbi9jb3JlLmMtNjc5LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy02ODItXFxubW0vZGFtb24vY29yZS5jOjY4Mzp2b2lkIGRhbW9zX2Rlc3Ryb3lfZmlsdGVyKHN0cnVjdCBkYW1vc19maWx0ZXIgKmYpXFxubW0vZGFtb24vY29yZS5jLTY4NC17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtNjg4LVxcbm1tL2RhbW9uL2NvcmUuYzo2ODk6c3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKmRhbW9zX25ld19xdW90YV9nb2FsKFxcbm1tL2RhbW9uL2NvcmUuYy02OTAtXFx0XFx0ZW51bSBkYW1vc19xdW90YV9nb2FsX21ldHJpYyBtZXRyaWMsXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtNzA1LVxcbm1tL2RhbW9uL2NvcmUuYzo3MDY6dm9pZCBkYW1vc19hZGRfcXVvdGFfZ29hbChzdHJ1Y3QgZGFtb3NfcXVvdGEgKnEsIHN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpnKVxcbm1tL2RhbW9uL2NvcmUuYy03MDcte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTcxMC1cXG5tbS9kYW1vbi9jb3JlLmM6NzExOnN0YXRpYyB2b2lkIGRhbW9zX2RlbF9xdW90YV9nb2FsKHN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpnKVxcbm1tL2RhbW9uL2NvcmUuYy03MTIte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTcxNS1cXG5tbS9kYW1vbi9jb3JlLmM6NzE2OnN0YXRpYyB2b2lkIGRhbW9zX2ZyZWVfcXVvdGFfZ29hbChzdHJ1Y3QgZGFtb3NfcXVvdGFfZ29hbCAqZylcXG5tbS9kYW1vbi9jb3JlLmMtNzE3LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy03MjAtXFxubW0vZGFtb24vY29yZS5jOjcyMTp2b2lkIGRhbW9zX2Rlc3Ryb3lfcXVvdGFfZ29hbChzdHJ1Y3QgZGFtb3NfcXVvdGFfZ29hbCAqZylcXG5tbS9kYW1vbi9jb3JlLmMtNzIyLXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy03MjYtXFxubW0vZGFtb24vY29yZS5jOjcyNzpzdGF0aWMgYm9vbCBkYW1vc19xdW90YV9nb2Fsc19lbXB0eShzdHJ1Y3QgZGFtb3NfcXVvdGEgKnEpXFxubW0vZGFtb24vY29yZS5jLTcyOC17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtNzMyLS8qIGluaXRpYWxpemUgZmllbGRzIG9mIEBxdW90YSB0aGF0IG5vcm1hbGx5IEFQSSB1c2VycyB3b3VsZG4ndCBzZXQgKi9cXG5tbS9kYW1vbi9jb3JlLmM6NzMzOnN0YXRpYyBzdHJ1Y3QgZGFtb3NfcXVvdGEgKmRhbW9zX3F1b3RhX2luaXQoc3RydWN0IGRhbW9zX3F1b3RhICpxdW90YSlcXG5tbS9kYW1vbi9jb3JlLmMtNzM0LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy03NDUtXFxubW0vZGFtb24vY29yZS5jOjc0NjpzdHJ1Y3QgZGFtb3MgKmRhbW9uX25ld19zY2hlbWUoc3RydWN0IGRhbW9zX2FjY2Vzc19wYXR0ZXJuICpwYXR0ZXJuLFxcbm1tL2RhbW9uL2NvcmUuYy03NDctXFx0XFx0XFx0ZW51bSBkYW1vc19hY3Rpb24gYWN0aW9uLFxcbi0tXFxubW0vZGFtb24vY29yZS5jLTc4Ny1cXG5tbS9kYW1vbi9jb3JlLmM6Nzg4OnN0YXRpYyB2b2lkIGRhbW9zX3NldF9uZXh0X2FwcGx5X3NpcyhzdHJ1Y3QgZGFtb3MgKnMsIHN0cnVjdCBkYW1vbl9jdHggKmN0eClcXG5tbS9kYW1vbi9jb3JlLmMtNzg5LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy03OTgtXFxubW0vZGFtb24vY29yZS5jOjc5OTp2b2lkIGRhbW9uX2FkZF9zY2hlbWUoc3RydWN0IGRhbW9uX2N0eCAqY3R4LCBzdHJ1Y3QgZGFtb3MgKnMpXFxubW0vZGFtb24vY29yZS5jLTgwMC17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtODA0LVxcbm1tL2RhbW9uL2NvcmUuYzo4MDU6c3RhdGljIHZvaWQgZGFtb25fZGVsX3NjaGVtZShzdHJ1Y3QgZGFtb3MgKnMpXFxubW0vZGFtb24vY29yZS5jLTgwNi17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtODA5LVxcbm1tL2RhbW9uL2NvcmUuYzo4MTA6c3RhdGljIHZvaWQgZGFtb25fZnJlZV9zY2hlbWUoc3RydWN0IGRhbW9zICpzKVxcbm1tL2RhbW9uL2NvcmUuYy04MTEte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTgxNC1cXG5tbS9kYW1vbi9jb3JlLmM6ODE1OnZvaWQgZGFtb25fZGVzdHJveV9zY2hlbWUoc3RydWN0IGRhbW9zICpzKVxcbm1tL2RhbW9uL2NvcmUuYy04MTYte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTgzOS0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6ODQwOnN0cnVjdCBkYW1vbl90YXJnZXQgKmRhbW9uX25ld190YXJnZXQodm9pZClcXG5tbS9kYW1vbi9jb3JlLmMtODQxLXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy04NTYtXFxubW0vZGFtb24vY29yZS5jOjg1Nzp2b2lkIGRhbW9uX2FkZF90YXJnZXQoc3RydWN0IGRhbW9uX2N0eCAqY3R4LCBzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0KVxcbm1tL2RhbW9uL2NvcmUuYy04NTgte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTg2NC0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6ODY1OmludCBkYW1vbl9zZXRfdGFyZ2V0X3BpZChzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0LCBpbnQgcGlkKVxcbm1tL2RhbW9uL2NvcmUuYy04NjYte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTg3Mi1cXG5tbS9kYW1vbi9jb3JlLmM6ODczOnN0YXRpYyB2b2lkIGRhbW9uX2RlbF90YXJnZXQoc3RydWN0IGRhbW9uX3RhcmdldCAqdClcXG5tbS9kYW1vbi9jb3JlLmMtODc0LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy04NzctXFxubW0vZGFtb24vY29yZS5jOjg3ODp2b2lkIGRhbW9uX2ZyZWVfdGFyZ2V0KHN0cnVjdCBkYW1vbl90YXJnZXQgKnQpXFxubW0vZGFtb24vY29yZS5jLTg3OS17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtODg2LVxcbm1tL2RhbW9uL2NvcmUuYzo4ODc6dm9pZCBkYW1vbl9kZXN0cm95X3RhcmdldChzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0LCBzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXFxubW0vZGFtb24vY29yZS5jLTg4OC17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtODk2LVxcbm1tL2RhbW9uL2NvcmUuYzo4OTc6dW5zaWduZWQgaW50IGRhbW9uX25yX3JlZ2lvbnMoc3RydWN0IGRhbW9uX3RhcmdldCAqdClcXG5tbS9kYW1vbi9jb3JlLmMtODk4LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy05MDEtXFxubW0vZGFtb24vY29yZS5jOjkwMjpzdHJ1Y3QgZGFtb25fY3R4ICpkYW1vbl9uZXdfY3R4KHZvaWQpXFxubW0vZGFtb24vY29yZS5jLTkwMy17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtOTQxLVxcbm1tL2RhbW9uL2NvcmUuYzo5NDI6c3RhdGljIHZvaWQgZGFtb25fZGVzdHJveV90YXJnZXRzKHN0cnVjdCBkYW1vbl9jdHggKmN0eClcXG5tbS9kYW1vbi9jb3JlLmMtOTQzLXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy05NDktXFxubW0vZGFtb24vY29yZS5jOjk1MDp2b2lkIGRhbW9uX2Rlc3Ryb3lfY3R4KHN0cnVjdCBkYW1vbl9jdHggKmN0eClcXG5tbS9kYW1vbi9jb3JlLmMtOTUxLXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy05NjUtXFxubW0vZGFtb24vY29yZS5jOjk2NjpzdGF0aWMgYm9vbCBkYW1vbl9hdHRyc19lcXVhbHMoY29uc3Qgc3RydWN0IGRhbW9uX2F0dHJzICphdHRyczEsXFxubW0vZGFtb24vY29yZS5jLTk2Ny1cXHRcXHRjb25zdCBzdHJ1Y3QgZGFtb25fYXR0cnMgKmF0dHJzMilcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy05ODItXFxubW0vZGFtb24vY29yZS5jOjk4MzpzdGF0aWMgdW5zaWduZWQgaW50IGRhbW9uX2FnZV9mb3JfbmV3X2F0dHJzKHVuc2lnbmVkIGludCBhZ2UsXFxubW0vZGFtb24vY29yZS5jLTk4NC1cXHRcXHRzdHJ1Y3QgZGFtb25fYXR0cnMgKm9sZF9hdHRycywgc3RydWN0IGRhbW9uX2F0dHJzICpuZXdfYXR0cnMpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtOTg5LS8qIGNvbnZlcnQgc2FtcGxlIHJhdGlvIGluIGJwIChwZXIgMTAsMDAwKSB0byBjb3VudCAqL1xcbm1tL2RhbW9uL2NvcmUuYzo5OTA6c3RhdGljIHVuc2lnbmVkIGludCBkYW1vbl9zYW1wbGVfYnBfdG9fY291bnQoXFxubW0vZGFtb24vY29yZS5jLTk5MS1cXHRcXHR1bnNpZ25lZCBpbnQgYnAsIHN0cnVjdCBkYW1vbl9hdHRycyAqYXR0cnMpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtOTk2LS8qIGNvbnZlcnQgc2FtcGxlIGNvdW50IHRvIHJhdGlvIGluIGJwIChwZXIgMTAsMDAwKSAqL1xcbm1tL2RhbW9uL2NvcmUuYzo5OTc6c3RhdGljIHVuc2lnbmVkIGludCBkYW1vbl9zYW1wbGVfY291bnRfdG9fYnAoXFxubW0vZGFtb24vY29yZS5jLTk5OC1cXHRcXHR1bnNpZ25lZCBpbnQgY291bnQsIHN0cnVjdCBkYW1vbl9hdHRycyAqYXR0cnMpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTAwMi1cXG5tbS9kYW1vbi9jb3JlLmM6MTAwMzpzdGF0aWMgdW5zaWduZWQgaW50IGRhbW9uX25yX3NhbXBsZXNfZm9yX25ld19hdHRycyh1bnNpZ25lZCBpbnQgbnIsXFxubW0vZGFtb24vY29yZS5jLTEwMDQtXFx0XFx0c3RydWN0IGRhbW9uX2F0dHJzICpvbGRfYXR0cnMsIHN0cnVjdCBkYW1vbl9hdHRycyAqbmV3X2F0dHJzKVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTEwMDktXFxubW0vZGFtb24vY29yZS5jOjEwMTA6c3RhdGljIHZvaWQgZGFtb25fdXBkYXRlX3Byb2JlX2hpdHMoc3RydWN0IGRhbW9uX3JlZ2lvbiAqcixcXG5tbS9kYW1vbi9jb3JlLmMtMTAxMS1cXHRcXHRzdHJ1Y3QgZGFtb25fYXR0cnMgKm9sZF9hdHRycywgc3RydWN0IGRhbW9uX2F0dHJzICpuZXdfYXR0cnMsXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTAyOS1cXG5tbS9kYW1vbi9jb3JlLmM6MTAzMDpzdGF0aWMgdm9pZCBkYW1vbl91cGRhdGVfbW9uaXRvcmluZ19yZXN1bHQoc3RydWN0IGRhbW9uX3JlZ2lvbiAqcixcXG5tbS9kYW1vbi9jb3JlLmMtMTAzMS1cXHRcXHRzdHJ1Y3QgZGFtb25fYXR0cnMgKm9sZF9hdHRycywgc3RydWN0IGRhbW9uX2F0dHJzICpuZXdfYXR0cnMsXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTA1OS0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6MTA2MDpzdGF0aWMgdm9pZCBkYW1vbl91cGRhdGVfbW9uaXRvcmluZ19yZXN1bHRzKHN0cnVjdCBkYW1vbl9jdHggKmN0eCxcXG5tbS9kYW1vbi9jb3JlLmMtMTA2MS1cXHRcXHRzdHJ1Y3QgZGFtb25fYXR0cnMgKm5ld19hdHRycywgYm9vbCBhZ2dyZWdhdGluZylcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xMDgyLSAqL1xcbm1tL2RhbW9uL2NvcmUuYzoxMDgzOnN0YXRpYyBib29sIGRhbW9uX3ZhbGlkX2ludGVydmFsc19nb2FsKHN0cnVjdCBkYW1vbl9hdHRycyAqYXR0cnMpXFxubW0vZGFtb24vY29yZS5jLTEwODQte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTExMTctICovXFxubW0vZGFtb24vY29yZS5jOjExMTg6aW50IGRhbW9uX3NldF9hdHRycyhzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsIHN0cnVjdCBkYW1vbl9hdHRycyAqYXR0cnMpXFxubW0vZGFtb24vY29yZS5jLTExMTkte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTExNjUtICovXFxubW0vZGFtb24vY29yZS5jOjExNjY6dm9pZCBkYW1vbl9zZXRfc2NoZW1lcyhzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsIHN0cnVjdCBkYW1vcyAqKnNjaGVtZXMsXFxubW0vZGFtb24vY29yZS5jLTExNjctXFx0XFx0XFx0c3NpemVfdCBucl9zY2hlbWVzKVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTExNzctXFxubW0vZGFtb24vY29yZS5jOjExNzg6c3RhdGljIHN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpkYW1vc19udGhfcXVvdGFfZ29hbChcXG5tbS9kYW1vbi9jb3JlLmMtMTE3OS1cXHRcXHRpbnQgbiwgc3RydWN0IGRhbW9zX3F1b3RhICpxKVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTExOTAtXFxubW0vZGFtb24vY29yZS5jOjExOTE6c3RhdGljIHZvaWQgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxfdW5pb24oXFxubW0vZGFtb24vY29yZS5jLTExOTItXFx0XFx0c3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKmRzdCwgc3RydWN0IGRhbW9zX3F1b3RhX2dvYWwgKnNyYylcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xMjE0LVxcbm1tL2RhbW9uL2NvcmUuYzoxMjE1OnN0YXRpYyB2b2lkIGRhbW9zX2NvbW1pdF9xdW90YV9nb2FsKFxcbm1tL2RhbW9uL2NvcmUuYy0xMjE2LVxcdFxcdHN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpkc3QsIHN0cnVjdCBkYW1vc19xdW90YV9nb2FsICpzcmMpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTIzNi0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6MTIzNzppbnQgZGFtb3NfY29tbWl0X3F1b3RhX2dvYWxzKHN0cnVjdCBkYW1vc19xdW90YSAqZHN0LCBzdHJ1Y3QgZGFtb3NfcXVvdGEgKnNyYylcXG5tbS9kYW1vbi9jb3JlLmMtMTIzOC17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTI2MS1cXG5tbS9kYW1vbi9jb3JlLmM6MTI2MjpzdGF0aWMgaW50IGRhbW9zX2NvbW1pdF9xdW90YShzdHJ1Y3QgZGFtb3NfcXVvdGEgKmRzdCwgc3RydWN0IGRhbW9zX3F1b3RhICpzcmMpXFxubW0vZGFtb24vY29yZS5jLTEyNjMte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTEyODAtXFxubW0vZGFtb24vY29yZS5jOjEyODE6c3RhdGljIHN0cnVjdCBkYW1vc19maWx0ZXIgKmRhbW9zX250aF9jb3JlX2ZpbHRlcihpbnQgbiwgc3RydWN0IGRhbW9zICpzKVxcbm1tL2RhbW9uL2NvcmUuYy0xMjgyLXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xMjkyLVxcbm1tL2RhbW9uL2NvcmUuYzoxMjkzOnN0YXRpYyBzdHJ1Y3QgZGFtb3NfZmlsdGVyICpkYW1vc19udGhfb3BzX2ZpbHRlcihpbnQgbiwgc3RydWN0IGRhbW9zICpzKVxcbm1tL2RhbW9uL2NvcmUuYy0xMjk0LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xMzA0LVxcbm1tL2RhbW9uL2NvcmUuYzoxMzA1OnN0YXRpYyB2b2lkIGRhbW9zX2NvbW1pdF9maWx0ZXJfYXJnKFxcbm1tL2RhbW9uL2NvcmUuYy0xMzA2LVxcdFxcdHN0cnVjdCBkYW1vc19maWx0ZXIgKmRzdCwgc3RydWN0IGRhbW9zX2ZpbHRlciAqc3JjKVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTEzMjUtXFxubW0vZGFtb24vY29yZS5jOjEzMjY6c3RhdGljIHZvaWQgZGFtb3NfY29tbWl0X2ZpbHRlcihcXG5tbS9kYW1vbi9jb3JlLmMtMTMyNy1cXHRcXHRzdHJ1Y3QgZGFtb3NfZmlsdGVyICpkc3QsIHN0cnVjdCBkYW1vc19maWx0ZXIgKnNyYylcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xMzM0LVxcbm1tL2RhbW9uL2NvcmUuYzoxMzM1OnN0YXRpYyBpbnQgZGFtb3NfY29tbWl0X2NvcmVfZmlsdGVycyhzdHJ1Y3QgZGFtb3MgKmRzdCwgc3RydWN0IGRhbW9zICpzcmMpXFxubW0vZGFtb24vY29yZS5jLTEzMzYte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTEzNjItXFxubW0vZGFtb24vY29yZS5jOjEzNjM6c3RhdGljIGludCBkYW1vc19jb21taXRfb3BzX2ZpbHRlcnMoc3RydWN0IGRhbW9zICpkc3QsIHN0cnVjdCBkYW1vcyAqc3JjKVxcbm1tL2RhbW9uL2NvcmUuYy0xMzY0LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xMzk1LSAqL1xcbm1tL2RhbW9uL2NvcmUuYzoxMzk2OnN0YXRpYyBib29sIGRhbW9zX2ZpbHRlcnNfZGVmYXVsdF9yZWplY3Qoc3RydWN0IGxpc3RfaGVhZCAqZmlsdGVycylcXG5tbS9kYW1vbi9jb3JlLmMtMTM5Ny17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTQwNS1cXG5tbS9kYW1vbi9jb3JlLmM6MTQwNjpzdGF0aWMgdm9pZCBkYW1vc19zZXRfZmlsdGVyc19kZWZhdWx0X3JlamVjdChzdHJ1Y3QgZGFtb3MgKnMpXFxubW0vZGFtb24vY29yZS5jLTE0MDcte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTE0MTYtXFxubW0vZGFtb24vY29yZS5jOjE0MTc6c3RhdGljIGJvb2wgZGFtb25fdmFsaWRfcHJvYmVfcGFyYW1zKHN0cnVjdCBkYW1vbl9jdHggKmN0eClcXG5tbS9kYW1vbi9jb3JlLmMtMTQxOC17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTQ2MS0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6MTQ2MjpzdGF0aWMgaW50IGRhbW9zX2NvbW1pdF9kZXN0cyhzdHJ1Y3QgZGFtb3NfbWlncmF0ZV9kZXN0cyAqZHN0LFxcbm1tL2RhbW9uL2NvcmUuYy0xNDYzLVxcdFxcdHN0cnVjdCBkYW1vc19taWdyYXRlX2Rlc3RzICpzcmMpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTQ5Mi1cXG5tbS9kYW1vbi9jb3JlLmM6MTQ5MzpzdGF0aWMgaW50IGRhbW9zX2NvbW1pdF9maWx0ZXJzKHN0cnVjdCBkYW1vcyAqZHN0LCBzdHJ1Y3QgZGFtb3MgKnNyYylcXG5tbS9kYW1vbi9jb3JlLmMtMTQ5NC17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTUwNi1cXG5tbS9kYW1vbi9jb3JlLmM6MTUwNzpzdGF0aWMgc3RydWN0IGRhbW9zICpkYW1vbl9udGhfc2NoZW1lKGludCBuLCBzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXFxubW0vZGFtb24vY29yZS5jLTE1MDgte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTE1MTgtXFxubW0vZGFtb24vY29yZS5jOjE1MTk6c3RhdGljIGludCBkYW1vc19jb21taXQoc3RydWN0IGRhbW9zICpkc3QsIHN0cnVjdCBkYW1vcyAqc3JjKVxcbm1tL2RhbW9uL2NvcmUuYy0xNTIwLXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xNTQ1LVxcbm1tL2RhbW9uL2NvcmUuYzoxNTQ2OnN0YXRpYyBpbnQgZGFtb25fY29tbWl0X3NjaGVtZXMoc3RydWN0IGRhbW9uX2N0eCAqZHN0LCBzdHJ1Y3QgZGFtb25fY3R4ICpzcmMpXFxubW0vZGFtb24vY29yZS5jLTE1NDcte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTE1ODEtXFxubW0vZGFtb24vY29yZS5jOjE1ODI6c3RhdGljIHN0cnVjdCBkYW1vbl90YXJnZXQgKmRhbW9uX250aF90YXJnZXQoaW50IG4sIHN0cnVjdCBkYW1vbl9jdHggKmN0eClcXG5tbS9kYW1vbi9jb3JlLmMtMTU4My17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTYwMC0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6MTYwMTpzdGF0aWMgaW50IGRhbW9uX2NvbW1pdF90YXJnZXRfcmVnaW9ucyhzdHJ1Y3QgZGFtb25fdGFyZ2V0ICpkc3QsXFxubW0vZGFtb24vY29yZS5jLTE2MDItXFx0XFx0c3RydWN0IGRhbW9uX3RhcmdldCAqc3JjLCB1bnNpZ25lZCBsb25nIHNyY19taW5fcmVnaW9uX3N6KVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTE2MzUtXFxubW0vZGFtb24vY29yZS5jOjE2MzY6c3RhdGljIGludCBkYW1vbl9jb21taXRfdGFyZ2V0KFxcbm1tL2RhbW9uL2NvcmUuYy0xNjM3LVxcdFxcdHN0cnVjdCBkYW1vbl90YXJnZXQgKmRzdCwgYm9vbCBkc3RfaGFzX3BpZCxcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xNjYyLSAqL1xcbm1tL2RhbW9uL2NvcmUuYzoxNjYzOnN0YXRpYyB2b2lkIGRhbW9uX3JldmVydF90YXJnZXRfY29tbWl0cyhzdHJ1Y3QgZGFtb25fY3R4ICpkc3QsXFxubW0vZGFtb24vY29yZS5jLTE2NjQtXFx0XFx0c3RydWN0IGRhbW9uX3RhcmdldCAqZmFpbGVkLCBzdHJ1Y3QgZGFtb25fY3R4ICpzcmMpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTY3OC1cXG5tbS9kYW1vbi9jb3JlLmM6MTY3OTpzdGF0aWMgaW50IGRhbW9uX2NvbW1pdF90YXJnZXRzKFxcbm1tL2RhbW9uL2NvcmUuYy0xNjgwLVxcdFxcdHN0cnVjdCBkYW1vbl9jdHggKmRzdCwgc3RydWN0IGRhbW9uX2N0eCAqc3JjKVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTE3NDMtXFxubW0vZGFtb24vY29yZS5jOjE3NDQ6c3RhdGljIHZvaWQgZGFtb25fY29tbWl0X3ByZXAoc3RydWN0IGRhbW9uX3ByZXAgKmRzdCwgc3RydWN0IGRhbW9uX3ByZXAgKnNyYylcXG5tbS9kYW1vbi9jb3JlLmMtMTc0NS17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTc0OC1cXG5tbS9kYW1vbi9jb3JlLmM6MTc0OTpzdGF0aWMgaW50IGRhbW9uX2NvbW1pdF9wcmVwcyhzdHJ1Y3QgZGFtb25fcHJvYmUgKmRzdCwgc3RydWN0IGRhbW9uX3Byb2JlICpzcmMpXFxubW0vZGFtb24vY29yZS5jLTE3NTAte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTE3NzMtXFxubW0vZGFtb24vY29yZS5jOjE3NzQ6c3RhdGljIHZvaWQgZGFtb25fY29tbWl0X2ZpbHRlcihzdHJ1Y3QgZGFtb25fZmlsdGVyICpkc3QsXFxubW0vZGFtb24vY29yZS5jLTE3NzUtXFx0XFx0c3RydWN0IGRhbW9uX2ZpbHRlciAqc3JjKVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTE3ODgtXFxubW0vZGFtb24vY29yZS5jOjE3ODk6c3RhdGljIGludCBkYW1vbl9jb21taXRfZmlsdGVycyhzdHJ1Y3QgZGFtb25fcHJvYmUgKmRzdCxcXG5tbS9kYW1vbi9jb3JlLmMtMTc5MC1cXHRcXHRzdHJ1Y3QgZGFtb25fcHJvYmUgKnNyYylcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xODIyLVxcbm1tL2RhbW9uL2NvcmUuYzoxODIzOnN0YXRpYyBpbnQgZGFtb25fY29tbWl0X3Byb2JlcyhzdHJ1Y3QgZGFtb25fY3R4ICpkc3QsIHN0cnVjdCBkYW1vbl9jdHggKnNyYylcXG5tbS9kYW1vbi9jb3JlLmMtMTgyNC17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTg2MS1cXG5tbS9kYW1vbi9jb3JlLmM6MTg2MjpzdGF0aWMgaW50IF9fZGFtb25fY29tbWl0X2N0eChzdHJ1Y3QgZGFtb25fY3R4ICpkc3QsIHN0cnVjdCBkYW1vbl9jdHggKnNyYylcXG5tbS9kYW1vbi9jb3JlLmMtMTg2My17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTkxOS1cXG5tbS9kYW1vbi9jb3JlLmM6MTkyMDpzdGF0aWMgc3RydWN0IGRhbW9uX2N0eCAqZGFtb25fbmV3X3Rlc3RfY3R4KHN0cnVjdCBkYW1vbl9jdHggKmRzdClcXG5tbS9kYW1vbi9jb3JlLmMtMTkyMS17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTk0OC0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6MTk0OTppbnQgZGFtb25fY29tbWl0X2N0eChzdHJ1Y3QgZGFtb25fY3R4ICpkc3QsIHN0cnVjdCBkYW1vbl9jdHggKnNyYylcXG5tbS9kYW1vbi9jb3JlLmMtMTk1MC17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTk2Ni0vKiBSZXR1cm5zIHRoZSBzaXplIHVwcGVyIGxpbWl0IGZvciBlYWNoIG1vbml0b3JpbmcgcmVnaW9uICovXFxubW0vZGFtb24vY29yZS5jOjE5Njc6c3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb25fcmVnaW9uX3N6X2xpbWl0KHN0cnVjdCBkYW1vbl9jdHggKmN0eClcXG5tbS9kYW1vbi9jb3JlLmMtMTk2OC17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTk4NS1cXG5tbS9kYW1vbi9jb3JlLmM6MTk4NjpzdGF0aWMgaW50IGRhbW9uX3NwbGl0X3JlZ2lvbl9hdChzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0LFxcbm1tL2RhbW9uL2NvcmUuYy0xOTg3LVxcdFxcdFxcdFxcdCAgc3RydWN0IGRhbW9uX3JlZ2lvbiAqciwgdW5zaWduZWQgbG9uZyBzel9yKTtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0yMDAxLSAqL1xcbm1tL2RhbW9uL2NvcmUuYzoyMDAyOnN0YXRpYyB1bnNpZ25lZCBsb25nIGRhbW9uX2FwcGx5X21pbl9ucl9yZWdpb25zKHN0cnVjdCBkYW1vbl9jdHggKmN0eClcXG5tbS9kYW1vbi9jb3JlLmMtMjAwMy17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMjAyMS1cXG5tbS9kYW1vbi9jb3JlLmM6MjAyMjpzdGF0aWMgaW50IGtkYW1vbmRfZm4odm9pZCAqZGF0YSk7XFxubW0vZGFtb24vY29yZS5jLTIwMjMtXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMjAzMS0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6MjAzMjpzdGF0aWMgaW50IF9fZGFtb25fc3RhcnQoc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxcbm1tL2RhbW9uL2NvcmUuYy0yMDMzLXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0yMDY4LSAqL1xcbm1tL2RhbW9uL2NvcmUuYzoyMDY5OmludCBkYW1vbl9zdGFydChzdHJ1Y3QgZGFtb25fY3R4ICoqY3R4cywgaW50IG5yX2N0eHMsIGJvb2wgZXhjbHVzaXZlKVxcbm1tL2RhbW9uL2NvcmUuYy0yMDcwLXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0yMTEzLSAqL1xcbm1tL2RhbW9uL2NvcmUuYzoyMTE0OnN0YXRpYyB2b2lkIF9fZGFtb25fc3RvcChzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXFxubW0vZGFtb24vY29yZS5jLTIxMTUte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTIxMzMtICovXFxubW0vZGFtb24vY29yZS5jOjIxMzQ6dm9pZCBkYW1vbl9zdG9wKHN0cnVjdCBkYW1vbl9jdHggKipjdHhzLCBpbnQgbnJfY3R4cylcXG5tbS9kYW1vbi9jb3JlLmMtMjEzNS17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMjE0OC0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6MjE0OTpib29sIGRhbW9uX2lzX3J1bm5pbmcoc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wM1QwMDozMzo1Ni4xMTY1MDUwMzZaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjQ0MzI5MzQ3NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGFuYWx5emluZyB0aGlzIGNvZGU6XG5cbioqRGl2aW5nIGludG8gdGhlIERBTU9OIEltcGxlbWVudGF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgREFNT04ncyBjb3JlIGZ1bmN0aW9uYWxpdHkuIEknbSBzZWVpbmcgYSBzZXF1ZW5jZSBvZiBmdW5jdGlvbnMgaGVyZTogYGRhbW9uX3N0YXJ0YCwgYGRhbW9uX3N0b3BgLCBgZGFtb25fY29tbWl0X2N0eGAsIGBkYW1vbl9zZXRfYXR0cnNgLCBgZGFtb25fc2V0X3NjaGVtZXNgLCBgZGFtb25fc2V0X3JlZ2lvbnNgLCBgZGFtb25fY2FsbGAsIGV0Yy4gVGhpcyBnaXZlcyBtZSBhIGdvb2Qgb3ZlcnZpZXcgb2YgdGhlIHR5cGljYWwgb3BlcmF0aW9uYWwgZmxvdy4gSSBjYW4gc2VlIHRoZSBoaWdoLWxldmVsIHN0ZXBzIGludm9sdmVkIC0gc3RhcnRpbmcsIHN0b3BwaW5nLCBjb21taXR0aW5nIGNvbnRleHQsIHNldHRpbmcgYXR0cmlidXRlcywgY29uZmlndXJpbmcgc2NoZW1lcyBhbmQgcmVnaW9ucywgYW5kIGZpbmFsbHkgdGhlIGFjdHVhbCBcImRhbW9uX2NhbGxcIiBpdHNlbGYuIFRoaXMgc3VnZ2VzdHMgYSBwYXR0ZXJuIG9mIGluaXRpYWxpemF0aW9uLCBjb25maWd1cmF0aW9uLCBhbmQgdGhlbiBhY3RpdmUgbW9uaXRvcmluZy5cblxuTm93LCBJIHdhbnQgdG8gdHJhY2UgaG93IHRoZSBzY2hlbWVzIGFyZSBhcHBsaWVkLiBJJ20gZ29pbmcgdG8gZGlnIGludG8gdGhlIGBkYW1vbl9kb19hcHBseV9zY2hlbWVzYCBmdW5jdGlvbi4gVGhpcyBpcyB3aGVyZSB0aGUgc2NoZW1lcyBkZWZpbmVkIGJ5IGBkYW1vbl9zZXRfc2NoZW1lc2AgZ2V0IGltcGxlbWVudGVkLCBzbyB0aGlzIGlzIGNyaXRpY2FsLiBJJ2xsIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSBhbmQgaG93IHRoYXQgZnVuY3Rpb24gaXMgKmNhbGxlZCogaW4gYG1tL2RhbW9uL2NvcmUuY2AuIEtub3dpbmcgdGhlIGNhbGwgY2hhaW4gd2lsbCBpbGx1bWluYXRlIGhvdyBEQU1PTiBhY3R1YWxseSB1c2VzIHRoZSBzY2hlbWVzIEkndmUgZGVmaW5lZCB0byBvcHRpbWl6ZSBtZW1vcnkgYWNjZXNzLiBJJ2xsIGZvY3VzIG9uIHRoZSBjYWxsaW5nIGNvbnRleHQgd2l0aGluIHRoZSBEQU1PTiBjb3JlIHRvIHVuZGVyc3RhbmQgaG93IGl0IGZpdHMgaW50byB0aGUgb3ZlcmFsbCBtb25pdG9yaW5nIGFuZCBvcHRpbWl6YXRpb24gcHJvY2Vzcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzE1MTgsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wM1QwMDozMzo1OC41NTk4MDEzMzFaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcxMjA5NDQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRhbW9uX2RvX2FwcGx5X3NjaGVtZXNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vZGFtb25cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vZGFtb24vY29yZS5jPTI2Njk9c3RhdGljIHZvaWQgZGFtb3NfYXBwbHlfc2NoZW1lKHN0cnVjdCBkYW1vbl9jdHggKmMsIHN0cnVjdCBkYW1vbl90YXJnZXQgKnQsXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMjczOS1cXG5tbS9kYW1vbi9jb3JlLmM6Mjc0MDpzdGF0aWMgdm9pZCBkYW1vbl9kb19hcHBseV9zY2hlbWVzKHN0cnVjdCBkYW1vbl9jdHggKmMsXFxubW0vZGFtb24vY29yZS5jLTI3NDEtXFx0XFx0XFx0XFx0ICAgc3RydWN0IGRhbW9uX3RhcmdldCAqdCxcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz0yNzk1PXN0YXRpYyB2b2lkIGRhbW9zX2FwcGx5X3RhcmdldChzdHJ1Y3QgZGFtb25fY3R4ICpjLCBzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0LFxcbi0tXFxubW0vZGFtb24vY29yZS5jLTI4MDItXFxubW0vZGFtb24vY29yZS5jOjI4MDM6XFx0XFx0ZGFtb25fZG9fYXBwbHlfc2NoZW1lcyhjLCB0LCByKTtcXG5tbS9kYW1vbi9jb3JlLmMtMjgwNC1cXHRcXHQvKlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wM1QwMDozMzo1OC42MzEwMTg3OTVaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjM1MTc5ODgzMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLlxuXG4qKlRyYWNpbmcgdGhlIENhbGwgQ2hhaW46IGBkYW1vc19hcHBseV90YXJnZXRgKipcblxuUmlnaHQsIHNvIEknbSBsb29raW5nIGF0IGBkYW1vc19hcHBseV90YXJnZXRgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgd2hlcmUncyB0aGlzIGJlaW5nIGNhbGxlZCBmcm9tPyAgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGNvbnRleHQuIEtub3dpbmcgdGhlIGVudHJ5IHBvaW50cywgdGhlIGZ1bmN0aW9ucyB0aGF0IGZlZWQgaW50byBgZGFtb3NfYXBwbHlfdGFyZ2V0YCwgaXMgY3JpdGljYWwgZm9yIGdyYXNwaW5nIGl0cyBwdXJwb3NlIGFuZCBwb3RlbnRpYWwgc2lkZSBlZmZlY3RzLiBUaGUgY29kZSBzdWdnZXN0cyBpdCdzIGNvbm5lY3RlZCB0byBga2RhbW9uZF9mbmAsIGBrZGFtb25kX2FwcGx5X3NjaGVtZXNgLCBvciBzb21lIG90aGVyIHNpbWlsYXIgbW9kdWxlcyBvciBmdW5jdGlvbnMuIEkgc2hvdWxkIGV4YW1pbmUgdGhlIGNhbGwgZ3JhcGgg4oCTIHNlZSB3aGF0J3MgaW52b2tpbmcgYGRhbW9zX2FwcGx5X3RhcmdldGAuIFRoYXQnbGwgZ2l2ZSBtZSBhIHNvbGlkIHBpY3R1cmUuIExldCdzIGRpZyBpbnRvIHRoZSBjYWxsZXJzIGFuZCBzZWUgd2hhdCB3ZSBjYW4gZmluZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzIxNzUsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wM1QwMDozNDowMC45ODI4MjE5NzdaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU1OTgwNDU2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRhbW9zX2FwcGx5X3RhcmdldFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9kYW1vblwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9kYW1vbi9jb3JlLmM9Mjc0MD1zdGF0aWMgdm9pZCBkYW1vbl9kb19hcHBseV9zY2hlbWVzKHN0cnVjdCBkYW1vbl9jdHggKmMsXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMjc3Ny0vKlxcbm1tL2RhbW9uL2NvcmUuYzoyNzc4OiAqIGRhbW9zX2FwcGx5X3RhcmdldCgpIC0gQXBwbHkgREFNT1Mgc2NoZW1lcyB0byBhIGdpdmVuIHRhcmdldC5cXG5tbS9kYW1vbi9jb3JlLmMtMjc3OS0gKiBAYzpcXHRcXHRcXHRtb25pdG9yaW5nIGNvbnRleHQgdG8gYXBwbHkgaXRzIERBTU9TIHNjaGVtZXMgdG8uLlxcbi0tXFxubW0vZGFtb24vY29yZS5jLTI3OTQtICovXFxubW0vZGFtb24vY29yZS5jOjI3OTU6c3RhdGljIHZvaWQgZGFtb3NfYXBwbHlfdGFyZ2V0KHN0cnVjdCBkYW1vbl9jdHggKmMsIHN0cnVjdCBkYW1vbl90YXJnZXQgKnQsXFxubW0vZGFtb24vY29yZS5jLTI3OTYtXFx0XFx0dW5zaWduZWQgbG9uZyBtYXhfcmVnaW9uX3N6KVxcbi0tXFxubW0vZGFtb24vY29yZS5jPTMzNTc9c3RhdGljIHZvaWQga2RhbW9uZF9hcHBseV9zY2hlbWVzKHN0cnVjdCBkYW1vbl9jdHggKmMpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMzM4My1cXHRcXHRcXHRjb250aW51ZTtcXG5tbS9kYW1vbi9jb3JlLmM6MzM4NDpcXHRcXHRkYW1vc19hcHBseV90YXJnZXQoYywgdCwgbWF4X3JlZ2lvbl9zeik7XFxubW0vZGFtb24vY29yZS5jLTMzODUtXFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wM1QwMDozNDowMS4wMzg4MDg2MTNaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDM4NDAwNTA1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBEQU1PTiBGdXp6aW5nIFN0cmF0ZWd5KipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBnb2FsIGlzIHRvIGRldGVybWluZSBpZiBhbmQgaG93IHRvIGZ1enogREFNT04uIEZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgY29yZSBmdW5jdGlvbiwgc28gSSdsbCBmb2xsb3cgdGhlIGV4ZWN1dGlvbiBwYXRoIHdpdGhpbiB0aGUgYGtkYW1vbmRgIGxvb3A6IGBrZGFtb25kX2ZuYCAtXHUwMDNlIGBrZGFtb25kX2FwcGx5X3NjaGVtZXNgIC1cdTAwM2UgYGRhbW9zX2FwcGx5X3RhcmdldGAgLVx1MDAzZSBgZGFtb25fZG9fYXBwbHlfc2NoZW1lc2AgLVx1MDAzZSBgZGFtb3NfcXVvdGFfaXNfZnVsbGAgYW5kIGBkYW1vc19hcHBseV9zY2hlbWVgLiBUaGlzIGdpdmVzIG1lIGEgZ29vZCBzdGFydGluZyBwb2ludCBmb3IgaWRlbnRpZnlpbmcgY3JpdGljYWwgY29kZSBwYXRocy5cblxuTmV4dCwgSSdsbCBjb25maXJtIERBTU9OJ3MgS2NvbmZpZyBkZXBlbmRlbmNpZXMuIExvb2tpbmcgYXQgYG1tL2RhbW9uL0tjb25maWdgLCBJIHNlZSBpdCdzIGNvbnRyb2xsZWQgYnkgdGhlIGBjb25maWcgREFNT05gIG9wdGlvbiwgd2l0aCBhZGRpdGlvbmFsIG9wdGlvbnMgZm9yIGBEQU1PTl9TWVNGU2AsIGBEQU1PTl9WQUREUmAsIGFuZCBgREFNT05fUEFERFJgLiBUaGlzIHRlbGxzIG1lIGhvdyBEQU1PTiBjYW4gYmUgY29uZmlndXJlZCBhbmQgYWN0aXZhdGVkLlxuXG5Ob3csIHRoZSBjcnVjaWFsIHF1ZXN0aW9uOiBpcyBEQU1PTiBmdXp6YWJsZT8gQWJzb2x1dGVseS4gSXTigJlzIGZ1bmN0aW9uYWwga2VybmVsIGNvZGUsIHBhcnQgb2YgdGhlIG1lbW9yeSBtYW5hZ2VtZW50IHN1YnN5c3RlbS4gVGhlIHBhdGNoIGZpeGVzIHF1b3RhIGxvZ2ljIHRoYXQgY291bGQgYmUgYSBzb3VyY2Ugb2YgdnVsbmVyYWJpbGl0aWVzLiBJJ20gYWxyZWFkeSBzZWVpbmcgYGRhbW9zX3F1b3RhX2lzX2Z1bGxgIGFuZCBgZGFtb25fZG9fYXBwbHlfc2NoZW1lc2AgYXMgcG90ZW50aWFsIGFyZWFzIHRvIHRhcmdldC4gSXQncyBhbHNvIGZ1bGx5IHJlYWNoYWJsZSB0aHJvdWdoIHN5c2ZzIChgL3N5cy9rZXJuZWwvbW0vZGFtb24vLi4uYCksIG1ha2luZyBpdCBlYXNpbHkgYWNjZXNzaWJsZSBpbiBhIHN0YW5kYXJkIFFFTVUgb3IgR0NFIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBXb3J0aEZ1enppbmc9dHJ1ZSwgZGVmaW5pdGVseS5cblxuRmluYWxseSwgSSBuZWVkIHRvIHBpbnBvaW50IHRoZSByaWdodCBmb2N1cyBzeW1ib2xzLiBJJ2xsIGNvbmNlbnRyYXRlIG9uIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cy4gTGV0J3Mgc2VlLi4uIGBkYW1vbl9zdGFydGAsIGBkYW1vbl9zdG9wYCwgYGRhbW9uX2NvbW1pdF9jdHhgLCBgZGFtb25fc2V0X2F0dHJzYCwgYGRhbW9uX3NldF9zY2hlbWVzYCwgYGRhbW9uX3NldF9yZWdpb25zYCwgYGRhbW9uX3N5c2ZzX2FkZF9zY2hlbWVzYCBsb29rIHByb21pc2luZy4gSSdsbCBkb3VibGUtY2hlY2sgYG1tL2RhbW9uL2NvcmUuY2AsIGBtbS9kYW1vbi9zeXNmcy5jYCBhbmQgYG1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuY2AgdG8gaWRlbnRpZnkgYW55IG90aGVyIHJlbGV2YW50IGZ1bmN0aW9ucy4gVGhpcyBpcyBhIHNvbGlkIHN0YXJ0aW5nIHBvaW50IGZvciBhIGZ1enppbmcgY2FtcGFpZ24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMyNzM3LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTY4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDAwOjM0OjA1LjQyMjgxNjc5MVoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzA3NTg1Mjk3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5pbnQgZGFtb25ffF52b2lkIGRhbW9uX3xec3RydWN0IGRhbW9uX1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9kYW1vblwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9kYW1vbi9jb3JlLmM9NTE9Ym9vbCBkYW1vbl9pc19yZWdpc3RlcmVkX29wcyhlbnVtIGRhbW9uX29wc19pZCBpZClcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy03MS0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6NzI6aW50IGRhbW9uX3JlZ2lzdGVyX29wcyhzdHJ1Y3QgZGFtb25fb3BlcmF0aW9ucyAqb3BzKVxcbm1tL2RhbW9uL2NvcmUuYy03My17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtOTgtICovXFxubW0vZGFtb24vY29yZS5jOjk5OmludCBkYW1vbl9zZWxlY3Rfb3BzKHN0cnVjdCBkYW1vbl9jdHggKmN0eCwgZW51bSBkYW1vbl9vcHNfaWQgaWQpXFxubW0vZGFtb24vY29yZS5jLTEwMC17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTE0LVxcbm1tL2RhbW9uL2NvcmUuYzoxMTU6c3RydWN0IGRhbW9uX3ByZXAgKmRhbW9uX25ld19wcmVwKGVudW0gZGFtb25fcHJlcF9hY3Rpb24gYWN0aW9uKVxcbm1tL2RhbW9uL2NvcmUuYy0xMTYte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTEyNi1cXG5tbS9kYW1vbi9jb3JlLmM6MTI3OnZvaWQgZGFtb25fYWRkX3ByZXAoc3RydWN0IGRhbW9uX3Byb2JlICpwLCBzdHJ1Y3QgZGFtb25fcHJlcCAqcHJlcClcXG5tbS9kYW1vbi9jb3JlLmMtMTI4LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz0xNjA9c3RhdGljIGJvb2wgZGFtb25faGFzX3ByZXAoc3RydWN0IGRhbW9uX2N0eCAqYylcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xNzEtXFxubW0vZGFtb24vY29yZS5jOjE3MjpzdHJ1Y3QgZGFtb25fZmlsdGVyICpkYW1vbl9uZXdfZmlsdGVyKGVudW0gZGFtb25fZmlsdGVyX3R5cGUgdHlwZSxcXG5tbS9kYW1vbi9jb3JlLmMtMTczLVxcdFxcdGJvb2wgbWF0Y2hpbmcsIGJvb2wgYWxsb3cpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTg2LVxcbm1tL2RhbW9uL2NvcmUuYzoxODc6dm9pZCBkYW1vbl9hZGRfZmlsdGVyKHN0cnVjdCBkYW1vbl9wcm9iZSAqcCwgc3RydWN0IGRhbW9uX2ZpbHRlciAqZilcXG5tbS9kYW1vbi9jb3JlLmMtMTg4LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz0xOTc9c3RhdGljIHZvaWQgZGFtb25fZnJlZV9maWx0ZXIoc3RydWN0IGRhbW9uX2ZpbHRlciAqZilcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0yMDEtXFxubW0vZGFtb24vY29yZS5jOjIwMjp2b2lkIGRhbW9uX2Rlc3Ryb3lfZmlsdGVyKHN0cnVjdCBkYW1vbl9maWx0ZXIgKmYpXFxubW0vZGFtb24vY29yZS5jLTIwMy17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9MjA4PXN0YXRpYyBzdHJ1Y3QgZGFtb25fZmlsdGVyICpkYW1vbl9udGhfZmlsdGVyKGludCBuLCBzdHJ1Y3QgZGFtb25fcHJvYmUgKnApXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMjE5LVxcbm1tL2RhbW9uL2NvcmUuYzoyMjA6c3RydWN0IGRhbW9uX3Byb2JlICpkYW1vbl9uZXdfcHJvYmUodm9pZClcXG5tbS9kYW1vbi9jb3JlLmMtMjIxLXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0yMzMtXFxubW0vZGFtb24vY29yZS5jOjIzNDp2b2lkIGRhbW9uX2FkZF9wcm9iZShzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsIHN0cnVjdCBkYW1vbl9wcm9iZSAqcHJvYmUpXFxubW0vZGFtb24vY29yZS5jLTIzNS17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9MzgwPXN0YXRpYyB2b2lkIGRhbW9uX3ZlcmlmeV9uZXdfcmVnaW9uKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kKVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTM4OS0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6MzkwOnN0cnVjdCBkYW1vbl9yZWdpb24gKmRhbW9uX25ld19yZWdpb24odW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQpXFxubW0vZGFtb24vY29yZS5jLTM5MS17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9NTA3PXN0YXRpYyBpbnQgZGFtb25fZmlsbF9yZWdpb25zX2hvbGVzKHN0cnVjdCBkYW1vbl9yZWdpb24gKmZpcnN0LFxcbi0tXFxubW0vZGFtb24vY29yZS5jLTUzOS0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6NTQwOmludCBkYW1vbl9zZXRfcmVnaW9ucyhzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0LCBzdHJ1Y3QgZGFtb25fYWRkcl9yYW5nZSAqcmFuZ2VzLFxcbm1tL2RhbW9uL2NvcmUuYy01NDEtXFx0XFx0dW5zaWduZWQgaW50IG5yX3JhbmdlcywgdW5zaWduZWQgbG9uZyBtaW5fcmVnaW9uX3N6KVxcbi0tXFxubW0vZGFtb24vY29yZS5jPTc4OD1zdGF0aWMgdm9pZCBkYW1vc19zZXRfbmV4dF9hcHBseV9zaXMoc3RydWN0IGRhbW9zICpzLCBzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtNzk4LVxcbm1tL2RhbW9uL2NvcmUuYzo3OTk6dm9pZCBkYW1vbl9hZGRfc2NoZW1lKHN0cnVjdCBkYW1vbl9jdHggKmN0eCwgc3RydWN0IGRhbW9zICpzKVxcbm1tL2RhbW9uL2NvcmUuYy04MDAte1xcbi0tXFxubW0vZGFtb24vY29yZS5jPTgxMD1zdGF0aWMgdm9pZCBkYW1vbl9mcmVlX3NjaGVtZShzdHJ1Y3QgZGFtb3MgKnMpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtODE0LVxcbm1tL2RhbW9uL2NvcmUuYzo4MTU6dm9pZCBkYW1vbl9kZXN0cm95X3NjaGVtZShzdHJ1Y3QgZGFtb3MgKnMpXFxubW0vZGFtb24vY29yZS5jLTgxNi17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtODM5LSAqL1xcbm1tL2RhbW9uL2NvcmUuYzo4NDA6c3RydWN0IGRhbW9uX3RhcmdldCAqZGFtb25fbmV3X3RhcmdldCh2b2lkKVxcbm1tL2RhbW9uL2NvcmUuYy04NDEte1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTg1Ni1cXG5tbS9kYW1vbi9jb3JlLmM6ODU3OnZvaWQgZGFtb25fYWRkX3RhcmdldChzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsIHN0cnVjdCBkYW1vbl90YXJnZXQgKnQpXFxubW0vZGFtb24vY29yZS5jLTg1OC17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtODY0LSAqL1xcbm1tL2RhbW9uL2NvcmUuYzo4NjU6aW50IGRhbW9uX3NldF90YXJnZXRfcGlkKHN0cnVjdCBkYW1vbl90YXJnZXQgKnQsIGludCBwaWQpXFxubW0vZGFtb24vY29yZS5jLTg2Ni17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9ODczPXN0YXRpYyB2b2lkIGRhbW9uX2RlbF90YXJnZXQoc3RydWN0IGRhbW9uX3RhcmdldCAqdClcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy04NzctXFxubW0vZGFtb24vY29yZS5jOjg3ODp2b2lkIGRhbW9uX2ZyZWVfdGFyZ2V0KHN0cnVjdCBkYW1vbl90YXJnZXQgKnQpXFxubW0vZGFtb24vY29yZS5jLTg3OS17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtODg2LVxcbm1tL2RhbW9uL2NvcmUuYzo4ODc6dm9pZCBkYW1vbl9kZXN0cm95X3RhcmdldChzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0LCBzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXFxubW0vZGFtb24vY29yZS5jLTg4OC17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9ODk3PXVuc2lnbmVkIGludCBkYW1vbl9ucl9yZWdpb25zKHN0cnVjdCBkYW1vbl90YXJnZXQgKnQpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtOTAxLVxcbm1tL2RhbW9uL2NvcmUuYzo5MDI6c3RydWN0IGRhbW9uX2N0eCAqZGFtb25fbmV3X2N0eCh2b2lkKVxcbm1tL2RhbW9uL2NvcmUuYy05MDMte1xcbi0tXFxubW0vZGFtb24vY29yZS5jPTk0Mj1zdGF0aWMgdm9pZCBkYW1vbl9kZXN0cm95X3RhcmdldHMoc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTk0OS1cXG5tbS9kYW1vbi9jb3JlLmM6OTUwOnZvaWQgZGFtb25fZGVzdHJveV9jdHgoc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxcbm1tL2RhbW9uL2NvcmUuYy05NTEte1xcbi0tXFxubW0vZGFtb24vY29yZS5jPTEwODM9c3RhdGljIGJvb2wgZGFtb25fdmFsaWRfaW50ZXJ2YWxzX2dvYWwoc3RydWN0IGRhbW9uX2F0dHJzICphdHRycylcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xMTE3LSAqL1xcbm1tL2RhbW9uL2NvcmUuYzoxMTE4OmludCBkYW1vbl9zZXRfYXR0cnMoc3RydWN0IGRhbW9uX2N0eCAqY3R4LCBzdHJ1Y3QgZGFtb25fYXR0cnMgKmF0dHJzKVxcbm1tL2RhbW9uL2NvcmUuYy0xMTE5LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xMTY1LSAqL1xcbm1tL2RhbW9uL2NvcmUuYzoxMTY2OnZvaWQgZGFtb25fc2V0X3NjaGVtZXMoc3RydWN0IGRhbW9uX2N0eCAqY3R4LCBzdHJ1Y3QgZGFtb3MgKipzY2hlbWVzLFxcbm1tL2RhbW9uL2NvcmUuYy0xMTY3LVxcdFxcdFxcdHNzaXplX3QgbnJfc2NoZW1lcylcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz0xOTIwPXN0YXRpYyBzdHJ1Y3QgZGFtb25fY3R4ICpkYW1vbl9uZXdfdGVzdF9jdHgoc3RydWN0IGRhbW9uX2N0eCAqZHN0KVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTE5NDgtICovXFxubW0vZGFtb24vY29yZS5jOjE5NDk6aW50IGRhbW9uX2NvbW1pdF9jdHgoc3RydWN0IGRhbW9uX2N0eCAqZHN0LCBzdHJ1Y3QgZGFtb25fY3R4ICpzcmMpXFxubW0vZGFtb24vY29yZS5jLTE5NTAte1xcbi0tXFxubW0vZGFtb24vY29yZS5jPTIwMzI9c3RhdGljIGludCBfX2RhbW9uX3N0YXJ0KHN0cnVjdCBkYW1vbl9jdHggKmN0eClcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0yMDY4LSAqL1xcbm1tL2RhbW9uL2NvcmUuYzoyMDY5OmludCBkYW1vbl9zdGFydChzdHJ1Y3QgZGFtb25fY3R4ICoqY3R4cywgaW50IG5yX2N0eHMsIGJvb2wgZXhjbHVzaXZlKVxcbm1tL2RhbW9uL2NvcmUuYy0yMDcwLXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz0yMTE0PXN0YXRpYyB2b2lkIF9fZGFtb25fc3RvcChzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMjEzMy0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6MjEzNDp2b2lkIGRhbW9uX3N0b3Aoc3RydWN0IGRhbW9uX2N0eCAqKmN0eHMsIGludCBucl9jdHhzKVxcbm1tL2RhbW9uL2NvcmUuYy0yMTM1LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz0yMTQ5PWJvb2wgZGFtb25faXNfcnVubmluZyhzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMjE2NC0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6MjE2NTppbnQgZGFtb25fa2RhbW9uZF9waWQoc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxcbm1tL2RhbW9uL2NvcmUuYy0yMTY2LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0yMjAwLSAqL1xcbm1tL2RhbW9uL2NvcmUuYzoyMjAxOmludCBkYW1vbl9jYWxsKHN0cnVjdCBkYW1vbl9jdHggKmN0eCwgc3RydWN0IGRhbW9uX2NhbGxfY29udHJvbCAqY29udHJvbClcXG5tbS9kYW1vbi9jb3JlLmMtMjIwMi17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9Mzg5MD1zdGF0aWMgaW50IGtkYW1vbmRfZm4odm9pZCAqZGF0YSlcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy00MDYzLVxcbm1tL2RhbW9uL2NvcmUuYzo0MDY0OnN0cnVjdCBkYW1vbl9zeXN0ZW1fcmFtX3JhbmdlX3dhbGtfYXJnIHtcXG5tbS9kYW1vbi9jb3JlLmMtNDA2NS1cXHRib29sIHdhbGtlZDtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz00MDk0PXN0YXRpYyBib29sIGRhbW9uX2ZpbmRfc3lzdGVtX3JhbXNfcmFuZ2UodW5zaWduZWQgbG9uZyAqc3RhcnQsXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtNDEyNS0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6NDEyNjppbnQgZGFtb25fc2V0X3JlZ2lvbl9zeXN0ZW1fcmFtc19kZWZhdWx0KHN0cnVjdCBkYW1vbl90YXJnZXQgKnQsXFxubW0vZGFtb24vY29yZS5jLTQxMjctXFx0XFx0XFx0dW5zaWduZWQgbG9uZyAqc3RhcnQsIHVuc2lnbmVkIGxvbmcgKmVuZCxcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy00MTUwLSAqL1xcbm1tL2RhbW9uL2NvcmUuYzo0MTUxOnZvaWQgZGFtb25fdXBkYXRlX3JlZ2lvbl9hY2Nlc3NfcmF0ZShzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLCBib29sIGFjY2Vzc2VkKVxcbm1tL2RhbW9uL2NvcmUuYy00MTUyLXtcXG4tLVxcbm1tL2RhbW9uL21vZHVsZXMtY29tbW9uLmMtMTQtICovXFxubW0vZGFtb24vbW9kdWxlcy1jb21tb24uYzoxNTppbnQgZGFtb25fbW9kdWxlc19uZXdfcGFkZHJfY3R4X3RhcmdldChzdHJ1Y3QgZGFtb25fY3R4ICoqY3R4cCxcXG5tbS9kYW1vbi9tb2R1bGVzLWNvbW1vbi5jLTE2LVxcdFxcdHN0cnVjdCBkYW1vbl90YXJnZXQgKip0YXJnZXRwKVxcbi0tXFxubW0vZGFtb24vbW9kdWxlcy1jb21tb24uaC00NS1cXG5tbS9kYW1vbi9tb2R1bGVzLWNvbW1vbi5oOjQ2OmludCBkYW1vbl9tb2R1bGVzX25ld19wYWRkcl9jdHhfdGFyZ2V0KHN0cnVjdCBkYW1vbl9jdHggKipjdHhwLFxcbm1tL2RhbW9uL21vZHVsZXMtY29tbW9uLmgtNDctXFx0XFx0c3RydWN0IGRhbW9uX3RhcmdldCAqKnRhcmdldHApO1xcbi0tXFxubW0vZGFtb24vb3BzLWNvbW1vbi5jPTI0PXN0cnVjdCBmb2xpbyAqZGFtb25fZ2V0X2ZvbGlvKHVuc2lnbmVkIGxvbmcgcGZuKVxcbi0tXFxubW0vZGFtb24vb3BzLWNvbW1vbi5jLTQxLVxcbm1tL2RhbW9uL29wcy1jb21tb24uYzo0Mjp2b2lkIGRhbW9uX3B0ZXBfbWtvbGQocHRlX3QgKnB0ZSwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgYWRkcilcXG5tbS9kYW1vbi9vcHMtY29tbW9uLmMtNDMte1xcbi0tXFxubW0vZGFtb24vb3BzLWNvbW1vbi5jLTcyLVxcbm1tL2RhbW9uL29wcy1jb21tb24uYzo3Mzp2b2lkIGRhbW9uX3BtZHBfbWtvbGQocG1kX3QgKnBtZCwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgYWRkcilcXG5tbS9kYW1vbi9vcHMtY29tbW9uLmMtNzQte1xcbi0tXFxubW0vZGFtb24vb3BzLWNvbW1vbi5jLTEwMy1cXG5tbS9kYW1vbi9vcHMtY29tbW9uLmM6MTA0OmludCBkYW1vbl9ob3Rfc2NvcmUoc3RydWN0IGRhbW9uX2N0eCAqYywgc3RydWN0IGRhbW9uX3JlZ2lvbiAqcixcXG5tbS9kYW1vbi9vcHMtY29tbW9uLmMtMTA1LVxcdFxcdFxcdHN0cnVjdCBkYW1vcyAqcylcXG4tLVxcbm1tL2RhbW9uL29wcy1jb21tb24uYy0xNDktXFxubW0vZGFtb24vb3BzLWNvbW1vbi5jOjE1MDppbnQgZGFtb25fY29sZF9zY29yZShzdHJ1Y3QgZGFtb25fY3R4ICpjLCBzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLFxcbm1tL2RhbW9uL29wcy1jb21tb24uYy0xNTEtXFx0XFx0XFx0c3RydWN0IGRhbW9zICpzKVxcbi0tXFxubW0vZGFtb24vb3BzLWNvbW1vbi5jPTE1OT1zdGF0aWMgYm9vbCBkYW1vbl9mb2xpb19ta29sZF9vbmUoc3RydWN0IGZvbGlvICpmb2xpbyxcXG4tLVxcbm1tL2RhbW9uL29wcy1jb21tb24uYy0xNzMtXFxubW0vZGFtb24vb3BzLWNvbW1vbi5jOjE3NDp2b2lkIGRhbW9uX2ZvbGlvX21rb2xkKHN0cnVjdCBmb2xpbyAqZm9saW8pXFxubW0vZGFtb24vb3BzLWNvbW1vbi5jLTE3NS17XFxuLS1cXG5tbS9kYW1vbi9vcHMtY29tbW9uLmg9OD1zdHJ1Y3QgZm9saW8gKmRhbW9uX2dldF9mb2xpbyh1bnNpZ25lZCBsb25nIHBmbik7XFxubW0vZGFtb24vb3BzLWNvbW1vbi5oLTktXFxubW0vZGFtb24vb3BzLWNvbW1vbi5oOjEwOnZvaWQgZGFtb25fcHRlcF9ta29sZChwdGVfdCAqcHRlLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBhZGRyKTtcXG5tbS9kYW1vbi9vcHMtY29tbW9uLmg6MTE6dm9pZCBkYW1vbl9wbWRwX21rb2xkKHBtZF90ICpwbWQsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHIpO1xcbm1tL2RhbW9uL29wcy1jb21tb24uaDoxMjp2b2lkIGRhbW9uX2ZvbGlvX21rb2xkKHN0cnVjdCBmb2xpbyAqZm9saW8pO1xcbm1tL2RhbW9uL29wcy1jb21tb24uaC0xMy1ib29sIGRhbW9uX2ZvbGlvX3lvdW5nKHN0cnVjdCBmb2xpbyAqZm9saW8pO1xcbm1tL2RhbW9uL29wcy1jb21tb24uaC0xNC1cXG5tbS9kYW1vbi9vcHMtY29tbW9uLmg6MTU6aW50IGRhbW9uX2NvbGRfc2NvcmUoc3RydWN0IGRhbW9uX2N0eCAqYywgc3RydWN0IGRhbW9uX3JlZ2lvbiAqcixcXG5tbS9kYW1vbi9vcHMtY29tbW9uLmgtMTYtXFx0XFx0XFx0c3RydWN0IGRhbW9zICpzKTtcXG5tbS9kYW1vbi9vcHMtY29tbW9uLmg6MTc6aW50IGRhbW9uX2hvdF9zY29yZShzdHJ1Y3QgZGFtb25fY3R4ICpjLCBzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLFxcbm1tL2RhbW9uL29wcy1jb21tb24uaC0xOC1cXHRcXHRcXHRzdHJ1Y3QgZGFtb3MgKnMpO1xcbi0tXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM9MTA9REVGSU5FX01VVEVYKGRhbW9uX3N5c2ZzX2xvY2spO1xcbi0tXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmMtMTUtXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM6MTY6c3RydWN0IGRhbW9uX3N5c2ZzX3VsX3JhbmdlICpkYW1vbl9zeXNmc191bF9yYW5nZV9hbGxvYyhcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy0xNy1cXHRcXHR1bnNpZ25lZCBsb25nIG1pbixcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jPTY1PXN0YXRpYyBzc2l6ZV90IG1heF9zdG9yZShzdHJ1Y3Qga29iamVjdCAqa29iaiwgc3RydWN0IGtvYmpfYXR0cmlidXRlICphdHRyLFxcbi0tXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmMtODAtXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmM6ODE6dm9pZCBkYW1vbl9zeXNmc191bF9yYW5nZV9yZWxlYXNlKHN0cnVjdCBrb2JqZWN0ICprb2JqKVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTgyLXtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jPTEwNj1zdGF0aWMgYm9vbCBkYW1vbl9zeXNmc19tZW1jZ19wYXRoX2VxKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZyxcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5jLTExNi1cXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYzoxMTc6aW50IGRhbW9uX3N5c2ZzX21lbWNnX3BhdGhfdG9faWQoY2hhciAqbWVtY2dfcGF0aCwgdTY0ICppZClcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uYy0xMTgte1xcbi0tXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg9OT1leHRlcm4gc3RydWN0IG11dGV4IGRhbW9uX3N5c2ZzX2xvY2s7XFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtMTAtXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6MTE6c3RydWN0IGRhbW9uX3N5c2ZzX3VsX3JhbmdlIHtcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC0xMi1cXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xcbi0tXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtMTYtXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6MTc6c3RydWN0IGRhbW9uX3N5c2ZzX3VsX3JhbmdlICpkYW1vbl9zeXNmc191bF9yYW5nZV9hbGxvYyhcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC0xOC1cXHRcXHR1bnNpZ25lZCBsb25nIG1pbixcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC0xOS1cXHRcXHR1bnNpZ25lZCBsb25nIG1heCk7XFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6MjA6dm9pZCBkYW1vbl9zeXNmc191bF9yYW5nZV9yZWxlYXNlKHN0cnVjdCBrb2JqZWN0ICprb2JqKTtcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC0yMS1cXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaD0yMj1leHRlcm4gY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vbl9zeXNmc191bF9yYW5nZV9rdHlwZTtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTI3LVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oOjI4OnN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVzIHtcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC0yOS1cXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xcbi0tXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtMzMtXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6MzQ6c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZXMgKmRhbW9uX3N5c2ZzX3NjaGVtZXNfYWxsb2Modm9pZCk7XFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6MzU6dm9pZCBkYW1vbl9zeXNmc19zY2hlbWVzX3JtX2RpcnMoc3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZXMgKnNjaGVtZXMpO1xcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTM2LVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oPTM3PWV4dGVybiBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9uX3N5c2ZzX3NjaGVtZXNfa3R5cGU7XFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtMzgtXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6Mzk6aW50IGRhbW9uX3N5c2ZzX2FkZF9zY2hlbWVzKHN0cnVjdCBkYW1vbl9jdHggKmN0eCxcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC00MC1cXHRcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lcyAqc3lzZnNfc2NoZW1lcyk7XFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtNDEtXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg6NDI6dm9pZCBkYW1vbl9zeXNmc19zY2hlbWVzX3VwZGF0ZV9zdGF0cyhcXG5tbS9kYW1vbi9zeXNmcy1jb21tb24uaC00My1cXHRcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lcyAqc3lzZnNfc2NoZW1lcyxcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oPTQ2PXZvaWQgZGFtb3Nfc3lzZnNfcG9wdWxhdGVfcmVnaW9uX2RpcihzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lcyAqc3lzZnNfc2NoZW1lcyxcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTUwLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oOjUxOmludCBkYW1vbl9zeXNmc19zY2hlbWVzX2NsZWFyX3JlZ2lvbnMoXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmgtNTItXFx0XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZXMgKnN5c2ZzX3NjaGVtZXMpO1xcbi0tXFxubW0vZGFtb24vc3lzZnMtY29tbW9uLmg9NTc9dm9pZCBkYW1vc19zeXNmc191cGRhdGVfZWZmZWN0aXZlX3F1b3RhcyhcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oLTYwLVxcbm1tL2RhbW9uL3N5c2ZzLWNvbW1vbi5oOjYxOmludCBkYW1vbl9zeXNmc19tZW1jZ19wYXRoX3RvX2lkKGNoYXIgKm1lbWNnX3BhdGgsIHU2NCAqaWQpO1xcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTE0MT1zdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vc19zeXNmc19wcm9iZXNfa3R5cGUgPSB7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTQ5LVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNTA6c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWdpb24ge1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNTEtXFx0c3RydWN0IGtvYmplY3Qga29iajtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0yODc9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbl9rdHlwZSA9IHtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yOTYtXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjI5NzpzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbnMge1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yOTgtXFx0c3RydWN0IGtvYmplY3Qga29iajtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0zNTY9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbnNfa3R5cGUgPSB7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzY1LVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzozNjY6c3RydWN0IGRhbW9uX3N5c2ZzX3N0YXRzIHtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzY3LVxcdHN0cnVjdCBrb2JqZWN0IGtvYmo7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9NTIzPWVudW0gZGFtb3Nfc3lzZnNfZmlsdGVyX2hhbmRsZV9sYXllciB7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtNTI4LVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzo1Mjk6c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZV9maWx0ZXIge1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy01MzAtXFx0c3RydWN0IGtvYmplY3Qga29iajtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz04ODI9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlcl9rdHlwZSA9IHtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy04OTEtXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjg5MjpzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX2ZpbHRlcnMge1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy04OTMtXFx0c3RydWN0IGtvYmplY3Qga29iajtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0xMDEwPXN0YXRpYyBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9uX3N5c2ZzX3NjaGVtZV9maWx0ZXJzX2t0eXBlID0ge1xcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEwMTktXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEwMjA6c3RydWN0IGRhbW9uX3N5c2ZzX3dhdGVybWFya3Mge1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMDIxLVxcdHN0cnVjdCBrb2JqZWN0IGtvYmo7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MTU2ND1zdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vc19zeXNmc19xdW90YV9nb2Fsc19rdHlwZSA9IHtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNTczLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNTc0OnN0cnVjdCBkYW1vbl9zeXNmc193ZWlnaHRzIHtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTU3NS1cXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTE2NzQ9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfd2VpZ2h0c19rdHlwZSA9IHtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNjgzLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoxNjg0OnN0cnVjdCBkYW1vbl9zeXNmc19xdW90YXMge1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xNjg1LVxcdHN0cnVjdCBrb2JqZWN0IGtvYmo7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MTk0OT1zdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vbl9zeXNmc19xdW90YXNfa3R5cGUgPSB7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTk1OC1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTk1OTpzdHJ1Y3QgZGFtb25fc3lzZnNfYWNjZXNzX3BhdHRlcm4ge1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xOTYwLVxcdHN0cnVjdCBrb2JqZWN0IGtvYmo7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MTk2Nj1zdGF0aWNcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTk2NzpzdHJ1Y3QgZGFtb25fc3lzZnNfYWNjZXNzX3BhdHRlcm4gKmRhbW9uX3N5c2ZzX2FjY2Vzc19wYXR0ZXJuX2FsbG9jKHZvaWQpXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTE5Njgte1xcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTIyNDQ9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb3Nfc3lzZnNfZGVzdHNfa3R5cGUgPSB7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjI1My1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MjI1NDpzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lIHtcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjI1NS1cXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTI2NzQ9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfc2NoZW1lX2t0eXBlID0ge1xcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTI2ODMtXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjI2ODQ6c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZXMgKmRhbW9uX3N5c2ZzX3NjaGVtZXNfYWxsb2Modm9pZClcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjY4NS17XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjY4OC1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MjY4OTp2b2lkIGRhbW9uX3N5c2ZzX3NjaGVtZXNfcm1fZGlycyhzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lcyAqc2NoZW1lcylcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjY5MC17XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9Mjk3ND1zdGF0aWMgc3RydWN0IGRhbW9zICpkYW1vbl9zeXNmc19ta19zY2hlbWUoXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzA0Ny1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MzA0ODppbnQgZGFtb25fc3lzZnNfYWRkX3NjaGVtZXMoc3RydWN0IGRhbW9uX2N0eCAqY3R4LFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zMDQ5LVxcdFxcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVzICpzeXNmc19zY2hlbWVzKVxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTMwNjYtXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjMwNjc6dm9pZCBkYW1vbl9zeXNmc19zY2hlbWVzX3VwZGF0ZV9zdGF0cyhcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMzA2OC1cXHRcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lcyAqc3lzZnNfc2NoZW1lcyxcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0zMTA1PXZvaWQgZGFtb3Nfc3lzZnNfcG9wdWxhdGVfcmVnaW9uX2RpcihzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lcyAqc3lzZnNfc2NoZW1lcyxcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0zMTUxLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzozMTUyOmludCBkYW1vbl9zeXNmc19zY2hlbWVzX2NsZWFyX3JlZ2lvbnMoXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTMxNTMtXFx0XFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZXMgKnN5c2ZzX3NjaGVtZXMpXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jLTE0LVxcbm1tL2RhbW9uL3N5c2ZzLmM6MTU6c3RydWN0IGRhbW9uX3N5c2ZzX3JlZ2lvbiB7XFxubW0vZGFtb24vc3lzZnMuYy0xNi1cXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xcbi0tXFxubW0vZGFtb24vc3lzZnMuYz04MT1zdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vbl9zeXNmc19yZWdpb25fa3R5cGUgPSB7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jLTkwLVxcbm1tL2RhbW9uL3N5c2ZzLmM6OTE6c3RydWN0IGRhbW9uX3N5c2ZzX3JlZ2lvbnMge1xcbm1tL2RhbW9uL3N5c2ZzLmMtOTItXFx0c3RydWN0IGtvYmplY3Qga29iajtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLmM9MjAwPXN0YXRpYyBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9uX3N5c2ZzX3JlZ2lvbnNfa3R5cGUgPSB7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jLTIwOS1cXG5tbS9kYW1vbi9zeXNmcy5jOjIxMDpzdHJ1Y3QgZGFtb25fc3lzZnNfdGFyZ2V0IHtcXG5tbS9kYW1vbi9zeXNmcy5jLTIxMS1cXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xcbi0tXFxubW0vZGFtb24vc3lzZnMuYz0zMDc9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfdGFyZ2V0X2t0eXBlID0ge1xcbi0tXFxubW0vZGFtb24vc3lzZnMuYy0zMTYtXFxubW0vZGFtb24vc3lzZnMuYzozMTc6c3RydWN0IGRhbW9uX3N5c2ZzX3RhcmdldHMge1xcbm1tL2RhbW9uL3N5c2ZzLmMtMzE4LVxcdHN0cnVjdCBrb2JqZWN0IGtvYmo7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jPTQzNT1zdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vbl9zeXNmc190YXJnZXRzX2t0eXBlID0ge1xcbi0tXFxubW0vZGFtb24vc3lzZnMuYy00NDQtXFxubW0vZGFtb24vc3lzZnMuYzo0NDU6c3RydWN0IGRhbW9uX3N5c2ZzX2ludGVydmFsc19nb2FsIHtcXG5tbS9kYW1vbi9zeXNmcy5jLTQ0Ni1cXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xcbi0tXFxubW0vZGFtb24vc3lzZnMuYz01OTI9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfaW50ZXJ2YWxzX2dvYWxfa3R5cGUgPSB7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jLTYwMS1cXG5tbS9kYW1vbi9zeXNmcy5jOjYwMjpzdHJ1Y3QgZGFtb25fc3lzZnNfaW50ZXJ2YWxzIHtcXG5tbS9kYW1vbi9zeXNmcy5jLTYwMy1cXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xcbi0tXFxubW0vZGFtb24vc3lzZnMuYz03NDY9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfaW50ZXJ2YWxzX2t0eXBlID0ge1xcbi0tXFxubW0vZGFtb24vc3lzZnMuYy03NTUtXFxubW0vZGFtb24vc3lzZnMuYzo3NTY6c3RydWN0IGRhbW9uX3N5c2ZzX3ByZXAge1xcbm1tL2RhbW9uL3N5c2ZzLmMtNzU3LVxcdHN0cnVjdCBrb2JqZWN0IGtvYmo7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jPTc2MT1zdGF0aWMgc3RydWN0IGRhbW9uX3N5c2ZzX3ByZXAgKmRhbW9uX3N5c2ZzX3ByZXBfYWxsb2Modm9pZClcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLmMtNzcxLVxcbm1tL2RhbW9uL3N5c2ZzLmM6NzcyOnN0cnVjdCBkYW1vbl9zeXNmc19wcmVwX2FjdGlvbl9uYW1lIHtcXG5tbS9kYW1vbi9zeXNmcy5jLTc3My1cXHRjb25zdCBlbnVtIGRhbW9uX3ByZXBfYWN0aW9uIGFjdGlvbjtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLmM9ODQzPXN0YXRpYyBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9uX3N5c2ZzX3ByZXBfa3R5cGUgPSB7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jLTg1Mi1cXG5tbS9kYW1vbi9zeXNmcy5jOjg1MzpzdHJ1Y3QgZGFtb25fc3lzZnNfcHJlcHMge1xcbm1tL2RhbW9uL3N5c2ZzLmMtODU0LVxcdHN0cnVjdCBrb2JqZWN0IGtvYmo7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jPTk2Mj1zdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vbl9zeXNmc19wcmVwc19rdHlwZSA9IHtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLmMtOTcxLVxcbm1tL2RhbW9uL3N5c2ZzLmM6OTcyOnN0cnVjdCBkYW1vbl9zeXNmc19maWx0ZXIge1xcbm1tL2RhbW9uL3N5c2ZzLmMtOTczLVxcdHN0cnVjdCBrb2JqZWN0IGtvYmo7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jPTk4MD1zdGF0aWMgc3RydWN0IGRhbW9uX3N5c2ZzX2ZpbHRlciAqZGFtb25fc3lzZnNfZmlsdGVyX2FsbG9jKHZvaWQpXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jLTk4NC1cXG5tbS9kYW1vbi9zeXNmcy5jOjk4NTpzdHJ1Y3QgZGFtb25fc3lzZnNfZmlsdGVyX3R5cGVfbmFtZSB7XFxubW0vZGFtb24vc3lzZnMuYy05ODYtXFx0ZW51bSBkYW1vbl9maWx0ZXJfdHlwZSB0eXBlO1xcbi0tXFxubW0vZGFtb24vc3lzZnMuYz0xMTU2PXN0YXRpYyBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9uX3N5c2ZzX2ZpbHRlcl9rdHlwZSA9IHtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLmMtMTE2NS1cXG5tbS9kYW1vbi9zeXNmcy5jOjExNjY6c3RydWN0IGRhbW9uX3N5c2ZzX2ZpbHRlcnMge1xcbm1tL2RhbW9uL3N5c2ZzLmMtMTE2Ny1cXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xcbi0tXFxubW0vZGFtb24vc3lzZnMuYz0xMjc1PXN0YXRpYyBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9uX3N5c2ZzX2ZpbHRlcnNfa3R5cGUgPSB7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jLTEyODQtXFxubW0vZGFtb24vc3lzZnMuYzoxMjg1OnN0cnVjdCBkYW1vbl9zeXNmc19wcm9iZSB7XFxubW0vZGFtb24vc3lzZnMuYy0xMjg2LVxcdHN0cnVjdCBrb2JqZWN0IGtvYmo7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jPTEzODI9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfcHJvYmVfa3R5cGUgPSB7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jLTEzOTEtXFxubW0vZGFtb24vc3lzZnMuYzoxMzkyOnN0cnVjdCBkYW1vbl9zeXNmc19wcm9iZXMge1xcbm1tL2RhbW9uL3N5c2ZzLmMtMTM5My1cXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xcbi0tXFxubW0vZGFtb24vc3lzZnMuYz0xNTExPXN0YXRpYyBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9uX3N5c2ZzX3Byb2Jlc19rdHlwZSA9IHtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLmMtMTUyMC1cXG5tbS9kYW1vbi9zeXNmcy5jOjE1MjE6c3RydWN0IGRhbW9uX3N5c2ZzX2F0dHJzIHtcXG5tbS9kYW1vbi9zeXNmcy5jLTE1MjItXFx0c3RydWN0IGtvYmplY3Qga29iajtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLmM9MTYxNz1zdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vbl9zeXNmc19hdHRyc19rdHlwZSA9IHtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLmMtMTYyNi1cXG5tbS9kYW1vbi9zeXNmcy5jOjE2Mjc6c3RydWN0IGRhbW9uX3N5c2ZzX29wc19uYW1lIHtcXG5tbS9kYW1vbi9zeXNmcy5jLTE2MjgtXFx0ZW51bSBkYW1vbl9vcHNfaWQgb3BzX2lkO1xcbi0tXFxubW0vZGFtb24vc3lzZnMuYz0xNjMyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZGFtb25fc3lzZnNfb3BzX25hbWUgZGFtb25fc3lzZnNfb3BzX25hbWVzW10gPSB7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jLTE2NDYtXFxubW0vZGFtb24vc3lzZnMuYzoxNjQ3OnN0cnVjdCBkYW1vbl9zeXNmc19jb250ZXh0IHtcXG5tbS9kYW1vbi9zeXNmcy5jLTE2NDgtXFx0c3RydWN0IGtvYmplY3Qga29iajtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLmM9MTg5Mz1zdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vbl9zeXNmc19jb250ZXh0X2t0eXBlID0ge1xcbi0tXFxubW0vZGFtb24vc3lzZnMuYy0xOTAyLVxcbm1tL2RhbW9uL3N5c2ZzLmM6MTkwMzpzdHJ1Y3QgZGFtb25fc3lzZnNfY29udGV4dHMge1xcbm1tL2RhbW9uL3N5c2ZzLmMtMTkwNC1cXHRzdHJ1Y3Qga29iamVjdCBrb2JqO1xcbi0tXFxubW0vZGFtb24vc3lzZnMuYz0yMDIyPXN0YXRpYyBjb25zdCBzdHJ1Y3Qga29ial90eXBlIGRhbW9uX3N5c2ZzX2NvbnRleHRzX2t0eXBlID0ge1xcbi0tXFxubW0vZGFtb24vc3lzZnMuYy0yMDMxLVxcbm1tL2RhbW9uL3N5c2ZzLmM6MjAzMjpzdHJ1Y3QgZGFtb25fc3lzZnNfa2RhbW9uZCB7XFxubW0vZGFtb24vc3lzZnMuYy0yMDMzLVxcdHN0cnVjdCBrb2JqZWN0IGtvYmo7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jPTI1Njk9c3RhdGljIGludCBkYW1vbl9zeXNmc19kYW1vbl9jYWxsKGludCAoKmZuKSh2b2lkICpkYXRhKSxcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLmMtMjU4Mi1cXG5tbS9kYW1vbi9zeXNmcy5jOjI1ODM6c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZXNfd2Fsa19kYXRhIHtcXG5tbS9kYW1vbi9zeXNmcy5jLTI1ODQtXFx0c3RydWN0IGRhbW9uX3N5c2ZzX2tkYW1vbmQgKnN5c2ZzX2tkYW1vbmQ7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jPTI3Njc9c3RhdGljIGNvbnN0IHN0cnVjdCBrb2JqX3R5cGUgZGFtb25fc3lzZnNfa2RhbW9uZF9rdHlwZSA9IHtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLmMtMjc3Ni1cXG5tbS9kYW1vbi9zeXNmcy5jOjI3Nzc6c3RydWN0IGRhbW9uX3N5c2ZzX2tkYW1vbmRzIHtcXG5tbS9kYW1vbi9zeXNmcy5jLTI3NzgtXFx0c3RydWN0IGtvYmplY3Qga29iajtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLmM9MjkxMj1zdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSBkYW1vbl9zeXNmc19rZGFtb25kc19rdHlwZSA9IHtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLmMtMjkyMS1cXG5tbS9kYW1vbi9zeXNmcy5jOjI5MjI6c3RydWN0IGRhbW9uX3N5c2ZzX3VpX2RpciB7XFxubW0vZGFtb24vc3lzZnMuYy0yOTIzLVxcdHN0cnVjdCBrb2JqZWN0IGtvYmo7XFxuLS1cXG5tbS9kYW1vbi92YWRkci5jPTM2OT1zdGF0aWMgdm9pZCBkYW1vbl92YV9wcmVwYXJlX2FjY2Vzc19jaGVja3Moc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxcbi0tXFxubW0vZGFtb24vdmFkZHIuYy0zODQtXFxubW0vZGFtb24vdmFkZHIuYzozODU6c3RydWN0IGRhbW9uX3lvdW5nX3dhbGtfcHJpdmF0ZSB7XFxubW0vZGFtb24vdmFkZHIuYy0zODYtXFx0Ym9vbCB5b3VuZztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMDA6MzQ6MDUuNzMwNDExNjI4WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQyODE5MTg0NjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiBUaGlzIERBTU9OIFBhdGNoKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBUaGlzIHBhdGNoIGlzIHRvdWNoaW5nIERBTU9TLCB3aGljaCBhcyBJIHJlY2FsbCwgaXMgdGhlIHNldCBvZiBEQU1PTi1iYXNlZCBPcGVyYXRpb24gU2NoZW1lcyB3aXRoaW4gREFNT04gaXRzZWxmLiBXZSBuZWVkIHRvIGJlIHN1cmUgdGhlIGZvbGxvd2luZyBjb25maWd1cmF0aW9ucyBhcmUgc2V0OiBgREFNT05gLCBgREFNT05fUEFERFJgIG9yIGBEQU1PTl9WQUREUmAsIGBEQU1PTl9TWVNGU2AsIGFuZCBgU1lTRlNgLiBUaG9zZSBhcmUgdGhlIGNvcmUgYnVpbGRpbmcgYmxvY2tzIGZvciB0aGlzIHRvIGV2ZW4gKmZ1bmN0aW9uKi5cblxuSSBzZWUgd2UncmUgZm9jdXNlZCBvbiB0aGVzZSBzeW1ib2xzOiBgZGFtb25fc3RhcnRgLCBgZGFtb25fY29tbWl0X2N0eGAsIGBkYW1vbl9zeXNmc19hZGRfc2NoZW1lc2AsIGBkYW1vbl9zZXRfc2NoZW1lc2AsIGBkYW1vbl9uZXdfc2NoZW1lYCwgYW5kIGBkYW1vbl9hZGRfc2NoZW1lYC4gQ2xlYXJseSwgdGhpcyBwYXRjaCBpcyBkaWdnaW5nIGRlZXAgaW50byB0aGUgaW5pdGlhbGl6YXRpb24gYW5kIHNjaGVtZSBtYW5hZ2VtZW50IG9mIERBTU9OLlxuXG5XZSBuZWVkIHRvIHZlcmlmeSB0aGlzIGNhcmVmdWxseS4gSXQgbG9va3MgbGlrZSBpdCdzIHdvcnRoIGZ1enppbmcgYW5kIHRob3NlIGFyZSBvdXIgZW5hYmxlZCBjb25maWdzLlxuXG5UaGUgcmVhc29uaW5nIGhlcmUgaXMgY3JpdGljYWwuIFRoaXMgcGF0Y2ggaXMgY2hhbmdpbmcgdGhlIHF1b3RhIGNoZWNrIGxvZ2ljIOKAkyBzcGVjaWZpY2FsbHksIGhvdyBgZGFtb3NfcXVvdGFfaXNfZnVsbGAgYW5kIGBkYW1vbl9kb19hcHBseV9zY2hlbWVzYCBoYW5kbGUgc2l0dWF0aW9ucyB3aGVyZSB0aGUgY2hhcmdlZCBzaXplIG9yIGVmZmVjdGl2ZSBzaXplIGlzIHplcm8uIFRoaXMgY291bGQgaGF2ZSBzaWduaWZpY2FudCBpbXBsaWNhdGlvbnMgZm9yIG1lbW9yeSBtYW5hZ2VtZW50LCBwYXJ0aWN1bGFybHkgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHdoZXJlIERBTU9OIGlzIG9mdGVuIGVtcGxveWVkIHRocm91Z2ggdGhlIHN5c2ZzIGludGVyZmFjZS4gV2UncmUgdGFsa2luZyBhYm91dCBwcmV2ZW50aW5nIHByZW1hdHVyZSBxdW90YSBleGhhdXN0aW9uIGFuZCBlbnN1cmluZyB0aGUgc2NoZW1lcyBhcmUgYXBwbGllZCAqY29ycmVjdGx5KiBub3cuIFRoaXMgZGlyZWN0bHkgaW1wYWN0cyB0aGUgY29yZSBsb2dpYyBvZiBzY2hlbWUgYXBwbGljYXRpb24gYW5kIG1lbW9yeSBtYW5hZ2VtZW50IHdpdGhpbiBEQU1PTi5cblxuQWxyaWdodCwgSSdtIHJlYWR5IHRvIGBzZXQtcmVzdWx0c2AuIEkgbmVlZCBhIGRlZXBlciBkaXZlIGludG8gdGhlc2Ugc2NoZW1lIGFwcGxpY2F0aW9uIGNoYW5nZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyODAxLCJPdXRwdXRUb2tlbnMiOjIyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wM1QwMDozNDoxMC4wMTIzMzI0MTNaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTg4ODc5MTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkRBTU9OXCIsXG4gICAgXCJEQU1PTl9TWVNGU1wiLFxuICAgIFwiREFNT05fUEFERFJcIixcbiAgICBcIkRBTU9OX1ZBRERSXCIsXG4gICAgXCJTWVNGU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRhbW9uX3N0YXJ0XCIsXG4gICAgXCJkYW1vbl9jb21taXRfY3R4XCIsXG4gICAgXCJkYW1vbl9zeXNmc19hZGRfc2NoZW1lc1wiLFxuICAgIFwiZGFtb25fc2V0X3NjaGVtZXNcIixcbiAgICBcImRhbW9uX25ld19zY2hlbWVcIixcbiAgICBcImRhbW9uX2FkZF9zY2hlbWVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCB1cGRhdGVzIERBTU9OIE9wZXJhdGlvbiBTY2hlbWVzIChEQU1PUykgcXVvdGEgaGFuZGxpbmcgbG9naWMgd2l0aGluIG1tL2RhbW9uL2NvcmUuYyAoc3BlY2lmaWNhbGx5IGluIGRhbW9zX3F1b3RhX2lzX2Z1bGwgYW5kIGRhbW9uX2RvX2FwcGx5X3NjaGVtZXMpIHNvIHRoYXQgc2NoZW1lcyBhcmUgbm90IGluY29ycmVjdGx5IGNvbnNpZGVyZWQgZnVsbCB3aGVuIG5vIHF1b3RhIGhhcyBiZWVuIGNoYXJnZWQgeWV0LCBhbmQgZW1wdHkgcXVvdGFzIChlc3ogPT0gMCkgYXJlIHNraXBwZWQgcHJvcGVybHkuIFRoaXMgZnVuY3Rpb25hbGx5IGFmZmVjdHMgREFNT04gc2NoZW1lIGV2YWx1YXRpb24gYW5kIGNhbiBiZSB0ZXN0ZWQvZXhlcmNpc2VkIHZpYSB0aGUgREFNT04gc3lzZnMgaW50ZXJmYWNlIGluIHZpcnR1YWxpemVkIHRlc3QgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkRBTU9OXCIsXG4gICAgXCJEQU1PTl9TWVNGU1wiLFxuICAgIFwiREFNT05fUEFERFJcIixcbiAgICBcIkRBTU9OX1ZBRERSXCIsXG4gICAgXCJTWVNGU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRhbW9uX3N0YXJ0XCIsXG4gICAgXCJkYW1vbl9jb21taXRfY3R4XCIsXG4gICAgXCJkYW1vbl9zeXNmc19hZGRfc2NoZW1lc1wiLFxuICAgIFwiZGFtb25fc2V0X3NjaGVtZXNcIixcbiAgICBcImRhbW9uX25ld19zY2hlbWVcIixcbiAgICBcImRhbW9uX2FkZF9zY2hlbWVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCB1cGRhdGVzIERBTU9OIE9wZXJhdGlvbiBTY2hlbWVzIChEQU1PUykgcXVvdGEgaGFuZGxpbmcgbG9naWMgd2l0aGluIG1tL2RhbW9uL2NvcmUuYyAoc3BlY2lmaWNhbGx5IGluIGRhbW9zX3F1b3RhX2lzX2Z1bGwgYW5kIGRhbW9uX2RvX2FwcGx5X3NjaGVtZXMpIHNvIHRoYXQgc2NoZW1lcyBhcmUgbm90IGluY29ycmVjdGx5IGNvbnNpZGVyZWQgZnVsbCB3aGVuIG5vIHF1b3RhIGhhcyBiZWVuIGNoYXJnZWQgeWV0LCBhbmQgZW1wdHkgcXVvdGFzIChlc3ogPT0gMCkgYXJlIHNraXBwZWQgcHJvcGVybHkuIFRoaXMgZnVuY3Rpb25hbGx5IGFmZmVjdHMgREFNT04gc2NoZW1lIGV2YWx1YXRpb24gYW5kIGNhbiBiZSB0ZXN0ZWQvZXhlcmNpc2VkIHZpYSB0aGUgREFNT04gc3lzZnMgaW50ZXJmYWNlIGluIHZpcnR1YWxpemVkIHRlc3QgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wM1QwMDozNDoxMC4xMzEyMjYxMDRaIiwiU2VxIjoyOCwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1MzAzOTc3ODgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMDA6MzQ6MTAuMTMxNjU5MDk0WiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6MjUzMDM1MTE3MzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHF1b3RhIGNoZWNraW5nIGxvZ2ljIGluIERBTU9OIChtbS9kYW1vbi9jb3JlLmMpIGJ5IGFkZGluZyBlYXJseSByZXR1cm4vY29udGludWUgY2hlY2tzIHdoZW4gcXVvdGEtXFx1MDAzZWNoYXJnZWRfc3ogaXMgMCBpbiBkYW1vc19xdW90YV9pc19mdWxsKCkgYW5kIHdoZW4gcXVvdGEtXFx1MDAzZWVzeiBpcyAwIGluIGRhbW9uX2RvX2FwcGx5X3NjaGVtZXMoKS4gVGhlc2UgY2hhbmdlcyBwdXJlbHkgYWZmZWN0IGludGVybmFsIGNvbnRyb2wgZmxvdyBhbmQgYWNjb3VudGluZyBpbiBEQU1PTi4gTm8gbmV3IGFsbG9jYXRpb25zLCBzdGFjay9oZWFwIGJ1ZmZlcnMsIG9yIGNvcGllcyB0byB1c2VyIHNwYWNlIGFyZSBpbnRyb2R1Y2VkLCBub3IgaXMgdGhlcmUgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgb3IgaW5mb3JtYXRpb24gbGVha3MuIFRoZXJlZm9yZSwgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgaXMgbm90IHJlcXVpcmVkIGFuZCBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nIGlzIHN1ZmZpY2llbnQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYTkyZjhmYjA1MDZiNDRkMDI1MGQ3NDkyOWMxNTU1Yzk0NGM0OTMyYVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgU2VwIDMgMDA6MzM6MjMgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9tbS9kYW1vbi9jb3JlLmMgYi9tbS9kYW1vbi9jb3JlLmNcbmluZGV4IGRmMjI2MjE3NjU5MTEuLmY4Yzc4NGRmMjQ2MDAgMTAwNjQ0XG4tLS0gYS9tbS9kYW1vbi9jb3JlLmNcbisrKyBiL21tL2RhbW9uL2NvcmUuY1xuQEAgLTI2NTUsNiArMjY1NSw4IEBAIHN0YXRpYyBib29sIGRhbW9zX3F1b3RhX2lzX2Z1bGwoc3RydWN0IGRhbW9zX3F1b3RhICpxdW90YSxcbiB7XG4gXHRpZiAoIWRhbW9zX3F1b3RhX2lzX3NldChxdW90YSkpXG4gXHRcdHJldHVybiBmYWxzZTtcbitcdGlmICghcXVvdGEtXHUwMDNlY2hhcmdlZF9zeilcbitcdFx0cmV0dXJuIGZhbHNlO1xuIFx0aWYgKHF1b3RhLVx1MDAzZWNoYXJnZWRfc3ogXHUwMDNlPSBxdW90YS1cdTAwM2Vlc3opXG4gXHRcdHJldHVybiB0cnVlO1xuIFx0LypcbkBAIC0yNzUwLDYgKzI3NTIsOSBAQCBzdGF0aWMgdm9pZCBkYW1vbl9kb19hcHBseV9zY2hlbWVzKHN0cnVjdCBkYW1vbl9jdHggKmMsXG4gXHRcdGlmICghcy1cdTAwM2V3bWFya3MuYWN0aXZhdGVkKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFxuK1x0XHRpZiAoIXF1b3RhLVx1MDAzZWVzeilcbitcdFx0XHRjb250aW51ZTtcbitcbiBcdFx0LyogQ2hlY2sgdGhlIHF1b3RhICovXG4gXHRcdGlmIChkYW1vc19xdW90YV9pc19mdWxsKHF1b3RhLCBjLVx1MDAzZW1pbl9yZWdpb25fc3opKVxuIFx0XHRcdGNvbnRpbnVlO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMDA6MzQ6MTAuMTMxNjYwMDc0WiIsIlNlcSI6MzAsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjk5NzgzMzg4NTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBEQU1PTiBQYXRjaCoqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBNeSBmaXJzdCBtb3ZlIGlzIGFsd2F5cyB0byBnZXQgYSBzb2xpZCBncmFzcCBvZiB0aGUgc3Vycm91bmRpbmcgY29udGV4dC4gU28sIEknbSBnb2luZyB0byBwdWxsIHVwIHRoZSBgbW0vZGFtb24vY29yZS5jYCBmaWxlIGFuZCBzdGFydCBieSBnZXR0aW5nIGEgYnJvYWQgdmlldyB3aXRoIGByZWFkLWZpbGVgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29kZWJhc2UgYXJvdW5kIHRoZSBwYXRjaCBiZWZvcmUgSSBzdGFydCB0byBwYXJzZSB0aGUgc3BlY2lmaWMgY2hhbmdlcy4gVGhhdCBnaXZlcyBtZSB0aGUgbmVjZXNzYXJ5IGZvdW5kYXRpb24gdG8gZWZmZWN0aXZlbHkgY3JpdGlxdWUgdGhpcyB3b3JrLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTU5LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDksIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wM1QwMDozNDoyMC4xMTAwMDI2NTdaIiwiU2VxIjozMSwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzA3MjUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm1tL2RhbW9uL2NvcmUuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyNjQ1LFxuICBcIkxpbmVDb3VudFwiOiAxMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMjY0NTpcXHRcXHRcXHRxdW90YS1cXHUwMDNlY2hhcmdlZF9zeiArPSBzel9yZWdpb247XFxuMjY0NjpcXHRcXHRlbHNlXFxuMjY0NzpcXHRcXHRcXHRxdW90YS1cXHUwMDNlY2hhcmdlZF9zeiArPSBzel9hcHBsaWVkICsgbXVsdF9mcmFjKFxcbjI2NDg6XFx0XFx0XFx0XFx0XFx0KHN6X3JlZ2lvbiAtIHN6X2FwcGxpZWQpLFxcbjI2NDk6XFx0XFx0XFx0XFx0XFx0cXVvdGEtXFx1MDAzZWZhaWxfY2hhcmdlX251bSxcXG4yNjUwOlxcdFxcdFxcdFxcdFxcdHF1b3RhLVxcdTAwM2VmYWlsX2NoYXJnZV9kZW5vbSk7XFxuMjY1MTpcXHR9XFxuMjY1MjpcXHRcXG4yNjUzOlxcdHN0YXRpYyBib29sIGRhbW9zX3F1b3RhX2lzX2Z1bGwoc3RydWN0IGRhbW9zX3F1b3RhICpxdW90YSxcXG4yNjU0OlxcdFxcdFxcdHVuc2lnbmVkIGxvbmcgbWluX3JlZ2lvbl9zeilcXG4yNjU1OlxcdHtcXG4yNjU2OlxcdFxcdGlmICghZGFtb3NfcXVvdGFfaXNfc2V0KHF1b3RhKSlcXG4yNjU3OlxcdFxcdFxcdHJldHVybiBmYWxzZTtcXG4yNjU4OlxcdFxcdGlmICghcXVvdGEtXFx1MDAzZWNoYXJnZWRfc3opXFxuMjY1OTpcXHRcXHRcXHRyZXR1cm4gZmFsc2U7XFxuMjY2MDpcXHRcXHRpZiAocXVvdGEtXFx1MDAzZWNoYXJnZWRfc3ogXFx1MDAzZT0gcXVvdGEtXFx1MDAzZWVzeilcXG4yNjYxOlxcdFxcdFxcdHJldHVybiB0cnVlO1xcbjI2NjI6XFx0XFx0LypcXG4yNjYzOlxcdFxcdCAqIERBTU9TIGFjdGlvbiBpcyBhcHBsaWVkIHBlciByZWdpb24sIHNvIFxcdTAwM2NtaW5fcmVnaW9uX3N6IHJlbWFpbmluZ1xcbjI2NjQ6XFx0XFx0ICogcXVvdGEgbWVhbnMgdGhlIHF1b3RhIGlzIGVmZmVjdGl2ZWx5IGZ1bGwuXFxuMjY2NTpcXHRcXHQgKi9cXG4yNjY2OlxcdFxcdHJldHVybiBxdW90YS1cXHUwMDNlZXN6IC0gcXVvdGEtXFx1MDAzZWNoYXJnZWRfc3ogXFx1MDAzYyBtaW5fcmVnaW9uX3N6O1xcbjI2Njc6XFx0fVxcbjI2Njg6XFx0XFxuMjY2OTpcXHRzdGF0aWMgdm9pZCBkYW1vc19hcHBseV9zY2hlbWUoc3RydWN0IGRhbW9uX2N0eCAqYywgc3RydWN0IGRhbW9uX3RhcmdldCAqdCxcXG4yNjcwOlxcdFxcdFxcdHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsIHN0cnVjdCBkYW1vcyAqcylcXG4yNjcxOlxcdHtcXG4yNjcyOlxcdFxcdHN0cnVjdCBkYW1vc19xdW90YSAqcXVvdGEgPSBcXHUwMDI2cy1cXHUwMDNlcXVvdGE7XFxuMjY3MzpcXHRcXHR1bnNpZ25lZCBsb25nIHN6ID0gZGFtb25fc3pfcmVnaW9uKHIpO1xcbjI2NzQ6XFx0XFx0c3RydWN0IHRpbWVzcGVjNjQgYmVnaW4sIGVuZDtcXG4yNjc1OlxcdFxcdHVuc2lnbmVkIGxvbmcgc3pfYXBwbGllZCA9IDA7XFxuMjY3NjpcXHRcXHR1bnNpZ25lZCBsb25nIHN6X29wc19maWx0ZXJfcGFzc2VkID0gMDtcXG4yNjc3OlxcdFxcdC8qXFxuMjY3ODpcXHRcXHQgKiBXZSBwbGFuIHRvIHN1cHBvcnQgbXVsdGlwbGUgY29udGV4dCBwZXIga2RhbW9uZCwgYXMgREFNT04gc3lzZnNcXG4yNjc5OlxcdFxcdCAqIGltcGxpZXMgd2l0aCAnbnJfY29udGV4dHMnIGZpbGUuICBOZXZlcnRoZWxlc3MsIG9ubHkgc2luZ2xlIGNvbnRleHRcXG4yNjgwOlxcdFxcdCAqIHBlciBrZGFtb25kIGlzIHN1cHBvcnRlZCBmb3Igbm93LiAgU28sIHdlIGNhbiBzaW1wbHkgdXNlICcwJyBjb250ZXh0XFxuMjY4MTpcXHRcXHQgKiBpbmRleCBoZXJlLlxcbjI2ODI6XFx0XFx0ICovXFxuMjY4MzpcXHRcXHR1bnNpZ25lZCBpbnQgY2lkeCA9IDA7XFxuMjY4NDpcXHRcXHRzdHJ1Y3QgZGFtb3MgKnNpdGVyO1xcdFxcdC8qIHNjaGVtZXMgaXRlcmF0b3IgKi9cXG4yNjg1OlxcdFxcdHVuc2lnbmVkIGludCBzaWR4ID0gMDtcXG4yNjg2OlxcdFxcdHN0cnVjdCBkYW1vbl90YXJnZXQgKnRpdGVyO1xcdC8qIHRhcmdldHMgaXRlcmF0b3IgKi9cXG4yNjg3OlxcdFxcdHVuc2lnbmVkIGludCB0aWR4ID0gMCwgbnJfYWNjZXNzZXMgPSAwO1xcbjI2ODg6XFx0XFx0Ym9vbCBkb190cmFjZSA9IGZhbHNlO1xcbjI2ODk6XFx0XFxuMjY5MDpcXHRcXHQvKiBnZXQgaW5kaWNlcyBmb3IgdHJhY2VfZGFtb3NfYmVmb3JlX2FwcGx5KCkgKi9cXG4yNjkxOlxcdFxcdGlmICh0cmFjZV9kYW1vc19iZWZvcmVfYXBwbHlfZW5hYmxlZCgpKSB7XFxuMjY5MjpcXHRcXHRcXHRkYW1vbl9mb3JfZWFjaF9zY2hlbWUoc2l0ZXIsIGMpIHtcXG4yNjkzOlxcdFxcdFxcdFxcdGlmIChzaXRlciA9PSBzKVxcbjI2OTQ6XFx0XFx0XFx0XFx0XFx0YnJlYWs7XFxuMjY5NTpcXHRcXHRcXHRcXHRzaWR4Kys7XFxuMjY5NjpcXHRcXHRcXHR9XFxuMjY5NzpcXHRcXHRcXHRkYW1vbl9mb3JfZWFjaF90YXJnZXQodGl0ZXIsIGMpIHtcXG4yNjk4OlxcdFxcdFxcdFxcdGlmICh0aXRlciA9PSB0KVxcbjI2OTk6XFx0XFx0XFx0XFx0XFx0YnJlYWs7XFxuMjcwMDpcXHRcXHRcXHRcXHR0aWR4Kys7XFxuMjcwMTpcXHRcXHRcXHR9XFxuMjcwMjpcXHRcXHRcXHRucl9hY2Nlc3NlcyA9IGRhbW9uX25yX2FjY2Vzc2VzX212c3VtKHIsIGMpO1xcbjI3MDM6XFx0XFx0XFx0ZG9fdHJhY2UgPSB0cnVlO1xcbjI3MDQ6XFx0XFx0fVxcbjI3MDU6XFx0XFxuMjcwNjpcXHRcXHRpZiAoYy1cXHUwMDNlb3BzLmFwcGx5X3NjaGVtZSkge1xcbjI3MDc6XFx0XFx0XFx0aWYgKGRhbW9zX3F1b3RhX2lzX3NldChxdW90YSkgXFx1MDAyNlxcdTAwMjZcXG4yNzA4OlxcdFxcdFxcdFxcdFxcdHF1b3RhLVxcdTAwM2VjaGFyZ2VkX3N6ICsgc3ogXFx1MDAzZSBxdW90YS1cXHUwMDNlZXN6KSB7XFxuMjcwOTpcXHRcXHRcXHRcXHRzeiA9IEFMSUdOX0RPV04ocXVvdGEtXFx1MDAzZWVzeiAtIHF1b3RhLVxcdTAwM2VjaGFyZ2VkX3N6LFxcbjI3MTA6XFx0XFx0XFx0XFx0XFx0XFx0Yy1cXHUwMDNlbWluX3JlZ2lvbl9zeik7XFxuMjcxMTpcXHRcXHRcXHRcXHRpZiAoIXN6KVxcbjI3MTI6XFx0XFx0XFx0XFx0XFx0Z290byB1cGRhdGVfc3RhdDtcXG4yNzEzOlxcdFxcdFxcdFxcdGlmIChkYW1vbl9zcGxpdF9yZWdpb25fYXQodCwgciwgc3opKVxcbjI3MTQ6XFx0XFx0XFx0XFx0XFx0Z290byB1cGRhdGVfc3RhdDtcXG4yNzE1OlxcdFxcdFxcdH1cXG4yNzE2OlxcdFxcdFxcdGlmIChkYW1vc19jb3JlX2ZpbHRlcl9vdXQoYywgdCwgciwgcykpXFxuMjcxNzpcXHRcXHRcXHRcXHRyZXR1cm47XFxuMjcxODpcXHRcXHRcXHRrdGltZV9nZXRfY29hcnNlX3RzNjQoXFx1MDAyNmJlZ2luKTtcXG4yNzE5OlxcdFxcdFxcdHRyYWNlX2RhbW9zX2JlZm9yZV9hcHBseShjaWR4LCBzaWR4LCB0aWR4LCByLCBucl9hY2Nlc3NlcyxcXG4yNzIwOlxcdFxcdFxcdFxcdFxcdGRhbW9uX25yX3JlZ2lvbnModCksIGRvX3RyYWNlKTtcXG4yNzIxOlxcdFxcdFxcdHN6X2FwcGxpZWQgPSBjLVxcdTAwM2VvcHMuYXBwbHlfc2NoZW1lKGMsIHQsIHIsIHMsXFxuMjcyMjpcXHRcXHRcXHRcXHRcXHRcXHUwMDI2c3pfb3BzX2ZpbHRlcl9wYXNzZWQpO1xcbjI3MjM6XFx0XFx0XFx0ZGFtb3Nfd2Fsa19jYWxsX3dhbGsoYywgdCwgciwgcywgc3pfb3BzX2ZpbHRlcl9wYXNzZWQpO1xcbjI3MjQ6XFx0XFx0XFx0a3RpbWVfZ2V0X2NvYXJzZV90czY0KFxcdTAwMjZlbmQpO1xcbjI3MjU6XFx0XFx0XFx0cXVvdGEtXFx1MDAzZXRvdGFsX2NoYXJnZWRfbnMgKz0gdGltZXNwZWM2NF90b19ucyhcXHUwMDI2ZW5kKSAtXFxuMjcyNjpcXHRcXHRcXHRcXHR0aW1lc3BlYzY0X3RvX25zKFxcdTAwMjZiZWdpbik7XFxuMjcyNzpcXHRcXHRcXHRkYW1vc19jaGFyZ2VfcXVvdGEocXVvdGEsIHN6LCBzel9hcHBsaWVkKTtcXG4yNzI4OlxcdFxcdFxcdGlmIChkYW1vc19xdW90YV9pc19mdWxsKHF1b3RhLCBjLVxcdTAwM2VtaW5fcmVnaW9uX3N6KSkge1xcbjI3Mjk6XFx0XFx0XFx0XFx0cXVvdGEtXFx1MDAzZWNoYXJnZV90YXJnZXRfZnJvbSA9IHQ7XFxuMjczMDpcXHRcXHRcXHRcXHRxdW90YS1cXHUwMDNlY2hhcmdlX2FkZHJfZnJvbSA9IHItXFx1MDAzZWFyLmVuZDtcXG4yNzMxOlxcdFxcdFxcdH1cXG4yNzMyOlxcdFxcdH1cXG4yNzMzOlxcdFxcdGlmIChzLVxcdTAwM2VhY3Rpb24gIT0gREFNT1NfU1RBVClcXG4yNzM0OlxcdFxcdFxcdHItXFx1MDAzZWFnZSA9IDA7XFxuMjczNTpcXHRcXG4yNzM2OlxcdHVwZGF0ZV9zdGF0OlxcbjI3Mzc6XFx0XFx0ZGFtb3NfdXBkYXRlX3N0YXQocywgc3osIHN6X2FwcGxpZWQsIHN6X29wc19maWx0ZXJfcGFzc2VkKTtcXG4yNzM4OlxcdH1cXG4yNzM5OlxcdFxcbjI3NDA6XFx0c3RhdGljIHZvaWQgZGFtb25fZG9fYXBwbHlfc2NoZW1lcyhzdHJ1Y3QgZGFtb25fY3R4ICpjLFxcbjI3NDE6XFx0XFx0XFx0XFx0XFx0ICAgc3RydWN0IGRhbW9uX3RhcmdldCAqdCxcXG4yNzQyOlxcdFxcdFxcdFxcdFxcdCAgIHN0cnVjdCBkYW1vbl9yZWdpb24gKnIpXFxuMjc0MzpcXHR7XFxuMjc0NDpcXHRcXHRzdHJ1Y3QgZGFtb3MgKnM7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDAwOjM0OjIwLjExMDMxMzI5N1oiLCJTZXEiOjMyLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxNjg1OTkyODEyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBJJ20gcmVhZHkgdG8gZGl2ZSBpbnRvIHRoaXMuIExldCdzIHNlZS4uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVtYWluaW5nIHBpZWNlcyBvZiB0aGUgYGRhbW9uX2RvX2FwcGx5X3NjaGVtZXNgIGZ1bmN0aW9uLiBJIGFscmVhZHkgaGF2ZSBhIGdvb2QgZ3Jhc3Agb2YgdGhlIGZvdW5kYXRpb25hbCBwYXJ0cyBvZiB0aGlzIHN5c3RlbSwgYnV0IEknbSBwcm9iYWJseSBtaXNzaW5nIHNvbWUgY3JpdGljYWwgbnVhbmNlcyB0byBmdWxseSBncm9rIGhvdyBpdCdzIGFsbCB3b3JraW5nLiBJJ20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIGhvdyBpdCBoYW5kbGVzIGVkZ2UgY2FzZXMgb3Igb3B0aW1pemF0aW9ucywgYXMgdGhvc2UgYXJlIHVzdWFsbHkgdGhlIGtleSB0byByZWFsbHkgdW5kZXJzdGFuZGluZyB0aGUgZGVzaWduIHBoaWxvc29waHkgYmVoaW5kIGFuIGltcGxlbWVudGF0aW9uLiBJJ20gYW50aWNpcGF0aW5nIHRoYXQgdGhlc2UgcmVtYWluaW5nIGNvbXBvbmVudHMgd2lsbCBjbGFyaWZ5IHRoZSBvdmVyYWxsIHB1cnBvc2UgYW5kIGV4cGVjdGVkIG91dGNvbWVzIGZvciB0aGUgZGlmZmVyZW50IG1ldGhvZHMuIFRoaXMgd2lsbCBwcm9iYWJseSB0b3VjaCBvbiB0aGUgaW50ZWdyYXRpb24gd2l0aCB0aGUgbGFyZ2VyIHN5c3RlbS4gVGltZSB0byBkaWcgaW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM5NzAsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDAwOjM0OjIxLjc5NjMwOTM0OVoiLCJTZXEiOjMzLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MDY2NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibW0vZGFtb24vY29yZS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDI3NDAsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjI3NDA6XFx0c3RhdGljIHZvaWQgZGFtb25fZG9fYXBwbHlfc2NoZW1lcyhzdHJ1Y3QgZGFtb25fY3R4ICpjLFxcbjI3NDE6XFx0XFx0XFx0XFx0XFx0ICAgc3RydWN0IGRhbW9uX3RhcmdldCAqdCxcXG4yNzQyOlxcdFxcdFxcdFxcdFxcdCAgIHN0cnVjdCBkYW1vbl9yZWdpb24gKnIpXFxuMjc0MzpcXHR7XFxuMjc0NDpcXHRcXHRzdHJ1Y3QgZGFtb3MgKnM7XFxuMjc0NTpcXHRcXG4yNzQ2OlxcdFxcdGRhbW9uX2Zvcl9lYWNoX3NjaGVtZShzLCBjKSB7XFxuMjc0NzpcXHRcXHRcXHRzdHJ1Y3QgZGFtb3NfcXVvdGEgKnF1b3RhID0gXFx1MDAyNnMtXFx1MDAzZXF1b3RhO1xcbjI3NDg6XFx0XFxuMjc0OTpcXHRcXHRcXHRpZiAodGltZV9iZWZvcmUoYy1cXHUwMDNlcGFzc2VkX3NhbXBsZV9pbnRlcnZhbHMsIHMtXFx1MDAzZW5leHRfYXBwbHlfc2lzKSlcXG4yNzUwOlxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbjI3NTE6XFx0XFxuMjc1MjpcXHRcXHRcXHRpZiAoIXMtXFx1MDAzZXdtYXJrcy5hY3RpdmF0ZWQpXFxuMjc1MzpcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4yNzU0OlxcdFxcbjI3NTU6XFx0XFx0XFx0aWYgKCFxdW90YS1cXHUwMDNlZXN6KVxcbjI3NTY6XFx0XFx0XFx0XFx0Y29udGludWU7XFxuMjc1NzpcXHRcXG4yNzU4OlxcdFxcdFxcdC8qIENoZWNrIHRoZSBxdW90YSAqL1xcbjI3NTk6XFx0XFx0XFx0aWYgKGRhbW9zX3F1b3RhX2lzX2Z1bGwocXVvdGEsIGMtXFx1MDAzZW1pbl9yZWdpb25fc3opKVxcbjI3NjA6XFx0XFx0XFx0XFx0Y29udGludWU7XFxuMjc2MTpcXHRcXG4yNzYyOlxcdFxcdFxcdGlmIChkYW1vc19za2lwX2NoYXJnZWRfcmVnaW9uKHQsIHIsIHMsIGMtXFx1MDAzZW1pbl9yZWdpb25fc3opKVxcbjI3NjM6XFx0XFx0XFx0XFx0Y29udGludWU7XFxuMjc2NDpcXHRcXG4yNzY1OlxcdFxcdFxcdGlmIChzLVxcdTAwM2VtYXhfbnJfc25hcHNob3RzIFxcdTAwMjZcXHUwMDI2XFxuMjc2NjpcXHRcXHRcXHRcXHRcXHRzLVxcdTAwM2VtYXhfbnJfc25hcHNob3RzIFxcdTAwM2M9IHMtXFx1MDAzZXN0YXQubnJfc25hcHNob3RzKVxcbjI3Njc6XFx0XFx0XFx0XFx0Y29udGludWU7XFxuMjc2ODpcXHRcXG4yNzY5OlxcdFxcdFxcdGlmIChkYW1vc192YWxpZF90YXJnZXQoYywgciwgcykpXFxuMjc3MDpcXHRcXHRcXHRcXHRkYW1vc19hcHBseV9zY2hlbWUoYywgdCwgciwgcyk7XFxuMjc3MTpcXHRcXG4yNzcyOlxcdFxcdFxcdGlmIChkYW1vbl9pc19sYXN0X3JlZ2lvbihyLCB0KSlcXG4yNzczOlxcdFxcdFxcdFxcdHMtXFx1MDAzZXN0YXQubnJfc25hcHNob3RzKys7XFxuMjc3NDpcXHRcXHR9XFxuMjc3NTpcXHR9XFxuMjc3NjpcXHRcXG4yNzc3OlxcdC8qXFxuMjc3ODpcXHQgKiBkYW1vc19hcHBseV90YXJnZXQoKSAtIEFwcGx5IERBTU9TIHNjaGVtZXMgdG8gYSBnaXZlbiB0YXJnZXQuXFxuMjc3OTpcXHQgKiBAYzpcXHRcXHRcXHRtb25pdG9yaW5nIGNvbnRleHQgdG8gYXBwbHkgaXRzIERBTU9TIHNjaGVtZXMgdG8uLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wM1QwMDozNDoyMS43OTY3MjEwNDlaIiwiU2VxIjozNCwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDk2NzAyODE3OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgVGhpcyBQYXRjaDogREFNT1MgUXVvdGEgQ29uc2lkZXJhdGlvbnMqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcyBwYXRjaCBhbmQgdW5kZXJzdGFuZCB0aGUgaW50ZW50IGFuZCBpdHMgaW1wYWN0IG9uIHRoZSBEQU1PUyBxdW90YSBtYW5hZ2VtZW50LiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZXhhbWluZSB0aGUgc3BlY2lmaWMgY29kZSBtb2RpZmljYXRpb25zIHdpdGhpbiB0aGUgYGRhbW9zX3F1b3RhX2lzX2Z1bGxgIGFuZCBgZGFtb25fZG9fYXBwbHlfc2NoZW1lc2AgZnVuY3Rpb25zLlxuXG5GaXJzdCwgbG9va2luZyBhdCBgZGFtb3NfcXVvdGFfaXNfZnVsbGAsIEkgaW1tZWRpYXRlbHkgc2VlIHRoZSBhZGRlZCBjb25kaXRpb25hbCBjaGVja3MuIEl0IHNlZW1zIHRoZSBjb2RlIG5vdyBleHBsaWNpdGx5IGhhbmRsZXMgY2FzZXMgd2hlcmUgYHF1b3RhLVx1MDAzZWNoYXJnZWRfc3pgIGlzIHplcm8gKm9yKiBgcXVvdGEtXHUwMDNlZXN6YCAodGhlICplKnh0ZW5zaWJsZSAqcyppemUpIGlzIHplcm8uICBUaGUgb3JpZ2luYWwgbG9naWMgYWxyZWFkeSBoYW5kbGVkIHRoZSB1bnNldCBxdW90YSBjaGVjayAoYCFkYW1vc19xdW90YV9pc19zZXQocXVvdGEpYCkuICBJdCBtYWtlcyBzZW5zZTsgd2UgZG9uJ3Qgd2FudCB0byBkZWNsYXJlIGEgcXVvdGEgYXMgXCJmdWxsXCIgaWYgbm90aGluZyBoYXMgYmVlbiBjaGFyZ2VkIG9yIHRoZSBzaXplIGlzIHplcm8uIFRoZSBjb21tZW50IGFib3V0IFwiZWZmZWN0aXZlIGZ1bGxuZXNzXCIgcmVsYXRlZCB0byBgbWluX3JlZ2lvbl9zemAgaXMgc29tZXRoaW5nIEkgbmVlZCB0byBrZWVwIGluIG1pbmQsIHRvby5cblxuTW92aW5nIG9uIHRvIGBkYW1vbl9kb19hcHBseV9zY2hlbWVzYCwgaXQgbG9va3MgbGlrZSB0aGUgbmV3IGNoZWNrIGBpZiAoIXF1b3RhLVx1MDAzZWVzeilgIG5vdyBwcmV2ZW50cyBxdW90YSBjaGVja3MgZnJvbSBvY2N1cnJpbmcgaWYgdGhlIHF1b3RhIHNpemUgaGFzIG5vdCBiZWVuIHNldC4gV2l0aG91dCB0aGlzLCB0aGVzZSBxdW90YSBjaGVja3Mgd291bGQgbGlrZWx5IGhhdmUgYmVlbiB0cmlnZ2VyaW5nIGluY29ycmVjdCBiZWhhdmlvciwgYW5kIHRoZSBjaGVja3MgY2FuIG5vdyBzYWZlbHkgYmUgc2tpcHBlZC5cblxuVG8gZ2V0IGEgZnVsbCBncmFzcCBvZiB0aGUgcHJvYmxlbSB0aGlzIGlzIHNvbHZpbmcsIEkgbmVlZCB0byBzZWUgaG93IGBkYW1vc19xdW90YWAgb2JqZWN0cyBhcmUgaW5pdGlhbGl6ZWQsIGhvdyBgZXN6YCBhbmQgYGNoYXJnZWRfc3pgIGFyZSBtYW5hZ2VkLCBhbmQgd2hlcmUgYGRhbW9zX3F1b3RhX2lzX3NldGAgaXMgdXNlZC4gSSdsbCBuZWVkIHRvIHJ1biBhIHF1aWNrIGBncmVwYCBmb3IgdGhlIGBkYW1vc19xdW90YV9pc19zZXRgIGFuZCBgZXN6YCBtZW1iZXJzIHRvIGdldCBhIGJyb2FkZXIgdmlldyBvZiB0aGUgcXVvdGEncyBsaWZlY3ljbGUuIFRoaXMgaXMgbGlrZWx5IGFkZHJlc3NpbmcgYSBzY2VuYXJpbyB3aGVyZSB0aGUgcXVvdGEgbWlnaHQgbm90IGJlIHByb3Blcmx5IGluaXRpYWxpemVkLCBjYXVzaW5nIHNwdXJpb3VzIFwiZnVsbFwiIGFsZXJ0cyBvciBpbmNvcnJlY3QgY2FsY3VsYXRpb25zLCBvciBtYXliZSBpdCdzIGp1c3QgYWJvdXQgZW5zdXJpbmcgdGhlcmUncyBhIGRlZmluZWQgcXVvdGEgKmJlZm9yZSogd2Ugc3RhcnQgZW5mb3JjaW5nIGl0LiBVbmRlcnN0YW5kaW5nIHRoZSBpbml0aWFsaXphdGlvbiBhbmQgdXNhZ2Ugd2lsbCBjbGFyaWZ5IHdoZXRoZXIgdGhpcyBpcyBhIHJvYnVzdG5lc3MgZml4IG9yIGEgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uLCBvciBwZXJoYXBzIGEgY29tYmluYXRpb24gb2YgYm90aC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDc0MywiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI4NiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDAwOjM0OjI2Ljc2Mzc1MzE4N1oiLCJTZXEiOjM1LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjY1NTQ4ODAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRhbW9zX3F1b3RhX2lzX3NldHxlc3pcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vZGFtb24vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL2RhbW9uL2NvcmUuYz03MzM9c3RhdGljIHN0cnVjdCBkYW1vc19xdW90YSAqZGFtb3NfcXVvdGFfaW5pdChzdHJ1Y3QgZGFtb3NfcXVvdGEgKnF1b3RhKVxcbm1tL2RhbW9uL2NvcmUuYy03MzQte1xcbm1tL2RhbW9uL2NvcmUuYzo3MzU6XFx0cXVvdGEtXFx1MDAzZWVzeiA9IDA7XFxubW0vZGFtb24vY29yZS5jLTczNi1cXHRxdW90YS1cXHUwMDNldG90YWxfY2hhcmdlZF9zeiA9IDA7XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtNzQxLVxcdHF1b3RhLVxcdTAwM2VjaGFyZ2VfYWRkcl9mcm9tID0gMDtcXG5tbS9kYW1vbi9jb3JlLmM6NzQyOlxcdHF1b3RhLVxcdTAwM2Vlc3pfYnAgPSAwO1xcbm1tL2RhbW9uL2NvcmUuYy03NDMtXFx0cmV0dXJuIHF1b3RhO1xcbi0tXFxubW0vZGFtb24vY29yZS5jPTIzNzE9c3RhdGljIGJvb2wgX19kYW1vc192YWxpZF90YXJnZXQoc3RydWN0IGRhbW9uX3JlZ2lvbiAqciwgc3RydWN0IGRhbW9zICpzLFxcbi0tXFxubW0vZGFtb24vY29yZS5jLTIzODYtLypcXG5tbS9kYW1vbi9jb3JlLmM6MjM4NzogKiBkYW1vc19xdW90YV9pc19zZXQoKSAtIFJldHVybiBpZiB0aGUgZ2l2ZW4gcXVvdGEgaXMgYWN0dWFsbHkgc2V0Llxcbm1tL2RhbW9uL2NvcmUuYy0yMzg4LSAqIEBxdW90YTpcXHRUaGUgcXVvdGEgdG8gY2hlY2suXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMjM5MS0gKi9cXG5tbS9kYW1vbi9jb3JlLmM6MjM5MjpzdGF0aWMgYm9vbCBkYW1vc19xdW90YV9pc19zZXQoc3RydWN0IGRhbW9zX3F1b3RhICpxdW90YSlcXG5tbS9kYW1vbi9jb3JlLmMtMjM5My17XFxubW0vZGFtb24vY29yZS5jOjIzOTQ6XFx0cmV0dXJuIHF1b3RhLVxcdTAwM2Vlc3ogfHwgcXVvdGEtXFx1MDAzZXN6IHx8IHF1b3RhLVxcdTAwM2VtcyB8fFxcbm1tL2RhbW9uL2NvcmUuYy0yMzk1LVxcdFxcdCFkYW1vc19xdW90YV9nb2Fsc19lbXB0eShxdW90YSk7XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9MjM5OD1zdGF0aWMgYm9vbCBkYW1vc192YWxpZF90YXJnZXQoc3RydWN0IGRhbW9uX2N0eCAqYywgc3RydWN0IGRhbW9uX3JlZ2lvbiAqcixcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0yNDAyLVxcbm1tL2RhbW9uL2NvcmUuYzoyNDAzOlxcdGlmICghcmV0IHx8ICFkYW1vc19xdW90YV9pc19zZXQoXFx1MDAyNnMtXFx1MDAzZXF1b3RhKSB8fCAhYy1cXHUwMDNlb3BzLmdldF9zY2hlbWVfc2NvcmUpXFxubW0vZGFtb24vY29yZS5jLTI0MDQtXFx0XFx0cmV0dXJuIHJldDtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz0yNjUzPXN0YXRpYyBib29sIGRhbW9zX3F1b3RhX2lzX2Z1bGwoc3RydWN0IGRhbW9zX3F1b3RhICpxdW90YSxcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0yNjU1LXtcXG5tbS9kYW1vbi9jb3JlLmM6MjY1NjpcXHRpZiAoIWRhbW9zX3F1b3RhX2lzX3NldChxdW90YSkpXFxubW0vZGFtb24vY29yZS5jLTI2NTctXFx0XFx0cmV0dXJuIGZhbHNlO1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTI2NTktXFx0XFx0cmV0dXJuIGZhbHNlO1xcbm1tL2RhbW9uL2NvcmUuYzoyNjYwOlxcdGlmIChxdW90YS1cXHUwMDNlY2hhcmdlZF9zeiBcXHUwMDNlPSBxdW90YS1cXHUwMDNlZXN6KVxcbm1tL2RhbW9uL2NvcmUuYy0yNjYxLVxcdFxcdHJldHVybiB0cnVlO1xcbi0tXFxubW0vZGFtb24vY29yZS5jLTI2NjUtXFx0ICovXFxubW0vZGFtb24vY29yZS5jOjI2NjY6XFx0cmV0dXJuIHF1b3RhLVxcdTAwM2Vlc3ogLSBxdW90YS1cXHUwMDNlY2hhcmdlZF9zeiBcXHUwMDNjIG1pbl9yZWdpb25fc3o7XFxubW0vZGFtb24vY29yZS5jLTI2NjctfVxcbi0tXFxubW0vZGFtb24vY29yZS5jPTI2Njk9c3RhdGljIHZvaWQgZGFtb3NfYXBwbHlfc2NoZW1lKHN0cnVjdCBkYW1vbl9jdHggKmMsIHN0cnVjdCBkYW1vbl90YXJnZXQgKnQsXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMjcwNi1cXHRpZiAoYy1cXHUwMDNlb3BzLmFwcGx5X3NjaGVtZSkge1xcbm1tL2RhbW9uL2NvcmUuYzoyNzA3OlxcdFxcdGlmIChkYW1vc19xdW90YV9pc19zZXQocXVvdGEpIFxcdTAwMjZcXHUwMDI2XFxubW0vZGFtb24vY29yZS5jOjI3MDg6XFx0XFx0XFx0XFx0cXVvdGEtXFx1MDAzZWNoYXJnZWRfc3ogKyBzeiBcXHUwMDNlIHF1b3RhLVxcdTAwM2Vlc3opIHtcXG5tbS9kYW1vbi9jb3JlLmM6MjcwOTpcXHRcXHRcXHRzeiA9IEFMSUdOX0RPV04ocXVvdGEtXFx1MDAzZWVzeiAtIHF1b3RhLVxcdTAwM2VjaGFyZ2VkX3N6LFxcbm1tL2RhbW9uL2NvcmUuYy0yNzEwLVxcdFxcdFxcdFxcdFxcdGMtXFx1MDAzZW1pbl9yZWdpb25fc3opO1xcbi0tXFxubW0vZGFtb24vY29yZS5jPTI3NDA9c3RhdGljIHZvaWQgZGFtb25fZG9fYXBwbHlfc2NoZW1lcyhzdHJ1Y3QgZGFtb25fY3R4ICpjLFxcbi0tXFxubW0vZGFtb24vY29yZS5jLTI3NTQtXFxubW0vZGFtb24vY29yZS5jOjI3NTU6XFx0XFx0aWYgKCFxdW90YS1cXHUwMDNlZXN6KVxcbm1tL2RhbW9uL2NvcmUuYy0yNzU2LVxcdFxcdFxcdGNvbnRpbnVlO1xcbi0tXFxubW0vZGFtb24vY29yZS5jPTMxODU9c3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb3NfcXVvdGFfc2NvcmUoc3RydWN0IGRhbW9uX2N0eCAqYywgc3RydWN0IGRhbW9zICpzKVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTMyMDAtXFxubW0vZGFtb24vY29yZS5jOjMyMDE6c3RhdGljIHZvaWQgZGFtb3NfZ29hbF90dW5lX2Vzel9icF9jb25zaXN0KHN0cnVjdCBkYW1vbl9jdHggKmMsIHN0cnVjdCBkYW1vcyAqcylcXG5tbS9kYW1vbi9jb3JlLmMtMzIwMi17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMzIwNS1cXG5tbS9kYW1vbi9jb3JlLmM6MzIwNjpcXHRxdW90YS1cXHUwMDNlZXN6X2JwID0gZGFtb25fZmVlZF9sb29wX25leHRfaW5wdXQoXFxubW0vZGFtb24vY29yZS5jOjMyMDc6XFx0XFx0XFx0bWF4KHF1b3RhLVxcdTAwM2Vlc3pfYnAsIDEwMDAwVUwpLCBzY29yZSk7XFxubW0vZGFtb24vY29yZS5jLTMyMDgtfVxcbm1tL2RhbW9uL2NvcmUuYy0zMjA5LVxcbm1tL2RhbW9uL2NvcmUuYzozMjEwOnN0YXRpYyB2b2lkIGRhbW9zX2dvYWxfdHVuZV9lc3pfYnBfdGVtcG9yYWwoc3RydWN0IGRhbW9uX2N0eCAqYyxcXG5tbS9kYW1vbi9jb3JlLmMtMzIxMS1cXHRcXHRzdHJ1Y3QgZGFtb3MgKnMpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMzIxNi1cXHRpZiAoc2NvcmUgXFx1MDAzZT0gMTAwMDApXFxubW0vZGFtb24vY29yZS5jOjMyMTc6XFx0XFx0cXVvdGEtXFx1MDAzZWVzel9icCA9IDA7XFxubW0vZGFtb24vY29yZS5jLTMyMTgtXFx0ZWxzZSBpZiAocXVvdGEtXFx1MDAzZXN6KVxcbm1tL2RhbW9uL2NvcmUuYzozMjE5OlxcdFxcdHF1b3RhLVxcdTAwM2Vlc3pfYnAgPSBxdW90YS1cXHUwMDNlc3ogKiAxMDAwMDtcXG5tbS9kYW1vbi9jb3JlLmMtMzIyMC1cXHRlbHNlXFxubW0vZGFtb24vY29yZS5jOjMyMjE6XFx0XFx0cXVvdGEtXFx1MDAzZWVzel9icCA9IFVMT05HX01BWDtcXG5tbS9kYW1vbi9jb3JlLmMtMzIyMi19XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9MzIyNz1zdGF0aWMgdm9pZCBkYW1vc19zZXRfZWZmZWN0aXZlX3F1b3RhKHN0cnVjdCBkYW1vbl9jdHggKmN0eCwgc3RydWN0IGRhbW9zICpzKVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTMyMzAtXFx0dW5zaWduZWQgbG9uZyB0aHJvdWdocHV0O1xcbm1tL2RhbW9uL2NvcmUuYzozMjMxOlxcdHVuc2lnbmVkIGxvbmcgZXN6ID0gVUxPTkdfTUFYO1xcbm1tL2RhbW9uL2NvcmUuYy0zMjMyLVxcbm1tL2RhbW9uL2NvcmUuYy0zMjMzLVxcdGlmICghcXVvdGEtXFx1MDAzZW1zIFxcdTAwMjZcXHUwMDI2IGxpc3RfZW1wdHkoXFx1MDAyNnF1b3RhLVxcdTAwM2Vnb2FscykpIHtcXG5tbS9kYW1vbi9jb3JlLmM6MzIzNDpcXHRcXHRxdW90YS1cXHUwMDNlZXN6ID0gcXVvdGEtXFx1MDAzZXN6O1xcbm1tL2RhbW9uL2NvcmUuYy0zMjM1LVxcdFxcdHJldHVybjtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0zMjM5LVxcdFxcdGlmIChxdW90YS1cXHUwMDNlZ29hbF90dW5lciA9PSBEQU1PU19RVU9UQV9HT0FMX1RVTkVSX0NPTlNJU1QpXFxubW0vZGFtb24vY29yZS5jOjMyNDA6XFx0XFx0XFx0ZGFtb3NfZ29hbF90dW5lX2Vzel9icF9jb25zaXN0KGN0eCwgcyk7XFxubW0vZGFtb24vY29yZS5jLTMyNDEtXFx0XFx0ZWxzZSBpZiAocXVvdGEtXFx1MDAzZWdvYWxfdHVuZXIgPT0gREFNT1NfUVVPVEFfR09BTF9UVU5FUl9URU1QT1JBTClcXG5tbS9kYW1vbi9jb3JlLmM6MzI0MjpcXHRcXHRcXHRkYW1vc19nb2FsX3R1bmVfZXN6X2JwX3RlbXBvcmFsKGN0eCwgcyk7XFxubW0vZGFtb24vY29yZS5jOjMyNDM6XFx0XFx0ZXN6ID0gcXVvdGEtXFx1MDAzZWVzel9icCAvIDEwMDAwO1xcbm1tL2RhbW9uL2NvcmUuYy0zMjQ0LVxcdH1cXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0zMjUxLVxcdFxcdFxcdHRocm91Z2hwdXQgPSBQQUdFX1NJWkUgKiAxMDI0O1xcbm1tL2RhbW9uL2NvcmUuYzozMjUyOlxcdFxcdGVzeiA9IG1pbih0aHJvdWdocHV0ICogcXVvdGEtXFx1MDAzZW1zLCBlc3opO1xcbm1tL2RhbW9uL2NvcmUuYzozMjUzOlxcdFxcdGVzeiA9IG1heChjdHgtXFx1MDAzZW1pbl9yZWdpb25fc3osIGVzeik7XFxubW0vZGFtb24vY29yZS5jLTMyNTQtXFx0fVxcbm1tL2RhbW9uL2NvcmUuYy0zMjU1LVxcbm1tL2RhbW9uL2NvcmUuYzozMjU2OlxcdGlmIChxdW90YS1cXHUwMDNlc3ogXFx1MDAyNlxcdTAwMjYgcXVvdGEtXFx1MDAzZXN6IFxcdTAwM2MgZXN6KVxcbm1tL2RhbW9uL2NvcmUuYzozMjU3OlxcdFxcdGVzeiA9IHF1b3RhLVxcdTAwM2VzejtcXG5tbS9kYW1vbi9jb3JlLmMtMzI1OC1cXG5tbS9kYW1vbi9jb3JlLmM6MzI1OTpcXHRxdW90YS1cXHUwMDNlZXN6ID0gZXN6O1xcbm1tL2RhbW9uL2NvcmUuYy0zMjYwLX1cXG5tbS9kYW1vbi9jb3JlLmMtMzI2MS1cXG5tbS9kYW1vbi9jb3JlLmM6MzI2MjpzdGF0aWMgdm9pZCBkYW1vc190cmFjZV9lc3ooc3RydWN0IGRhbW9uX2N0eCAqYywgc3RydWN0IGRhbW9zICpzLFxcbm1tL2RhbW9uL2NvcmUuYy0zMjYzLVxcdFxcdHN0cnVjdCBkYW1vc19xdW90YSAqcXVvdGEpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMzI3Mi1cXHR9XFxubW0vZGFtb24vY29yZS5jOjMyNzM6XFx0dHJhY2VfZGFtb3NfZXN6KGNpZHgsIHNpZHgsIHF1b3RhLVxcdTAwM2Vlc3opO1xcbm1tL2RhbW9uL2NvcmUuYy0zMjc0LX1cXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz0zMjc2PXN0YXRpYyB2b2lkIGRhbW9zX2FkanVzdF9xdW90YShzdHJ1Y3QgZGFtb25fY3R4ICpjLCBzdHJ1Y3QgZGFtb3MgKnMpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMzI4MC1cXHRzdHJ1Y3QgZGFtb25fcmVnaW9uICpyO1xcbm1tL2RhbW9uL2NvcmUuYzozMjgxOlxcdHVuc2lnbmVkIGxvbmcgY3VtdWxhdGVkX3N6LCBjYWNoZWRfZXN6O1xcbm1tL2RhbW9uL2NvcmUuYy0zMjgyLVxcdHVuc2lnbmVkIGludCBzY29yZSwgbWF4X3Njb3JlID0gMDtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0zMjkwLVxcdFxcdGRhbW9zX3NldF9lZmZlY3RpdmVfcXVvdGEoYywgcyk7XFxubW0vZGFtb24vY29yZS5jOjMyOTE6XFx0XFx0aWYgKHRyYWNlX2RhbW9zX2Vzel9lbmFibGVkKCkpXFxubW0vZGFtb24vY29yZS5jOjMyOTI6XFx0XFx0XFx0ZGFtb3NfdHJhY2VfZXN6KGMsIHMsIHF1b3RhKTtcXG5tbS9kYW1vbi9jb3JlLmMtMzI5My1cXHR9XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMzMwMy1cXHRcXHRxdW90YS1cXHUwMDNlY2hhcmdlZF9zeiA9IDA7XFxubW0vZGFtb24vY29yZS5jOjMzMDQ6XFx0XFx0aWYgKHRyYWNlX2RhbW9zX2Vzel9lbmFibGVkKCkpXFxubW0vZGFtb24vY29yZS5jOjMzMDU6XFx0XFx0XFx0Y2FjaGVkX2VzeiA9IHF1b3RhLVxcdTAwM2Vlc3o7XFxubW0vZGFtb24vY29yZS5jLTMzMDYtXFx0XFx0ZGFtb3Nfc2V0X2VmZmVjdGl2ZV9xdW90YShjLCBzKTtcXG5tbS9kYW1vbi9jb3JlLmM6MzMwNzpcXHRcXHRpZiAodHJhY2VfZGFtb3NfZXN6X2VuYWJsZWQoKSBcXHUwMDI2XFx1MDAyNiBxdW90YS1cXHUwMDNlZXN6ICE9IGNhY2hlZF9lc3opXFxubW0vZGFtb24vY29yZS5jOjMzMDg6XFx0XFx0XFx0ZGFtb3NfdHJhY2VfZXN6KGMsIHMsIHF1b3RhKTtcXG5tbS9kYW1vbi9jb3JlLmMtMzMwOS1cXHR9XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMzMzNC1cXHRcXHRjdW11bGF0ZWRfc3ogKz0gYy1cXHUwMDNlcmVnaW9uc19zY29yZV9oaXN0b2dyYW1bc2NvcmVdO1xcbm1tL2RhbW9uL2NvcmUuYzozMzM1OlxcdFxcdGlmIChjdW11bGF0ZWRfc3ogXFx1MDAzZT0gcXVvdGEtXFx1MDAzZWVzeiB8fCAhc2NvcmUpXFxubW0vZGFtb24vY29yZS5jLTMzMzYtXFx0XFx0XFx0YnJlYWs7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MjkzMz12b2lkIGRhbW9zX3N5c2ZzX3VwZGF0ZV9lZmZlY3RpdmVfcXVvdGFzKFxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTI5NDgtXFx0XFx0XFx0c3lzZnNfc2NoZW1lcy1cXHUwMDNlc2NoZW1lc19hcnJbc2NoZW1lc19pZHgrK10tXFx1MDAzZXF1b3RhcztcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6Mjk0OTpcXHRcXHRzeXNmc19xdW90YXMtXFx1MDAzZWVmZmVjdGl2ZV9zeiA9IHNjaGVtZS1cXHUwMDNlcXVvdGEuZXN6O1xcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yOTUwLVxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMDA6MzQ6MjcuMDI5MzA4NDU3WiIsIlNlcSI6MzYsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjg0MDU4MzcwMzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUGF0Y2ggQW5hbHlzaXMgYW5kIEtNU0FOIEFzc2Vzc21lbnQqKlxuXG5Pa2F5LCBsZXQncyBicmVhayBkb3duIHRoaXMgcGF0Y2guIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IGl0IGxvb2tzIGxpa2UgYSB0YXJnZXRlZCBmaXggd2l0aGluIHRoZSBEQU1PTiBxdW90YSBsb2dpYy4gRmlyc3QsIHRoZSBgZGFtb3NfcXVvdGFfaXNfZnVsbGAgZnVuY3Rpb24uIEkgc2VlIHRoYXQgdGhlcmUncyBhIG5ldyBjaGVjazogYGlmICghcXVvdGEtXHUwMDNlY2hhcmdlZF9zeikgcmV0dXJuIGZhbHNlO2AuIFJpZ2h0LCBwcmV2aW91c2x5LCBpZiB0aGUgYGNoYXJnZWRfc3pgIHdhcyB6ZXJvLCBvciBwb3RlbnRpYWxseSBpZiB0aGVyZSB3YXMgYSBzdWJ0bGUgdW5kZXJmbG93IGlzc3VlLCB0aGUgbG9naWMgY291bGQgaW5jb3JyZWN0bHkgZmxhZyB0aGUgcXVvdGEgYXMgZnVsbCB3aGVuIGl0IHdhc24ndC4gVGhlIHN1YnNlcXVlbnQgY2hlY2sgZm9yIGBxdW90YS1cdTAwM2Vlc3ogLSBxdW90YS1cdTAwM2VjaGFyZ2VkX3N6IFx1MDAzYyBtaW5fcmVnaW9uX3N6YCB3YXMgdGhlIGN1bHByaXQuIFRoaXMgbmV3IGNvbmRpdGlvbmFsIGd1YXJkcyBhZ2FpbnN0IHRoYXQuXG5cblRoZW4sIGluIGBkYW1vbl9kb19hcHBseV9zY2hlbWVzYCwgd2UncmUgYWRkaW5nIGFub3RoZXIgc2FmZWd1YXJkOiBgaWYgKCFxdW90YS1cdTAwM2Vlc3opIGNvbnRpbnVlO2AuICBNYWtlcyBzZW5zZS4gV2UncmUgbm93IHNraXBwaW5nIHNjaGVtZSBhcHBsaWNhdGlvbiBpZiB0aGUgZWZmZWN0aXZlIHNpemUgKGBlc3pgKSBpcyB6ZXJvLiBUaGlzIHByZXZlbnRzIHBvdGVudGlhbCBpc3N1ZXMgZnVydGhlciBkb3duIHRoZSBsaW5lIGlmIHRoZXJlJ3Mgbm8gZGVmaW5lZCBxdW90YSBzaXplLlxuXG5Ob3csIHRoZSBjcnVjaWFsIHF1ZXN0aW9uOiB1bmluaXRpYWxpemVkIG1lbW9yeS4gSXMgdGhpcyBwYXRjaCBpbnRyb2R1Y2luZyBhIHZ1bG5lcmFiaWxpdHk/IE5vLCBJIGRvbid0IHRoaW5rIHNvLiBUaGVyZSdzIG5vIGludHJvZHVjdGlvbiBvZiBuZXcga2VybmVsIHN0cnVjdHVyZXMgd2l0aCB1bmluaXRpYWxpemVkIGRhdGEuIE5vIGNvcHlpbmcgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdG8gdXNlciBzcGFjZS4gTm8gbmV3IGFsbG9jYXRpb25zIG9uIHRoZSBzdGFjayBvciBoZWFwLiBJdCdzIGFsbCBpbnRlcm5hbCBsb2dpYyB3aXRoaW4gdGhlIERBTU9OIHF1b3RhIGNhbGN1bGF0aW9ucy4gTm8gYnJhbmNoaW5nIG9uIHVuaXRpYWxpemVkIHZhcmlhYmxlcywgbm8gdW5zYWZlIHBvaW50ZXIgbWFuaXB1bGF0aW9uIG9yIG91dC1vZi1ib3VuZHMgcmVhZHMuIFRoZSBgcXVvdGFgIHN0cnVjdHVyZSBpdHNlbGYgc2hvdWxkIGJlIGZ1bGx5IGluaXRpYWxpemVkLCBhbmQgd2UncmUganVzdCBhbHRlcmluZyB0aGUgY29uZGl0aW9ucyB1bmRlciB3aGljaCB0aGUgcXVvdGEgaXMgY29uc2lkZXJlZCBcImZ1bGxcIiBvciBcImFwcGxpY2FibGUuXCJcblxuU28sIGdpdmVuIGFsbCB0aGF0LCBLTVNBTiBpc24ndCBuZWVkZWQgaGVyZS4gVGhlIHBhdGNoIGRvZXNuJ3QgaW50cm9kdWNlIGFueSBuZXcgYXZlbnVlcyBmb3IgbWVtb3J5IHNhZmV0eSBpc3N1ZXMgcmVsYXRlZCB0byB1bml0aWFsaXplZCBtZW1vcnkuIEFueSBleGlzdGluZyBtZW1vcnkgc2FmZXR5IGlzc3VlcyB3aXRoaW4gREFNT04gb3IgaXRzIHJlbGF0ZWQgbG9naWMgd2lsbCBiZSBhZGVxdWF0ZWx5IGhhbmRsZWQgYnkgc3RhbmRhcmQgS0FTQU4gZnV6emluZyBhbmQgdGhlIGV4aXN0aW5nIGJ1ZyBkZXRlY3RvcnMuIFRoaXMgcGF0Y2ggaXMgcHVyZWx5IGEgbG9naWMgY29ycmVjdGlvbiB3aXRoaW4gYW4gZXhpc3RpbmcgYXJlYS5cblxuQWxyaWdodCwgSSdtIGNvbmZpZGVudCBpbiB0aGF0IGFuYWx5c2lzLiBUaW1lIHRvIHJlY29yZCB0aGUgcmVzdWx0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6ODM5MCwiT3V0cHV0VG9rZW5zIjoxNTMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MzIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMDA6MzQ6MzUuNDM1MTQ5MTg0WiIsIlNlcSI6MzcsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTkzMDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBxdW90YSBjaGVja2luZyBsb2dpYyBpbiBEQU1PTiAobW0vZGFtb24vY29yZS5jKSBieSBhZGRpbmcgZWFybHkgcmV0dXJuL2NvbnRpbnVlIGNoZWNrcyB3aGVuIHF1b3RhLVxcdTAwM2VjaGFyZ2VkX3N6IGlzIDAgaW4gZGFtb3NfcXVvdGFfaXNfZnVsbCgpIGFuZCB3aGVuIHF1b3RhLVxcdTAwM2Vlc3ogaXMgMCBpbiBkYW1vbl9kb19hcHBseV9zY2hlbWVzKCkuIFRoZXNlIGNoYW5nZXMgcHVyZWx5IGFmZmVjdCBpbnRlcm5hbCBjb250cm9sIGZsb3cgYW5kIGFjY291bnRpbmcgaW4gREFNT04uIE5vIG5ldyBhbGxvY2F0aW9ucywgc3RhY2svaGVhcCBidWZmZXJzLCBvciBjb3BpZXMgdG8gdXNlciBzcGFjZSBhcmUgaW50cm9kdWNlZCwgbm9yIGlzIHRoZXJlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIG9yIGluZm9ybWF0aW9uIGxlYWtzLiBUaGVyZWZvcmUsIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIGlzIG5vdCByZXF1aXJlZCBhbmQgc3RhbmRhcmQgS0FTQU4gZnV6emluZyBpcyBzdWZmaWNpZW50LlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHF1b3RhIGNoZWNraW5nIGxvZ2ljIGluIERBTU9OIChtbS9kYW1vbi9jb3JlLmMpIGJ5IGFkZGluZyBlYXJseSByZXR1cm4vY29udGludWUgY2hlY2tzIHdoZW4gcXVvdGEtXFx1MDAzZWNoYXJnZWRfc3ogaXMgMCBpbiBkYW1vc19xdW90YV9pc19mdWxsKCkgYW5kIHdoZW4gcXVvdGEtXFx1MDAzZWVzeiBpcyAwIGluIGRhbW9uX2RvX2FwcGx5X3NjaGVtZXMoKS4gVGhlc2UgY2hhbmdlcyBwdXJlbHkgYWZmZWN0IGludGVybmFsIGNvbnRyb2wgZmxvdyBhbmQgYWNjb3VudGluZyBpbiBEQU1PTi4gTm8gbmV3IGFsbG9jYXRpb25zLCBzdGFjay9oZWFwIGJ1ZmZlcnMsIG9yIGNvcGllcyB0byB1c2VyIHNwYWNlIGFyZSBpbnRyb2R1Y2VkLCBub3IgaXMgdGhlcmUgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgb3IgaW5mb3JtYXRpb24gbGVha3MuIFRoZXJlZm9yZSwgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgaXMgbm90IHJlcXVpcmVkIGFuZCBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nIGlzIHN1ZmZpY2llbnQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflownrn55[1] Phase: Succeeded StartedAt: 2026-09-03 00:34:47 +0000 UTC FinishedAt: 2026-09-03 00:34:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflownrn55[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-09-03 00:34:47 +0000 UTC FinishedAt: 2026-09-03 00:34:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflownrn55[2] Phase: Succeeded StartedAt: 2026-09-03 00:34:47 +0000 UTC FinishedAt: 2026-09-03 04:17:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflownrn55[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR","SYSFS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_commit_ctx","damon_sysfs_add_schemes","damon_set_schemes","damon_new_scheme","damon_add_scheme"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR","SYSFS"],"series_id":"dd257626-28f9-4c15-a268-cf8c2e5068bf","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-09-03 00:34:47 +0000 UTC FinishedAt: 2026-09-03 04:17:46 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR","SYSFS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_commit_ctx","damon_sysfs_add_schemes","damon_set_schemes","damon_new_scheme","damon_add_scheme"],"skip_cover_check":true},"patched":{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR","SYSFS"],"series_id":"dd257626-28f9-4c15-a268-cf8c2e5068bf","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflownrn55[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR","SYSFS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_commit_ctx","damon_sysfs_add_schemes","damon_set_schemes","damon_new_scheme","damon_add_scheme"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR","SYSFS"],"series_id":"dd257626-28f9-4c15-a268-cf8c2e5068bf","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-09-03 00:34:47 +0000 UTC FinishedAt: 2026-09-03 00:34:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflownrn55[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR","SYSFS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_commit_ctx","damon_sysfs_add_schemes","damon_set_schemes","damon_new_scheme","damon_add_scheme"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR","SYSFS"],"series_id":"dd257626-28f9-4c15-a268-cf8c2e5068bf","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-09-03 00:34:47 +0000 UTC FinishedAt: 2026-09-03 00:34:54 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR","SYSFS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflownrn55/series-workflownrn55-convert-artifact-1393702888/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflownrn55[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR","SYSFS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_commit_ctx","damon_sysfs_add_schemes","damon_set_schemes","damon_new_scheme","damon_add_scheme"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR","SYSFS"],"series_id":"dd257626-28f9-4c15-a268-cf8c2e5068bf","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-09-03 00:34:57 +0000 UTC FinishedAt: 2026-09-03 00:52:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflownrn55[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR","SYSFS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_commit_ctx","damon_sysfs_add_schemes","damon_set_schemes","damon_new_scheme","damon_add_scheme"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR","SYSFS"],"series_id":"dd257626-28f9-4c15-a268-cf8c2e5068bf","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-09-03 00:34:57 +0000 UTC FinishedAt: 2026-09-03 00:52:38 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*5de31798-7c61-4b3c-b126-ec7f3eb2d0d5,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflownrn55/series-workflownrn55-convert-artifact-1393702888/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "c8276e66-c5ba-407e-8f1f-0a0356a782f9", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflownrn55/series-workflownrn55-build-action-38190430/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflownrn55[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR","SYSFS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_commit_ctx","damon_sysfs_add_schemes","damon_set_schemes","damon_new_scheme","damon_add_scheme"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR","SYSFS"],"series_id":"dd257626-28f9-4c15-a268-cf8c2e5068bf","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-09-03 00:34:57 +0000 UTC FinishedAt: 2026-09-03 00:52:28 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*5de31798-7c61-4b3c-b126-ec7f3eb2d0d5,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflownrn55/series-workflownrn55-convert-artifact-1393702888/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "c8276e66-c5ba-407e-8f1f-0a0356a782f9", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflownrn55/series-workflownrn55-build-action-38190430/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflownrn55[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR","SYSFS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_commit_ctx","damon_sysfs_add_schemes","damon_set_schemes","damon_new_scheme","damon_add_scheme"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR","SYSFS"],"series_id":"dd257626-28f9-4c15-a268-cf8c2e5068bf","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-09-03 00:52:38 +0000 UTC FinishedAt: 2026-09-03 00:52:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflownrn55[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR","SYSFS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_commit_ctx","damon_sysfs_add_schemes","damon_set_schemes","damon_new_scheme","damon_add_scheme"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR","SYSFS"],"series_id":"dd257626-28f9-4c15-a268-cf8c2e5068bf","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-09-03 00:52:38 +0000 UTC FinishedAt: 2026-09-03 00:52:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflownrn55[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR","SYSFS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_commit_ctx","damon_sysfs_add_schemes","damon_set_schemes","damon_new_scheme","damon_add_scheme"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR","SYSFS"],"series_id":"dd257626-28f9-4c15-a268-cf8c2e5068bf","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-09-03 00:52:38 +0000 UTC FinishedAt: 2026-09-03 00:52:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflownrn55[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR","SYSFS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_commit_ctx","damon_sysfs_add_schemes","damon_set_schemes","damon_new_scheme","damon_add_scheme"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR","SYSFS"],"series_id":"dd257626-28f9-4c15-a268-cf8c2e5068bf","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-09-03 00:52:38 +0000 UTC FinishedAt: 2026-09-03 00:52:43 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR","SYSFS"],"series_id":"dd257626-28f9-4c15-a268-cf8c2e5068bf","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflownrn55/series-workflownrn55-convert-artifact-2553478863/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflownrn55[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR","SYSFS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_commit_ctx","damon_sysfs_add_schemes","damon_set_schemes","damon_new_scheme","damon_add_scheme"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR","SYSFS"],"series_id":"dd257626-28f9-4c15-a268-cf8c2e5068bf","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-09-03 00:52:48 +0000 UTC FinishedAt: 2026-09-03 00:54:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflownrn55[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR","SYSFS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_commit_ctx","damon_sysfs_add_schemes","damon_set_schemes","damon_new_scheme","damon_add_scheme"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR","SYSFS"],"series_id":"dd257626-28f9-4c15-a268-cf8c2e5068bf","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-09-03 00:52:48 +0000 UTC FinishedAt: 2026-09-03 00:54:32 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*c8276e66-c5ba-407e-8f1f-0a0356a782f9,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflownrn55/series-workflownrn55-build-action-38190430/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflownrn55[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR","SYSFS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_commit_ctx","damon_sysfs_add_schemes","damon_set_schemes","damon_new_scheme","damon_add_scheme"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR","SYSFS"],"series_id":"dd257626-28f9-4c15-a268-cf8c2e5068bf","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-09-03 00:54:42 +0000 UTC FinishedAt: 2026-09-03 00:54:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflownrn55[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR","SYSFS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_commit_ctx","damon_sysfs_add_schemes","damon_set_schemes","damon_new_scheme","damon_add_scheme"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR","SYSFS"],"series_id":"dd257626-28f9-4c15-a268-cf8c2e5068bf","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-09-03 00:54:42 +0000 UTC FinishedAt: 2026-09-03 00:54:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflownrn55[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR","SYSFS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_commit_ctx","damon_sysfs_add_schemes","damon_set_schemes","damon_new_scheme","damon_add_scheme"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR","SYSFS"],"series_id":"dd257626-28f9-4c15-a268-cf8c2e5068bf","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-09-03 00:54:42 +0000 UTC FinishedAt: 2026-09-03 01:14:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflownrn55[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR","SYSFS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_commit_ctx","damon_sysfs_add_schemes","damon_set_schemes","damon_new_scheme","damon_add_scheme"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR","SYSFS"],"series_id":"dd257626-28f9-4c15-a268-cf8c2e5068bf","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-09-03 00:54:42 +0000 UTC FinishedAt: 2026-09-03 01:14:05 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*5de31798-7c61-4b3c-b126-ec7f3eb2d0d5,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflownrn55/series-workflownrn55-convert-artifact-2553478863/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "5bdc2d51-b1e1-42de-b185-a79956c90c6b", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflownrn55/series-workflownrn55-build-action-1659799267/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflownrn55[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR","SYSFS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_commit_ctx","damon_sysfs_add_schemes","damon_set_schemes","damon_new_scheme","damon_add_scheme"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR","SYSFS"],"series_id":"dd257626-28f9-4c15-a268-cf8c2e5068bf","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-09-03 00:54:42 +0000 UTC FinishedAt: 2026-09-03 01:13:55 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*5de31798-7c61-4b3c-b126-ec7f3eb2d0d5,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflownrn55/series-workflownrn55-convert-artifact-2553478863/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "5bdc2d51-b1e1-42de-b185-a79956c90c6b", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflownrn55/series-workflownrn55-build-action-1659799267/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflownrn55[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR","SYSFS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_commit_ctx","damon_sysfs_add_schemes","damon_set_schemes","damon_new_scheme","damon_add_scheme"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR","SYSFS"],"series_id":"dd257626-28f9-4c15-a268-cf8c2e5068bf","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-09-03 01:14:05 +0000 UTC FinishedAt: 2026-09-03 01:14:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflownrn55[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR","SYSFS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_commit_ctx","damon_sysfs_add_schemes","damon_set_schemes","damon_new_scheme","damon_add_scheme"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR","SYSFS"],"series_id":"dd257626-28f9-4c15-a268-cf8c2e5068bf","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-09-03 01:14:05 +0000 UTC FinishedAt: 2026-09-03 01:14:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflownrn55[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR","SYSFS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_commit_ctx","damon_sysfs_add_schemes","damon_set_schemes","damon_new_scheme","damon_add_scheme"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR","SYSFS"],"series_id":"dd257626-28f9-4c15-a268-cf8c2e5068bf","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-09-03 01:14:05 +0000 UTC FinishedAt: 2026-09-03 01:16:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflownrn55[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR","SYSFS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_commit_ctx","damon_sysfs_add_schemes","damon_set_schemes","damon_new_scheme","damon_add_scheme"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR","SYSFS"],"series_id":"dd257626-28f9-4c15-a268-cf8c2e5068bf","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-09-03 01:14:05 +0000 UTC FinishedAt: 2026-09-03 01:15:52 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*5bdc2d51-b1e1-42de-b185-a79956c90c6b,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflownrn55/series-workflownrn55-build-action-1659799267/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflownrn55[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR","SYSFS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_commit_ctx","damon_sysfs_add_schemes","damon_set_schemes","damon_new_scheme","damon_add_scheme"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR","SYSFS"],"series_id":"dd257626-28f9-4c15-a268-cf8c2e5068bf","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-09-03 01:16:02 +0000 UTC FinishedAt: 2026-09-03 04:17:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflownrn55[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR","SYSFS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_commit_ctx","damon_sysfs_add_schemes","damon_set_schemes","damon_new_scheme","damon_add_scheme"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR","SYSFS"],"series_id":"dd257626-28f9-4c15-a268-cf8c2e5068bf","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-09-03 01:16:02 +0000 UTC FinishedAt: 2026-09-03 04:17:46 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_commit_ctx","damon_sysfs_add_schemes","damon_set_schemes","damon_new_scheme","damon_add_scheme"],"skip_cover_check":true},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*c8276e66-c5ba-407e-8f1f-0a0356a782f9,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*5bdc2d51-b1e1-42de-b185-a79956c90c6b,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflownrn55/series-workflownrn55-build-action-38190430/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflownrn55/series-workflownrn55-build-action-1659799267/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflownrn55[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR","SYSFS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_commit_ctx","damon_sysfs_add_schemes","damon_set_schemes","damon_new_scheme","damon_add_scheme"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR","SYSFS"],"series_id":"dd257626-28f9-4c15-a268-cf8c2e5068bf","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-09-03 01:16:02 +0000 UTC FinishedAt: 2026-09-03 01:16:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflownrn55[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR","SYSFS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_commit_ctx","damon_sysfs_add_schemes","damon_set_schemes","damon_new_scheme","damon_add_scheme"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR","SYSFS"],"series_id":"dd257626-28f9-4c15-a268-cf8c2e5068bf","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-09-03 01:16:02 +0000 UTC FinishedAt: 2026-09-03 01:16:06 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_commit_ctx","damon_sysfs_add_schemes","damon_set_schemes","damon_new_scheme","damon_add_scheme"],"skip_cover_check":true},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflownrn55/series-workflownrn55-convert-artifact-279375496/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflownrn55[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR","SYSFS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_commit_ctx","damon_sysfs_add_schemes","damon_set_schemes","damon_new_scheme","damon_add_scheme"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR","SYSFS"],"series_id":"dd257626-28f9-4c15-a268-cf8c2e5068bf","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-09-03 01:16:02 +0000 UTC FinishedAt: 2026-09-03 01:16:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflownrn55[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR","SYSFS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_commit_ctx","damon_sysfs_add_schemes","damon_set_schemes","damon_new_scheme","damon_add_scheme"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR","SYSFS"],"series_id":"dd257626-28f9-4c15-a268-cf8c2e5068bf","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-09-03 01:16:02 +0000 UTC FinishedAt: 2026-09-03 01:16:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflownrn55[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR","SYSFS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_commit_ctx","damon_sysfs_add_schemes","damon_set_schemes","damon_new_scheme","damon_add_scheme"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR","SYSFS"],"series_id":"dd257626-28f9-4c15-a268-cf8c2e5068bf","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-09-03 01:16:02 +0000 UTC FinishedAt: 2026-09-03 01:16:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflownrn55[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR","SYSFS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_commit_ctx","damon_sysfs_add_schemes","damon_set_schemes","damon_new_scheme","damon_add_scheme"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR","SYSFS"],"series_id":"dd257626-28f9-4c15-a268-cf8c2e5068bf","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-09-03 01:16:12 +0000 UTC FinishedAt: 2026-09-03 04:17:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflownrn55[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR","SYSFS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_commit_ctx","damon_sysfs_add_schemes","damon_set_schemes","damon_new_scheme","damon_add_scheme"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"178b3d97bf1f15f598ea7cc615a40c115e528e1c","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_PADDR","DAMON_VADDR","SYSFS"],"series_id":"dd257626-28f9-4c15-a268-cf8c2e5068bf","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-09-03 01:16:12 +0000 UTC FinishedAt: 2026-09-03 04:17:36 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*c8276e66-c5ba-407e-8f1f-0a0356a782f9,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*5bdc2d51-b1e1-42de-b185-a79956c90c6b,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Fuzz,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflownrn55/series-workflownrn55-build-action-38190430/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:/patched,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflownrn55/series-workflownrn55-build-action-1659799267/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:config,Path:/tmp/config.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflownrn55/series-workflownrn55-convert-artifact-279375496/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,}