Name: series-workflowrnrmm Phase: Succeeded StartedAt: 2026-08-08 03:19:49 +0000 UTC FinishedAt: 2026-08-08 07:25:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrnrmm[0] Phase: Succeeded StartedAt: 2026-08-08 03:19:49 +0000 UTC FinishedAt: 2026-08-08 03:44:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrnrmm[0].run-triage Phase: Succeeded StartedAt: 2026-08-08 03:19:49 +0000 UTC FinishedAt: 2026-08-08 03:44:15 +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": "8086604be9733378461a5534c39cb72635226b23", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KASAN", "KASAN_GENERIC" ], "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": "8086604be9733378461a5534c39cb72635226b23", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KASAN", "KASAN_GENERIC" ], "series_id": "cbf6df25-6c5e-4a69-bda7-074def249357" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "kasan_quarantine_remove_cache", "kasan_cache_shrink", "kasan_cache_shutdown" ], "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+CgkJCTx0ZD4yMDI2LzA4LzA4IDAzOjQzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tBU0FOJiMzNDssCiAgICAmIzM0O0tBU0FOX0dFTkVSSUMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtrYXNhbl9xdWFyYW50aW5lX3JlbW92ZV9jYWNoZSYjMzQ7LAogICAgJiMzNDtrYXNhbl9jYWNoZV9zaHJpbmsmIzM0OywKICAgICYjMzQ7a2FzYW5fY2FjaGVfc2h1dGRvd24mIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBga2FzYW5fcXVhcmFudGluZV9yZW1vdmVfY2FjaGVgIGluIGBtbS9rYXNhbi9xdWFyYW50aW5lLmNgIHRvIGl0ZXJhdGUgb3ZlciBhbGwgcG9zc2libGUgQ1BVcyBpbnN0ZWFkIG9mIG9ubHkgb25saW5lIENQVXMgd2hlbiBkcmFpbmluZyB0aGUgc2hyaW5rIGxpc3QuIFRoaXMgZml4ZXMgYSBwb3RlbnRpYWwgaXNzdWUgd2hlcmUgY2FjaGUgb2JqZWN0cyBjb3VsZCBiZSBsZWZ0IG9uIHRoZSBzaHJpbmsgbGlzdCBvZiBhIENQVSB0aGF0IGdvZXMgb2ZmbGluZS4gVGhpcyBjaGFuZ2UgYWRkcmVzc2VzIGEgbWVtb3J5IG1hbmFnZW1lbnQgaXNzdWUgKGxpa2VseSBhIG1lbW9yeSBsZWFrIG9yIHVzZS1hZnRlci1mcmVlIHJlbGF0ZWQgdG8gS0FTQU4mIzM5O3MgcXVhcmFudGluZSkgYW5kIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGFsbG9jYXRpb25zLCBzdHJ1Y3R1cmVzIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciBsb2dpYyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gU3RhbmRhcmQgS0FTQU4gYW5kIG90aGVyIG1lbW9yeSBkZXRlY3RvcnMgYXJlIHN1ZmZpY2llbnQgZm9yIHRoaXMgY29kZSwgYW5kIEtNU0FOIGlzIG5vdCBhcHBsaWNhYmxlLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBLQVNBTiBxdWFyYW50aW5lIGxvZ2ljIGJ5IGl0ZXJhdGluZyBvdmVyIGFsbCBwb3NzaWJsZSBDUFVzIGluc3RlYWQgb2Ygb25seSBvbmxpbmUgQ1BVcyB3aGVuIHJlbW92aW5nIGEgY2FjaGUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIGtlcm5lbCBtZW1vcnkgZGVidWdnaW5nIGxvZ2ljIHRoYXQgaXMgcmVhY2hhYmxlIHdoZW4gYSBrbWVtX2NhY2hlIGlzIHNocnVuayBvciBkZXN0cm95ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDM6NDM8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBmYTE4ZmE3MDJiMjFkYmFkZmZmYWE1ZTQ4OGYzNmNkNDQ2MGM1YWU4XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBBdWcgOCAwMzo0MzoxMSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9tbS9rYXNhbi9xdWFyYW50aW5lLmMgYi9tbS9rYXNhbi9xdWFyYW50aW5lLmNcbmluZGV4IDY5NThhYTcxM2M2N2UuLjE2ZjRlNjdiZWVlODIgMTAwNjQ0XG4tLS0gYS9tbS9rYXNhbi9xdWFyYW50aW5lLmNcbiYjNDM7JiM0MzsmIzQzOyBiL21tL2thc2FuL3F1YXJhbnRpbmUuY1xuQEAgLTM1NSw3ICYjNDM7MzU1LDEyIEBAIHZvaWQga2FzYW5fcXVhcmFudGluZV9yZW1vdmVfY2FjaGUoc3RydWN0IGttZW1fY2FjaGUgKmNhY2hlKVxuIFx0ICovXG4gXHRvbl9lYWNoX2NwdShwZXJfY3B1X3JlbW92ZV9jYWNoZSwgY2FjaGUsIDEpO1xuIFxuLVx0Zm9yX2VhY2hfb25saW5lX2NwdShjcHUpIHtcbiYjNDM7XHQvKlxuJiM0MztcdCAqIEEgQ1BVIGNhbiBnbyBvZmZsaW5lIGFmdGVyIG9uX2VhY2hfY3B1KCkgcmV0dXJucywgbGVhdmluZyBjYWNoZVxuJiM0MztcdCAqIG9iamVjdHMgb24gdGhhdCBDUFUmIzM5O3Mgc2hyaW5rIGxpc3QuIFNjYW4gYWxsIHBvc3NpYmxlIENQVXMgdG9cbiYjNDM7XHQgKiBkcmFpbiB0aG9zZSBsaXN0cy5cbiYjNDM7XHQgKi9cbiYjNDM7XHRmb3JfZWFjaF9wb3NzaWJsZV9jcHUoY3B1KSB7XG4gXHRcdHNxID0gcGVyX2NwdV9wdHIoXHUwMDI2c2hyaW5rX3FsaXN0LCBjcHUpO1xuIFx0XHRyYXdfc3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2c3EtXHUwMDNlbG9jaywgZmxhZ3MpO1xuIFx0XHRxbGlzdF9tb3ZlX2NhY2hlKFx1MDAyNnNxLVx1MDAzZXFsaXN0LCBcdTAwMjZ0b19mcmVlLCBjYWNoZSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDM6NDM8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tBU0FOJiMzNDssCiAgICAmIzM0O0tBU0FOX0dFTkVSSUMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtrYXNhbl9xdWFyYW50aW5lX3JlbW92ZV9jYWNoZSYjMzQ7LAogICAgJiMzNDtrYXNhbl9jYWNoZV9zaHJpbmsmIzM0OywKICAgICYjMzQ7a2FzYW5fY2FjaGVfc2h1dGRvd24mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gS0FTQU4gcXVhcmFudGluZSBsb2dpYyBieSBpdGVyYXRpbmcgb3ZlciBhbGwgcG9zc2libGUgQ1BVcyBpbnN0ZWFkIG9mIG9ubHkgb25saW5lIENQVXMgd2hlbiByZW1vdmluZyBhIGNhY2hlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBrZXJuZWwgbWVtb3J5IGRlYnVnZ2luZyBsb2dpYyB0aGF0IGlzIHJlYWNoYWJsZSB3aGVuIGEga21lbV9jYWNoZSBpcyBzaHJ1bmsgb3IgZGVzdHJveWVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZmExOGZhNzAyYjIxZGJhZGZmZmFhNWU0ODhmMzZjZDQ0NjBjNWFlOApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTYXQgQXVnIDggMDM6NDM6MTEgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9tbS9rYXNhbi9xdWFyYW50aW5lLmMgYi9tbS9rYXNhbi9xdWFyYW50aW5lLmMKaW5kZXggNjk1OGFhNzEzYzY3ZS4uMTZmNGU2N2JlZWU4MiAxMDA2NDQKLS0tIGEvbW0va2FzYW4vcXVhcmFudGluZS5jCiYjNDM7JiM0MzsmIzQzOyBiL21tL2thc2FuL3F1YXJhbnRpbmUuYwpAQCAtMzU1LDcgJiM0MzszNTUsMTIgQEAgdm9pZCBrYXNhbl9xdWFyYW50aW5lX3JlbW92ZV9jYWNoZShzdHJ1Y3Qga21lbV9jYWNoZSAqY2FjaGUpCiAJICovCiAJb25fZWFjaF9jcHUocGVyX2NwdV9yZW1vdmVfY2FjaGUsIGNhY2hlLCAxKTsKIAotCWZvcl9lYWNoX29ubGluZV9jcHUoY3B1KSB7CiYjNDM7CS8qCiYjNDM7CSAqIEEgQ1BVIGNhbiBnbyBvZmZsaW5lIGFmdGVyIG9uX2VhY2hfY3B1KCkgcmV0dXJucywgbGVhdmluZyBjYWNoZQomIzQzOwkgKiBvYmplY3RzIG9uIHRoYXQgQ1BVJiMzOTtzIHNocmluayBsaXN0LiBTY2FuIGFsbCBwb3NzaWJsZSBDUFVzIHRvCiYjNDM7CSAqIGRyYWluIHRob3NlIGxpc3RzLgomIzQzOwkgKi8KJiM0MzsJZm9yX2VhY2hfcG9zc2libGVfY3B1KGNwdSkgewogCQlzcSA9IHBlcl9jcHVfcHRyKCZhbXA7c2hyaW5rX3FsaXN0LCBjcHUpOwogCQlyYXdfc3Bpbl9sb2NrX2lycXNhdmUoJmFtcDtzcS0mZ3Q7bG9jaywgZmxhZ3MpOwogCQlxbGlzdF9tb3ZlX2NhY2hlKCZhbXA7c3EtJmd0O3FsaXN0LCAmYW1wO3RvX2ZyZWUsIGNhY2hlKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDM6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA2MwoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDE5MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBLQVNBTiBCdWcgRml4OiBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyB0aGUgS0FTQU4gcXVhcmFudGluZSBsb2dpYy4gU3BlY2lmaWNhbGx5LCBpdCYjMzk7cyBzd2FwcGluZyBgZm9yX2VhY2hfb25saW5lX2NwdShjcHUpYCB3aXRoIGBmb3JfZWFjaF9wb3NzaWJsZV9jcHUoY3B1KWAgd2l0aGluIHRoZSBga2FzYW5fcXVhcmFudGluZV9yZW1vdmVfY2FjaGVgIGZ1bmN0aW9uIGluIGBtbS9rYXNhbi9xdWFyYW50aW5lLmNgLiBUaGUgcGF0Y2ggZGVzY3JpcHRpb24gZXhwbGljaXRseSBjYWxscyB0aGlzIGEgYnVnIGZpeCwgd2hpY2ggaW1tZWRpYXRlbHkgcGlxdWVzIG15IGludGVyZXN0IGZyb20gYSBmdXp6aW5nIHBlcnNwZWN0aXZlLgoKR2l2ZW4gdGhhdCBLQVNBTiBpcyBvZnRlbiBlbmFibGVkIGJ5IGRlZmF1bHQgZHVyaW5nIGZ1enppbmcsIGFuZCB0aGlzIGlzIGEgcmVsYXRpdmVseSBsb2NhbGl6ZWQgZml4IHdpdGhpbiBLQVNBTiwgdGhlIHBvdGVudGlhbCBpbXBhY3Qgb24gZnV6emluZyBlZmZlY3RpdmVuZXNzIHdhcnJhbnRzIGEgZGVlcGVyIGxvb2suIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgdGhpcyBjaGFuZ2UgaW50cm9kdWNlcyBuZXcgZnV6emluZyB0YXJnZXRzIG9yIGFsdGVycyBleGlzdGluZyBvbmVzLgoKVGhlIGZ1bmN0aW9uIGluIHF1ZXN0aW9uIGlzIGBrYXNhbl9xdWFyYW50aW5lX3JlbW92ZV9jYWNoZWAuIFRoZSBuYW1lIGl0c2VsZiBoaW50cyBhdCBpdHMgcHVycG9zZTogcmVtb3ZpbmcgYSBjYWNoZSBmcm9tIHRoZSBxdWFyYW50aW5lLiBBIHF1aWNrIG1lbnRhbCByZWZyZXNo4oCmIGFoLCByaWdodCwgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbiBhIGBrbWVtX2NhY2hlYCBpcyBkZXN0cm95ZWQuIFRoYXQmIzM5O3MgYSBjb3JlIGtlcm5lbCBmdW5jdGlvbiwgYW5kIHRoZSBga21lbV9jYWNoZWAgc3Vic3lzdGVtIGlzIG9mdGVuIGEgc291cmNlIG9mIGludGVyZXN0aW5nIGZ1enppbmcgdGFyZ2V0cy4KClllcywgdGhpcyBpcyBkZWZpbml0ZWx5IHdvcnRoIGZ1enppbmcuIEl0JiMzOTtzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYG1tL2thc2FuL3F1YXJhbnRpbmUuY2AsIHNwZWNpZmljYWxseSByZWxhdGVkIHRvIHRoZSByZW1vdmFsIG9mIG1lbW9yeSBjYWNoZXMuIExldCBtZSB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgYGthc2FuX3F1YXJhbnRpbmVfcmVtb3ZlX2NhY2hlYCBhbmQgdGhlIGNvbnRleHQgaW4gd2hpY2ggaXQmIzM5O3MgY2FsbGVkLiBUaGlzIGNvdWxkIGJlIGEgZ29vZCBwbGFjZSB0byBzdGFydCBteSBmdXp6aW5nIGFuYWx5c2lzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDAzOjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2thc2FuX3F1YXJhbnRpbmVfcmVtb3ZlX2NhY2hlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL2thc2FuL2dlbmVyaWMuYz0yMTU9dm9pZCBrYXNhbl9jYWNoZV9zaHJpbmsoc3RydWN0IGttZW1fY2FjaGUgKmNhY2hlKVxubW0va2FzYW4vZ2VuZXJpYy5jLTIxNi17XG5tbS9rYXNhbi9nZW5lcmljLmM6MjE3Olx0a2FzYW5fcXVhcmFudGluZV9yZW1vdmVfY2FjaGUoY2FjaGUpO1xubW0va2FzYW4vZ2VuZXJpYy5jLTIxOC19XG4tLVxubW0va2FzYW4vZ2VuZXJpYy5jPTIyMD12b2lkIGthc2FuX2NhY2hlX3NodXRkb3duKHN0cnVjdCBrbWVtX2NhY2hlICpjYWNoZSlcbi0tXG5tbS9rYXNhbi9nZW5lcmljLmMtMjIyLVx0aWYgKCFfX2ttZW1fY2FjaGVfZW1wdHkoY2FjaGUpKVxubW0va2FzYW4vZ2VuZXJpYy5jOjIyMzpcdFx0a2FzYW5fcXVhcmFudGluZV9yZW1vdmVfY2FjaGUoY2FjaGUpO1xubW0va2FzYW4vZ2VuZXJpYy5jLTIyNC19XG4tLVxubW0va2FzYW4va2FzYW4uaD00MDY9dm9pZCBrYXNhbl9xdWFyYW50aW5lX3JlZHVjZSh2b2lkKTtcbm1tL2thc2FuL2thc2FuLmg6NDA3OnZvaWQga2FzYW5fcXVhcmFudGluZV9yZW1vdmVfY2FjaGUoc3RydWN0IGttZW1fY2FjaGUgKmNhY2hlKTtcbm1tL2thc2FuL2thc2FuLmgtNDA4LSNlbHNlXG4tLVxubW0va2FzYW4va2FzYW4uaD00MTA9c3RhdGljIGlubGluZSB2b2lkIGthc2FuX3F1YXJhbnRpbmVfcmVkdWNlKHZvaWQpIHsgfVxubW0va2FzYW4va2FzYW4uaDo0MTE6c3RhdGljIGlubGluZSB2b2lkIGthc2FuX3F1YXJhbnRpbmVfcmVtb3ZlX2NhY2hlKHN0cnVjdCBrbWVtX2NhY2hlICpjYWNoZSkgeyB9XG5tbS9rYXNhbi9rYXNhbi5oLTQxMi0jZW5kaWZcbi0tXG5tbS9rYXNhbi9xdWFyYW50aW5lLmM9MTg1PWJvb2wga2FzYW5fcXVhcmFudGluZV9wdXQoc3RydWN0IGttZW1fY2FjaGUgKmNhY2hlLCB2b2lkICpvYmplY3QpXG4tLVxubW0va2FzYW4vcXVhcmFudGluZS5jLTIwMC1cdCAqIE5vdGU6IGlycSBtdXN0IGJlIGRpc2FibGVkIHVudGlsIGFmdGVyIHdlIG1vdmUgdGhlIGJhdGNoIHRvIHRoZVxubW0va2FzYW4vcXVhcmFudGluZS5jOjIwMTpcdCAqIGdsb2JhbCBxdWFyYW50aW5lLiBPdGhlcndpc2Uga2FzYW5fcXVhcmFudGluZV9yZW1vdmVfY2FjaGUoKSBjYW5cbm1tL2thc2FuL3F1YXJhbnRpbmUuYy0yMDItXHQgKiBtaXNzIHNvbWUgb2JqZWN0cyBiZWxvbmdpbmcgdG8gdGhlIGNhY2hlIGlmIHRoZXkgYXJlIGluIG91ciBsb2NhbFxubW0va2FzYW4vcXVhcmFudGluZS5jOjIwMzpcdCAqIHRlbXAgbGlzdC4ga2FzYW5fcXVhcmFudGluZV9yZW1vdmVfY2FjaGUoKSBleGVjdXRlcyBvbl9lYWNoX2NwdSgpXG5tbS9rYXNhbi9xdWFyYW50aW5lLmMtMjA0LVx0ICogYXQgdGhlIGJlZ2lubmluZyB3aGljaCBlbnN1cmVzIHRoYXQgaXQgZWl0aGVyIHNlZXMgdGhlIG9iamVjdHMgaW5cbi0tXG5tbS9rYXNhbi9xdWFyYW50aW5lLmM9MjM5PXZvaWQga2FzYW5fcXVhcmFudGluZV9yZWR1Y2Uodm9pZClcbi0tXG5tbS9rYXNhbi9xdWFyYW50aW5lLmMtMjUwLVx0Lypcbm1tL2thc2FuL3F1YXJhbnRpbmUuYzoyNTE6XHQgKiBzcmN1IGNyaXRpY2FsIHNlY3Rpb24gZW5zdXJlcyB0aGF0IGthc2FuX3F1YXJhbnRpbmVfcmVtb3ZlX2NhY2hlKClcbm1tL2thc2FuL3F1YXJhbnRpbmUuYy0yNTItXHQgKiB3aWxsIG5vdCBtaXNzIG9iamVjdHMgYmVsb25naW5nIHRvIHRoZSBjYWNoZSB3aGlsZSB0aGV5IGFyZSBpbiBvdXJcbi0tXG5tbS9rYXNhbi9xdWFyYW50aW5lLmM9MzI2PXN0YXRpYyB2b2lkIHBlcl9jcHVfcmVtb3ZlX2NhY2hlKHZvaWQgKmFyZylcbi0tXG5tbS9rYXNhbi9xdWFyYW50aW5lLmMtMzQxLS8qIEZyZWUgYWxsIHF1YXJhbnRpbmVkIG9iamVjdHMgYmVsb25naW5nIHRvIGNhY2hlLiAqL1xubW0va2FzYW4vcXVhcmFudGluZS5jOjM0Mjp2b2lkIGthc2FuX3F1YXJhbnRpbmVfcmVtb3ZlX2NhY2hlKHN0cnVjdCBrbWVtX2NhY2hlICpjYWNoZSlcbm1tL2thc2FuL3F1YXJhbnRpbmUuYy0zNDMte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDAzOjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzODUKCQkJCQkJCW91dHB1dDogMTgKCQkJCQkJCXRob3VnaHRzOiAxNTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBUYXJnZXQgSWRlbnRpZmljYXRpb246IGBrYXNhbl9xdWFyYW50aW5lX3JlbW92ZV9jYWNoZWAqKgoKT2theSwgc28gSSYjMzk7dmUgc3BvdHRlZCBga2FzYW5fcXVhcmFudGluZV9yZW1vdmVfY2FjaGVgLiBUaGF0JiMzOTtzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gSSBrbm93IGl0JiMzOTtzIGNhbGxlZCBmcm9tIGBrYXNhbl9jYWNoZV9zaHJpbmtgIGFuZCBga2FzYW5fY2FjaGVfc2h1dGRvd25gLCBhbmQgdGhvc2UsIGluIHR1cm4sIGFyZSB0cmlnZ2VyZWQgd2hlbiBhIGttZW1fY2FjaGUgaXMgZWl0aGVyIHNocnVuayBvciBkZXN0cm95ZWQuIFRoZSBmYWN0IHRoYXQgdGhlIHF1YXJhbnRpbmUgcmVtb3ZhbCBpcyBoYXBwZW5pbmcgZHVyaW5nIHRoZXNlIGNhY2hlIGxpZmVjeWNsZSBldmVudHMgc2NyZWFtcyAmIzM0O2Z1enppbmcgb3Bwb3J0dW5pdHkmIzM0OyB0byBtZS4gSSBtZWFuLCBtZW1vcnkgbWFuYWdlbWVudCBzdHVmZiBpcyBhbG1vc3QgYWx3YXlzIGludGVyZXN0aW5nIGZyb20gYSBmdXp6aW5nIHBlcnNwZWN0aXZlLCBhbmQgdGhpcyBoYXMgYSBuaWNlLCBjb25maW5lZCBzY29wZS4gVGhlIG1haW4gZm9jdXMgaGVyZSB3aWxsIGJlIG9uIHRob3NlIHRocmVlIHN5bWJvbHM6IGBrYXNhbl9xdWFyYW50aW5lX3JlbW92ZV9jYWNoZWAsIGBrYXNhbl9jYWNoZV9zaHJpbmtgLCBhbmQgYGthc2FuX2NhY2hlX3NodXRkb3duYC4KCk5vdywgSSBuZWVkIHRvIGtub3cgbW9yZSBhYm91dCBga2FzYW5fcXVhcmFudGluZV9yZW1vdmVfY2FjaGVgLiBJcyBpdCBleHBvcnRlZD8gSSYjMzk7bGwgcXVpY2tseSBjaGVjayBpdHMgZGVmaW5pdGlvbiwgaXQmIzM5O3MgaW4gYG1tL2thc2FuL3F1YXJhbnRpbmUuY2AuIE9rYXksIHNvIGl0JiMzOTtzIG5vdCBzdGF0aWMgdGhlbiwgd2hpY2ggaXMgZ29vZCBmb3IgbWUuIFRpbWUgdG8gY2hlY2sgdGhlIGNvbmZpZ3MuIEkga25vdyBJIG5lZWQgS0FTQU5fR0VORVJJQyBmb3IgdGhpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMzo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgS0FTQU4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9hcm0vS2NvbmZpZz0xMDM0PWNvbmZpZyBQQUdFX09GRlNFVFxuLS1cbmFyY2gvYXJtL0tjb25maWctMTA0MS1cbmFyY2gvYXJtL0tjb25maWc6MTA0Mjpjb25maWcgS0FTQU5fU0hBRE9XX09GRlNFVFxuYXJjaC9hcm0vS2NvbmZpZy0xMDQzLVx0aGV4XG4tLVxuYXJjaC9hcm02NC9LY29uZmlnPTM4Mz1jb25maWcgQlVJTFRJTl9SRVRVUk5fQUREUkVTU19TVFJJUFNfUEFDXG4tLVxuYXJjaC9hcm02NC9LY29uZmlnLTM5Ni1cbmFyY2gvYXJtNjQvS2NvbmZpZzozOTc6Y29uZmlnIEtBU0FOX1NIQURPV19PRkZTRVRcbmFyY2gvYXJtNjQvS2NvbmZpZy0zOTgtXHRoZXhcbi0tXG5hcmNoL2xvb25nYXJjaC9LY29uZmlnPTgwMT1jb25maWcgQVJDSF9TVVBQT1JUU19VUFJPQkVTXG4tLVxuYXJjaC9sb29uZ2FyY2gvS2NvbmZpZy04MDMtXG5hcmNoL2xvb25nYXJjaC9LY29uZmlnOjgwNDpjb25maWcgS0FTQU5fU0hBRE9XX09GRlNFVFxuYXJjaC9sb29uZ2FyY2gvS2NvbmZpZy04MDUtXHRoZXhcbi0tXG5hcmNoL3Bvd2VycGMvS2NvbmZpZy5kZWJ1Zz0zNTg9Y29uZmlnIEZBSUxfSU9NTVVcbi0tXG5hcmNoL3Bvd2VycGMvS2NvbmZpZy5kZWJ1Zy0zNjctXG5hcmNoL3Bvd2VycGMvS2NvbmZpZy5kZWJ1ZzozNjg6Y29uZmlnIEtBU0FOX1NIQURPV19PRkZTRVRcbmFyY2gvcG93ZXJwYy9LY29uZmlnLmRlYnVnLTM2OS1cdGhleFxuLS1cbmFyY2gvcmlzY3YvS2NvbmZpZz0yOTM9Y29uZmlnIE1NVVxuLS1cbmFyY2gvcmlzY3YvS2NvbmZpZy0yOTktXG5hcmNoL3Jpc2N2L0tjb25maWc6MzAwOmNvbmZpZyBLQVNBTl9TSEFET1dfT0ZGU0VUXG5hcmNoL3Jpc2N2L0tjb25maWctMzAxLVx0aGV4XG4tLVxuYXJjaC9zMzkwL0tjb25maWc9Mzg9Y29uZmlnIEFSQ0hfU1VQUE9SVFNfVVBST0JFU1xuLS1cbmFyY2gvczM5MC9LY29uZmlnLTQwLVxuYXJjaC9zMzkwL0tjb25maWc6NDE6Y29uZmlnIEtBU0FOX1NIQURPV19PRkZTRVRcbmFyY2gvczM5MC9LY29uZmlnLTQyLVx0aGV4XG4tLVxuYXJjaC91bS9LY29uZmlnPTI2Nj1jb25maWcgVU1MX01BWF9VU0VSU1BBQ0VfSVRFUkFUSU9OU1xuLS1cbmFyY2gvdW0vS2NvbmZpZy0yODAtXG5hcmNoL3VtL0tjb25maWc6MjgxOmNvbmZpZyBLQVNBTl9TSEFET1dfT0ZGU0VUXG5hcmNoL3VtL0tjb25maWctMjgyLVx0aGV4XG4tLVxuYXJjaC94ODYvS2NvbmZpZz00MDg9Y29uZmlnIEFVRElUX0FSQ0hcbi0tXG5hcmNoL3g4Ni9LY29uZmlnLTQxMC1cbmFyY2gveDg2L0tjb25maWc6NDExOmNvbmZpZyBLQVNBTl9TSEFET1dfT0ZGU0VUXG5hcmNoL3g4Ni9LY29uZmlnLTQxMi1cdGhleFxuLS1cbmFyY2gveHRlbnNhL0tjb25maWc9OTg9Y29uZmlnIEhBVkVfWFRFTlNBX0dQSU8zMlxuLS1cbmFyY2gveHRlbnNhL0tjb25maWctMTAwLVxuYXJjaC94dGVuc2EvS2NvbmZpZzoxMDE6Y29uZmlnIEtBU0FOX1NIQURPV19PRkZTRVRcbmFyY2gveHRlbnNhL0tjb25maWctMTAyLVx0aGV4XG4tLVxubGliL0tjb25maWcua2FzYW49NDM9Y29uZmlnIENDX0hBU19XT1JLSU5HX05PU0FOSVRJWkVfQUREUkVTU1xuLS1cbmxpYi9LY29uZmlnLmthc2FuLTQ1LVxubGliL0tjb25maWcua2FzYW46NDY6bWVudWNvbmZpZyBLQVNBTlxubGliL0tjb25maWcua2FzYW4tNDctXHRib29sIFwmIzM0O0tBU0FOOiBkeW5hbWljIG1lbW9yeSBzYWZldHkgZXJyb3IgZGV0ZWN0b3JcJiMzNDtcbi0tXG5saWIvS2NvbmZpZy5rYXNhbj03Mz1jaG9pY2Vcbi0tXG5saWIvS2NvbmZpZy5rYXNhbi04OC1cbmxpYi9LY29uZmlnLmthc2FuOjg5OmNvbmZpZyBLQVNBTl9HRU5FUklDXG5saWIvS2NvbmZpZy5rYXNhbi05MC1cdGJvb2wgXCYjMzQ7R2VuZXJpYyBLQVNBTlwmIzM0O1xuLS1cbmxpYi9LY29uZmlnLmthc2FuLTEwMy1cbmxpYi9LY29uZmlnLmthc2FuOjEwNDpjb25maWcgS0FTQU5fU1dfVEFHU1xubGliL0tjb25maWcua2FzYW4tMTA1LVx0Ym9vbCBcJiMzNDtTb2Z0d2FyZSBUYWctQmFzZWQgS0FTQU5cJiMzNDtcbi0tXG5saWIvS2NvbmZpZy5rYXNhbi0xMjItXG5saWIvS2NvbmZpZy5rYXNhbjoxMjM6Y29uZmlnIEtBU0FOX0hXX1RBR1NcbmxpYi9LY29uZmlnLmthc2FuLTEyNC1cdGJvb2wgXCYjMzQ7SGFyZHdhcmUgVGFnLUJhc2VkIEtBU0FOXCYjMzQ7XG4tLVxubGliL0tjb25maWcua2FzYW49MTQxPWNob2ljZVxuLS1cbmxpYi9LY29uZmlnLmthc2FuLTE0NS1cbmxpYi9LY29uZmlnLmthc2FuOjE0Njpjb25maWcgS0FTQU5fT1VUTElORVxubGliL0tjb25maWcua2FzYW4tMTQ3LVx0Ym9vbCBcJiMzNDtPdXRsaW5lIGluc3RydW1lbnRhdGlvblwmIzM0O1xuLS1cbmxpYi9LY29uZmlnLmthc2FuLTE1Mi1cbmxpYi9LY29uZmlnLmthc2FuOjE1Mzpjb25maWcgS0FTQU5fSU5MSU5FXG5saWIvS2NvbmZpZy5rYXNhbi0xNTQtXHRib29sIFwmIzM0O0lubGluZSBpbnN0cnVtZW50YXRpb25cJiMzNDtcbi0tXG5saWIvS2NvbmZpZy5rYXNhbj0xNjE9ZW5kY2hvaWNlXG5saWIvS2NvbmZpZy5rYXNhbi0xNjItXG5saWIvS2NvbmZpZy5rYXNhbjoxNjM6Y29uZmlnIEtBU0FOX1NUQUNLXG5saWIvS2NvbmZpZy5rYXNhbi0xNjQtXHRib29sIFwmIzM0O1N0YWNrIGluc3RydW1lbnRhdGlvbiAodW5zYWZlKVwmIzM0OyBpZiBDQ19JU19DTEFORyBcdTAwMjZcdTAwMjYgIUNPTVBJTEVfVEVTVFxuLS1cbmxpYi9LY29uZmlnLmthc2FuLTE4NS1cbmxpYi9LY29uZmlnLmthc2FuOjE4Njpjb25maWcgS0FTQU5fVk1BTExPQ1xubGliL0tjb25maWcua2FzYW4tMTg3LVx0Ym9vbCBcJiMzNDtDaGVjayBhY2Nlc3NlcyB0byB2bWFsbG9jIGFsbG9jYXRpb25zXCYjMzQ7XG4tLVxubGliL0tjb25maWcua2FzYW4tMTk3LVxubGliL0tjb25maWcua2FzYW46MTk4OmNvbmZpZyBLQVNBTl9LVU5JVF9URVNUXG5saWIvS2NvbmZpZy5rYXNhbi0xOTktXHR0cmlzdGF0ZSBcJiMzNDtLVW5pdC1jb21wYXRpYmxlIHRlc3RzIG9mIEtBU0FOIGJ1ZyBkZXRlY3Rpb24gY2FwYWJpbGl0aWVzXCYjMzQ7IGlmICFLVU5JVF9BTExfVEVTVFNcbi0tXG5saWIvS2NvbmZpZy5rYXNhbi0yMDktXG5saWIvS2NvbmZpZy5rYXNhbjoyMTA6Y29uZmlnIEtBU0FOX0VYVFJBX0lORk9cbmxpYi9LY29uZmlnLmthc2FuLTIxMS1cdGJvb2wgXCYjMzQ7UmVjb3JkIGFuZCByZXBvcnQgbW9yZSBpbmZvcm1hdGlvblwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDAzOjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUxOTIKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiA0MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzOgoKKipLQVNBTiBDb25maWd1cmF0aW9uIERlZXAgRGl2ZSoqCgpPa2F5LCBzbyB0aGUgY29uZmlnIGlzIHNldCB0byBgS0FTQU5gLiBNeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMgd2hldGhlciB0aGUgYGthc2FuX3F1YXJhbnRpbmVfcmVtb3ZlX2NhY2hlYCBmdW5jdGlvbiBpcyBhdmFpbGFibGUgYWNyb3NzIGFsbCBLQVNBTiBtb2Rlcy4gSXQmIzM5O3MgYSBrZXkgZnVuY3Rpb24sIGFuZCBpdHMgYXZhaWxhYmlsaXR5IGNhbiByZWFsbHkgaW1wYWN0IGhvdyB0aGluZ3Mgd29yay4gVG8gZ2V0IHRoZSBkZWZpbml0aXZlIGFuc3dlciwgSSBrbm93IEkgbmVlZCB0byBkZWx2ZSBpbnRvIHRoZSBLQVNBTiBzb3VyY2UgY29kZS4gU3BlY2lmaWNhbGx5LCB0aGUgYG1tL2thc2FuL01ha2VmaWxlYCBmaWxlIGlzIHRoZSBwbGFjZSB0byBzdGFydC4gVGhhdCBNYWtlZmlsZSB3aWxsIGxpa2VseSBkZWZpbmUgdGhlIGJ1aWxkIGZsYWdzIGFuZCBjb25kaXRpb25hbCBjb21waWxhdGlvbiB0aGF0IGRldGVybWluZSBpZiB0aGlzIGZ1bmN0aW9uIGlzIGluY2x1ZGVkIGluIGRpZmZlcmVudCBLQVNBTiBidWlsZHMuIFRpbWUgdG8gZGl2ZSBpbiBhbmQgZ2V0IHNvbWUgY2xhcml0eS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMzo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtxdWFyYW50aW5lJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0va2FzYW4vTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0va2FzYW4vTWFrZWZpbGU9OT1DRkxBR1NfUkVNT1ZFX2luaXQubyA9ICQoQ0NfRkxBR1NfRlRSQUNFKVxubW0va2FzYW4vTWFrZWZpbGU6MTA6Q0ZMQUdTX1JFTU9WRV9xdWFyYW50aW5lLm8gPSAkKENDX0ZMQUdTX0ZUUkFDRSlcbm1tL2thc2FuL01ha2VmaWxlLTExLUNGTEFHU19SRU1PVkVfcmVwb3J0Lm8gPSAkKENDX0ZMQUdTX0ZUUkFDRSlcbi0tXG5tbS9rYXNhbi9NYWtlZmlsZT0yOD1DRkxBR1NfaW5pdC5vIDo9ICQoQ0NfRkxBR1NfS0FTQU5fUlVOVElNRSlcbm1tL2thc2FuL01ha2VmaWxlOjI5OkNGTEFHU19xdWFyYW50aW5lLm8gOj0gJChDQ19GTEFHU19LQVNBTl9SVU5USU1FKVxubW0va2FzYW4vTWFrZWZpbGUtMzAtQ0ZMQUdTX3JlcG9ydC5vIDo9ICQoQ0NfRkxBR1NfS0FTQU5fUlVOVElNRSlcbi0tXG5tbS9rYXNhbi9NYWtlZmlsZT01MT1vYmoteSA6PSBjb21tb24ubyByZXBvcnQub1xubW0va2FzYW4vTWFrZWZpbGU6NTI6b2JqLSQoQ09ORklHX0tBU0FOX0dFTkVSSUMpICYjNDM7PSBpbml0Lm8gZ2VuZXJpYy5vIHJlcG9ydF9nZW5lcmljLm8gc2hhZG93Lm8gcXVhcmFudGluZS5vXG5tbS9rYXNhbi9NYWtlZmlsZS01My1vYmotJChDT05GSUdfS0FTQU5fSFdfVEFHUykgJiM0Mzs9IGh3X3RhZ3MubyByZXBvcnRfaHdfdGFncy5vIHRhZ3MubyByZXBvcnRfdGFncy5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDM6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTcwMgoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDU0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKktBU0FOIFF1YXJhbnRpbmUgYW5kIEl0cyBDYWxscyoqCgpPa2F5LCBzbyBgcXVhcmFudGluZS5vYCBpcyBidWlsdCB3aXRoIGBDT05GSUdfS0FTQU5fR0VORVJJQ2AgZW5hYmxlZC4gVGhhdCBpbW1lZGlhdGVseSB0ZWxscyBtZSB3ZSBuZWVkIGBLQVNBTl9HRU5FUklDYCB0b28uIExldCYjMzk7cyBtYWtlIHN1cmUgdGhhdCBpcyBzZXQuCgpOb3csIG15IG5leHQgdGhvdWdodCBpcyBhYm91dCB1c2FnZSBvZiB0aGUgcXVhcmFudGluZSBtZWNoYW5pc20uIEkgbmVlZCB0byBxdWlja2x5IGRldGVybWluZSBpZiBga2FzYW5fcXVhcmFudGluZV9yZW1vdmVfY2FjaGVgIGlzIGNhbGxlZCBmcm9tIGFueXdoZXJlIGVsc2UgaW4gdGhlIGNvZGUgYmFzZS4gSSB3YW50IHRvIHVuZGVyc3RhbmQgdGhlIGNvbXBsZXRlIHBpY3R1cmUgb2YgaG93IHRoZSBxdWFyYW50aW5lIGlzIGJlaW5nIHV0aWxpemVkLCBzbyBrbm93aW5nICp3aGVyZSogdGhpcyBmdW5jdGlvbiBnZXRzIGNhbGxlZCBpcyBpbXBvcnRhbnQuIFRoaXMgaXMgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyBkZXBlbmRlbmNpZXMgYW5kIHBvdGVudGlhbCBpbXBhY3RzIG9mIGNoYW5nZXMgd2l0aGluIHRoZSBxdWFyYW50aW5lIGltcGxlbWVudGF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMzo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrYXNhbl9xdWFyYW50aW5lX3JlbW92ZV9jYWNoZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9rYXNhbi9nZW5lcmljLmM9MjE1PXZvaWQga2FzYW5fY2FjaGVfc2hyaW5rKHN0cnVjdCBrbWVtX2NhY2hlICpjYWNoZSlcbm1tL2thc2FuL2dlbmVyaWMuYy0yMTYte1xubW0va2FzYW4vZ2VuZXJpYy5jOjIxNzpcdGthc2FuX3F1YXJhbnRpbmVfcmVtb3ZlX2NhY2hlKGNhY2hlKTtcbm1tL2thc2FuL2dlbmVyaWMuYy0yMTgtfVxuLS1cbm1tL2thc2FuL2dlbmVyaWMuYz0yMjA9dm9pZCBrYXNhbl9jYWNoZV9zaHV0ZG93bihzdHJ1Y3Qga21lbV9jYWNoZSAqY2FjaGUpXG4tLVxubW0va2FzYW4vZ2VuZXJpYy5jLTIyMi1cdGlmICghX19rbWVtX2NhY2hlX2VtcHR5KGNhY2hlKSlcbm1tL2thc2FuL2dlbmVyaWMuYzoyMjM6XHRcdGthc2FuX3F1YXJhbnRpbmVfcmVtb3ZlX2NhY2hlKGNhY2hlKTtcbm1tL2thc2FuL2dlbmVyaWMuYy0yMjQtfVxuLS1cbm1tL2thc2FuL2thc2FuLmg9NDA2PXZvaWQga2FzYW5fcXVhcmFudGluZV9yZWR1Y2Uodm9pZCk7XG5tbS9rYXNhbi9rYXNhbi5oOjQwNzp2b2lkIGthc2FuX3F1YXJhbnRpbmVfcmVtb3ZlX2NhY2hlKHN0cnVjdCBrbWVtX2NhY2hlICpjYWNoZSk7XG5tbS9rYXNhbi9rYXNhbi5oLTQwOC0jZWxzZVxuLS1cbm1tL2thc2FuL2thc2FuLmg9NDEwPXN0YXRpYyBpbmxpbmUgdm9pZCBrYXNhbl9xdWFyYW50aW5lX3JlZHVjZSh2b2lkKSB7IH1cbm1tL2thc2FuL2thc2FuLmg6NDExOnN0YXRpYyBpbmxpbmUgdm9pZCBrYXNhbl9xdWFyYW50aW5lX3JlbW92ZV9jYWNoZShzdHJ1Y3Qga21lbV9jYWNoZSAqY2FjaGUpIHsgfVxubW0va2FzYW4va2FzYW4uaC00MTItI2VuZGlmXG4tLVxubW0va2FzYW4vcXVhcmFudGluZS5jPTE4NT1ib29sIGthc2FuX3F1YXJhbnRpbmVfcHV0KHN0cnVjdCBrbWVtX2NhY2hlICpjYWNoZSwgdm9pZCAqb2JqZWN0KVxuLS1cbm1tL2thc2FuL3F1YXJhbnRpbmUuYy0yMDAtXHQgKiBOb3RlOiBpcnEgbXVzdCBiZSBkaXNhYmxlZCB1bnRpbCBhZnRlciB3ZSBtb3ZlIHRoZSBiYXRjaCB0byB0aGVcbm1tL2thc2FuL3F1YXJhbnRpbmUuYzoyMDE6XHQgKiBnbG9iYWwgcXVhcmFudGluZS4gT3RoZXJ3aXNlIGthc2FuX3F1YXJhbnRpbmVfcmVtb3ZlX2NhY2hlKCkgY2FuXG5tbS9rYXNhbi9xdWFyYW50aW5lLmMtMjAyLVx0ICogbWlzcyBzb21lIG9iamVjdHMgYmVsb25naW5nIHRvIHRoZSBjYWNoZSBpZiB0aGV5IGFyZSBpbiBvdXIgbG9jYWxcbm1tL2thc2FuL3F1YXJhbnRpbmUuYzoyMDM6XHQgKiB0ZW1wIGxpc3QuIGthc2FuX3F1YXJhbnRpbmVfcmVtb3ZlX2NhY2hlKCkgZXhlY3V0ZXMgb25fZWFjaF9jcHUoKVxubW0va2FzYW4vcXVhcmFudGluZS5jLTIwNC1cdCAqIGF0IHRoZSBiZWdpbm5pbmcgd2hpY2ggZW5zdXJlcyB0aGF0IGl0IGVpdGhlciBzZWVzIHRoZSBvYmplY3RzIGluXG4tLVxubW0va2FzYW4vcXVhcmFudGluZS5jPTIzOT12b2lkIGthc2FuX3F1YXJhbnRpbmVfcmVkdWNlKHZvaWQpXG4tLVxubW0va2FzYW4vcXVhcmFudGluZS5jLTI1MC1cdC8qXG5tbS9rYXNhbi9xdWFyYW50aW5lLmM6MjUxOlx0ICogc3JjdSBjcml0aWNhbCBzZWN0aW9uIGVuc3VyZXMgdGhhdCBrYXNhbl9xdWFyYW50aW5lX3JlbW92ZV9jYWNoZSgpXG5tbS9rYXNhbi9xdWFyYW50aW5lLmMtMjUyLVx0ICogd2lsbCBub3QgbWlzcyBvYmplY3RzIGJlbG9uZ2luZyB0byB0aGUgY2FjaGUgd2hpbGUgdGhleSBhcmUgaW4gb3VyXG4tLVxubW0va2FzYW4vcXVhcmFudGluZS5jPTMyNj1zdGF0aWMgdm9pZCBwZXJfY3B1X3JlbW92ZV9jYWNoZSh2b2lkICphcmcpXG4tLVxubW0va2FzYW4vcXVhcmFudGluZS5jLTM0MS0vKiBGcmVlIGFsbCBxdWFyYW50aW5lZCBvYmplY3RzIGJlbG9uZ2luZyB0byBjYWNoZS4gKi9cbm1tL2thc2FuL3F1YXJhbnRpbmUuYzozNDI6dm9pZCBrYXNhbl9xdWFyYW50aW5lX3JlbW92ZV9jYWNoZShzdHJ1Y3Qga21lbV9jYWNoZSAqY2FjaGUpXG5tbS9rYXNhbi9xdWFyYW50aW5lLmMtMzQzLXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDM6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjcwMwoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDQ4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246CgoqKkludmVzdGlnYXRpbmcgdGhlIEtBU0FOIENhY2hlIFNocmlua2FnZSoqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIGZvY3VzaW5nIG9uIHRoZSBLQVNBTiBjYWNoZSBtZWNoYW5pc21zIGhlcmUuIE15IGluaXRpYWwgdGhvdWdodCBwcm9jZXNzIGlzIGNlbnRlcmVkIGFyb3VuZCBga2FzYW5fY2FjaGVfc2hyaW5rYCBhbmQgYGthc2FuX2NhY2hlX3NodXRkb3duYC4gVGhlc2UgYXJlIHRoZSBrZXkgcGxheWVycywgdGhlIGZ1bmN0aW9ucyB0aGF0IGFyZSBnb2luZyB0byBiZSBtYWtpbmcgY2hhbmdlcyB0byB0aGUgY2FjaGUsIGFuZCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGVyZSB0aGV5IGFyZSBiZWluZyBjYWxsZWQgZnJvbS4gVGhlcmVmb3JlLCB0aGUgaW1tZWRpYXRlIG5leHQgc3RlcCBpcyBjcnlzdGFsIGNsZWFyOiBJJiMzOTttIGdvaW5nIHRvIHRyYWNrIGRvd24gZXZlcnkgc2luZ2xlIGNhbGwgc2l0ZSBmb3IgYm90aCBga2FzYW5fY2FjaGVfc2hyaW5rYCBhbmQgYGthc2FuX2NhY2hlX3NodXRkb3duYC4gVW5kZXJzdGFuZGluZyB0aGVpciBjYWxsIHBhdGhzIGlzIHRoZSBjcnVjaWFsIG5leHQgc3RlcCB0byBmaWd1cmluZyBvdXQgdGhlIGJpZ2dlciBwaWN0dXJlLCBhbmQgdW5kZXJzdGFuZGluZyBob3cgdGhlIEtBU0FOIGNhY2hlIHdvcmtzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMzo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrYXNhbl9jYWNoZV9zaHJpbmsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9rYXNhbi5oPTQ5Mj12b2lkIGthc2FuX2NhY2hlX2NyZWF0ZShzdHJ1Y3Qga21lbV9jYWNoZSAqY2FjaGUsIHVuc2lnbmVkIGludCAqc2l6ZSxcbi0tXG5pbmNsdWRlL2xpbnV4L2thc2FuLmgtNDk0LVxuaW5jbHVkZS9saW51eC9rYXNhbi5oOjQ5NTp2b2lkIGthc2FuX2NhY2hlX3NocmluayhzdHJ1Y3Qga21lbV9jYWNoZSAqY2FjaGUpO1xuaW5jbHVkZS9saW51eC9rYXNhbi5oLTQ5Ni12b2lkIGthc2FuX2NhY2hlX3NodXRkb3duKHN0cnVjdCBrbWVtX2NhY2hlICpjYWNoZSk7XG4tLVxuaW5jbHVkZS9saW51eC9rYXNhbi5oPTUwOD1zdGF0aWMgaW5saW5lIHZvaWQga2FzYW5fY2FjaGVfY3JlYXRlKHN0cnVjdCBrbWVtX2NhY2hlICpjYWNoZSxcbi0tXG5pbmNsdWRlL2xpbnV4L2thc2FuLmgtNTExLVxuaW5jbHVkZS9saW51eC9rYXNhbi5oOjUxMjpzdGF0aWMgaW5saW5lIHZvaWQga2FzYW5fY2FjaGVfc2hyaW5rKHN0cnVjdCBrbWVtX2NhY2hlICpjYWNoZSkge31cbmluY2x1ZGUvbGludXgva2FzYW4uaC01MTMtc3RhdGljIGlubGluZSB2b2lkIGthc2FuX2NhY2hlX3NodXRkb3duKHN0cnVjdCBrbWVtX2NhY2hlICpjYWNoZSkge31cbi0tXG5tbS9rYXNhbi9nZW5lcmljLmM9MjAzPWJvb2wga2FzYW5fYnl0ZV9hY2Nlc3NpYmxlKGNvbnN0IHZvaWQgKmFkZHIpXG4tLVxubW0va2FzYW4vZ2VuZXJpYy5jLTIxNC1cbm1tL2thc2FuL2dlbmVyaWMuYzoyMTU6dm9pZCBrYXNhbl9jYWNoZV9zaHJpbmsoc3RydWN0IGttZW1fY2FjaGUgKmNhY2hlKVxubW0va2FzYW4vZ2VuZXJpYy5jLTIxNi17XG4tLVxubW0vc2xhYl9jb21tb24uYz02MDI9aW50IGttZW1fY2FjaGVfc2hyaW5rKHN0cnVjdCBrbWVtX2NhY2hlICpjYWNoZXApXG5tbS9zbGFiX2NvbW1vbi5jLTYwMy17XG5tbS9zbGFiX2NvbW1vbi5jOjYwNDpcdGthc2FuX2NhY2hlX3NocmluayhjYWNoZXApO1xubW0vc2xhYl9jb21tb24uYy02MDUtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDAzOjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDczNDkKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiAzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjoKCioqS0FTQU4gSW50ZXJhY3Rpb24gd2l0aCBTbGFiIENhY2hpbmcqKgoKUmlnaHQsIHNvIEkgc2VlIGhvdyBLQVNBTiBpbnRlZ3JhdGVzIHdpdGggdGhlIHNsYWIgYWxsb2NhdG9yLiBTcGVjaWZpY2FsbHksIHdoZW4gYGttZW1fY2FjaGVfc2hyaW5rYCBpcyBjYWxsZWQg4oCTIHRoYXQmIzM5O3MgdGhlIGZ1bmN0aW9uIHRoYXQgdHJpZXMgdG8gZnJlZSB1cCBzb21lIG1lbW9yeSBpbiBhIHBhcnRpY3VsYXIgc2xhYiBjYWNoZSDigJMgaXQgYWN0dWFsbHkgdHJpZ2dlcnMgYSBjYWxsIHRvIGBrYXNhbl9jYWNoZV9zaHJpbmtgLiBUaGF0IG1ha2VzIHBlcmZlY3Qgc2Vuc2U7IEtBU0FOIG5lZWRzIHRvIGJlIGF3YXJlIG9mIGFuZCBwb3RlbnRpYWxseSBtb2RpZnkgaXRzIGJlaGF2aW9yIHdoZW4gdGhlIHNsYWIgY2FjaGUgaXMgdW5kZXJnb2luZyBhIHNocmluayBvcGVyYXRpb24uIFRoaXMgaXMgbGlrZWx5IGFib3V0IHJlZHVjaW5nIHRoZSBhbW91bnQgb2YgbWVtb3J5IEtBU0FOIHRyYWNrcyBmb3IgcG90ZW50aWFsbHkgcG9pc29uZWQgZGF0YSB3aXRoaW4gdGhhdCBjYWNoZS4gSSYjMzk7ZCBpbWFnaW5lIHRoaXMgY291bGQgaW52b2x2ZSBjbGVhcmluZyBzb21lIHRhZyBiaXRzIG9yIHBvdGVudGlhbGx5IHJlbW92aW5nIGVudHJpZXMgZnJvbSBhIHNoYWRvdyBtZW1vcnkgbWFwLCBvciBzb21lIG90aGVyIG9wZXJhdGlvbiBjcml0aWNhbCBmb3IgbWFpbnRhaW5pbmcgS0FTQU4mIzM5O3MgbWVtb3J5IGludGVncml0eS4KClNpbWlsYXJseSwgd2hlbiBhIHNsYWIgY2FjaGUgaXMgYmVpbmcgY29tcGxldGVseSBkZXN0cm95ZWQgdmlhIGBrbWVtX2NhY2hlX2Rlc3Ryb3lgLCBLQVNBTiBnZXRzIGludm9sdmVkIHRocm91Z2ggYSBjYWxsIHRvIGBrYXNhbl9jYWNoZV9zaHV0ZG93bmAuIFRoaXMgaXMgdGhlIGNsZWFudXAgZnVuY3Rpb24uIFRoaXMgbGlrZWx5IHJlcHJlc2VudHMgS0FTQU4gcmVsZWFzaW5nIGFsbCB0aGUgcmVzb3VyY2VzIGFzc29jaWF0ZWQgd2l0aCB0cmFja2luZyB0aGF0IGNhY2hlJiMzOTtzIG1lbW9yeS4gVGhpcyBjb3VsZCBpbmNsdWRlLCBmb3IgZXhhbXBsZSwgZnJlZWluZyB1cCBhbnkgZGF0YSBzdHJ1Y3R1cmVzIHVzZWQgZm9yIHNoYWRvdyBtZW1vcnkgbWFuYWdlbWVudC4gVGhlIGtleSBpcyBlbnN1cmluZyB0aGF0IEtBU0FOJiMzOTtzIGJvb2trZWVwaW5nIGlzIGZ1bGx5IHN5bmNocm9uaXplZCB3aXRoIHRoZSBzbGFiIGFsbG9jYXRvciYjMzk7cyBsaWZlY3ljbGUgc28gdGhhdCBubyBtZW1vcnkgcmVtYWlucyBwb2lzb25lZCBvciB0cmFja2VkIHVubmVjZXNzYXJpbHksIGFuZCB0aGF0IHRoZXJlIGFyZSBubyBkYW5nbGluZyBwb2ludGVycyBvciBtZXRhZGF0YS4gSSYjMzk7ZCBiZSBpbnRlcmVzdGVkIGluIGRpZ2dpbmcgaW4gYW5kIHNlZWluZyBleGFjdGx5IHdoYXQgc3RhdGUgaXQmIzM5O3MgdXBkYXRpbmcsIGJ1dCB0aGlzIGdpdmVzIG1lIGEgc29saWQgaWRlYSBvZiB3aGVyZSBLQVNBTiYjMzk7cyBob29rcyBhcmUgd2l0aGluIHRoZSBzbGFiIGNhY2hlJiMzOTtzIGxpZmVjeWNsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDM6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a2FzYW5fY2FjaGVfc2h1dGRvd24mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9rYXNhbi5oPTQ5NT12b2lkIGthc2FuX2NhY2hlX3NocmluayhzdHJ1Y3Qga21lbV9jYWNoZSAqY2FjaGUpO1xuaW5jbHVkZS9saW51eC9rYXNhbi5oOjQ5Njp2b2lkIGthc2FuX2NhY2hlX3NodXRkb3duKHN0cnVjdCBrbWVtX2NhY2hlICpjYWNoZSk7XG5pbmNsdWRlL2xpbnV4L2thc2FuLmgtNDk3LXZvaWQga2FzYW5fcmVjb3JkX2F1eF9zdGFjayh2b2lkICpwdHIpO1xuLS1cbmluY2x1ZGUvbGludXgva2FzYW4uaD01MTI9c3RhdGljIGlubGluZSB2b2lkIGthc2FuX2NhY2hlX3NocmluayhzdHJ1Y3Qga21lbV9jYWNoZSAqY2FjaGUpIHt9XG5pbmNsdWRlL2xpbnV4L2thc2FuLmg6NTEzOnN0YXRpYyBpbmxpbmUgdm9pZCBrYXNhbl9jYWNoZV9zaHV0ZG93bihzdHJ1Y3Qga21lbV9jYWNoZSAqY2FjaGUpIHt9XG5pbmNsdWRlL2xpbnV4L2thc2FuLmgtNTE0LXN0YXRpYyBpbmxpbmUgdm9pZCBrYXNhbl9yZWNvcmRfYXV4X3N0YWNrKHZvaWQgKnB0cikge31cbi0tXG5tbS9rYXNhbi9nZW5lcmljLmM9MjE1PXZvaWQga2FzYW5fY2FjaGVfc2hyaW5rKHN0cnVjdCBrbWVtX2NhY2hlICpjYWNoZSlcbi0tXG5tbS9rYXNhbi9nZW5lcmljLmMtMjE5LVxubW0va2FzYW4vZ2VuZXJpYy5jOjIyMDp2b2lkIGthc2FuX2NhY2hlX3NodXRkb3duKHN0cnVjdCBrbWVtX2NhY2hlICpjYWNoZSlcbm1tL2thc2FuL2dlbmVyaWMuYy0yMjEte1xuLS1cbm1tL3NsYWJfY29tbW9uLmM9NTI3PXZvaWQga21lbV9jYWNoZV9kZXN0cm95KHN0cnVjdCBrbWVtX2NhY2hlICpzKVxuLS1cbm1tL3NsYWJfY29tbW9uLmMtNTY2LVx0LyogZnJlZSBhc2FuIHF1YXJhbnRpbmVkIG9iamVjdHMgKi9cbm1tL3NsYWJfY29tbW9uLmM6NTY3Olx0a2FzYW5fY2FjaGVfc2h1dGRvd24ocyk7XG5tbS9zbGFiX2NvbW1vbi5jLTU2OC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDM6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODEyMwoJCQkJCQkJb3V0cHV0OiAxMjYKCQkJCQkJCXRob3VnaHRzOiAzNzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBhbmQgQ29uZmlndXJhdGlvbiBBbmFseXNpcyBmb3IgS0FTQU4gQ2FjaGUgT3BlcmF0aW9ucyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlc2UgZnVuY3Rpb25zLCBga21lbV9jYWNoZV9zaHJpbmtgIGFuZCBga21lbV9jYWNoZV9kZXN0cm95YCwgYW5kIHRoZXkgbG9vayBsaWtlIHRoZSBwcmltYXJ5IGVudHJ5IHBvaW50cyBoZXJlLiBEZWZpbml0ZWx5IHdvcnRoIGZvY3VzaW5nIGZ1enppbmcgZWZmb3J0cyBvbiB0aGVtLiBBY3R1YWxseSwgSSBzaG91bGQgYWxzbyBsb29rIGF0IHRoZSBvdGhlciBzeW1ib2xzIHRoYXQgY291bGQgYmUgaGl0LCB3aGljaCBhcmU6IGBrYXNhbl9xdWFyYW50aW5lX3JlbW92ZV9jYWNoZWAsIGBrYXNhbl9jYWNoZV9zaHJpbmtgLCBhbmQgYGthc2FuX2NhY2hlX3NodXRkb3duYC4gV2FpdCBhIHNlY29uZCwgd2hpbGUgYGttZW1fY2FjaGVfc2hyaW5rYCBhbmQgYGttZW1fY2FjaGVfZGVzdHJveWAgYXJlIGdvb2QgZW50cnkgcG9pbnRzLCB0aGV5IGFyZSBtb3JlIGdlbmVyYWwuIFRoZSBzcGVjaWZpYyBmdW5jdGlvbiBJIG5lZWQgdG8gY29uY2VudHJhdGUgb24gaXMgYGthc2FuX3F1YXJhbnRpbmVfcmVtb3ZlX2NhY2hlYC4KCk5vdywgSSBuZWVkIHRvIGNoZWNrIGZvciBhbnkgc3BlY2lmaWMgY29uZmlndXJhdGlvbiByZXF1aXJlbWVudHMuIEkmIzM5O20gcHJldHR5IHN1cmUgYEtBU0FOX0dFTkVSSUNgIGlzIG5lZWRlZC4gTGV0IG1lIGRvdWJsZS1jaGVjayBpZiBqdXN0IGBLQVNBTmAgaXMgZW5vdWdoLiBBaCwgcmlnaHQsIGBLQVNBTl9HRU5FUklDYCBpcyBhbiBvcHRpb24gKnVuZGVyKiBgS0FTQU5gLiBTbywgSSYjMzk7bGwgYWRkICpib3RoKiBgS0FTQU5gIGFuZCBgS0FTQU5fR0VORVJJQ2AgdG8gbXkgY29uZmlndXJhdGlvbiByZXF1aXJlbWVudHMuIExldCBtZSBqdXN0IGNvbmZpcm0gdGhhdCB0aGUgbmFtZSBpcyBleGFjdGx5IGBLQVNBTl9HRU5FUklDYC4gWXVwLCBgY29uZmlnIEtBU0FOX0dFTkVSSUNgLiBBbHJpZ2h0LCBJJiMzOTtsbCBvdXRwdXQgYEtBU0FOYCBhbmQgYEtBU0FOX0dFTkVSSUNgIGFzIHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbiBvcHRpb25zLgoKSnVzdCB0byBiZSB0aG9yb3VnaCwgSSYjMzk7bSBnb2luZyB0byBkb3VibGUgY2hlY2sgaWYgYGthc2FuX3F1YXJhbnRpbmVfcmVtb3ZlX2NhY2hlYCBpcyBzdGF0aWMuIE5vcGUsIGl0JiMzOTtzIG5vdC4gSXQmIzM5O3MgYSBgdm9pZCBrYXNhbl9xdWFyYW50aW5lX3JlbW92ZV9jYWNoZShzdHJ1Y3Qga21lbV9jYWNoZSAqY2FjaGUpYC4gR29vZCB0byBrbm93LgoKQW55dGhpbmcgZWxzZSBJIHNob3VsZCBjb25zaWRlcj8gQWgsIHllcywgdGhlcmUgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBoZXJlLiBUaGUgcGF0Y2ggcmVwbGFjZXMgYGZvcl9lYWNoX29ubGluZV9jcHUoY3B1KWAgd2l0aCBgZm9yX2VhY2hfcG9zc2libGVfY3B1KGNwdSlgLiBUaGlzIGlzIHRvIGFkZHJlc3MgYSBidWcgd2hlcmUgYSBDUFUgbWlnaHQgZ28gb2ZmbGluZSBhZnRlciBgb25fZWFjaF9jcHUoKWAgcmV0dXJucywgcG90ZW50aWFsbHkgbGVhdmluZyBjYWNoZSBvYmplY3RzIG9uIHRoYXQgQ1BVJiMzOTtzIHNocmluayBsaXN0LiBJdCYjMzk7cyBpbXBvcnRhbnQgdG8gcmVtZW1iZXIgdGhpcyBpcyBhIGZ1bmN0aW9uYWwgZml4LgoKSSYjMzk7bGwgYmUgdXNpbmcgdGhlIGBzZXQtcmVzdWx0c2AgdG9vbCBmb3IgdGhpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDM6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tBU0FOJiMzNDssCiAgICAmIzM0O0tBU0FOX0dFTkVSSUMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtrYXNhbl9xdWFyYW50aW5lX3JlbW92ZV9jYWNoZSYjMzQ7LAogICAgJiMzNDtrYXNhbl9jYWNoZV9zaHJpbmsmIzM0OywKICAgICYjMzQ7a2FzYW5fY2FjaGVfc2h1dGRvd24mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gS0FTQU4gcXVhcmFudGluZSBsb2dpYyBieSBpdGVyYXRpbmcgb3ZlciBhbGwgcG9zc2libGUgQ1BVcyBpbnN0ZWFkIG9mIG9ubHkgb25saW5lIENQVXMgd2hlbiByZW1vdmluZyBhIGNhY2hlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBrZXJuZWwgbWVtb3J5IGRlYnVnZ2luZyBsb2dpYyB0aGF0IGlzIHJlYWNoYWJsZSB3aGVuIGEga21lbV9jYWNoZSBpcyBzaHJ1bmsgb3IgZGVzdHJveWVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtLQVNBTiYjMzQ7LAogICAgJiMzNDtLQVNBTl9HRU5FUklDJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a2FzYW5fcXVhcmFudGluZV9yZW1vdmVfY2FjaGUmIzM0OywKICAgICYjMzQ7a2FzYW5fY2FjaGVfc2hyaW5rJiMzNDssCiAgICAmIzM0O2thc2FuX2NhY2hlX3NodXRkb3duJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIEtBU0FOIHF1YXJhbnRpbmUgbG9naWMgYnkgaXRlcmF0aW5nIG92ZXIgYWxsIHBvc3NpYmxlIENQVXMgaW5zdGVhZCBvZiBvbmx5IG9ubGluZSBDUFVzIHdoZW4gcmVtb3ZpbmcgYSBjYWNoZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUga2VybmVsIG1lbW9yeSBkZWJ1Z2dpbmcgbG9naWMgdGhhdCBpcyByZWFjaGFibGUgd2hlbiBhIGttZW1fY2FjaGUgaXMgc2hydW5rIG9yIGRlc3Ryb3llZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDM6NDM8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMzo0MzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBga2FzYW5fcXVhcmFudGluZV9yZW1vdmVfY2FjaGVgIGluIGBtbS9rYXNhbi9xdWFyYW50aW5lLmNgIHRvIGl0ZXJhdGUgb3ZlciBhbGwgcG9zc2libGUgQ1BVcyBpbnN0ZWFkIG9mIG9ubHkgb25saW5lIENQVXMgd2hlbiBkcmFpbmluZyB0aGUgc2hyaW5rIGxpc3QuIFRoaXMgZml4ZXMgYSBwb3RlbnRpYWwgaXNzdWUgd2hlcmUgY2FjaGUgb2JqZWN0cyBjb3VsZCBiZSBsZWZ0IG9uIHRoZSBzaHJpbmsgbGlzdCBvZiBhIENQVSB0aGF0IGdvZXMgb2ZmbGluZS4gVGhpcyBjaGFuZ2UgYWRkcmVzc2VzIGEgbWVtb3J5IG1hbmFnZW1lbnQgaXNzdWUgKGxpa2VseSBhIG1lbW9yeSBsZWFrIG9yIHVzZS1hZnRlci1mcmVlIHJlbGF0ZWQgdG8gS0FTQU4mIzM5O3MgcXVhcmFudGluZSkgYW5kIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGFsbG9jYXRpb25zLCBzdHJ1Y3R1cmVzIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciBsb2dpYyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gU3RhbmRhcmQgS0FTQU4gYW5kIG90aGVyIG1lbW9yeSBkZXRlY3RvcnMgYXJlIHN1ZmZpY2llbnQgZm9yIHRoaXMgY29kZSwgYW5kIEtNU0FOIGlzIG5vdCBhcHBsaWNhYmxlLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBmYTE4ZmE3MDJiMjFkYmFkZmZmYWE1ZTQ4OGYzNmNkNDQ2MGM1YWU4CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFNhdCBBdWcgOCAwMzo0MzoxMSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL21tL2thc2FuL3F1YXJhbnRpbmUuYyBiL21tL2thc2FuL3F1YXJhbnRpbmUuYwppbmRleCA2OTU4YWE3MTNjNjdlLi4xNmY0ZTY3YmVlZTgyIDEwMDY0NAotLS0gYS9tbS9rYXNhbi9xdWFyYW50aW5lLmMKJiM0MzsmIzQzOyYjNDM7IGIvbW0va2FzYW4vcXVhcmFudGluZS5jCkBAIC0zNTUsNyAmIzQzOzM1NSwxMiBAQCB2b2lkIGthc2FuX3F1YXJhbnRpbmVfcmVtb3ZlX2NhY2hlKHN0cnVjdCBrbWVtX2NhY2hlICpjYWNoZSkKIAkgKi8KIAlvbl9lYWNoX2NwdShwZXJfY3B1X3JlbW92ZV9jYWNoZSwgY2FjaGUsIDEpOwogCi0JZm9yX2VhY2hfb25saW5lX2NwdShjcHUpIHsKJiM0MzsJLyoKJiM0MzsJICogQSBDUFUgY2FuIGdvIG9mZmxpbmUgYWZ0ZXIgb25fZWFjaF9jcHUoKSByZXR1cm5zLCBsZWF2aW5nIGNhY2hlCiYjNDM7CSAqIG9iamVjdHMgb24gdGhhdCBDUFUmIzM5O3Mgc2hyaW5rIGxpc3QuIFNjYW4gYWxsIHBvc3NpYmxlIENQVXMgdG8KJiM0MzsJICogZHJhaW4gdGhvc2UgbGlzdHMuCiYjNDM7CSAqLwomIzQzOwlmb3JfZWFjaF9wb3NzaWJsZV9jcHUoY3B1KSB7CiAJCXNxID0gcGVyX2NwdV9wdHIoJmFtcDtzaHJpbmtfcWxpc3QsIGNwdSk7CiAJCXJhd19zcGluX2xvY2tfaXJxc2F2ZSgmYW1wO3NxLSZndDtsb2NrLCBmbGFncyk7CiAJCXFsaXN0X21vdmVfY2FjaGUoJmFtcDtzcS0mZ3Q7cWxpc3QsICZhbXA7dG9fZnJlZSwgY2FjaGUpOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDM6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA2MAoJCQkJCQkJb3V0cHV0OiAxNjIKCQkJCQkJCXRob3VnaHRzOiAyMjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqS0FTQU4gUXVhcmFudGluZSBDYWNoZSBEcmFpbmFnZSAtIEJ1ZyBGaXggVmVyaWZpY2F0aW9uKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgc3dpdGNoaW5nIHRoZSBDUFUgaXRlcmF0aW9uIGluIGBrYXNhbl9xdWFyYW50aW5lX3JlbW92ZV9jYWNoZSgpYCBmcm9tIGBmb3JfZWFjaF9vbmxpbmVfY3B1KGNwdSlgIHRvIGBmb3JfZWFjaF9wb3NzaWJsZV9jcHUoY3B1KWAgd2l0aGluIGBtbS9rYXNhbi9xdWFyYW50aW5lLmNgLiAgVGhlIGNvcmUgb2YgdGhpcyBpcyBhYm91dCBmaXhpbmcgYSByYWNlIGNvbmRpdGlvbiBvciBlZGdlIGNhc2UuICBFc3NlbnRpYWxseSwgdGhlcmUgd2FzIGEgc2NlbmFyaW8gd2hlcmUgYSBDUFUgY291bGQgZ28gb2ZmbGluZSAqYWZ0ZXIqIGBvbl9lYWNoX2NwdSgpYCBoYWQgZmluaXNoZWQgaXRzIHdvcmssIGxlYXZpbmcgc3RhbGUgZW50cmllcyBpbiB0aGUgS0FTQU4gcXVhcmFudGluZSBjYWNoZSBmb3IgdGhhdCBDUFUuICBUaGlzIHNvdW5kcyBsaWtlIGEgcG90ZW50aWFsIG1lbW9yeSBsZWFrIG9yLCBldmVuIHdvcnNlLCBhIHVzZS1hZnRlci1mcmVlIHNjZW5hcmlvIHdpdGhpbiB0aGUgS0FTQU4gc3Vic3lzdGVtLiBUaGUgY2hhbmdlIGVuc3VyZXMgYWxsIENQVXMsIGluY2x1ZGluZyB0aG9zZSB0aGF0IG1heSBiZSBnb2luZyBvZmZsaW5lLCBhcmUgY29uc2lkZXJlZCB0byBwcm9wZXJseSBkcmFpbiB0aGUgbGlzdHMuCgpJdCYjMzk7cyBmb2N1c2VkIG9uIHRoZSBLQVNBTiBxdWFyYW50aW5lIGFuZCBtZW1vcnkgbWFuYWdlbWVudCBpbnRlcm5hbHMuIFRoaW5raW5nIHRocm91Z2ggdGhpcywgaXQgY2xlYXJseSBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdXNpbmcgdW5pbml0aWFsaXplZCBtZW1vcnk7IGl0JiMzOTtzIGFsbCBhYm91dCBlbnN1cmluZyBleGlzdGluZyBtZW1vcnkgaXMgcHJvcGVybHkgaGFuZGxlZC4gV2UmIzM5O3JlIGp1c3QgbW9kaWZ5aW5nIHRoZSBsb29wIHRvIHByZXZlbnQgZGFuZ2xpbmcgcG9pbnRlcnMuCgpMZXQgbWUganVzdCBxdWlja2x5IGNvbmZpcm0gdGhhdCB0aGUga2V5IGNoYW5nZSBpcyBpbiBga2FzYW5fcXVhcmFudGluZV9yZW1vdmVfY2FjaGVgLCBhZ2FpbiB3aXRoIHRoYXQgQ1BVIGl0ZXJhdGlvbiBjaGFuZ2UuIFllcywganVzdCBhIGxvb3AsIGRyYWluaW5nIGEgbGlzdC4gTm8gdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWVzLiAgT2theSwgSSYjMzk7bSBjb25maWRlbnQuIEkmIzM5O20gc2V0dGluZyBgTmVlZHNLTVNBTmAgdG8gYGZhbHNlYCBmb3IgdGhpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDM6NDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYGthc2FuX3F1YXJhbnRpbmVfcmVtb3ZlX2NhY2hlYCBpbiBgbW0va2FzYW4vcXVhcmFudGluZS5jYCB0byBpdGVyYXRlIG92ZXIgYWxsIHBvc3NpYmxlIENQVXMgaW5zdGVhZCBvZiBvbmx5IG9ubGluZSBDUFVzIHdoZW4gZHJhaW5pbmcgdGhlIHNocmluayBsaXN0LiBUaGlzIGZpeGVzIGEgcG90ZW50aWFsIGlzc3VlIHdoZXJlIGNhY2hlIG9iamVjdHMgY291bGQgYmUgbGVmdCBvbiB0aGUgc2hyaW5rIGxpc3Qgb2YgYSBDUFUgdGhhdCBnb2VzIG9mZmxpbmUuIFRoaXMgY2hhbmdlIGFkZHJlc3NlcyBhIG1lbW9yeSBtYW5hZ2VtZW50IGlzc3VlIChsaWtlbHkgYSBtZW1vcnkgbGVhayBvciB1c2UtYWZ0ZXItZnJlZSByZWxhdGVkIHRvIEtBU0FOJiMzOTtzIHF1YXJhbnRpbmUpIGFuZCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBhbGxvY2F0aW9ucywgc3RydWN0dXJlcyBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgbG9naWMgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkuIFN0YW5kYXJkIEtBU0FOIGFuZCBvdGhlciBtZW1vcnkgZGV0ZWN0b3JzIGFyZSBzdWZmaWNpZW50IGZvciB0aGlzIGNvZGUsIGFuZCBLTVNBTiBpcyBub3QgYXBwbGljYWJsZS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBrYXNhbl9xdWFyYW50aW5lX3JlbW92ZV9jYWNoZWAgaW4gYG1tL2thc2FuL3F1YXJhbnRpbmUuY2AgdG8gaXRlcmF0ZSBvdmVyIGFsbCBwb3NzaWJsZSBDUFVzIGluc3RlYWQgb2Ygb25seSBvbmxpbmUgQ1BVcyB3aGVuIGRyYWluaW5nIHRoZSBzaHJpbmsgbGlzdC4gVGhpcyBmaXhlcyBhIHBvdGVudGlhbCBpc3N1ZSB3aGVyZSBjYWNoZSBvYmplY3RzIGNvdWxkIGJlIGxlZnQgb24gdGhlIHNocmluayBsaXN0IG9mIGEgQ1BVIHRoYXQgZ29lcyBvZmZsaW5lLiBUaGlzIGNoYW5nZSBhZGRyZXNzZXMgYSBtZW1vcnkgbWFuYWdlbWVudCBpc3N1ZSAobGlrZWx5IGEgbWVtb3J5IGxlYWsgb3IgdXNlLWFmdGVyLWZyZWUgcmVsYXRlZCB0byBLQVNBTiYjMzk7cyBxdWFyYW50aW5lKSBhbmQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgYWxsb2NhdGlvbnMsIHN0cnVjdHVyZXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIGxvZ2ljIHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBTdGFuZGFyZCBLQVNBTiBhbmQgb3RoZXIgbWVtb3J5IGRldGVjdG9ycyBhcmUgc3VmZmljaWVudCBmb3IgdGhpcyBjb2RlLCBhbmQgS01TQU4gaXMgbm90IGFwcGxpY2FibGUuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDAzOjQzOjEzLjI0OTE0NjY0M1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUxMTU0NTIwNDExLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktBU0FOXCIsXG4gICAgXCJLQVNBTl9HRU5FUklDXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia2FzYW5fcXVhcmFudGluZV9yZW1vdmVfY2FjaGVcIixcbiAgICBcImthc2FuX2NhY2hlX3Nocmlua1wiLFxuICAgIFwia2FzYW5fY2FjaGVfc2h1dGRvd25cIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGBrYXNhbl9xdWFyYW50aW5lX3JlbW92ZV9jYWNoZWAgaW4gYG1tL2thc2FuL3F1YXJhbnRpbmUuY2AgdG8gaXRlcmF0ZSBvdmVyIGFsbCBwb3NzaWJsZSBDUFVzIGluc3RlYWQgb2Ygb25seSBvbmxpbmUgQ1BVcyB3aGVuIGRyYWluaW5nIHRoZSBzaHJpbmsgbGlzdC4gVGhpcyBmaXhlcyBhIHBvdGVudGlhbCBpc3N1ZSB3aGVyZSBjYWNoZSBvYmplY3RzIGNvdWxkIGJlIGxlZnQgb24gdGhlIHNocmluayBsaXN0IG9mIGEgQ1BVIHRoYXQgZ29lcyBvZmZsaW5lLiBUaGlzIGNoYW5nZSBhZGRyZXNzZXMgYSBtZW1vcnkgbWFuYWdlbWVudCBpc3N1ZSAobGlrZWx5IGEgbWVtb3J5IGxlYWsgb3IgdXNlLWFmdGVyLWZyZWUgcmVsYXRlZCB0byBLQVNBTidzIHF1YXJhbnRpbmUpIGFuZCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBhbGxvY2F0aW9ucywgc3RydWN0dXJlcyBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgbG9naWMgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkuIFN0YW5kYXJkIEtBU0FOIGFuZCBvdGhlciBtZW1vcnkgZGV0ZWN0b3JzIGFyZSBzdWZmaWNpZW50IGZvciB0aGlzIGNvZGUsIGFuZCBLTVNBTiBpcyBub3QgYXBwbGljYWJsZS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBLQVNBTiBxdWFyYW50aW5lIGxvZ2ljIGJ5IGl0ZXJhdGluZyBvdmVyIGFsbCBwb3NzaWJsZSBDUFVzIGluc3RlYWQgb2Ygb25seSBvbmxpbmUgQ1BVcyB3aGVuIHJlbW92aW5nIGEgY2FjaGUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIGtlcm5lbCBtZW1vcnkgZGVidWdnaW5nIGxvZ2ljIHRoYXQgaXMgcmVhY2hhYmxlIHdoZW4gYSBrbWVtX2NhY2hlIGlzIHNocnVuayBvciBkZXN0cm95ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDAzOjQzOjEzLjI0OTE1MjI4M1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA2NjIyMTExNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGZhMThmYTcwMmIyMWRiYWRmZmZhYTVlNDg4ZjM2Y2Q0NDYwYzVhZThcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFNhdCBBdWcgOCAwMzo0MzoxMSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9tbS9rYXNhbi9xdWFyYW50aW5lLmMgYi9tbS9rYXNhbi9xdWFyYW50aW5lLmNcXG5pbmRleCA2OTU4YWE3MTNjNjdlLi4xNmY0ZTY3YmVlZTgyIDEwMDY0NFxcbi0tLSBhL21tL2thc2FuL3F1YXJhbnRpbmUuY1xcbisrKyBiL21tL2thc2FuL3F1YXJhbnRpbmUuY1xcbkBAIC0zNTUsNyArMzU1LDEyIEBAIHZvaWQga2FzYW5fcXVhcmFudGluZV9yZW1vdmVfY2FjaGUoc3RydWN0IGttZW1fY2FjaGUgKmNhY2hlKVxcbiBcXHQgKi9cXG4gXFx0b25fZWFjaF9jcHUocGVyX2NwdV9yZW1vdmVfY2FjaGUsIGNhY2hlLCAxKTtcXG4gXFxuLVxcdGZvcl9lYWNoX29ubGluZV9jcHUoY3B1KSB7XFxuK1xcdC8qXFxuK1xcdCAqIEEgQ1BVIGNhbiBnbyBvZmZsaW5lIGFmdGVyIG9uX2VhY2hfY3B1KCkgcmV0dXJucywgbGVhdmluZyBjYWNoZVxcbitcXHQgKiBvYmplY3RzIG9uIHRoYXQgQ1BVJ3Mgc2hyaW5rIGxpc3QuIFNjYW4gYWxsIHBvc3NpYmxlIENQVXMgdG9cXG4rXFx0ICogZHJhaW4gdGhvc2UgbGlzdHMuXFxuK1xcdCAqL1xcbitcXHRmb3JfZWFjaF9wb3NzaWJsZV9jcHUoY3B1KSB7XFxuIFxcdFxcdHNxID0gcGVyX2NwdV9wdHIoXFx1MDAyNnNocmlua19xbGlzdCwgY3B1KTtcXG4gXFx0XFx0cmF3X3NwaW5fbG9ja19pcnFzYXZlKFxcdTAwMjZzcS1cXHUwMDNlbG9jaywgZmxhZ3MpO1xcbiBcXHRcXHRxbGlzdF9tb3ZlX2NhY2hlKFxcdTAwMjZzcS1cXHUwMDNlcWxpc3QsIFxcdTAwMjZ0b19mcmVlLCBjYWNoZSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDAzOjQzOjE0LjMxNjE0Mzk1OFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjQyODc4ODEzMzcxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktBU0FOXCIsXG4gICAgXCJLQVNBTl9HRU5FUklDXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia2FzYW5fcXVhcmFudGluZV9yZW1vdmVfY2FjaGVcIixcbiAgICBcImthc2FuX2NhY2hlX3Nocmlua1wiLFxuICAgIFwia2FzYW5fY2FjaGVfc2h1dGRvd25cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBLQVNBTiBxdWFyYW50aW5lIGxvZ2ljIGJ5IGl0ZXJhdGluZyBvdmVyIGFsbCBwb3NzaWJsZSBDUFVzIGluc3RlYWQgb2Ygb25seSBvbmxpbmUgQ1BVcyB3aGVuIHJlbW92aW5nIGEgY2FjaGUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIGtlcm5lbCBtZW1vcnkgZGVidWdnaW5nIGxvZ2ljIHRoYXQgaXMgcmVhY2hhYmxlIHdoZW4gYSBrbWVtX2NhY2hlIGlzIHNocnVuayBvciBkZXN0cm95ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGZhMThmYTcwMmIyMWRiYWRmZmZhYTVlNDg4ZjM2Y2Q0NDYwYzVhZThcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEF1ZyA4IDAzOjQzOjExIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbW0va2FzYW4vcXVhcmFudGluZS5jIGIvbW0va2FzYW4vcXVhcmFudGluZS5jXG5pbmRleCA2OTU4YWE3MTNjNjdlLi4xNmY0ZTY3YmVlZTgyIDEwMDY0NFxuLS0tIGEvbW0va2FzYW4vcXVhcmFudGluZS5jXG4rKysgYi9tbS9rYXNhbi9xdWFyYW50aW5lLmNcbkBAIC0zNTUsNyArMzU1LDEyIEBAIHZvaWQga2FzYW5fcXVhcmFudGluZV9yZW1vdmVfY2FjaGUoc3RydWN0IGttZW1fY2FjaGUgKmNhY2hlKVxuIFx0ICovXG4gXHRvbl9lYWNoX2NwdShwZXJfY3B1X3JlbW92ZV9jYWNoZSwgY2FjaGUsIDEpO1xuIFxuLVx0Zm9yX2VhY2hfb25saW5lX2NwdShjcHUpIHtcbitcdC8qXG4rXHQgKiBBIENQVSBjYW4gZ28gb2ZmbGluZSBhZnRlciBvbl9lYWNoX2NwdSgpIHJldHVybnMsIGxlYXZpbmcgY2FjaGVcbitcdCAqIG9iamVjdHMgb24gdGhhdCBDUFUncyBzaHJpbmsgbGlzdC4gU2NhbiBhbGwgcG9zc2libGUgQ1BVcyB0b1xuK1x0ICogZHJhaW4gdGhvc2UgbGlzdHMuXG4rXHQgKi9cbitcdGZvcl9lYWNoX3Bvc3NpYmxlX2NwdShjcHUpIHtcbiBcdFx0c3EgPSBwZXJfY3B1X3B0cihcdTAwMjZzaHJpbmtfcWxpc3QsIGNwdSk7XG4gXHRcdHJhd19zcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZzcS1cdTAwM2Vsb2NrLCBmbGFncyk7XG4gXHRcdHFsaXN0X21vdmVfY2FjaGUoXHUwMDI2c3EtXHUwMDNlcWxpc3QsIFx1MDAyNnRvX2ZyZWUsIGNhY2hlKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDAzOjQzOjE0LjMxNjE0NTQ1OFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2MDA2NTY4MzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgS0FTQU4gQnVnIEZpeDogRnV6emluZyBQb3RlbnRpYWwqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgdHdlYWtzIHRoZSBLQVNBTiBxdWFyYW50aW5lIGxvZ2ljLiBTcGVjaWZpY2FsbHksIGl0J3Mgc3dhcHBpbmcgYGZvcl9lYWNoX29ubGluZV9jcHUoY3B1KWAgd2l0aCBgZm9yX2VhY2hfcG9zc2libGVfY3B1KGNwdSlgIHdpdGhpbiB0aGUgYGthc2FuX3F1YXJhbnRpbmVfcmVtb3ZlX2NhY2hlYCBmdW5jdGlvbiBpbiBgbW0va2FzYW4vcXVhcmFudGluZS5jYC4gVGhlIHBhdGNoIGRlc2NyaXB0aW9uIGV4cGxpY2l0bHkgY2FsbHMgdGhpcyBhIGJ1ZyBmaXgsIHdoaWNoIGltbWVkaWF0ZWx5IHBpcXVlcyBteSBpbnRlcmVzdCBmcm9tIGEgZnV6emluZyBwZXJzcGVjdGl2ZS5cblxuR2l2ZW4gdGhhdCBLQVNBTiBpcyBvZnRlbiBlbmFibGVkIGJ5IGRlZmF1bHQgZHVyaW5nIGZ1enppbmcsIGFuZCB0aGlzIGlzIGEgcmVsYXRpdmVseSBsb2NhbGl6ZWQgZml4IHdpdGhpbiBLQVNBTiwgdGhlIHBvdGVudGlhbCBpbXBhY3Qgb24gZnV6emluZyBlZmZlY3RpdmVuZXNzIHdhcnJhbnRzIGEgZGVlcGVyIGxvb2suIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgdGhpcyBjaGFuZ2UgaW50cm9kdWNlcyBuZXcgZnV6emluZyB0YXJnZXRzIG9yIGFsdGVycyBleGlzdGluZyBvbmVzLlxuXG5UaGUgZnVuY3Rpb24gaW4gcXVlc3Rpb24gaXMgYGthc2FuX3F1YXJhbnRpbmVfcmVtb3ZlX2NhY2hlYC4gVGhlIG5hbWUgaXRzZWxmIGhpbnRzIGF0IGl0cyBwdXJwb3NlOiByZW1vdmluZyBhIGNhY2hlIGZyb20gdGhlIHF1YXJhbnRpbmUuIEEgcXVpY2sgbWVudGFsIHJlZnJlc2jigKYgYWgsIHJpZ2h0LCB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aGVuIGEgYGttZW1fY2FjaGVgIGlzIGRlc3Ryb3llZC4gVGhhdCdzIGEgY29yZSBrZXJuZWwgZnVuY3Rpb24sIGFuZCB0aGUgYGttZW1fY2FjaGVgIHN1YnN5c3RlbSBpcyBvZnRlbiBhIHNvdXJjZSBvZiBpbnRlcmVzdGluZyBmdXp6aW5nIHRhcmdldHMuXG5cblllcywgdGhpcyBpcyBkZWZpbml0ZWx5IHdvcnRoIGZ1enppbmcuIEl0J3MgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBgbW0va2FzYW4vcXVhcmFudGluZS5jYCwgc3BlY2lmaWNhbGx5IHJlbGF0ZWQgdG8gdGhlIHJlbW92YWwgb2YgbWVtb3J5IGNhY2hlcy4gTGV0IG1lIHRha2UgYSBjbG9zZXIgbG9vayBhdCBga2FzYW5fcXVhcmFudGluZV9yZW1vdmVfY2FjaGVgIGFuZCB0aGUgY29udGV4dCBpbiB3aGljaCBpdCdzIGNhbGxlZC4gVGhpcyBjb3VsZCBiZSBhIGdvb2QgcGxhY2UgdG8gc3RhcnQgbXkgZnV6emluZyBhbmFseXNpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA2MywiT3V0cHV0VG9rZW5zIjoyMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDAzOjQzOjE4LjkxNjgwNDc3WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NjE5MDM1NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia2FzYW5fcXVhcmFudGluZV9yZW1vdmVfY2FjaGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0va2FzYW4vZ2VuZXJpYy5jPTIxNT12b2lkIGthc2FuX2NhY2hlX3NocmluayhzdHJ1Y3Qga21lbV9jYWNoZSAqY2FjaGUpXFxubW0va2FzYW4vZ2VuZXJpYy5jLTIxNi17XFxubW0va2FzYW4vZ2VuZXJpYy5jOjIxNzpcXHRrYXNhbl9xdWFyYW50aW5lX3JlbW92ZV9jYWNoZShjYWNoZSk7XFxubW0va2FzYW4vZ2VuZXJpYy5jLTIxOC19XFxuLS1cXG5tbS9rYXNhbi9nZW5lcmljLmM9MjIwPXZvaWQga2FzYW5fY2FjaGVfc2h1dGRvd24oc3RydWN0IGttZW1fY2FjaGUgKmNhY2hlKVxcbi0tXFxubW0va2FzYW4vZ2VuZXJpYy5jLTIyMi1cXHRpZiAoIV9fa21lbV9jYWNoZV9lbXB0eShjYWNoZSkpXFxubW0va2FzYW4vZ2VuZXJpYy5jOjIyMzpcXHRcXHRrYXNhbl9xdWFyYW50aW5lX3JlbW92ZV9jYWNoZShjYWNoZSk7XFxubW0va2FzYW4vZ2VuZXJpYy5jLTIyNC19XFxuLS1cXG5tbS9rYXNhbi9rYXNhbi5oPTQwNj12b2lkIGthc2FuX3F1YXJhbnRpbmVfcmVkdWNlKHZvaWQpO1xcbm1tL2thc2FuL2thc2FuLmg6NDA3OnZvaWQga2FzYW5fcXVhcmFudGluZV9yZW1vdmVfY2FjaGUoc3RydWN0IGttZW1fY2FjaGUgKmNhY2hlKTtcXG5tbS9rYXNhbi9rYXNhbi5oLTQwOC0jZWxzZVxcbi0tXFxubW0va2FzYW4va2FzYW4uaD00MTA9c3RhdGljIGlubGluZSB2b2lkIGthc2FuX3F1YXJhbnRpbmVfcmVkdWNlKHZvaWQpIHsgfVxcbm1tL2thc2FuL2thc2FuLmg6NDExOnN0YXRpYyBpbmxpbmUgdm9pZCBrYXNhbl9xdWFyYW50aW5lX3JlbW92ZV9jYWNoZShzdHJ1Y3Qga21lbV9jYWNoZSAqY2FjaGUpIHsgfVxcbm1tL2thc2FuL2thc2FuLmgtNDEyLSNlbmRpZlxcbi0tXFxubW0va2FzYW4vcXVhcmFudGluZS5jPTE4NT1ib29sIGthc2FuX3F1YXJhbnRpbmVfcHV0KHN0cnVjdCBrbWVtX2NhY2hlICpjYWNoZSwgdm9pZCAqb2JqZWN0KVxcbi0tXFxubW0va2FzYW4vcXVhcmFudGluZS5jLTIwMC1cXHQgKiBOb3RlOiBpcnEgbXVzdCBiZSBkaXNhYmxlZCB1bnRpbCBhZnRlciB3ZSBtb3ZlIHRoZSBiYXRjaCB0byB0aGVcXG5tbS9rYXNhbi9xdWFyYW50aW5lLmM6MjAxOlxcdCAqIGdsb2JhbCBxdWFyYW50aW5lLiBPdGhlcndpc2Uga2FzYW5fcXVhcmFudGluZV9yZW1vdmVfY2FjaGUoKSBjYW5cXG5tbS9rYXNhbi9xdWFyYW50aW5lLmMtMjAyLVxcdCAqIG1pc3Mgc29tZSBvYmplY3RzIGJlbG9uZ2luZyB0byB0aGUgY2FjaGUgaWYgdGhleSBhcmUgaW4gb3VyIGxvY2FsXFxubW0va2FzYW4vcXVhcmFudGluZS5jOjIwMzpcXHQgKiB0ZW1wIGxpc3QuIGthc2FuX3F1YXJhbnRpbmVfcmVtb3ZlX2NhY2hlKCkgZXhlY3V0ZXMgb25fZWFjaF9jcHUoKVxcbm1tL2thc2FuL3F1YXJhbnRpbmUuYy0yMDQtXFx0ICogYXQgdGhlIGJlZ2lubmluZyB3aGljaCBlbnN1cmVzIHRoYXQgaXQgZWl0aGVyIHNlZXMgdGhlIG9iamVjdHMgaW5cXG4tLVxcbm1tL2thc2FuL3F1YXJhbnRpbmUuYz0yMzk9dm9pZCBrYXNhbl9xdWFyYW50aW5lX3JlZHVjZSh2b2lkKVxcbi0tXFxubW0va2FzYW4vcXVhcmFudGluZS5jLTI1MC1cXHQvKlxcbm1tL2thc2FuL3F1YXJhbnRpbmUuYzoyNTE6XFx0ICogc3JjdSBjcml0aWNhbCBzZWN0aW9uIGVuc3VyZXMgdGhhdCBrYXNhbl9xdWFyYW50aW5lX3JlbW92ZV9jYWNoZSgpXFxubW0va2FzYW4vcXVhcmFudGluZS5jLTI1Mi1cXHQgKiB3aWxsIG5vdCBtaXNzIG9iamVjdHMgYmVsb25naW5nIHRvIHRoZSBjYWNoZSB3aGlsZSB0aGV5IGFyZSBpbiBvdXJcXG4tLVxcbm1tL2thc2FuL3F1YXJhbnRpbmUuYz0zMjY9c3RhdGljIHZvaWQgcGVyX2NwdV9yZW1vdmVfY2FjaGUodm9pZCAqYXJnKVxcbi0tXFxubW0va2FzYW4vcXVhcmFudGluZS5jLTM0MS0vKiBGcmVlIGFsbCBxdWFyYW50aW5lZCBvYmplY3RzIGJlbG9uZ2luZyB0byBjYWNoZS4gKi9cXG5tbS9rYXNhbi9xdWFyYW50aW5lLmM6MzQyOnZvaWQga2FzYW5fcXVhcmFudGluZV9yZW1vdmVfY2FjaGUoc3RydWN0IGttZW1fY2FjaGUgKmNhY2hlKVxcbm1tL2thc2FuL3F1YXJhbnRpbmUuYy0zNDMte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwMzo0MzoyMC40Nzg3MTI5MTFaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDgxMjMzMzQxMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIFRhcmdldCBJZGVudGlmaWNhdGlvbjogYGthc2FuX3F1YXJhbnRpbmVfcmVtb3ZlX2NhY2hlYCoqXG5cbk9rYXksIHNvIEkndmUgc3BvdHRlZCBga2FzYW5fcXVhcmFudGluZV9yZW1vdmVfY2FjaGVgLiBUaGF0J3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBJIGtub3cgaXQncyBjYWxsZWQgZnJvbSBga2FzYW5fY2FjaGVfc2hyaW5rYCBhbmQgYGthc2FuX2NhY2hlX3NodXRkb3duYCwgYW5kIHRob3NlLCBpbiB0dXJuLCBhcmUgdHJpZ2dlcmVkIHdoZW4gYSBrbWVtX2NhY2hlIGlzIGVpdGhlciBzaHJ1bmsgb3IgZGVzdHJveWVkLiBUaGUgZmFjdCB0aGF0IHRoZSBxdWFyYW50aW5lIHJlbW92YWwgaXMgaGFwcGVuaW5nIGR1cmluZyB0aGVzZSBjYWNoZSBsaWZlY3ljbGUgZXZlbnRzIHNjcmVhbXMgXCJmdXp6aW5nIG9wcG9ydHVuaXR5XCIgdG8gbWUuIEkgbWVhbiwgbWVtb3J5IG1hbmFnZW1lbnQgc3R1ZmYgaXMgYWxtb3N0IGFsd2F5cyBpbnRlcmVzdGluZyBmcm9tIGEgZnV6emluZyBwZXJzcGVjdGl2ZSwgYW5kIHRoaXMgaGFzIGEgbmljZSwgY29uZmluZWQgc2NvcGUuIFRoZSBtYWluIGZvY3VzIGhlcmUgd2lsbCBiZSBvbiB0aG9zZSB0aHJlZSBzeW1ib2xzOiBga2FzYW5fcXVhcmFudGluZV9yZW1vdmVfY2FjaGVgLCBga2FzYW5fY2FjaGVfc2hyaW5rYCwgYW5kIGBrYXNhbl9jYWNoZV9zaHV0ZG93bmAuXG5cbk5vdywgSSBuZWVkIHRvIGtub3cgbW9yZSBhYm91dCBga2FzYW5fcXVhcmFudGluZV9yZW1vdmVfY2FjaGVgLiBJcyBpdCBleHBvcnRlZD8gSSdsbCBxdWlja2x5IGNoZWNrIGl0cyBkZWZpbml0aW9uLCBpdCdzIGluIGBtbS9rYXNhbi9xdWFyYW50aW5lLmNgLiBPa2F5LCBzbyBpdCdzIG5vdCBzdGF0aWMgdGhlbiwgd2hpY2ggaXMgZ29vZCBmb3IgbWUuIFRpbWUgdG8gY2hlY2sgdGhlIGNvbmZpZ3MuIEkga25vdyBJIG5lZWQgS0FTQU5fR0VORVJJQyBmb3IgdGhpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzM4NSwiT3V0cHV0VG9rZW5zIjoxOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwMzo0MzozMS4yOTEwNDkyMjRaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTYyMzgwMjkyNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgS0FTQU5cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9hcm0vS2NvbmZpZz0xMDM0PWNvbmZpZyBQQUdFX09GRlNFVFxcbi0tXFxuYXJjaC9hcm0vS2NvbmZpZy0xMDQxLVxcbmFyY2gvYXJtL0tjb25maWc6MTA0Mjpjb25maWcgS0FTQU5fU0hBRE9XX09GRlNFVFxcbmFyY2gvYXJtL0tjb25maWctMTA0My1cXHRoZXhcXG4tLVxcbmFyY2gvYXJtNjQvS2NvbmZpZz0zODM9Y29uZmlnIEJVSUxUSU5fUkVUVVJOX0FERFJFU1NfU1RSSVBTX1BBQ1xcbi0tXFxuYXJjaC9hcm02NC9LY29uZmlnLTM5Ni1cXG5hcmNoL2FybTY0L0tjb25maWc6Mzk3OmNvbmZpZyBLQVNBTl9TSEFET1dfT0ZGU0VUXFxuYXJjaC9hcm02NC9LY29uZmlnLTM5OC1cXHRoZXhcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL0tjb25maWc9ODAxPWNvbmZpZyBBUkNIX1NVUFBPUlRTX1VQUk9CRVNcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL0tjb25maWctODAzLVxcbmFyY2gvbG9vbmdhcmNoL0tjb25maWc6ODA0OmNvbmZpZyBLQVNBTl9TSEFET1dfT0ZGU0VUXFxuYXJjaC9sb29uZ2FyY2gvS2NvbmZpZy04MDUtXFx0aGV4XFxuLS1cXG5hcmNoL3Bvd2VycGMvS2NvbmZpZy5kZWJ1Zz0zNTg9Y29uZmlnIEZBSUxfSU9NTVVcXG4tLVxcbmFyY2gvcG93ZXJwYy9LY29uZmlnLmRlYnVnLTM2Ny1cXG5hcmNoL3Bvd2VycGMvS2NvbmZpZy5kZWJ1ZzozNjg6Y29uZmlnIEtBU0FOX1NIQURPV19PRkZTRVRcXG5hcmNoL3Bvd2VycGMvS2NvbmZpZy5kZWJ1Zy0zNjktXFx0aGV4XFxuLS1cXG5hcmNoL3Jpc2N2L0tjb25maWc9MjkzPWNvbmZpZyBNTVVcXG4tLVxcbmFyY2gvcmlzY3YvS2NvbmZpZy0yOTktXFxuYXJjaC9yaXNjdi9LY29uZmlnOjMwMDpjb25maWcgS0FTQU5fU0hBRE9XX09GRlNFVFxcbmFyY2gvcmlzY3YvS2NvbmZpZy0zMDEtXFx0aGV4XFxuLS1cXG5hcmNoL3MzOTAvS2NvbmZpZz0zOD1jb25maWcgQVJDSF9TVVBQT1JUU19VUFJPQkVTXFxuLS1cXG5hcmNoL3MzOTAvS2NvbmZpZy00MC1cXG5hcmNoL3MzOTAvS2NvbmZpZzo0MTpjb25maWcgS0FTQU5fU0hBRE9XX09GRlNFVFxcbmFyY2gvczM5MC9LY29uZmlnLTQyLVxcdGhleFxcbi0tXFxuYXJjaC91bS9LY29uZmlnPTI2Nj1jb25maWcgVU1MX01BWF9VU0VSU1BBQ0VfSVRFUkFUSU9OU1xcbi0tXFxuYXJjaC91bS9LY29uZmlnLTI4MC1cXG5hcmNoL3VtL0tjb25maWc6MjgxOmNvbmZpZyBLQVNBTl9TSEFET1dfT0ZGU0VUXFxuYXJjaC91bS9LY29uZmlnLTI4Mi1cXHRoZXhcXG4tLVxcbmFyY2gveDg2L0tjb25maWc9NDA4PWNvbmZpZyBBVURJVF9BUkNIXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnLTQxMC1cXG5hcmNoL3g4Ni9LY29uZmlnOjQxMTpjb25maWcgS0FTQU5fU0hBRE9XX09GRlNFVFxcbmFyY2gveDg2L0tjb25maWctNDEyLVxcdGhleFxcbi0tXFxuYXJjaC94dGVuc2EvS2NvbmZpZz05OD1jb25maWcgSEFWRV9YVEVOU0FfR1BJTzMyXFxuLS1cXG5hcmNoL3h0ZW5zYS9LY29uZmlnLTEwMC1cXG5hcmNoL3h0ZW5zYS9LY29uZmlnOjEwMTpjb25maWcgS0FTQU5fU0hBRE9XX09GRlNFVFxcbmFyY2gveHRlbnNhL0tjb25maWctMTAyLVxcdGhleFxcbi0tXFxubGliL0tjb25maWcua2FzYW49NDM9Y29uZmlnIENDX0hBU19XT1JLSU5HX05PU0FOSVRJWkVfQUREUkVTU1xcbi0tXFxubGliL0tjb25maWcua2FzYW4tNDUtXFxubGliL0tjb25maWcua2FzYW46NDY6bWVudWNvbmZpZyBLQVNBTlxcbmxpYi9LY29uZmlnLmthc2FuLTQ3LVxcdGJvb2wgXFxcIktBU0FOOiBkeW5hbWljIG1lbW9yeSBzYWZldHkgZXJyb3IgZGV0ZWN0b3JcXFwiXFxuLS1cXG5saWIvS2NvbmZpZy5rYXNhbj03Mz1jaG9pY2VcXG4tLVxcbmxpYi9LY29uZmlnLmthc2FuLTg4LVxcbmxpYi9LY29uZmlnLmthc2FuOjg5OmNvbmZpZyBLQVNBTl9HRU5FUklDXFxubGliL0tjb25maWcua2FzYW4tOTAtXFx0Ym9vbCBcXFwiR2VuZXJpYyBLQVNBTlxcXCJcXG4tLVxcbmxpYi9LY29uZmlnLmthc2FuLTEwMy1cXG5saWIvS2NvbmZpZy5rYXNhbjoxMDQ6Y29uZmlnIEtBU0FOX1NXX1RBR1NcXG5saWIvS2NvbmZpZy5rYXNhbi0xMDUtXFx0Ym9vbCBcXFwiU29mdHdhcmUgVGFnLUJhc2VkIEtBU0FOXFxcIlxcbi0tXFxubGliL0tjb25maWcua2FzYW4tMTIyLVxcbmxpYi9LY29uZmlnLmthc2FuOjEyMzpjb25maWcgS0FTQU5fSFdfVEFHU1xcbmxpYi9LY29uZmlnLmthc2FuLTEyNC1cXHRib29sIFxcXCJIYXJkd2FyZSBUYWctQmFzZWQgS0FTQU5cXFwiXFxuLS1cXG5saWIvS2NvbmZpZy5rYXNhbj0xNDE9Y2hvaWNlXFxuLS1cXG5saWIvS2NvbmZpZy5rYXNhbi0xNDUtXFxubGliL0tjb25maWcua2FzYW46MTQ2OmNvbmZpZyBLQVNBTl9PVVRMSU5FXFxubGliL0tjb25maWcua2FzYW4tMTQ3LVxcdGJvb2wgXFxcIk91dGxpbmUgaW5zdHJ1bWVudGF0aW9uXFxcIlxcbi0tXFxubGliL0tjb25maWcua2FzYW4tMTUyLVxcbmxpYi9LY29uZmlnLmthc2FuOjE1Mzpjb25maWcgS0FTQU5fSU5MSU5FXFxubGliL0tjb25maWcua2FzYW4tMTU0LVxcdGJvb2wgXFxcIklubGluZSBpbnN0cnVtZW50YXRpb25cXFwiXFxuLS1cXG5saWIvS2NvbmZpZy5rYXNhbj0xNjE9ZW5kY2hvaWNlXFxubGliL0tjb25maWcua2FzYW4tMTYyLVxcbmxpYi9LY29uZmlnLmthc2FuOjE2Mzpjb25maWcgS0FTQU5fU1RBQ0tcXG5saWIvS2NvbmZpZy5rYXNhbi0xNjQtXFx0Ym9vbCBcXFwiU3RhY2sgaW5zdHJ1bWVudGF0aW9uICh1bnNhZmUpXFxcIiBpZiBDQ19JU19DTEFORyBcXHUwMDI2XFx1MDAyNiAhQ09NUElMRV9URVNUXFxuLS1cXG5saWIvS2NvbmZpZy5rYXNhbi0xODUtXFxubGliL0tjb25maWcua2FzYW46MTg2OmNvbmZpZyBLQVNBTl9WTUFMTE9DXFxubGliL0tjb25maWcua2FzYW4tMTg3LVxcdGJvb2wgXFxcIkNoZWNrIGFjY2Vzc2VzIHRvIHZtYWxsb2MgYWxsb2NhdGlvbnNcXFwiXFxuLS1cXG5saWIvS2NvbmZpZy5rYXNhbi0xOTctXFxubGliL0tjb25maWcua2FzYW46MTk4OmNvbmZpZyBLQVNBTl9LVU5JVF9URVNUXFxubGliL0tjb25maWcua2FzYW4tMTk5LVxcdHRyaXN0YXRlIFxcXCJLVW5pdC1jb21wYXRpYmxlIHRlc3RzIG9mIEtBU0FOIGJ1ZyBkZXRlY3Rpb24gY2FwYWJpbGl0aWVzXFxcIiBpZiAhS1VOSVRfQUxMX1RFU1RTXFxuLS1cXG5saWIvS2NvbmZpZy5rYXNhbi0yMDktXFxubGliL0tjb25maWcua2FzYW46MjEwOmNvbmZpZyBLQVNBTl9FWFRSQV9JTkZPXFxubGliL0tjb25maWcua2FzYW4tMjExLVxcdGJvb2wgXFxcIlJlY29yZCBhbmQgcmVwb3J0IG1vcmUgaW5mb3JtYXRpb25cXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDAzOjQzOjMyLjkxNDg1ODg3OFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI4MDYwMjk4NDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzOlxuXG4qKktBU0FOIENvbmZpZ3VyYXRpb24gRGVlcCBEaXZlKipcblxuT2theSwgc28gdGhlIGNvbmZpZyBpcyBzZXQgdG8gYEtBU0FOYC4gTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhlIGBrYXNhbl9xdWFyYW50aW5lX3JlbW92ZV9jYWNoZWAgZnVuY3Rpb24gaXMgYXZhaWxhYmxlIGFjcm9zcyBhbGwgS0FTQU4gbW9kZXMuIEl0J3MgYSBrZXkgZnVuY3Rpb24sIGFuZCBpdHMgYXZhaWxhYmlsaXR5IGNhbiByZWFsbHkgaW1wYWN0IGhvdyB0aGluZ3Mgd29yay4gVG8gZ2V0IHRoZSBkZWZpbml0aXZlIGFuc3dlciwgSSBrbm93IEkgbmVlZCB0byBkZWx2ZSBpbnRvIHRoZSBLQVNBTiBzb3VyY2UgY29kZS4gU3BlY2lmaWNhbGx5LCB0aGUgYG1tL2thc2FuL01ha2VmaWxlYCBmaWxlIGlzIHRoZSBwbGFjZSB0byBzdGFydC4gVGhhdCBNYWtlZmlsZSB3aWxsIGxpa2VseSBkZWZpbmUgdGhlIGJ1aWxkIGZsYWdzIGFuZCBjb25kaXRpb25hbCBjb21waWxhdGlvbiB0aGF0IGRldGVybWluZSBpZiB0aGlzIGZ1bmN0aW9uIGlzIGluY2x1ZGVkIGluIGRpZmZlcmVudCBLQVNBTiBidWlsZHMuIFRpbWUgdG8gZGl2ZSBpbiBhbmQgZ2V0IHNvbWUgY2xhcml0eS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTE5MiwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDAzOjQzOjM1LjcyMDg5MDc4OVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzM5MDQyNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJxdWFyYW50aW5lXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL2thc2FuL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL2thc2FuL01ha2VmaWxlPTk9Q0ZMQUdTX1JFTU9WRV9pbml0Lm8gPSAkKENDX0ZMQUdTX0ZUUkFDRSlcXG5tbS9rYXNhbi9NYWtlZmlsZToxMDpDRkxBR1NfUkVNT1ZFX3F1YXJhbnRpbmUubyA9ICQoQ0NfRkxBR1NfRlRSQUNFKVxcbm1tL2thc2FuL01ha2VmaWxlLTExLUNGTEFHU19SRU1PVkVfcmVwb3J0Lm8gPSAkKENDX0ZMQUdTX0ZUUkFDRSlcXG4tLVxcbm1tL2thc2FuL01ha2VmaWxlPTI4PUNGTEFHU19pbml0Lm8gOj0gJChDQ19GTEFHU19LQVNBTl9SVU5USU1FKVxcbm1tL2thc2FuL01ha2VmaWxlOjI5OkNGTEFHU19xdWFyYW50aW5lLm8gOj0gJChDQ19GTEFHU19LQVNBTl9SVU5USU1FKVxcbm1tL2thc2FuL01ha2VmaWxlLTMwLUNGTEFHU19yZXBvcnQubyA6PSAkKENDX0ZMQUdTX0tBU0FOX1JVTlRJTUUpXFxuLS1cXG5tbS9rYXNhbi9NYWtlZmlsZT01MT1vYmoteSA6PSBjb21tb24ubyByZXBvcnQub1xcbm1tL2thc2FuL01ha2VmaWxlOjUyOm9iai0kKENPTkZJR19LQVNBTl9HRU5FUklDKSArPSBpbml0Lm8gZ2VuZXJpYy5vIHJlcG9ydF9nZW5lcmljLm8gc2hhZG93Lm8gcXVhcmFudGluZS5vXFxubW0va2FzYW4vTWFrZWZpbGUtNTMtb2JqLSQoQ09ORklHX0tBU0FOX0hXX1RBR1MpICs9IGh3X3RhZ3MubyByZXBvcnRfaHdfdGFncy5vIHRhZ3MubyByZXBvcnRfdGFncy5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDAzOjQzOjM1Ljc2NDI4MzIzNVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI3MDQ1ODEyMDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqS0FTQU4gUXVhcmFudGluZSBhbmQgSXRzIENhbGxzKipcblxuT2theSwgc28gYHF1YXJhbnRpbmUub2AgaXMgYnVpbHQgd2l0aCBgQ09ORklHX0tBU0FOX0dFTkVSSUNgIGVuYWJsZWQuIFRoYXQgaW1tZWRpYXRlbHkgdGVsbHMgbWUgd2UgbmVlZCBgS0FTQU5fR0VORVJJQ2AgdG9vLiBMZXQncyBtYWtlIHN1cmUgdGhhdCBpcyBzZXQuXG5cbk5vdywgbXkgbmV4dCB0aG91Z2h0IGlzIGFib3V0IHVzYWdlIG9mIHRoZSBxdWFyYW50aW5lIG1lY2hhbmlzbS4gSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIGlmIGBrYXNhbl9xdWFyYW50aW5lX3JlbW92ZV9jYWNoZWAgaXMgY2FsbGVkIGZyb20gYW55d2hlcmUgZWxzZSBpbiB0aGUgY29kZSBiYXNlLiBJIHdhbnQgdG8gdW5kZXJzdGFuZCB0aGUgY29tcGxldGUgcGljdHVyZSBvZiBob3cgdGhlIHF1YXJhbnRpbmUgaXMgYmVpbmcgdXRpbGl6ZWQsIHNvIGtub3dpbmcgKndoZXJlKiB0aGlzIGZ1bmN0aW9uIGdldHMgY2FsbGVkIGlzIGltcG9ydGFudC4gVGhpcyBpcyBjcnVjaWFsIGZvciB1bmRlcnN0YW5kaW5nIGRlcGVuZGVuY2llcyBhbmQgcG90ZW50aWFsIGltcGFjdHMgb2YgY2hhbmdlcyB3aXRoaW4gdGhlIHF1YXJhbnRpbmUgaW1wbGVtZW50YXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU3MDIsIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwMzo0MzozOC40Njg4NjcxMDFaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NTAwNjA2OTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia2FzYW5fcXVhcmFudGluZV9yZW1vdmVfY2FjaGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0va2FzYW4vZ2VuZXJpYy5jPTIxNT12b2lkIGthc2FuX2NhY2hlX3NocmluayhzdHJ1Y3Qga21lbV9jYWNoZSAqY2FjaGUpXFxubW0va2FzYW4vZ2VuZXJpYy5jLTIxNi17XFxubW0va2FzYW4vZ2VuZXJpYy5jOjIxNzpcXHRrYXNhbl9xdWFyYW50aW5lX3JlbW92ZV9jYWNoZShjYWNoZSk7XFxubW0va2FzYW4vZ2VuZXJpYy5jLTIxOC19XFxuLS1cXG5tbS9rYXNhbi9nZW5lcmljLmM9MjIwPXZvaWQga2FzYW5fY2FjaGVfc2h1dGRvd24oc3RydWN0IGttZW1fY2FjaGUgKmNhY2hlKVxcbi0tXFxubW0va2FzYW4vZ2VuZXJpYy5jLTIyMi1cXHRpZiAoIV9fa21lbV9jYWNoZV9lbXB0eShjYWNoZSkpXFxubW0va2FzYW4vZ2VuZXJpYy5jOjIyMzpcXHRcXHRrYXNhbl9xdWFyYW50aW5lX3JlbW92ZV9jYWNoZShjYWNoZSk7XFxubW0va2FzYW4vZ2VuZXJpYy5jLTIyNC19XFxuLS1cXG5tbS9rYXNhbi9rYXNhbi5oPTQwNj12b2lkIGthc2FuX3F1YXJhbnRpbmVfcmVkdWNlKHZvaWQpO1xcbm1tL2thc2FuL2thc2FuLmg6NDA3OnZvaWQga2FzYW5fcXVhcmFudGluZV9yZW1vdmVfY2FjaGUoc3RydWN0IGttZW1fY2FjaGUgKmNhY2hlKTtcXG5tbS9rYXNhbi9rYXNhbi5oLTQwOC0jZWxzZVxcbi0tXFxubW0va2FzYW4va2FzYW4uaD00MTA9c3RhdGljIGlubGluZSB2b2lkIGthc2FuX3F1YXJhbnRpbmVfcmVkdWNlKHZvaWQpIHsgfVxcbm1tL2thc2FuL2thc2FuLmg6NDExOnN0YXRpYyBpbmxpbmUgdm9pZCBrYXNhbl9xdWFyYW50aW5lX3JlbW92ZV9jYWNoZShzdHJ1Y3Qga21lbV9jYWNoZSAqY2FjaGUpIHsgfVxcbm1tL2thc2FuL2thc2FuLmgtNDEyLSNlbmRpZlxcbi0tXFxubW0va2FzYW4vcXVhcmFudGluZS5jPTE4NT1ib29sIGthc2FuX3F1YXJhbnRpbmVfcHV0KHN0cnVjdCBrbWVtX2NhY2hlICpjYWNoZSwgdm9pZCAqb2JqZWN0KVxcbi0tXFxubW0va2FzYW4vcXVhcmFudGluZS5jLTIwMC1cXHQgKiBOb3RlOiBpcnEgbXVzdCBiZSBkaXNhYmxlZCB1bnRpbCBhZnRlciB3ZSBtb3ZlIHRoZSBiYXRjaCB0byB0aGVcXG5tbS9rYXNhbi9xdWFyYW50aW5lLmM6MjAxOlxcdCAqIGdsb2JhbCBxdWFyYW50aW5lLiBPdGhlcndpc2Uga2FzYW5fcXVhcmFudGluZV9yZW1vdmVfY2FjaGUoKSBjYW5cXG5tbS9rYXNhbi9xdWFyYW50aW5lLmMtMjAyLVxcdCAqIG1pc3Mgc29tZSBvYmplY3RzIGJlbG9uZ2luZyB0byB0aGUgY2FjaGUgaWYgdGhleSBhcmUgaW4gb3VyIGxvY2FsXFxubW0va2FzYW4vcXVhcmFudGluZS5jOjIwMzpcXHQgKiB0ZW1wIGxpc3QuIGthc2FuX3F1YXJhbnRpbmVfcmVtb3ZlX2NhY2hlKCkgZXhlY3V0ZXMgb25fZWFjaF9jcHUoKVxcbm1tL2thc2FuL3F1YXJhbnRpbmUuYy0yMDQtXFx0ICogYXQgdGhlIGJlZ2lubmluZyB3aGljaCBlbnN1cmVzIHRoYXQgaXQgZWl0aGVyIHNlZXMgdGhlIG9iamVjdHMgaW5cXG4tLVxcbm1tL2thc2FuL3F1YXJhbnRpbmUuYz0yMzk9dm9pZCBrYXNhbl9xdWFyYW50aW5lX3JlZHVjZSh2b2lkKVxcbi0tXFxubW0va2FzYW4vcXVhcmFudGluZS5jLTI1MC1cXHQvKlxcbm1tL2thc2FuL3F1YXJhbnRpbmUuYzoyNTE6XFx0ICogc3JjdSBjcml0aWNhbCBzZWN0aW9uIGVuc3VyZXMgdGhhdCBrYXNhbl9xdWFyYW50aW5lX3JlbW92ZV9jYWNoZSgpXFxubW0va2FzYW4vcXVhcmFudGluZS5jLTI1Mi1cXHQgKiB3aWxsIG5vdCBtaXNzIG9iamVjdHMgYmVsb25naW5nIHRvIHRoZSBjYWNoZSB3aGlsZSB0aGV5IGFyZSBpbiBvdXJcXG4tLVxcbm1tL2thc2FuL3F1YXJhbnRpbmUuYz0zMjY9c3RhdGljIHZvaWQgcGVyX2NwdV9yZW1vdmVfY2FjaGUodm9pZCAqYXJnKVxcbi0tXFxubW0va2FzYW4vcXVhcmFudGluZS5jLTM0MS0vKiBGcmVlIGFsbCBxdWFyYW50aW5lZCBvYmplY3RzIGJlbG9uZ2luZyB0byBjYWNoZS4gKi9cXG5tbS9rYXNhbi9xdWFyYW50aW5lLmM6MzQyOnZvaWQga2FzYW5fcXVhcmFudGluZV9yZW1vdmVfY2FjaGUoc3RydWN0IGttZW1fY2FjaGUgKmNhY2hlKVxcbm1tL2thc2FuL3F1YXJhbnRpbmUuYy0zNDMte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwMzo0MzozOS45MTg5MzM3MVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNzk2OTc1ODcxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBLQVNBTiBDYWNoZSBTaHJpbmthZ2UqKlxuXG5BbHJpZ2h0LCBzbyBJJ20gZm9jdXNpbmcgb24gdGhlIEtBU0FOIGNhY2hlIG1lY2hhbmlzbXMgaGVyZS4gTXkgaW5pdGlhbCB0aG91Z2h0IHByb2Nlc3MgaXMgY2VudGVyZWQgYXJvdW5kIGBrYXNhbl9jYWNoZV9zaHJpbmtgIGFuZCBga2FzYW5fY2FjaGVfc2h1dGRvd25gLiBUaGVzZSBhcmUgdGhlIGtleSBwbGF5ZXJzLCB0aGUgZnVuY3Rpb25zIHRoYXQgYXJlIGdvaW5nIHRvIGJlIG1ha2luZyBjaGFuZ2VzIHRvIHRoZSBjYWNoZSwgYW5kIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoZXJlIHRoZXkgYXJlIGJlaW5nIGNhbGxlZCBmcm9tLiBUaGVyZWZvcmUsIHRoZSBpbW1lZGlhdGUgbmV4dCBzdGVwIGlzIGNyeXN0YWwgY2xlYXI6IEknbSBnb2luZyB0byB0cmFjayBkb3duIGV2ZXJ5IHNpbmdsZSBjYWxsIHNpdGUgZm9yIGJvdGggYGthc2FuX2NhY2hlX3Nocmlua2AgYW5kIGBrYXNhbl9jYWNoZV9zaHV0ZG93bmAuIFVuZGVyc3RhbmRpbmcgdGhlaXIgY2FsbCBwYXRocyBpcyB0aGUgY3J1Y2lhbCBuZXh0IHN0ZXAgdG8gZmlndXJpbmcgb3V0IHRoZSBiaWdnZXIgcGljdHVyZSwgYW5kIHVuZGVyc3RhbmRpbmcgaG93IHRoZSBLQVNBTiBjYWNoZSB3b3Jrcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjcwMywiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDAzOjQzOjQyLjcxNTkxMjM1OVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ0MzM1NjI2OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrYXNhbl9jYWNoZV9zaHJpbmtcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC9rYXNhbi5oPTQ5Mj12b2lkIGthc2FuX2NhY2hlX2NyZWF0ZShzdHJ1Y3Qga21lbV9jYWNoZSAqY2FjaGUsIHVuc2lnbmVkIGludCAqc2l6ZSxcXG4tLVxcbmluY2x1ZGUvbGludXgva2FzYW4uaC00OTQtXFxuaW5jbHVkZS9saW51eC9rYXNhbi5oOjQ5NTp2b2lkIGthc2FuX2NhY2hlX3NocmluayhzdHJ1Y3Qga21lbV9jYWNoZSAqY2FjaGUpO1xcbmluY2x1ZGUvbGludXgva2FzYW4uaC00OTYtdm9pZCBrYXNhbl9jYWNoZV9zaHV0ZG93bihzdHJ1Y3Qga21lbV9jYWNoZSAqY2FjaGUpO1xcbi0tXFxuaW5jbHVkZS9saW51eC9rYXNhbi5oPTUwOD1zdGF0aWMgaW5saW5lIHZvaWQga2FzYW5fY2FjaGVfY3JlYXRlKHN0cnVjdCBrbWVtX2NhY2hlICpjYWNoZSxcXG4tLVxcbmluY2x1ZGUvbGludXgva2FzYW4uaC01MTEtXFxuaW5jbHVkZS9saW51eC9rYXNhbi5oOjUxMjpzdGF0aWMgaW5saW5lIHZvaWQga2FzYW5fY2FjaGVfc2hyaW5rKHN0cnVjdCBrbWVtX2NhY2hlICpjYWNoZSkge31cXG5pbmNsdWRlL2xpbnV4L2thc2FuLmgtNTEzLXN0YXRpYyBpbmxpbmUgdm9pZCBrYXNhbl9jYWNoZV9zaHV0ZG93bihzdHJ1Y3Qga21lbV9jYWNoZSAqY2FjaGUpIHt9XFxuLS1cXG5tbS9rYXNhbi9nZW5lcmljLmM9MjAzPWJvb2wga2FzYW5fYnl0ZV9hY2Nlc3NpYmxlKGNvbnN0IHZvaWQgKmFkZHIpXFxuLS1cXG5tbS9rYXNhbi9nZW5lcmljLmMtMjE0LVxcbm1tL2thc2FuL2dlbmVyaWMuYzoyMTU6dm9pZCBrYXNhbl9jYWNoZV9zaHJpbmsoc3RydWN0IGttZW1fY2FjaGUgKmNhY2hlKVxcbm1tL2thc2FuL2dlbmVyaWMuYy0yMTYte1xcbi0tXFxubW0vc2xhYl9jb21tb24uYz02MDI9aW50IGttZW1fY2FjaGVfc2hyaW5rKHN0cnVjdCBrbWVtX2NhY2hlICpjYWNoZXApXFxubW0vc2xhYl9jb21tb24uYy02MDMte1xcbm1tL3NsYWJfY29tbW9uLmM6NjA0OlxcdGthc2FuX2NhY2hlX3NocmluayhjYWNoZXApO1xcbm1tL3NsYWJfY29tbW9uLmMtNjA1LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwMzo0Mzo0NC4xNTkyNzMzMzhaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDYxNTY1NTY2MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOlxuXG4qKktBU0FOIEludGVyYWN0aW9uIHdpdGggU2xhYiBDYWNoaW5nKipcblxuUmlnaHQsIHNvIEkgc2VlIGhvdyBLQVNBTiBpbnRlZ3JhdGVzIHdpdGggdGhlIHNsYWIgYWxsb2NhdG9yLiBTcGVjaWZpY2FsbHksIHdoZW4gYGttZW1fY2FjaGVfc2hyaW5rYCBpcyBjYWxsZWQg4oCTIHRoYXQncyB0aGUgZnVuY3Rpb24gdGhhdCB0cmllcyB0byBmcmVlIHVwIHNvbWUgbWVtb3J5IGluIGEgcGFydGljdWxhciBzbGFiIGNhY2hlIOKAkyBpdCBhY3R1YWxseSB0cmlnZ2VycyBhIGNhbGwgdG8gYGthc2FuX2NhY2hlX3Nocmlua2AuIFRoYXQgbWFrZXMgcGVyZmVjdCBzZW5zZTsgS0FTQU4gbmVlZHMgdG8gYmUgYXdhcmUgb2YgYW5kIHBvdGVudGlhbGx5IG1vZGlmeSBpdHMgYmVoYXZpb3Igd2hlbiB0aGUgc2xhYiBjYWNoZSBpcyB1bmRlcmdvaW5nIGEgc2hyaW5rIG9wZXJhdGlvbi4gVGhpcyBpcyBsaWtlbHkgYWJvdXQgcmVkdWNpbmcgdGhlIGFtb3VudCBvZiBtZW1vcnkgS0FTQU4gdHJhY2tzIGZvciBwb3RlbnRpYWxseSBwb2lzb25lZCBkYXRhIHdpdGhpbiB0aGF0IGNhY2hlLiBJJ2QgaW1hZ2luZSB0aGlzIGNvdWxkIGludm9sdmUgY2xlYXJpbmcgc29tZSB0YWcgYml0cyBvciBwb3RlbnRpYWxseSByZW1vdmluZyBlbnRyaWVzIGZyb20gYSBzaGFkb3cgbWVtb3J5IG1hcCwgb3Igc29tZSBvdGhlciBvcGVyYXRpb24gY3JpdGljYWwgZm9yIG1haW50YWluaW5nIEtBU0FOJ3MgbWVtb3J5IGludGVncml0eS5cblxuU2ltaWxhcmx5LCB3aGVuIGEgc2xhYiBjYWNoZSBpcyBiZWluZyBjb21wbGV0ZWx5IGRlc3Ryb3llZCB2aWEgYGttZW1fY2FjaGVfZGVzdHJveWAsIEtBU0FOIGdldHMgaW52b2x2ZWQgdGhyb3VnaCBhIGNhbGwgdG8gYGthc2FuX2NhY2hlX3NodXRkb3duYC4gVGhpcyBpcyB0aGUgY2xlYW51cCBmdW5jdGlvbi4gVGhpcyBsaWtlbHkgcmVwcmVzZW50cyBLQVNBTiByZWxlYXNpbmcgYWxsIHRoZSByZXNvdXJjZXMgYXNzb2NpYXRlZCB3aXRoIHRyYWNraW5nIHRoYXQgY2FjaGUncyBtZW1vcnkuIFRoaXMgY291bGQgaW5jbHVkZSwgZm9yIGV4YW1wbGUsIGZyZWVpbmcgdXAgYW55IGRhdGEgc3RydWN0dXJlcyB1c2VkIGZvciBzaGFkb3cgbWVtb3J5IG1hbmFnZW1lbnQuIFRoZSBrZXkgaXMgZW5zdXJpbmcgdGhhdCBLQVNBTidzIGJvb2trZWVwaW5nIGlzIGZ1bGx5IHN5bmNocm9uaXplZCB3aXRoIHRoZSBzbGFiIGFsbG9jYXRvcidzIGxpZmVjeWNsZSBzbyB0aGF0IG5vIG1lbW9yeSByZW1haW5zIHBvaXNvbmVkIG9yIHRyYWNrZWQgdW5uZWNlc3NhcmlseSwgYW5kIHRoYXQgdGhlcmUgYXJlIG5vIGRhbmdsaW5nIHBvaW50ZXJzIG9yIG1ldGFkYXRhLiBJJ2QgYmUgaW50ZXJlc3RlZCBpbiBkaWdnaW5nIGluIGFuZCBzZWVpbmcgZXhhY3RseSB3aGF0IHN0YXRlIGl0J3MgdXBkYXRpbmcsIGJ1dCB0aGlzIGdpdmVzIG1lIGEgc29saWQgaWRlYSBvZiB3aGVyZSBLQVNBTidzIGhvb2tzIGFyZSB3aXRoaW4gdGhlIHNsYWIgY2FjaGUncyBsaWZlY3ljbGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjczNDksIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwMzo0Mzo0OC43NzQ5MzE4MjlaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0ODQxMTE4ODYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia2FzYW5fY2FjaGVfc2h1dGRvd25cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC9rYXNhbi5oPTQ5NT12b2lkIGthc2FuX2NhY2hlX3NocmluayhzdHJ1Y3Qga21lbV9jYWNoZSAqY2FjaGUpO1xcbmluY2x1ZGUvbGludXgva2FzYW4uaDo0OTY6dm9pZCBrYXNhbl9jYWNoZV9zaHV0ZG93bihzdHJ1Y3Qga21lbV9jYWNoZSAqY2FjaGUpO1xcbmluY2x1ZGUvbGludXgva2FzYW4uaC00OTctdm9pZCBrYXNhbl9yZWNvcmRfYXV4X3N0YWNrKHZvaWQgKnB0cik7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2thc2FuLmg9NTEyPXN0YXRpYyBpbmxpbmUgdm9pZCBrYXNhbl9jYWNoZV9zaHJpbmsoc3RydWN0IGttZW1fY2FjaGUgKmNhY2hlKSB7fVxcbmluY2x1ZGUvbGludXgva2FzYW4uaDo1MTM6c3RhdGljIGlubGluZSB2b2lkIGthc2FuX2NhY2hlX3NodXRkb3duKHN0cnVjdCBrbWVtX2NhY2hlICpjYWNoZSkge31cXG5pbmNsdWRlL2xpbnV4L2thc2FuLmgtNTE0LXN0YXRpYyBpbmxpbmUgdm9pZCBrYXNhbl9yZWNvcmRfYXV4X3N0YWNrKHZvaWQgKnB0cikge31cXG4tLVxcbm1tL2thc2FuL2dlbmVyaWMuYz0yMTU9dm9pZCBrYXNhbl9jYWNoZV9zaHJpbmsoc3RydWN0IGttZW1fY2FjaGUgKmNhY2hlKVxcbi0tXFxubW0va2FzYW4vZ2VuZXJpYy5jLTIxOS1cXG5tbS9rYXNhbi9nZW5lcmljLmM6MjIwOnZvaWQga2FzYW5fY2FjaGVfc2h1dGRvd24oc3RydWN0IGttZW1fY2FjaGUgKmNhY2hlKVxcbm1tL2thc2FuL2dlbmVyaWMuYy0yMjEte1xcbi0tXFxubW0vc2xhYl9jb21tb24uYz01Mjc9dm9pZCBrbWVtX2NhY2hlX2Rlc3Ryb3koc3RydWN0IGttZW1fY2FjaGUgKnMpXFxuLS1cXG5tbS9zbGFiX2NvbW1vbi5jLTU2Ni1cXHQvKiBmcmVlIGFzYW4gcXVhcmFudGluZWQgb2JqZWN0cyAqL1xcbm1tL3NsYWJfY29tbW9uLmM6NTY3OlxcdGthc2FuX2NhY2hlX3NodXRkb3duKHMpO1xcbm1tL3NsYWJfY29tbW9uLmMtNTY4LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwMzo0Mzo1MC4yNTkwNDczOTVaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Njg1OTM2NzAzMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIGFuZCBDb25maWd1cmF0aW9uIEFuYWx5c2lzIGZvciBLQVNBTiBDYWNoZSBPcGVyYXRpb25zKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlc2UgZnVuY3Rpb25zLCBga21lbV9jYWNoZV9zaHJpbmtgIGFuZCBga21lbV9jYWNoZV9kZXN0cm95YCwgYW5kIHRoZXkgbG9vayBsaWtlIHRoZSBwcmltYXJ5IGVudHJ5IHBvaW50cyBoZXJlLiBEZWZpbml0ZWx5IHdvcnRoIGZvY3VzaW5nIGZ1enppbmcgZWZmb3J0cyBvbiB0aGVtLiBBY3R1YWxseSwgSSBzaG91bGQgYWxzbyBsb29rIGF0IHRoZSBvdGhlciBzeW1ib2xzIHRoYXQgY291bGQgYmUgaGl0LCB3aGljaCBhcmU6IGBrYXNhbl9xdWFyYW50aW5lX3JlbW92ZV9jYWNoZWAsIGBrYXNhbl9jYWNoZV9zaHJpbmtgLCBhbmQgYGthc2FuX2NhY2hlX3NodXRkb3duYC4gV2FpdCBhIHNlY29uZCwgd2hpbGUgYGttZW1fY2FjaGVfc2hyaW5rYCBhbmQgYGttZW1fY2FjaGVfZGVzdHJveWAgYXJlIGdvb2QgZW50cnkgcG9pbnRzLCB0aGV5IGFyZSBtb3JlIGdlbmVyYWwuIFRoZSBzcGVjaWZpYyBmdW5jdGlvbiBJIG5lZWQgdG8gY29uY2VudHJhdGUgb24gaXMgYGthc2FuX3F1YXJhbnRpbmVfcmVtb3ZlX2NhY2hlYC5cblxuTm93LCBJIG5lZWQgdG8gY2hlY2sgZm9yIGFueSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIHJlcXVpcmVtZW50cy4gSSdtIHByZXR0eSBzdXJlIGBLQVNBTl9HRU5FUklDYCBpcyBuZWVkZWQuIExldCBtZSBkb3VibGUtY2hlY2sgaWYganVzdCBgS0FTQU5gIGlzIGVub3VnaC4gQWgsIHJpZ2h0LCBgS0FTQU5fR0VORVJJQ2AgaXMgYW4gb3B0aW9uICp1bmRlciogYEtBU0FOYC4gU28sIEknbGwgYWRkICpib3RoKiBgS0FTQU5gIGFuZCBgS0FTQU5fR0VORVJJQ2AgdG8gbXkgY29uZmlndXJhdGlvbiByZXF1aXJlbWVudHMuIExldCBtZSBqdXN0IGNvbmZpcm0gdGhhdCB0aGUgbmFtZSBpcyBleGFjdGx5IGBLQVNBTl9HRU5FUklDYC4gWXVwLCBgY29uZmlnIEtBU0FOX0dFTkVSSUNgLiBBbHJpZ2h0LCBJJ2xsIG91dHB1dCBgS0FTQU5gIGFuZCBgS0FTQU5fR0VORVJJQ2AgYXMgdGhlIG5lY2Vzc2FyeSBjb25maWd1cmF0aW9uIG9wdGlvbnMuXG5cbkp1c3QgdG8gYmUgdGhvcm91Z2gsIEknbSBnb2luZyB0byBkb3VibGUgY2hlY2sgaWYgYGthc2FuX3F1YXJhbnRpbmVfcmVtb3ZlX2NhY2hlYCBpcyBzdGF0aWMuIE5vcGUsIGl0J3Mgbm90LiBJdCdzIGEgYHZvaWQga2FzYW5fcXVhcmFudGluZV9yZW1vdmVfY2FjaGUoc3RydWN0IGttZW1fY2FjaGUgKmNhY2hlKWAuIEdvb2QgdG8ga25vdy5cblxuQW55dGhpbmcgZWxzZSBJIHNob3VsZCBjb25zaWRlcj8gQWgsIHllcywgdGhlcmUgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBoZXJlLiBUaGUgcGF0Y2ggcmVwbGFjZXMgYGZvcl9lYWNoX29ubGluZV9jcHUoY3B1KWAgd2l0aCBgZm9yX2VhY2hfcG9zc2libGVfY3B1KGNwdSlgLiBUaGlzIGlzIHRvIGFkZHJlc3MgYSBidWcgd2hlcmUgYSBDUFUgbWlnaHQgZ28gb2ZmbGluZSBhZnRlciBgb25fZWFjaF9jcHUoKWAgcmV0dXJucywgcG90ZW50aWFsbHkgbGVhdmluZyBjYWNoZSBvYmplY3RzIG9uIHRoYXQgQ1BVJ3Mgc2hyaW5rIGxpc3QuIEl0J3MgaW1wb3J0YW50IHRvIHJlbWVtYmVyIHRoaXMgaXMgYSBmdW5jdGlvbmFsIGZpeC5cblxuSSdsbCBiZSB1c2luZyB0aGUgYHNldC1yZXN1bHRzYCB0b29sIGZvciB0aGlzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MTIzLCJPdXRwdXRUb2tlbnMiOjEyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM3OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwMzo0Mzo1Ny4xMTg0MTY1ODVaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NjUzNzkwNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS0FTQU5cIixcbiAgICBcIktBU0FOX0dFTkVSSUNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJrYXNhbl9xdWFyYW50aW5lX3JlbW92ZV9jYWNoZVwiLFxuICAgIFwia2FzYW5fY2FjaGVfc2hyaW5rXCIsXG4gICAgXCJrYXNhbl9jYWNoZV9zaHV0ZG93blwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIEtBU0FOIHF1YXJhbnRpbmUgbG9naWMgYnkgaXRlcmF0aW5nIG92ZXIgYWxsIHBvc3NpYmxlIENQVXMgaW5zdGVhZCBvZiBvbmx5IG9ubGluZSBDUFVzIHdoZW4gcmVtb3ZpbmcgYSBjYWNoZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUga2VybmVsIG1lbW9yeSBkZWJ1Z2dpbmcgbG9naWMgdGhhdCBpcyByZWFjaGFibGUgd2hlbiBhIGttZW1fY2FjaGUgaXMgc2hydW5rIG9yIGRlc3Ryb3llZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLQVNBTlwiLFxuICAgIFwiS0FTQU5fR0VORVJJQ1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImthc2FuX3F1YXJhbnRpbmVfcmVtb3ZlX2NhY2hlXCIsXG4gICAgXCJrYXNhbl9jYWNoZV9zaHJpbmtcIixcbiAgICBcImthc2FuX2NhY2hlX3NodXRkb3duXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gS0FTQU4gcXVhcmFudGluZSBsb2dpYyBieSBpdGVyYXRpbmcgb3ZlciBhbGwgcG9zc2libGUgQ1BVcyBpbnN0ZWFkIG9mIG9ubHkgb25saW5lIENQVXMgd2hlbiByZW1vdmluZyBhIGNhY2hlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBrZXJuZWwgbWVtb3J5IGRlYnVnZ2luZyBsb2dpYyB0aGF0IGlzIHJlYWNoYWJsZSB3aGVuIGEga21lbV9jYWNoZSBpcyBzaHJ1bmsgb3IgZGVzdHJveWVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwMzo0Mzo1Ny4xOTQ5NjE5MTlaIiwiU2VxIjoxNywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcyMDg2OTUxNDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwMzo0Mzo1Ny4xOTU0Njg4NDlaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NzIwODE4MzY2NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYGthc2FuX3F1YXJhbnRpbmVfcmVtb3ZlX2NhY2hlYCBpbiBgbW0va2FzYW4vcXVhcmFudGluZS5jYCB0byBpdGVyYXRlIG92ZXIgYWxsIHBvc3NpYmxlIENQVXMgaW5zdGVhZCBvZiBvbmx5IG9ubGluZSBDUFVzIHdoZW4gZHJhaW5pbmcgdGhlIHNocmluayBsaXN0LiBUaGlzIGZpeGVzIGEgcG90ZW50aWFsIGlzc3VlIHdoZXJlIGNhY2hlIG9iamVjdHMgY291bGQgYmUgbGVmdCBvbiB0aGUgc2hyaW5rIGxpc3Qgb2YgYSBDUFUgdGhhdCBnb2VzIG9mZmxpbmUuIFRoaXMgY2hhbmdlIGFkZHJlc3NlcyBhIG1lbW9yeSBtYW5hZ2VtZW50IGlzc3VlIChsaWtlbHkgYSBtZW1vcnkgbGVhayBvciB1c2UtYWZ0ZXItZnJlZSByZWxhdGVkIHRvIEtBU0FOJ3MgcXVhcmFudGluZSkgYW5kIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGFsbG9jYXRpb25zLCBzdHJ1Y3R1cmVzIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciBsb2dpYyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gU3RhbmRhcmQgS0FTQU4gYW5kIG90aGVyIG1lbW9yeSBkZXRlY3RvcnMgYXJlIHN1ZmZpY2llbnQgZm9yIHRoaXMgY29kZSwgYW5kIEtNU0FOIGlzIG5vdCBhcHBsaWNhYmxlLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGZhMThmYTcwMmIyMWRiYWRmZmZhYTVlNDg4ZjM2Y2Q0NDYwYzVhZThcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEF1ZyA4IDAzOjQzOjExIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbW0va2FzYW4vcXVhcmFudGluZS5jIGIvbW0va2FzYW4vcXVhcmFudGluZS5jXG5pbmRleCA2OTU4YWE3MTNjNjdlLi4xNmY0ZTY3YmVlZTgyIDEwMDY0NFxuLS0tIGEvbW0va2FzYW4vcXVhcmFudGluZS5jXG4rKysgYi9tbS9rYXNhbi9xdWFyYW50aW5lLmNcbkBAIC0zNTUsNyArMzU1LDEyIEBAIHZvaWQga2FzYW5fcXVhcmFudGluZV9yZW1vdmVfY2FjaGUoc3RydWN0IGttZW1fY2FjaGUgKmNhY2hlKVxuIFx0ICovXG4gXHRvbl9lYWNoX2NwdShwZXJfY3B1X3JlbW92ZV9jYWNoZSwgY2FjaGUsIDEpO1xuIFxuLVx0Zm9yX2VhY2hfb25saW5lX2NwdShjcHUpIHtcbitcdC8qXG4rXHQgKiBBIENQVSBjYW4gZ28gb2ZmbGluZSBhZnRlciBvbl9lYWNoX2NwdSgpIHJldHVybnMsIGxlYXZpbmcgY2FjaGVcbitcdCAqIG9iamVjdHMgb24gdGhhdCBDUFUncyBzaHJpbmsgbGlzdC4gU2NhbiBhbGwgcG9zc2libGUgQ1BVcyB0b1xuK1x0ICogZHJhaW4gdGhvc2UgbGlzdHMuXG4rXHQgKi9cbitcdGZvcl9lYWNoX3Bvc3NpYmxlX2NwdShjcHUpIHtcbiBcdFx0c3EgPSBwZXJfY3B1X3B0cihcdTAwMjZzaHJpbmtfcWxpc3QsIGNwdSk7XG4gXHRcdHJhd19zcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZzcS1cdTAwM2Vsb2NrLCBmbGFncyk7XG4gXHRcdHFsaXN0X21vdmVfY2FjaGUoXHUwMDI2c3EtXHUwMDNlcWxpc3QsIFx1MDAyNnRvX2ZyZWUsIGNhY2hlKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDAzOjQzOjU3LjE5NTQ2OTg1OVoiLCJTZXEiOjE5LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MjA4MTU3Njc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKktBU0FOIFF1YXJhbnRpbmUgQ2FjaGUgRHJhaW5hZ2UgLSBCdWcgRml4IFZlcmlmaWNhdGlvbioqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgc3dpdGNoaW5nIHRoZSBDUFUgaXRlcmF0aW9uIGluIGBrYXNhbl9xdWFyYW50aW5lX3JlbW92ZV9jYWNoZSgpYCBmcm9tIGBmb3JfZWFjaF9vbmxpbmVfY3B1KGNwdSlgIHRvIGBmb3JfZWFjaF9wb3NzaWJsZV9jcHUoY3B1KWAgd2l0aGluIGBtbS9rYXNhbi9xdWFyYW50aW5lLmNgLiAgVGhlIGNvcmUgb2YgdGhpcyBpcyBhYm91dCBmaXhpbmcgYSByYWNlIGNvbmRpdGlvbiBvciBlZGdlIGNhc2UuICBFc3NlbnRpYWxseSwgdGhlcmUgd2FzIGEgc2NlbmFyaW8gd2hlcmUgYSBDUFUgY291bGQgZ28gb2ZmbGluZSAqYWZ0ZXIqIGBvbl9lYWNoX2NwdSgpYCBoYWQgZmluaXNoZWQgaXRzIHdvcmssIGxlYXZpbmcgc3RhbGUgZW50cmllcyBpbiB0aGUgS0FTQU4gcXVhcmFudGluZSBjYWNoZSBmb3IgdGhhdCBDUFUuICBUaGlzIHNvdW5kcyBsaWtlIGEgcG90ZW50aWFsIG1lbW9yeSBsZWFrIG9yLCBldmVuIHdvcnNlLCBhIHVzZS1hZnRlci1mcmVlIHNjZW5hcmlvIHdpdGhpbiB0aGUgS0FTQU4gc3Vic3lzdGVtLiBUaGUgY2hhbmdlIGVuc3VyZXMgYWxsIENQVXMsIGluY2x1ZGluZyB0aG9zZSB0aGF0IG1heSBiZSBnb2luZyBvZmZsaW5lLCBhcmUgY29uc2lkZXJlZCB0byBwcm9wZXJseSBkcmFpbiB0aGUgbGlzdHMuXG5cbkl0J3MgZm9jdXNlZCBvbiB0aGUgS0FTQU4gcXVhcmFudGluZSBhbmQgbWVtb3J5IG1hbmFnZW1lbnQgaW50ZXJuYWxzLiBUaGlua2luZyB0aHJvdWdoIHRoaXMsIGl0IGNsZWFybHkgZG9lc24ndCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdXNpbmcgdW5pbml0aWFsaXplZCBtZW1vcnk7IGl0J3MgYWxsIGFib3V0IGVuc3VyaW5nIGV4aXN0aW5nIG1lbW9yeSBpcyBwcm9wZXJseSBoYW5kbGVkLiBXZSdyZSBqdXN0IG1vZGlmeWluZyB0aGUgbG9vcCB0byBwcmV2ZW50IGRhbmdsaW5nIHBvaW50ZXJzLlxuXG5MZXQgbWUganVzdCBxdWlja2x5IGNvbmZpcm0gdGhhdCB0aGUga2V5IGNoYW5nZSBpcyBpbiBga2FzYW5fcXVhcmFudGluZV9yZW1vdmVfY2FjaGVgLCBhZ2FpbiB3aXRoIHRoYXQgQ1BVIGl0ZXJhdGlvbiBjaGFuZ2UuIFllcywganVzdCBhIGxvb3AsIGRyYWluaW5nIGEgbGlzdC4gTm8gdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWVzLiAgT2theSwgSSdtIGNvbmZpZGVudC4gSSdtIHNldHRpbmcgYE5lZWRzS01TQU5gIHRvIGBmYWxzZWAgZm9yIHRoaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwNjAsIk91dHB1dFRva2VucyI6MTYyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjI3LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDM6NDQ6MDQuNDAzNjMxNDk0WiIsIlNlcSI6MjAsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTkyOTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBga2FzYW5fcXVhcmFudGluZV9yZW1vdmVfY2FjaGVgIGluIGBtbS9rYXNhbi9xdWFyYW50aW5lLmNgIHRvIGl0ZXJhdGUgb3ZlciBhbGwgcG9zc2libGUgQ1BVcyBpbnN0ZWFkIG9mIG9ubHkgb25saW5lIENQVXMgd2hlbiBkcmFpbmluZyB0aGUgc2hyaW5rIGxpc3QuIFRoaXMgZml4ZXMgYSBwb3RlbnRpYWwgaXNzdWUgd2hlcmUgY2FjaGUgb2JqZWN0cyBjb3VsZCBiZSBsZWZ0IG9uIHRoZSBzaHJpbmsgbGlzdCBvZiBhIENQVSB0aGF0IGdvZXMgb2ZmbGluZS4gVGhpcyBjaGFuZ2UgYWRkcmVzc2VzIGEgbWVtb3J5IG1hbmFnZW1lbnQgaXNzdWUgKGxpa2VseSBhIG1lbW9yeSBsZWFrIG9yIHVzZS1hZnRlci1mcmVlIHJlbGF0ZWQgdG8gS0FTQU4ncyBxdWFyYW50aW5lKSBhbmQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgYWxsb2NhdGlvbnMsIHN0cnVjdHVyZXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIGxvZ2ljIHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBTdGFuZGFyZCBLQVNBTiBhbmQgb3RoZXIgbWVtb3J5IGRldGVjdG9ycyBhcmUgc3VmZmljaWVudCBmb3IgdGhpcyBjb2RlLCBhbmQgS01TQU4gaXMgbm90IGFwcGxpY2FibGUuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYGthc2FuX3F1YXJhbnRpbmVfcmVtb3ZlX2NhY2hlYCBpbiBgbW0va2FzYW4vcXVhcmFudGluZS5jYCB0byBpdGVyYXRlIG92ZXIgYWxsIHBvc3NpYmxlIENQVXMgaW5zdGVhZCBvZiBvbmx5IG9ubGluZSBDUFVzIHdoZW4gZHJhaW5pbmcgdGhlIHNocmluayBsaXN0LiBUaGlzIGZpeGVzIGEgcG90ZW50aWFsIGlzc3VlIHdoZXJlIGNhY2hlIG9iamVjdHMgY291bGQgYmUgbGVmdCBvbiB0aGUgc2hyaW5rIGxpc3Qgb2YgYSBDUFUgdGhhdCBnb2VzIG9mZmxpbmUuIFRoaXMgY2hhbmdlIGFkZHJlc3NlcyBhIG1lbW9yeSBtYW5hZ2VtZW50IGlzc3VlIChsaWtlbHkgYSBtZW1vcnkgbGVhayBvciB1c2UtYWZ0ZXItZnJlZSByZWxhdGVkIHRvIEtBU0FOJ3MgcXVhcmFudGluZSkgYW5kIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGFsbG9jYXRpb25zLCBzdHJ1Y3R1cmVzIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciBsb2dpYyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gU3RhbmRhcmQgS0FTQU4gYW5kIG90aGVyIG1lbW9yeSBkZXRlY3RvcnMgYXJlIHN1ZmZpY2llbnQgZm9yIHRoaXMgY29kZSwgYW5kIEtNU0FOIGlzIG5vdCBhcHBsaWNhYmxlLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflowrnrmm[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-08 03:19:49 +0000 UTC FinishedAt: 2026-08-08 03:44:06 +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": "8086604be9733378461a5534c39cb72635226b23", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KASAN", "KASAN_GENERIC" ], "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": "8086604be9733378461a5534c39cb72635226b23", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KASAN", "KASAN_GENERIC" ], "series_id": "cbf6df25-6c5e-4a69-bda7-074def249357" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "kasan_quarantine_remove_cache", "kasan_cache_shrink", "kasan_cache_shutdown" ], "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+CgkJCTx0ZD4yMDI2LzA4LzA4IDAzOjQzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tBU0FOJiMzNDssCiAgICAmIzM0O0tBU0FOX0dFTkVSSUMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtrYXNhbl9xdWFyYW50aW5lX3JlbW92ZV9jYWNoZSYjMzQ7LAogICAgJiMzNDtrYXNhbl9jYWNoZV9zaHJpbmsmIzM0OywKICAgICYjMzQ7a2FzYW5fY2FjaGVfc2h1dGRvd24mIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBga2FzYW5fcXVhcmFudGluZV9yZW1vdmVfY2FjaGVgIGluIGBtbS9rYXNhbi9xdWFyYW50aW5lLmNgIHRvIGl0ZXJhdGUgb3ZlciBhbGwgcG9zc2libGUgQ1BVcyBpbnN0ZWFkIG9mIG9ubHkgb25saW5lIENQVXMgd2hlbiBkcmFpbmluZyB0aGUgc2hyaW5rIGxpc3QuIFRoaXMgZml4ZXMgYSBwb3RlbnRpYWwgaXNzdWUgd2hlcmUgY2FjaGUgb2JqZWN0cyBjb3VsZCBiZSBsZWZ0IG9uIHRoZSBzaHJpbmsgbGlzdCBvZiBhIENQVSB0aGF0IGdvZXMgb2ZmbGluZS4gVGhpcyBjaGFuZ2UgYWRkcmVzc2VzIGEgbWVtb3J5IG1hbmFnZW1lbnQgaXNzdWUgKGxpa2VseSBhIG1lbW9yeSBsZWFrIG9yIHVzZS1hZnRlci1mcmVlIHJlbGF0ZWQgdG8gS0FTQU4mIzM5O3MgcXVhcmFudGluZSkgYW5kIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGFsbG9jYXRpb25zLCBzdHJ1Y3R1cmVzIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciBsb2dpYyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gU3RhbmRhcmQgS0FTQU4gYW5kIG90aGVyIG1lbW9yeSBkZXRlY3RvcnMgYXJlIHN1ZmZpY2llbnQgZm9yIHRoaXMgY29kZSwgYW5kIEtNU0FOIGlzIG5vdCBhcHBsaWNhYmxlLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBLQVNBTiBxdWFyYW50aW5lIGxvZ2ljIGJ5IGl0ZXJhdGluZyBvdmVyIGFsbCBwb3NzaWJsZSBDUFVzIGluc3RlYWQgb2Ygb25seSBvbmxpbmUgQ1BVcyB3aGVuIHJlbW92aW5nIGEgY2FjaGUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIGtlcm5lbCBtZW1vcnkgZGVidWdnaW5nIGxvZ2ljIHRoYXQgaXMgcmVhY2hhYmxlIHdoZW4gYSBrbWVtX2NhY2hlIGlzIHNocnVuayBvciBkZXN0cm95ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDM6NDM8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBmYTE4ZmE3MDJiMjFkYmFkZmZmYWE1ZTQ4OGYzNmNkNDQ2MGM1YWU4XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBBdWcgOCAwMzo0MzoxMSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9tbS9rYXNhbi9xdWFyYW50aW5lLmMgYi9tbS9rYXNhbi9xdWFyYW50aW5lLmNcbmluZGV4IDY5NThhYTcxM2M2N2UuLjE2ZjRlNjdiZWVlODIgMTAwNjQ0XG4tLS0gYS9tbS9rYXNhbi9xdWFyYW50aW5lLmNcbiYjNDM7JiM0MzsmIzQzOyBiL21tL2thc2FuL3F1YXJhbnRpbmUuY1xuQEAgLTM1NSw3ICYjNDM7MzU1LDEyIEBAIHZvaWQga2FzYW5fcXVhcmFudGluZV9yZW1vdmVfY2FjaGUoc3RydWN0IGttZW1fY2FjaGUgKmNhY2hlKVxuIFx0ICovXG4gXHRvbl9lYWNoX2NwdShwZXJfY3B1X3JlbW92ZV9jYWNoZSwgY2FjaGUsIDEpO1xuIFxuLVx0Zm9yX2VhY2hfb25saW5lX2NwdShjcHUpIHtcbiYjNDM7XHQvKlxuJiM0MztcdCAqIEEgQ1BVIGNhbiBnbyBvZmZsaW5lIGFmdGVyIG9uX2VhY2hfY3B1KCkgcmV0dXJucywgbGVhdmluZyBjYWNoZVxuJiM0MztcdCAqIG9iamVjdHMgb24gdGhhdCBDUFUmIzM5O3Mgc2hyaW5rIGxpc3QuIFNjYW4gYWxsIHBvc3NpYmxlIENQVXMgdG9cbiYjNDM7XHQgKiBkcmFpbiB0aG9zZSBsaXN0cy5cbiYjNDM7XHQgKi9cbiYjNDM7XHRmb3JfZWFjaF9wb3NzaWJsZV9jcHUoY3B1KSB7XG4gXHRcdHNxID0gcGVyX2NwdV9wdHIoXHUwMDI2c2hyaW5rX3FsaXN0LCBjcHUpO1xuIFx0XHRyYXdfc3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2c3EtXHUwMDNlbG9jaywgZmxhZ3MpO1xuIFx0XHRxbGlzdF9tb3ZlX2NhY2hlKFx1MDAyNnNxLVx1MDAzZXFsaXN0LCBcdTAwMjZ0b19mcmVlLCBjYWNoZSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDM6NDM8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tBU0FOJiMzNDssCiAgICAmIzM0O0tBU0FOX0dFTkVSSUMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtrYXNhbl9xdWFyYW50aW5lX3JlbW92ZV9jYWNoZSYjMzQ7LAogICAgJiMzNDtrYXNhbl9jYWNoZV9zaHJpbmsmIzM0OywKICAgICYjMzQ7a2FzYW5fY2FjaGVfc2h1dGRvd24mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gS0FTQU4gcXVhcmFudGluZSBsb2dpYyBieSBpdGVyYXRpbmcgb3ZlciBhbGwgcG9zc2libGUgQ1BVcyBpbnN0ZWFkIG9mIG9ubHkgb25saW5lIENQVXMgd2hlbiByZW1vdmluZyBhIGNhY2hlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBrZXJuZWwgbWVtb3J5IGRlYnVnZ2luZyBsb2dpYyB0aGF0IGlzIHJlYWNoYWJsZSB3aGVuIGEga21lbV9jYWNoZSBpcyBzaHJ1bmsgb3IgZGVzdHJveWVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZmExOGZhNzAyYjIxZGJhZGZmZmFhNWU0ODhmMzZjZDQ0NjBjNWFlOApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTYXQgQXVnIDggMDM6NDM6MTEgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9tbS9rYXNhbi9xdWFyYW50aW5lLmMgYi9tbS9rYXNhbi9xdWFyYW50aW5lLmMKaW5kZXggNjk1OGFhNzEzYzY3ZS4uMTZmNGU2N2JlZWU4MiAxMDA2NDQKLS0tIGEvbW0va2FzYW4vcXVhcmFudGluZS5jCiYjNDM7JiM0MzsmIzQzOyBiL21tL2thc2FuL3F1YXJhbnRpbmUuYwpAQCAtMzU1LDcgJiM0MzszNTUsMTIgQEAgdm9pZCBrYXNhbl9xdWFyYW50aW5lX3JlbW92ZV9jYWNoZShzdHJ1Y3Qga21lbV9jYWNoZSAqY2FjaGUpCiAJICovCiAJb25fZWFjaF9jcHUocGVyX2NwdV9yZW1vdmVfY2FjaGUsIGNhY2hlLCAxKTsKIAotCWZvcl9lYWNoX29ubGluZV9jcHUoY3B1KSB7CiYjNDM7CS8qCiYjNDM7CSAqIEEgQ1BVIGNhbiBnbyBvZmZsaW5lIGFmdGVyIG9uX2VhY2hfY3B1KCkgcmV0dXJucywgbGVhdmluZyBjYWNoZQomIzQzOwkgKiBvYmplY3RzIG9uIHRoYXQgQ1BVJiMzOTtzIHNocmluayBsaXN0LiBTY2FuIGFsbCBwb3NzaWJsZSBDUFVzIHRvCiYjNDM7CSAqIGRyYWluIHRob3NlIGxpc3RzLgomIzQzOwkgKi8KJiM0MzsJZm9yX2VhY2hfcG9zc2libGVfY3B1KGNwdSkgewogCQlzcSA9IHBlcl9jcHVfcHRyKCZhbXA7c2hyaW5rX3FsaXN0LCBjcHUpOwogCQlyYXdfc3Bpbl9sb2NrX2lycXNhdmUoJmFtcDtzcS0mZ3Q7bG9jaywgZmxhZ3MpOwogCQlxbGlzdF9tb3ZlX2NhY2hlKCZhbXA7c3EtJmd0O3FsaXN0LCAmYW1wO3RvX2ZyZWUsIGNhY2hlKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDM6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA2MwoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDE5MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBLQVNBTiBCdWcgRml4OiBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyB0aGUgS0FTQU4gcXVhcmFudGluZSBsb2dpYy4gU3BlY2lmaWNhbGx5LCBpdCYjMzk7cyBzd2FwcGluZyBgZm9yX2VhY2hfb25saW5lX2NwdShjcHUpYCB3aXRoIGBmb3JfZWFjaF9wb3NzaWJsZV9jcHUoY3B1KWAgd2l0aGluIHRoZSBga2FzYW5fcXVhcmFudGluZV9yZW1vdmVfY2FjaGVgIGZ1bmN0aW9uIGluIGBtbS9rYXNhbi9xdWFyYW50aW5lLmNgLiBUaGUgcGF0Y2ggZGVzY3JpcHRpb24gZXhwbGljaXRseSBjYWxscyB0aGlzIGEgYnVnIGZpeCwgd2hpY2ggaW1tZWRpYXRlbHkgcGlxdWVzIG15IGludGVyZXN0IGZyb20gYSBmdXp6aW5nIHBlcnNwZWN0aXZlLgoKR2l2ZW4gdGhhdCBLQVNBTiBpcyBvZnRlbiBlbmFibGVkIGJ5IGRlZmF1bHQgZHVyaW5nIGZ1enppbmcsIGFuZCB0aGlzIGlzIGEgcmVsYXRpdmVseSBsb2NhbGl6ZWQgZml4IHdpdGhpbiBLQVNBTiwgdGhlIHBvdGVudGlhbCBpbXBhY3Qgb24gZnV6emluZyBlZmZlY3RpdmVuZXNzIHdhcnJhbnRzIGEgZGVlcGVyIGxvb2suIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgdGhpcyBjaGFuZ2UgaW50cm9kdWNlcyBuZXcgZnV6emluZyB0YXJnZXRzIG9yIGFsdGVycyBleGlzdGluZyBvbmVzLgoKVGhlIGZ1bmN0aW9uIGluIHF1ZXN0aW9uIGlzIGBrYXNhbl9xdWFyYW50aW5lX3JlbW92ZV9jYWNoZWAuIFRoZSBuYW1lIGl0c2VsZiBoaW50cyBhdCBpdHMgcHVycG9zZTogcmVtb3ZpbmcgYSBjYWNoZSBmcm9tIHRoZSBxdWFyYW50aW5lLiBBIHF1aWNrIG1lbnRhbCByZWZyZXNo4oCmIGFoLCByaWdodCwgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbiBhIGBrbWVtX2NhY2hlYCBpcyBkZXN0cm95ZWQuIFRoYXQmIzM5O3MgYSBjb3JlIGtlcm5lbCBmdW5jdGlvbiwgYW5kIHRoZSBga21lbV9jYWNoZWAgc3Vic3lzdGVtIGlzIG9mdGVuIGEgc291cmNlIG9mIGludGVyZXN0aW5nIGZ1enppbmcgdGFyZ2V0cy4KClllcywgdGhpcyBpcyBkZWZpbml0ZWx5IHdvcnRoIGZ1enppbmcuIEl0JiMzOTtzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYG1tL2thc2FuL3F1YXJhbnRpbmUuY2AsIHNwZWNpZmljYWxseSByZWxhdGVkIHRvIHRoZSByZW1vdmFsIG9mIG1lbW9yeSBjYWNoZXMuIExldCBtZSB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgYGthc2FuX3F1YXJhbnRpbmVfcmVtb3ZlX2NhY2hlYCBhbmQgdGhlIGNvbnRleHQgaW4gd2hpY2ggaXQmIzM5O3MgY2FsbGVkLiBUaGlzIGNvdWxkIGJlIGEgZ29vZCBwbGFjZSB0byBzdGFydCBteSBmdXp6aW5nIGFuYWx5c2lzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDAzOjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2thc2FuX3F1YXJhbnRpbmVfcmVtb3ZlX2NhY2hlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL2thc2FuL2dlbmVyaWMuYz0yMTU9dm9pZCBrYXNhbl9jYWNoZV9zaHJpbmsoc3RydWN0IGttZW1fY2FjaGUgKmNhY2hlKVxubW0va2FzYW4vZ2VuZXJpYy5jLTIxNi17XG5tbS9rYXNhbi9nZW5lcmljLmM6MjE3Olx0a2FzYW5fcXVhcmFudGluZV9yZW1vdmVfY2FjaGUoY2FjaGUpO1xubW0va2FzYW4vZ2VuZXJpYy5jLTIxOC19XG4tLVxubW0va2FzYW4vZ2VuZXJpYy5jPTIyMD12b2lkIGthc2FuX2NhY2hlX3NodXRkb3duKHN0cnVjdCBrbWVtX2NhY2hlICpjYWNoZSlcbi0tXG5tbS9rYXNhbi9nZW5lcmljLmMtMjIyLVx0aWYgKCFfX2ttZW1fY2FjaGVfZW1wdHkoY2FjaGUpKVxubW0va2FzYW4vZ2VuZXJpYy5jOjIyMzpcdFx0a2FzYW5fcXVhcmFudGluZV9yZW1vdmVfY2FjaGUoY2FjaGUpO1xubW0va2FzYW4vZ2VuZXJpYy5jLTIyNC19XG4tLVxubW0va2FzYW4va2FzYW4uaD00MDY9dm9pZCBrYXNhbl9xdWFyYW50aW5lX3JlZHVjZSh2b2lkKTtcbm1tL2thc2FuL2thc2FuLmg6NDA3OnZvaWQga2FzYW5fcXVhcmFudGluZV9yZW1vdmVfY2FjaGUoc3RydWN0IGttZW1fY2FjaGUgKmNhY2hlKTtcbm1tL2thc2FuL2thc2FuLmgtNDA4LSNlbHNlXG4tLVxubW0va2FzYW4va2FzYW4uaD00MTA9c3RhdGljIGlubGluZSB2b2lkIGthc2FuX3F1YXJhbnRpbmVfcmVkdWNlKHZvaWQpIHsgfVxubW0va2FzYW4va2FzYW4uaDo0MTE6c3RhdGljIGlubGluZSB2b2lkIGthc2FuX3F1YXJhbnRpbmVfcmVtb3ZlX2NhY2hlKHN0cnVjdCBrbWVtX2NhY2hlICpjYWNoZSkgeyB9XG5tbS9rYXNhbi9rYXNhbi5oLTQxMi0jZW5kaWZcbi0tXG5tbS9rYXNhbi9xdWFyYW50aW5lLmM9MTg1PWJvb2wga2FzYW5fcXVhcmFudGluZV9wdXQoc3RydWN0IGttZW1fY2FjaGUgKmNhY2hlLCB2b2lkICpvYmplY3QpXG4tLVxubW0va2FzYW4vcXVhcmFudGluZS5jLTIwMC1cdCAqIE5vdGU6IGlycSBtdXN0IGJlIGRpc2FibGVkIHVudGlsIGFmdGVyIHdlIG1vdmUgdGhlIGJhdGNoIHRvIHRoZVxubW0va2FzYW4vcXVhcmFudGluZS5jOjIwMTpcdCAqIGdsb2JhbCBxdWFyYW50aW5lLiBPdGhlcndpc2Uga2FzYW5fcXVhcmFudGluZV9yZW1vdmVfY2FjaGUoKSBjYW5cbm1tL2thc2FuL3F1YXJhbnRpbmUuYy0yMDItXHQgKiBtaXNzIHNvbWUgb2JqZWN0cyBiZWxvbmdpbmcgdG8gdGhlIGNhY2hlIGlmIHRoZXkgYXJlIGluIG91ciBsb2NhbFxubW0va2FzYW4vcXVhcmFudGluZS5jOjIwMzpcdCAqIHRlbXAgbGlzdC4ga2FzYW5fcXVhcmFudGluZV9yZW1vdmVfY2FjaGUoKSBleGVjdXRlcyBvbl9lYWNoX2NwdSgpXG5tbS9rYXNhbi9xdWFyYW50aW5lLmMtMjA0LVx0ICogYXQgdGhlIGJlZ2lubmluZyB3aGljaCBlbnN1cmVzIHRoYXQgaXQgZWl0aGVyIHNlZXMgdGhlIG9iamVjdHMgaW5cbi0tXG5tbS9rYXNhbi9xdWFyYW50aW5lLmM9MjM5PXZvaWQga2FzYW5fcXVhcmFudGluZV9yZWR1Y2Uodm9pZClcbi0tXG5tbS9rYXNhbi9xdWFyYW50aW5lLmMtMjUwLVx0Lypcbm1tL2thc2FuL3F1YXJhbnRpbmUuYzoyNTE6XHQgKiBzcmN1IGNyaXRpY2FsIHNlY3Rpb24gZW5zdXJlcyB0aGF0IGthc2FuX3F1YXJhbnRpbmVfcmVtb3ZlX2NhY2hlKClcbm1tL2thc2FuL3F1YXJhbnRpbmUuYy0yNTItXHQgKiB3aWxsIG5vdCBtaXNzIG9iamVjdHMgYmVsb25naW5nIHRvIHRoZSBjYWNoZSB3aGlsZSB0aGV5IGFyZSBpbiBvdXJcbi0tXG5tbS9rYXNhbi9xdWFyYW50aW5lLmM9MzI2PXN0YXRpYyB2b2lkIHBlcl9jcHVfcmVtb3ZlX2NhY2hlKHZvaWQgKmFyZylcbi0tXG5tbS9rYXNhbi9xdWFyYW50aW5lLmMtMzQxLS8qIEZyZWUgYWxsIHF1YXJhbnRpbmVkIG9iamVjdHMgYmVsb25naW5nIHRvIGNhY2hlLiAqL1xubW0va2FzYW4vcXVhcmFudGluZS5jOjM0Mjp2b2lkIGthc2FuX3F1YXJhbnRpbmVfcmVtb3ZlX2NhY2hlKHN0cnVjdCBrbWVtX2NhY2hlICpjYWNoZSlcbm1tL2thc2FuL3F1YXJhbnRpbmUuYy0zNDMte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDAzOjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzODUKCQkJCQkJCW91dHB1dDogMTgKCQkJCQkJCXRob3VnaHRzOiAxNTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBUYXJnZXQgSWRlbnRpZmljYXRpb246IGBrYXNhbl9xdWFyYW50aW5lX3JlbW92ZV9jYWNoZWAqKgoKT2theSwgc28gSSYjMzk7dmUgc3BvdHRlZCBga2FzYW5fcXVhcmFudGluZV9yZW1vdmVfY2FjaGVgLiBUaGF0JiMzOTtzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gSSBrbm93IGl0JiMzOTtzIGNhbGxlZCBmcm9tIGBrYXNhbl9jYWNoZV9zaHJpbmtgIGFuZCBga2FzYW5fY2FjaGVfc2h1dGRvd25gLCBhbmQgdGhvc2UsIGluIHR1cm4sIGFyZSB0cmlnZ2VyZWQgd2hlbiBhIGttZW1fY2FjaGUgaXMgZWl0aGVyIHNocnVuayBvciBkZXN0cm95ZWQuIFRoZSBmYWN0IHRoYXQgdGhlIHF1YXJhbnRpbmUgcmVtb3ZhbCBpcyBoYXBwZW5pbmcgZHVyaW5nIHRoZXNlIGNhY2hlIGxpZmVjeWNsZSBldmVudHMgc2NyZWFtcyAmIzM0O2Z1enppbmcgb3Bwb3J0dW5pdHkmIzM0OyB0byBtZS4gSSBtZWFuLCBtZW1vcnkgbWFuYWdlbWVudCBzdHVmZiBpcyBhbG1vc3QgYWx3YXlzIGludGVyZXN0aW5nIGZyb20gYSBmdXp6aW5nIHBlcnNwZWN0aXZlLCBhbmQgdGhpcyBoYXMgYSBuaWNlLCBjb25maW5lZCBzY29wZS4gVGhlIG1haW4gZm9jdXMgaGVyZSB3aWxsIGJlIG9uIHRob3NlIHRocmVlIHN5bWJvbHM6IGBrYXNhbl9xdWFyYW50aW5lX3JlbW92ZV9jYWNoZWAsIGBrYXNhbl9jYWNoZV9zaHJpbmtgLCBhbmQgYGthc2FuX2NhY2hlX3NodXRkb3duYC4KCk5vdywgSSBuZWVkIHRvIGtub3cgbW9yZSBhYm91dCBga2FzYW5fcXVhcmFudGluZV9yZW1vdmVfY2FjaGVgLiBJcyBpdCBleHBvcnRlZD8gSSYjMzk7bGwgcXVpY2tseSBjaGVjayBpdHMgZGVmaW5pdGlvbiwgaXQmIzM5O3MgaW4gYG1tL2thc2FuL3F1YXJhbnRpbmUuY2AuIE9rYXksIHNvIGl0JiMzOTtzIG5vdCBzdGF0aWMgdGhlbiwgd2hpY2ggaXMgZ29vZCBmb3IgbWUuIFRpbWUgdG8gY2hlY2sgdGhlIGNvbmZpZ3MuIEkga25vdyBJIG5lZWQgS0FTQU5fR0VORVJJQyBmb3IgdGhpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMzo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgS0FTQU4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9hcm0vS2NvbmZpZz0xMDM0PWNvbmZpZyBQQUdFX09GRlNFVFxuLS1cbmFyY2gvYXJtL0tjb25maWctMTA0MS1cbmFyY2gvYXJtL0tjb25maWc6MTA0Mjpjb25maWcgS0FTQU5fU0hBRE9XX09GRlNFVFxuYXJjaC9hcm0vS2NvbmZpZy0xMDQzLVx0aGV4XG4tLVxuYXJjaC9hcm02NC9LY29uZmlnPTM4Mz1jb25maWcgQlVJTFRJTl9SRVRVUk5fQUREUkVTU19TVFJJUFNfUEFDXG4tLVxuYXJjaC9hcm02NC9LY29uZmlnLTM5Ni1cbmFyY2gvYXJtNjQvS2NvbmZpZzozOTc6Y29uZmlnIEtBU0FOX1NIQURPV19PRkZTRVRcbmFyY2gvYXJtNjQvS2NvbmZpZy0zOTgtXHRoZXhcbi0tXG5hcmNoL2xvb25nYXJjaC9LY29uZmlnPTgwMT1jb25maWcgQVJDSF9TVVBQT1JUU19VUFJPQkVTXG4tLVxuYXJjaC9sb29uZ2FyY2gvS2NvbmZpZy04MDMtXG5hcmNoL2xvb25nYXJjaC9LY29uZmlnOjgwNDpjb25maWcgS0FTQU5fU0hBRE9XX09GRlNFVFxuYXJjaC9sb29uZ2FyY2gvS2NvbmZpZy04MDUtXHRoZXhcbi0tXG5hcmNoL3Bvd2VycGMvS2NvbmZpZy5kZWJ1Zz0zNTg9Y29uZmlnIEZBSUxfSU9NTVVcbi0tXG5hcmNoL3Bvd2VycGMvS2NvbmZpZy5kZWJ1Zy0zNjctXG5hcmNoL3Bvd2VycGMvS2NvbmZpZy5kZWJ1ZzozNjg6Y29uZmlnIEtBU0FOX1NIQURPV19PRkZTRVRcbmFyY2gvcG93ZXJwYy9LY29uZmlnLmRlYnVnLTM2OS1cdGhleFxuLS1cbmFyY2gvcmlzY3YvS2NvbmZpZz0yOTM9Y29uZmlnIE1NVVxuLS1cbmFyY2gvcmlzY3YvS2NvbmZpZy0yOTktXG5hcmNoL3Jpc2N2L0tjb25maWc6MzAwOmNvbmZpZyBLQVNBTl9TSEFET1dfT0ZGU0VUXG5hcmNoL3Jpc2N2L0tjb25maWctMzAxLVx0aGV4XG4tLVxuYXJjaC9zMzkwL0tjb25maWc9Mzg9Y29uZmlnIEFSQ0hfU1VQUE9SVFNfVVBST0JFU1xuLS1cbmFyY2gvczM5MC9LY29uZmlnLTQwLVxuYXJjaC9zMzkwL0tjb25maWc6NDE6Y29uZmlnIEtBU0FOX1NIQURPV19PRkZTRVRcbmFyY2gvczM5MC9LY29uZmlnLTQyLVx0aGV4XG4tLVxuYXJjaC91bS9LY29uZmlnPTI2Nj1jb25maWcgVU1MX01BWF9VU0VSU1BBQ0VfSVRFUkFUSU9OU1xuLS1cbmFyY2gvdW0vS2NvbmZpZy0yODAtXG5hcmNoL3VtL0tjb25maWc6MjgxOmNvbmZpZyBLQVNBTl9TSEFET1dfT0ZGU0VUXG5hcmNoL3VtL0tjb25maWctMjgyLVx0aGV4XG4tLVxuYXJjaC94ODYvS2NvbmZpZz00MDg9Y29uZmlnIEFVRElUX0FSQ0hcbi0tXG5hcmNoL3g4Ni9LY29uZmlnLTQxMC1cbmFyY2gveDg2L0tjb25maWc6NDExOmNvbmZpZyBLQVNBTl9TSEFET1dfT0ZGU0VUXG5hcmNoL3g4Ni9LY29uZmlnLTQxMi1cdGhleFxuLS1cbmFyY2gveHRlbnNhL0tjb25maWc9OTg9Y29uZmlnIEhBVkVfWFRFTlNBX0dQSU8zMlxuLS1cbmFyY2gveHRlbnNhL0tjb25maWctMTAwLVxuYXJjaC94dGVuc2EvS2NvbmZpZzoxMDE6Y29uZmlnIEtBU0FOX1NIQURPV19PRkZTRVRcbmFyY2gveHRlbnNhL0tjb25maWctMTAyLVx0aGV4XG4tLVxubGliL0tjb25maWcua2FzYW49NDM9Y29uZmlnIENDX0hBU19XT1JLSU5HX05PU0FOSVRJWkVfQUREUkVTU1xuLS1cbmxpYi9LY29uZmlnLmthc2FuLTQ1LVxubGliL0tjb25maWcua2FzYW46NDY6bWVudWNvbmZpZyBLQVNBTlxubGliL0tjb25maWcua2FzYW4tNDctXHRib29sIFwmIzM0O0tBU0FOOiBkeW5hbWljIG1lbW9yeSBzYWZldHkgZXJyb3IgZGV0ZWN0b3JcJiMzNDtcbi0tXG5saWIvS2NvbmZpZy5rYXNhbj03Mz1jaG9pY2Vcbi0tXG5saWIvS2NvbmZpZy5rYXNhbi04OC1cbmxpYi9LY29uZmlnLmthc2FuOjg5OmNvbmZpZyBLQVNBTl9HRU5FUklDXG5saWIvS2NvbmZpZy5rYXNhbi05MC1cdGJvb2wgXCYjMzQ7R2VuZXJpYyBLQVNBTlwmIzM0O1xuLS1cbmxpYi9LY29uZmlnLmthc2FuLTEwMy1cbmxpYi9LY29uZmlnLmthc2FuOjEwNDpjb25maWcgS0FTQU5fU1dfVEFHU1xubGliL0tjb25maWcua2FzYW4tMTA1LVx0Ym9vbCBcJiMzNDtTb2Z0d2FyZSBUYWctQmFzZWQgS0FTQU5cJiMzNDtcbi0tXG5saWIvS2NvbmZpZy5rYXNhbi0xMjItXG5saWIvS2NvbmZpZy5rYXNhbjoxMjM6Y29uZmlnIEtBU0FOX0hXX1RBR1NcbmxpYi9LY29uZmlnLmthc2FuLTEyNC1cdGJvb2wgXCYjMzQ7SGFyZHdhcmUgVGFnLUJhc2VkIEtBU0FOXCYjMzQ7XG4tLVxubGliL0tjb25maWcua2FzYW49MTQxPWNob2ljZVxuLS1cbmxpYi9LY29uZmlnLmthc2FuLTE0NS1cbmxpYi9LY29uZmlnLmthc2FuOjE0Njpjb25maWcgS0FTQU5fT1VUTElORVxubGliL0tjb25maWcua2FzYW4tMTQ3LVx0Ym9vbCBcJiMzNDtPdXRsaW5lIGluc3RydW1lbnRhdGlvblwmIzM0O1xuLS1cbmxpYi9LY29uZmlnLmthc2FuLTE1Mi1cbmxpYi9LY29uZmlnLmthc2FuOjE1Mzpjb25maWcgS0FTQU5fSU5MSU5FXG5saWIvS2NvbmZpZy5rYXNhbi0xNTQtXHRib29sIFwmIzM0O0lubGluZSBpbnN0cnVtZW50YXRpb25cJiMzNDtcbi0tXG5saWIvS2NvbmZpZy5rYXNhbj0xNjE9ZW5kY2hvaWNlXG5saWIvS2NvbmZpZy5rYXNhbi0xNjItXG5saWIvS2NvbmZpZy5rYXNhbjoxNjM6Y29uZmlnIEtBU0FOX1NUQUNLXG5saWIvS2NvbmZpZy5rYXNhbi0xNjQtXHRib29sIFwmIzM0O1N0YWNrIGluc3RydW1lbnRhdGlvbiAodW5zYWZlKVwmIzM0OyBpZiBDQ19JU19DTEFORyBcdTAwMjZcdTAwMjYgIUNPTVBJTEVfVEVTVFxuLS1cbmxpYi9LY29uZmlnLmthc2FuLTE4NS1cbmxpYi9LY29uZmlnLmthc2FuOjE4Njpjb25maWcgS0FTQU5fVk1BTExPQ1xubGliL0tjb25maWcua2FzYW4tMTg3LVx0Ym9vbCBcJiMzNDtDaGVjayBhY2Nlc3NlcyB0byB2bWFsbG9jIGFsbG9jYXRpb25zXCYjMzQ7XG4tLVxubGliL0tjb25maWcua2FzYW4tMTk3LVxubGliL0tjb25maWcua2FzYW46MTk4OmNvbmZpZyBLQVNBTl9LVU5JVF9URVNUXG5saWIvS2NvbmZpZy5rYXNhbi0xOTktXHR0cmlzdGF0ZSBcJiMzNDtLVW5pdC1jb21wYXRpYmxlIHRlc3RzIG9mIEtBU0FOIGJ1ZyBkZXRlY3Rpb24gY2FwYWJpbGl0aWVzXCYjMzQ7IGlmICFLVU5JVF9BTExfVEVTVFNcbi0tXG5saWIvS2NvbmZpZy5rYXNhbi0yMDktXG5saWIvS2NvbmZpZy5rYXNhbjoyMTA6Y29uZmlnIEtBU0FOX0VYVFJBX0lORk9cbmxpYi9LY29uZmlnLmthc2FuLTIxMS1cdGJvb2wgXCYjMzQ7UmVjb3JkIGFuZCByZXBvcnQgbW9yZSBpbmZvcm1hdGlvblwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDAzOjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUxOTIKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiA0MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzOgoKKipLQVNBTiBDb25maWd1cmF0aW9uIERlZXAgRGl2ZSoqCgpPa2F5LCBzbyB0aGUgY29uZmlnIGlzIHNldCB0byBgS0FTQU5gLiBNeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMgd2hldGhlciB0aGUgYGthc2FuX3F1YXJhbnRpbmVfcmVtb3ZlX2NhY2hlYCBmdW5jdGlvbiBpcyBhdmFpbGFibGUgYWNyb3NzIGFsbCBLQVNBTiBtb2Rlcy4gSXQmIzM5O3MgYSBrZXkgZnVuY3Rpb24sIGFuZCBpdHMgYXZhaWxhYmlsaXR5IGNhbiByZWFsbHkgaW1wYWN0IGhvdyB0aGluZ3Mgd29yay4gVG8gZ2V0IHRoZSBkZWZpbml0aXZlIGFuc3dlciwgSSBrbm93IEkgbmVlZCB0byBkZWx2ZSBpbnRvIHRoZSBLQVNBTiBzb3VyY2UgY29kZS4gU3BlY2lmaWNhbGx5LCB0aGUgYG1tL2thc2FuL01ha2VmaWxlYCBmaWxlIGlzIHRoZSBwbGFjZSB0byBzdGFydC4gVGhhdCBNYWtlZmlsZSB3aWxsIGxpa2VseSBkZWZpbmUgdGhlIGJ1aWxkIGZsYWdzIGFuZCBjb25kaXRpb25hbCBjb21waWxhdGlvbiB0aGF0IGRldGVybWluZSBpZiB0aGlzIGZ1bmN0aW9uIGlzIGluY2x1ZGVkIGluIGRpZmZlcmVudCBLQVNBTiBidWlsZHMuIFRpbWUgdG8gZGl2ZSBpbiBhbmQgZ2V0IHNvbWUgY2xhcml0eS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMzo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtxdWFyYW50aW5lJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0va2FzYW4vTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0va2FzYW4vTWFrZWZpbGU9OT1DRkxBR1NfUkVNT1ZFX2luaXQubyA9ICQoQ0NfRkxBR1NfRlRSQUNFKVxubW0va2FzYW4vTWFrZWZpbGU6MTA6Q0ZMQUdTX1JFTU9WRV9xdWFyYW50aW5lLm8gPSAkKENDX0ZMQUdTX0ZUUkFDRSlcbm1tL2thc2FuL01ha2VmaWxlLTExLUNGTEFHU19SRU1PVkVfcmVwb3J0Lm8gPSAkKENDX0ZMQUdTX0ZUUkFDRSlcbi0tXG5tbS9rYXNhbi9NYWtlZmlsZT0yOD1DRkxBR1NfaW5pdC5vIDo9ICQoQ0NfRkxBR1NfS0FTQU5fUlVOVElNRSlcbm1tL2thc2FuL01ha2VmaWxlOjI5OkNGTEFHU19xdWFyYW50aW5lLm8gOj0gJChDQ19GTEFHU19LQVNBTl9SVU5USU1FKVxubW0va2FzYW4vTWFrZWZpbGUtMzAtQ0ZMQUdTX3JlcG9ydC5vIDo9ICQoQ0NfRkxBR1NfS0FTQU5fUlVOVElNRSlcbi0tXG5tbS9rYXNhbi9NYWtlZmlsZT01MT1vYmoteSA6PSBjb21tb24ubyByZXBvcnQub1xubW0va2FzYW4vTWFrZWZpbGU6NTI6b2JqLSQoQ09ORklHX0tBU0FOX0dFTkVSSUMpICYjNDM7PSBpbml0Lm8gZ2VuZXJpYy5vIHJlcG9ydF9nZW5lcmljLm8gc2hhZG93Lm8gcXVhcmFudGluZS5vXG5tbS9rYXNhbi9NYWtlZmlsZS01My1vYmotJChDT05GSUdfS0FTQU5fSFdfVEFHUykgJiM0Mzs9IGh3X3RhZ3MubyByZXBvcnRfaHdfdGFncy5vIHRhZ3MubyByZXBvcnRfdGFncy5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDM6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTcwMgoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDU0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKktBU0FOIFF1YXJhbnRpbmUgYW5kIEl0cyBDYWxscyoqCgpPa2F5LCBzbyBgcXVhcmFudGluZS5vYCBpcyBidWlsdCB3aXRoIGBDT05GSUdfS0FTQU5fR0VORVJJQ2AgZW5hYmxlZC4gVGhhdCBpbW1lZGlhdGVseSB0ZWxscyBtZSB3ZSBuZWVkIGBLQVNBTl9HRU5FUklDYCB0b28uIExldCYjMzk7cyBtYWtlIHN1cmUgdGhhdCBpcyBzZXQuCgpOb3csIG15IG5leHQgdGhvdWdodCBpcyBhYm91dCB1c2FnZSBvZiB0aGUgcXVhcmFudGluZSBtZWNoYW5pc20uIEkgbmVlZCB0byBxdWlja2x5IGRldGVybWluZSBpZiBga2FzYW5fcXVhcmFudGluZV9yZW1vdmVfY2FjaGVgIGlzIGNhbGxlZCBmcm9tIGFueXdoZXJlIGVsc2UgaW4gdGhlIGNvZGUgYmFzZS4gSSB3YW50IHRvIHVuZGVyc3RhbmQgdGhlIGNvbXBsZXRlIHBpY3R1cmUgb2YgaG93IHRoZSBxdWFyYW50aW5lIGlzIGJlaW5nIHV0aWxpemVkLCBzbyBrbm93aW5nICp3aGVyZSogdGhpcyBmdW5jdGlvbiBnZXRzIGNhbGxlZCBpcyBpbXBvcnRhbnQuIFRoaXMgaXMgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyBkZXBlbmRlbmNpZXMgYW5kIHBvdGVudGlhbCBpbXBhY3RzIG9mIGNoYW5nZXMgd2l0aGluIHRoZSBxdWFyYW50aW5lIGltcGxlbWVudGF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMzo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrYXNhbl9xdWFyYW50aW5lX3JlbW92ZV9jYWNoZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9rYXNhbi9nZW5lcmljLmM9MjE1PXZvaWQga2FzYW5fY2FjaGVfc2hyaW5rKHN0cnVjdCBrbWVtX2NhY2hlICpjYWNoZSlcbm1tL2thc2FuL2dlbmVyaWMuYy0yMTYte1xubW0va2FzYW4vZ2VuZXJpYy5jOjIxNzpcdGthc2FuX3F1YXJhbnRpbmVfcmVtb3ZlX2NhY2hlKGNhY2hlKTtcbm1tL2thc2FuL2dlbmVyaWMuYy0yMTgtfVxuLS1cbm1tL2thc2FuL2dlbmVyaWMuYz0yMjA9dm9pZCBrYXNhbl9jYWNoZV9zaHV0ZG93bihzdHJ1Y3Qga21lbV9jYWNoZSAqY2FjaGUpXG4tLVxubW0va2FzYW4vZ2VuZXJpYy5jLTIyMi1cdGlmICghX19rbWVtX2NhY2hlX2VtcHR5KGNhY2hlKSlcbm1tL2thc2FuL2dlbmVyaWMuYzoyMjM6XHRcdGthc2FuX3F1YXJhbnRpbmVfcmVtb3ZlX2NhY2hlKGNhY2hlKTtcbm1tL2thc2FuL2dlbmVyaWMuYy0yMjQtfVxuLS1cbm1tL2thc2FuL2thc2FuLmg9NDA2PXZvaWQga2FzYW5fcXVhcmFudGluZV9yZWR1Y2Uodm9pZCk7XG5tbS9rYXNhbi9rYXNhbi5oOjQwNzp2b2lkIGthc2FuX3F1YXJhbnRpbmVfcmVtb3ZlX2NhY2hlKHN0cnVjdCBrbWVtX2NhY2hlICpjYWNoZSk7XG5tbS9rYXNhbi9rYXNhbi5oLTQwOC0jZWxzZVxuLS1cbm1tL2thc2FuL2thc2FuLmg9NDEwPXN0YXRpYyBpbmxpbmUgdm9pZCBrYXNhbl9xdWFyYW50aW5lX3JlZHVjZSh2b2lkKSB7IH1cbm1tL2thc2FuL2thc2FuLmg6NDExOnN0YXRpYyBpbmxpbmUgdm9pZCBrYXNhbl9xdWFyYW50aW5lX3JlbW92ZV9jYWNoZShzdHJ1Y3Qga21lbV9jYWNoZSAqY2FjaGUpIHsgfVxubW0va2FzYW4va2FzYW4uaC00MTItI2VuZGlmXG4tLVxubW0va2FzYW4vcXVhcmFudGluZS5jPTE4NT1ib29sIGthc2FuX3F1YXJhbnRpbmVfcHV0KHN0cnVjdCBrbWVtX2NhY2hlICpjYWNoZSwgdm9pZCAqb2JqZWN0KVxuLS1cbm1tL2thc2FuL3F1YXJhbnRpbmUuYy0yMDAtXHQgKiBOb3RlOiBpcnEgbXVzdCBiZSBkaXNhYmxlZCB1bnRpbCBhZnRlciB3ZSBtb3ZlIHRoZSBiYXRjaCB0byB0aGVcbm1tL2thc2FuL3F1YXJhbnRpbmUuYzoyMDE6XHQgKiBnbG9iYWwgcXVhcmFudGluZS4gT3RoZXJ3aXNlIGthc2FuX3F1YXJhbnRpbmVfcmVtb3ZlX2NhY2hlKCkgY2FuXG5tbS9rYXNhbi9xdWFyYW50aW5lLmMtMjAyLVx0ICogbWlzcyBzb21lIG9iamVjdHMgYmVsb25naW5nIHRvIHRoZSBjYWNoZSBpZiB0aGV5IGFyZSBpbiBvdXIgbG9jYWxcbm1tL2thc2FuL3F1YXJhbnRpbmUuYzoyMDM6XHQgKiB0ZW1wIGxpc3QuIGthc2FuX3F1YXJhbnRpbmVfcmVtb3ZlX2NhY2hlKCkgZXhlY3V0ZXMgb25fZWFjaF9jcHUoKVxubW0va2FzYW4vcXVhcmFudGluZS5jLTIwNC1cdCAqIGF0IHRoZSBiZWdpbm5pbmcgd2hpY2ggZW5zdXJlcyB0aGF0IGl0IGVpdGhlciBzZWVzIHRoZSBvYmplY3RzIGluXG4tLVxubW0va2FzYW4vcXVhcmFudGluZS5jPTIzOT12b2lkIGthc2FuX3F1YXJhbnRpbmVfcmVkdWNlKHZvaWQpXG4tLVxubW0va2FzYW4vcXVhcmFudGluZS5jLTI1MC1cdC8qXG5tbS9rYXNhbi9xdWFyYW50aW5lLmM6MjUxOlx0ICogc3JjdSBjcml0aWNhbCBzZWN0aW9uIGVuc3VyZXMgdGhhdCBrYXNhbl9xdWFyYW50aW5lX3JlbW92ZV9jYWNoZSgpXG5tbS9rYXNhbi9xdWFyYW50aW5lLmMtMjUyLVx0ICogd2lsbCBub3QgbWlzcyBvYmplY3RzIGJlbG9uZ2luZyB0byB0aGUgY2FjaGUgd2hpbGUgdGhleSBhcmUgaW4gb3VyXG4tLVxubW0va2FzYW4vcXVhcmFudGluZS5jPTMyNj1zdGF0aWMgdm9pZCBwZXJfY3B1X3JlbW92ZV9jYWNoZSh2b2lkICphcmcpXG4tLVxubW0va2FzYW4vcXVhcmFudGluZS5jLTM0MS0vKiBGcmVlIGFsbCBxdWFyYW50aW5lZCBvYmplY3RzIGJlbG9uZ2luZyB0byBjYWNoZS4gKi9cbm1tL2thc2FuL3F1YXJhbnRpbmUuYzozNDI6dm9pZCBrYXNhbl9xdWFyYW50aW5lX3JlbW92ZV9jYWNoZShzdHJ1Y3Qga21lbV9jYWNoZSAqY2FjaGUpXG5tbS9rYXNhbi9xdWFyYW50aW5lLmMtMzQzLXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDM6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjcwMwoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDQ4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246CgoqKkludmVzdGlnYXRpbmcgdGhlIEtBU0FOIENhY2hlIFNocmlua2FnZSoqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIGZvY3VzaW5nIG9uIHRoZSBLQVNBTiBjYWNoZSBtZWNoYW5pc21zIGhlcmUuIE15IGluaXRpYWwgdGhvdWdodCBwcm9jZXNzIGlzIGNlbnRlcmVkIGFyb3VuZCBga2FzYW5fY2FjaGVfc2hyaW5rYCBhbmQgYGthc2FuX2NhY2hlX3NodXRkb3duYC4gVGhlc2UgYXJlIHRoZSBrZXkgcGxheWVycywgdGhlIGZ1bmN0aW9ucyB0aGF0IGFyZSBnb2luZyB0byBiZSBtYWtpbmcgY2hhbmdlcyB0byB0aGUgY2FjaGUsIGFuZCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGVyZSB0aGV5IGFyZSBiZWluZyBjYWxsZWQgZnJvbS4gVGhlcmVmb3JlLCB0aGUgaW1tZWRpYXRlIG5leHQgc3RlcCBpcyBjcnlzdGFsIGNsZWFyOiBJJiMzOTttIGdvaW5nIHRvIHRyYWNrIGRvd24gZXZlcnkgc2luZ2xlIGNhbGwgc2l0ZSBmb3IgYm90aCBga2FzYW5fY2FjaGVfc2hyaW5rYCBhbmQgYGthc2FuX2NhY2hlX3NodXRkb3duYC4gVW5kZXJzdGFuZGluZyB0aGVpciBjYWxsIHBhdGhzIGlzIHRoZSBjcnVjaWFsIG5leHQgc3RlcCB0byBmaWd1cmluZyBvdXQgdGhlIGJpZ2dlciBwaWN0dXJlLCBhbmQgdW5kZXJzdGFuZGluZyBob3cgdGhlIEtBU0FOIGNhY2hlIHdvcmtzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMzo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrYXNhbl9jYWNoZV9zaHJpbmsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9rYXNhbi5oPTQ5Mj12b2lkIGthc2FuX2NhY2hlX2NyZWF0ZShzdHJ1Y3Qga21lbV9jYWNoZSAqY2FjaGUsIHVuc2lnbmVkIGludCAqc2l6ZSxcbi0tXG5pbmNsdWRlL2xpbnV4L2thc2FuLmgtNDk0LVxuaW5jbHVkZS9saW51eC9rYXNhbi5oOjQ5NTp2b2lkIGthc2FuX2NhY2hlX3NocmluayhzdHJ1Y3Qga21lbV9jYWNoZSAqY2FjaGUpO1xuaW5jbHVkZS9saW51eC9rYXNhbi5oLTQ5Ni12b2lkIGthc2FuX2NhY2hlX3NodXRkb3duKHN0cnVjdCBrbWVtX2NhY2hlICpjYWNoZSk7XG4tLVxuaW5jbHVkZS9saW51eC9rYXNhbi5oPTUwOD1zdGF0aWMgaW5saW5lIHZvaWQga2FzYW5fY2FjaGVfY3JlYXRlKHN0cnVjdCBrbWVtX2NhY2hlICpjYWNoZSxcbi0tXG5pbmNsdWRlL2xpbnV4L2thc2FuLmgtNTExLVxuaW5jbHVkZS9saW51eC9rYXNhbi5oOjUxMjpzdGF0aWMgaW5saW5lIHZvaWQga2FzYW5fY2FjaGVfc2hyaW5rKHN0cnVjdCBrbWVtX2NhY2hlICpjYWNoZSkge31cbmluY2x1ZGUvbGludXgva2FzYW4uaC01MTMtc3RhdGljIGlubGluZSB2b2lkIGthc2FuX2NhY2hlX3NodXRkb3duKHN0cnVjdCBrbWVtX2NhY2hlICpjYWNoZSkge31cbi0tXG5tbS9rYXNhbi9nZW5lcmljLmM9MjAzPWJvb2wga2FzYW5fYnl0ZV9hY2Nlc3NpYmxlKGNvbnN0IHZvaWQgKmFkZHIpXG4tLVxubW0va2FzYW4vZ2VuZXJpYy5jLTIxNC1cbm1tL2thc2FuL2dlbmVyaWMuYzoyMTU6dm9pZCBrYXNhbl9jYWNoZV9zaHJpbmsoc3RydWN0IGttZW1fY2FjaGUgKmNhY2hlKVxubW0va2FzYW4vZ2VuZXJpYy5jLTIxNi17XG4tLVxubW0vc2xhYl9jb21tb24uYz02MDI9aW50IGttZW1fY2FjaGVfc2hyaW5rKHN0cnVjdCBrbWVtX2NhY2hlICpjYWNoZXApXG5tbS9zbGFiX2NvbW1vbi5jLTYwMy17XG5tbS9zbGFiX2NvbW1vbi5jOjYwNDpcdGthc2FuX2NhY2hlX3NocmluayhjYWNoZXApO1xubW0vc2xhYl9jb21tb24uYy02MDUtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDAzOjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDczNDkKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiAzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjoKCioqS0FTQU4gSW50ZXJhY3Rpb24gd2l0aCBTbGFiIENhY2hpbmcqKgoKUmlnaHQsIHNvIEkgc2VlIGhvdyBLQVNBTiBpbnRlZ3JhdGVzIHdpdGggdGhlIHNsYWIgYWxsb2NhdG9yLiBTcGVjaWZpY2FsbHksIHdoZW4gYGttZW1fY2FjaGVfc2hyaW5rYCBpcyBjYWxsZWQg4oCTIHRoYXQmIzM5O3MgdGhlIGZ1bmN0aW9uIHRoYXQgdHJpZXMgdG8gZnJlZSB1cCBzb21lIG1lbW9yeSBpbiBhIHBhcnRpY3VsYXIgc2xhYiBjYWNoZSDigJMgaXQgYWN0dWFsbHkgdHJpZ2dlcnMgYSBjYWxsIHRvIGBrYXNhbl9jYWNoZV9zaHJpbmtgLiBUaGF0IG1ha2VzIHBlcmZlY3Qgc2Vuc2U7IEtBU0FOIG5lZWRzIHRvIGJlIGF3YXJlIG9mIGFuZCBwb3RlbnRpYWxseSBtb2RpZnkgaXRzIGJlaGF2aW9yIHdoZW4gdGhlIHNsYWIgY2FjaGUgaXMgdW5kZXJnb2luZyBhIHNocmluayBvcGVyYXRpb24uIFRoaXMgaXMgbGlrZWx5IGFib3V0IHJlZHVjaW5nIHRoZSBhbW91bnQgb2YgbWVtb3J5IEtBU0FOIHRyYWNrcyBmb3IgcG90ZW50aWFsbHkgcG9pc29uZWQgZGF0YSB3aXRoaW4gdGhhdCBjYWNoZS4gSSYjMzk7ZCBpbWFnaW5lIHRoaXMgY291bGQgaW52b2x2ZSBjbGVhcmluZyBzb21lIHRhZyBiaXRzIG9yIHBvdGVudGlhbGx5IHJlbW92aW5nIGVudHJpZXMgZnJvbSBhIHNoYWRvdyBtZW1vcnkgbWFwLCBvciBzb21lIG90aGVyIG9wZXJhdGlvbiBjcml0aWNhbCBmb3IgbWFpbnRhaW5pbmcgS0FTQU4mIzM5O3MgbWVtb3J5IGludGVncml0eS4KClNpbWlsYXJseSwgd2hlbiBhIHNsYWIgY2FjaGUgaXMgYmVpbmcgY29tcGxldGVseSBkZXN0cm95ZWQgdmlhIGBrbWVtX2NhY2hlX2Rlc3Ryb3lgLCBLQVNBTiBnZXRzIGludm9sdmVkIHRocm91Z2ggYSBjYWxsIHRvIGBrYXNhbl9jYWNoZV9zaHV0ZG93bmAuIFRoaXMgaXMgdGhlIGNsZWFudXAgZnVuY3Rpb24uIFRoaXMgbGlrZWx5IHJlcHJlc2VudHMgS0FTQU4gcmVsZWFzaW5nIGFsbCB0aGUgcmVzb3VyY2VzIGFzc29jaWF0ZWQgd2l0aCB0cmFja2luZyB0aGF0IGNhY2hlJiMzOTtzIG1lbW9yeS4gVGhpcyBjb3VsZCBpbmNsdWRlLCBmb3IgZXhhbXBsZSwgZnJlZWluZyB1cCBhbnkgZGF0YSBzdHJ1Y3R1cmVzIHVzZWQgZm9yIHNoYWRvdyBtZW1vcnkgbWFuYWdlbWVudC4gVGhlIGtleSBpcyBlbnN1cmluZyB0aGF0IEtBU0FOJiMzOTtzIGJvb2trZWVwaW5nIGlzIGZ1bGx5IHN5bmNocm9uaXplZCB3aXRoIHRoZSBzbGFiIGFsbG9jYXRvciYjMzk7cyBsaWZlY3ljbGUgc28gdGhhdCBubyBtZW1vcnkgcmVtYWlucyBwb2lzb25lZCBvciB0cmFja2VkIHVubmVjZXNzYXJpbHksIGFuZCB0aGF0IHRoZXJlIGFyZSBubyBkYW5nbGluZyBwb2ludGVycyBvciBtZXRhZGF0YS4gSSYjMzk7ZCBiZSBpbnRlcmVzdGVkIGluIGRpZ2dpbmcgaW4gYW5kIHNlZWluZyBleGFjdGx5IHdoYXQgc3RhdGUgaXQmIzM5O3MgdXBkYXRpbmcsIGJ1dCB0aGlzIGdpdmVzIG1lIGEgc29saWQgaWRlYSBvZiB3aGVyZSBLQVNBTiYjMzk7cyBob29rcyBhcmUgd2l0aGluIHRoZSBzbGFiIGNhY2hlJiMzOTtzIGxpZmVjeWNsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDM6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a2FzYW5fY2FjaGVfc2h1dGRvd24mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9rYXNhbi5oPTQ5NT12b2lkIGthc2FuX2NhY2hlX3NocmluayhzdHJ1Y3Qga21lbV9jYWNoZSAqY2FjaGUpO1xuaW5jbHVkZS9saW51eC9rYXNhbi5oOjQ5Njp2b2lkIGthc2FuX2NhY2hlX3NodXRkb3duKHN0cnVjdCBrbWVtX2NhY2hlICpjYWNoZSk7XG5pbmNsdWRlL2xpbnV4L2thc2FuLmgtNDk3LXZvaWQga2FzYW5fcmVjb3JkX2F1eF9zdGFjayh2b2lkICpwdHIpO1xuLS1cbmluY2x1ZGUvbGludXgva2FzYW4uaD01MTI9c3RhdGljIGlubGluZSB2b2lkIGthc2FuX2NhY2hlX3NocmluayhzdHJ1Y3Qga21lbV9jYWNoZSAqY2FjaGUpIHt9XG5pbmNsdWRlL2xpbnV4L2thc2FuLmg6NTEzOnN0YXRpYyBpbmxpbmUgdm9pZCBrYXNhbl9jYWNoZV9zaHV0ZG93bihzdHJ1Y3Qga21lbV9jYWNoZSAqY2FjaGUpIHt9XG5pbmNsdWRlL2xpbnV4L2thc2FuLmgtNTE0LXN0YXRpYyBpbmxpbmUgdm9pZCBrYXNhbl9yZWNvcmRfYXV4X3N0YWNrKHZvaWQgKnB0cikge31cbi0tXG5tbS9rYXNhbi9nZW5lcmljLmM9MjE1PXZvaWQga2FzYW5fY2FjaGVfc2hyaW5rKHN0cnVjdCBrbWVtX2NhY2hlICpjYWNoZSlcbi0tXG5tbS9rYXNhbi9nZW5lcmljLmMtMjE5LVxubW0va2FzYW4vZ2VuZXJpYy5jOjIyMDp2b2lkIGthc2FuX2NhY2hlX3NodXRkb3duKHN0cnVjdCBrbWVtX2NhY2hlICpjYWNoZSlcbm1tL2thc2FuL2dlbmVyaWMuYy0yMjEte1xuLS1cbm1tL3NsYWJfY29tbW9uLmM9NTI3PXZvaWQga21lbV9jYWNoZV9kZXN0cm95KHN0cnVjdCBrbWVtX2NhY2hlICpzKVxuLS1cbm1tL3NsYWJfY29tbW9uLmMtNTY2LVx0LyogZnJlZSBhc2FuIHF1YXJhbnRpbmVkIG9iamVjdHMgKi9cbm1tL3NsYWJfY29tbW9uLmM6NTY3Olx0a2FzYW5fY2FjaGVfc2h1dGRvd24ocyk7XG5tbS9zbGFiX2NvbW1vbi5jLTU2OC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDM6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODEyMwoJCQkJCQkJb3V0cHV0OiAxMjYKCQkJCQkJCXRob3VnaHRzOiAzNzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBhbmQgQ29uZmlndXJhdGlvbiBBbmFseXNpcyBmb3IgS0FTQU4gQ2FjaGUgT3BlcmF0aW9ucyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlc2UgZnVuY3Rpb25zLCBga21lbV9jYWNoZV9zaHJpbmtgIGFuZCBga21lbV9jYWNoZV9kZXN0cm95YCwgYW5kIHRoZXkgbG9vayBsaWtlIHRoZSBwcmltYXJ5IGVudHJ5IHBvaW50cyBoZXJlLiBEZWZpbml0ZWx5IHdvcnRoIGZvY3VzaW5nIGZ1enppbmcgZWZmb3J0cyBvbiB0aGVtLiBBY3R1YWxseSwgSSBzaG91bGQgYWxzbyBsb29rIGF0IHRoZSBvdGhlciBzeW1ib2xzIHRoYXQgY291bGQgYmUgaGl0LCB3aGljaCBhcmU6IGBrYXNhbl9xdWFyYW50aW5lX3JlbW92ZV9jYWNoZWAsIGBrYXNhbl9jYWNoZV9zaHJpbmtgLCBhbmQgYGthc2FuX2NhY2hlX3NodXRkb3duYC4gV2FpdCBhIHNlY29uZCwgd2hpbGUgYGttZW1fY2FjaGVfc2hyaW5rYCBhbmQgYGttZW1fY2FjaGVfZGVzdHJveWAgYXJlIGdvb2QgZW50cnkgcG9pbnRzLCB0aGV5IGFyZSBtb3JlIGdlbmVyYWwuIFRoZSBzcGVjaWZpYyBmdW5jdGlvbiBJIG5lZWQgdG8gY29uY2VudHJhdGUgb24gaXMgYGthc2FuX3F1YXJhbnRpbmVfcmVtb3ZlX2NhY2hlYC4KCk5vdywgSSBuZWVkIHRvIGNoZWNrIGZvciBhbnkgc3BlY2lmaWMgY29uZmlndXJhdGlvbiByZXF1aXJlbWVudHMuIEkmIzM5O20gcHJldHR5IHN1cmUgYEtBU0FOX0dFTkVSSUNgIGlzIG5lZWRlZC4gTGV0IG1lIGRvdWJsZS1jaGVjayBpZiBqdXN0IGBLQVNBTmAgaXMgZW5vdWdoLiBBaCwgcmlnaHQsIGBLQVNBTl9HRU5FUklDYCBpcyBhbiBvcHRpb24gKnVuZGVyKiBgS0FTQU5gLiBTbywgSSYjMzk7bGwgYWRkICpib3RoKiBgS0FTQU5gIGFuZCBgS0FTQU5fR0VORVJJQ2AgdG8gbXkgY29uZmlndXJhdGlvbiByZXF1aXJlbWVudHMuIExldCBtZSBqdXN0IGNvbmZpcm0gdGhhdCB0aGUgbmFtZSBpcyBleGFjdGx5IGBLQVNBTl9HRU5FUklDYC4gWXVwLCBgY29uZmlnIEtBU0FOX0dFTkVSSUNgLiBBbHJpZ2h0LCBJJiMzOTtsbCBvdXRwdXQgYEtBU0FOYCBhbmQgYEtBU0FOX0dFTkVSSUNgIGFzIHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbiBvcHRpb25zLgoKSnVzdCB0byBiZSB0aG9yb3VnaCwgSSYjMzk7bSBnb2luZyB0byBkb3VibGUgY2hlY2sgaWYgYGthc2FuX3F1YXJhbnRpbmVfcmVtb3ZlX2NhY2hlYCBpcyBzdGF0aWMuIE5vcGUsIGl0JiMzOTtzIG5vdC4gSXQmIzM5O3MgYSBgdm9pZCBrYXNhbl9xdWFyYW50aW5lX3JlbW92ZV9jYWNoZShzdHJ1Y3Qga21lbV9jYWNoZSAqY2FjaGUpYC4gR29vZCB0byBrbm93LgoKQW55dGhpbmcgZWxzZSBJIHNob3VsZCBjb25zaWRlcj8gQWgsIHllcywgdGhlcmUgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBoZXJlLiBUaGUgcGF0Y2ggcmVwbGFjZXMgYGZvcl9lYWNoX29ubGluZV9jcHUoY3B1KWAgd2l0aCBgZm9yX2VhY2hfcG9zc2libGVfY3B1KGNwdSlgLiBUaGlzIGlzIHRvIGFkZHJlc3MgYSBidWcgd2hlcmUgYSBDUFUgbWlnaHQgZ28gb2ZmbGluZSBhZnRlciBgb25fZWFjaF9jcHUoKWAgcmV0dXJucywgcG90ZW50aWFsbHkgbGVhdmluZyBjYWNoZSBvYmplY3RzIG9uIHRoYXQgQ1BVJiMzOTtzIHNocmluayBsaXN0LiBJdCYjMzk7cyBpbXBvcnRhbnQgdG8gcmVtZW1iZXIgdGhpcyBpcyBhIGZ1bmN0aW9uYWwgZml4LgoKSSYjMzk7bGwgYmUgdXNpbmcgdGhlIGBzZXQtcmVzdWx0c2AgdG9vbCBmb3IgdGhpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDM6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tBU0FOJiMzNDssCiAgICAmIzM0O0tBU0FOX0dFTkVSSUMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtrYXNhbl9xdWFyYW50aW5lX3JlbW92ZV9jYWNoZSYjMzQ7LAogICAgJiMzNDtrYXNhbl9jYWNoZV9zaHJpbmsmIzM0OywKICAgICYjMzQ7a2FzYW5fY2FjaGVfc2h1dGRvd24mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gS0FTQU4gcXVhcmFudGluZSBsb2dpYyBieSBpdGVyYXRpbmcgb3ZlciBhbGwgcG9zc2libGUgQ1BVcyBpbnN0ZWFkIG9mIG9ubHkgb25saW5lIENQVXMgd2hlbiByZW1vdmluZyBhIGNhY2hlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBrZXJuZWwgbWVtb3J5IGRlYnVnZ2luZyBsb2dpYyB0aGF0IGlzIHJlYWNoYWJsZSB3aGVuIGEga21lbV9jYWNoZSBpcyBzaHJ1bmsgb3IgZGVzdHJveWVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtLQVNBTiYjMzQ7LAogICAgJiMzNDtLQVNBTl9HRU5FUklDJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a2FzYW5fcXVhcmFudGluZV9yZW1vdmVfY2FjaGUmIzM0OywKICAgICYjMzQ7a2FzYW5fY2FjaGVfc2hyaW5rJiMzNDssCiAgICAmIzM0O2thc2FuX2NhY2hlX3NodXRkb3duJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIEtBU0FOIHF1YXJhbnRpbmUgbG9naWMgYnkgaXRlcmF0aW5nIG92ZXIgYWxsIHBvc3NpYmxlIENQVXMgaW5zdGVhZCBvZiBvbmx5IG9ubGluZSBDUFVzIHdoZW4gcmVtb3ZpbmcgYSBjYWNoZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUga2VybmVsIG1lbW9yeSBkZWJ1Z2dpbmcgbG9naWMgdGhhdCBpcyByZWFjaGFibGUgd2hlbiBhIGttZW1fY2FjaGUgaXMgc2hydW5rIG9yIGRlc3Ryb3llZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDM6NDM8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMzo0MzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBga2FzYW5fcXVhcmFudGluZV9yZW1vdmVfY2FjaGVgIGluIGBtbS9rYXNhbi9xdWFyYW50aW5lLmNgIHRvIGl0ZXJhdGUgb3ZlciBhbGwgcG9zc2libGUgQ1BVcyBpbnN0ZWFkIG9mIG9ubHkgb25saW5lIENQVXMgd2hlbiBkcmFpbmluZyB0aGUgc2hyaW5rIGxpc3QuIFRoaXMgZml4ZXMgYSBwb3RlbnRpYWwgaXNzdWUgd2hlcmUgY2FjaGUgb2JqZWN0cyBjb3VsZCBiZSBsZWZ0IG9uIHRoZSBzaHJpbmsgbGlzdCBvZiBhIENQVSB0aGF0IGdvZXMgb2ZmbGluZS4gVGhpcyBjaGFuZ2UgYWRkcmVzc2VzIGEgbWVtb3J5IG1hbmFnZW1lbnQgaXNzdWUgKGxpa2VseSBhIG1lbW9yeSBsZWFrIG9yIHVzZS1hZnRlci1mcmVlIHJlbGF0ZWQgdG8gS0FTQU4mIzM5O3MgcXVhcmFudGluZSkgYW5kIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGFsbG9jYXRpb25zLCBzdHJ1Y3R1cmVzIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciBsb2dpYyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gU3RhbmRhcmQgS0FTQU4gYW5kIG90aGVyIG1lbW9yeSBkZXRlY3RvcnMgYXJlIHN1ZmZpY2llbnQgZm9yIHRoaXMgY29kZSwgYW5kIEtNU0FOIGlzIG5vdCBhcHBsaWNhYmxlLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBmYTE4ZmE3MDJiMjFkYmFkZmZmYWE1ZTQ4OGYzNmNkNDQ2MGM1YWU4CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFNhdCBBdWcgOCAwMzo0MzoxMSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL21tL2thc2FuL3F1YXJhbnRpbmUuYyBiL21tL2thc2FuL3F1YXJhbnRpbmUuYwppbmRleCA2OTU4YWE3MTNjNjdlLi4xNmY0ZTY3YmVlZTgyIDEwMDY0NAotLS0gYS9tbS9rYXNhbi9xdWFyYW50aW5lLmMKJiM0MzsmIzQzOyYjNDM7IGIvbW0va2FzYW4vcXVhcmFudGluZS5jCkBAIC0zNTUsNyAmIzQzOzM1NSwxMiBAQCB2b2lkIGthc2FuX3F1YXJhbnRpbmVfcmVtb3ZlX2NhY2hlKHN0cnVjdCBrbWVtX2NhY2hlICpjYWNoZSkKIAkgKi8KIAlvbl9lYWNoX2NwdShwZXJfY3B1X3JlbW92ZV9jYWNoZSwgY2FjaGUsIDEpOwogCi0JZm9yX2VhY2hfb25saW5lX2NwdShjcHUpIHsKJiM0MzsJLyoKJiM0MzsJICogQSBDUFUgY2FuIGdvIG9mZmxpbmUgYWZ0ZXIgb25fZWFjaF9jcHUoKSByZXR1cm5zLCBsZWF2aW5nIGNhY2hlCiYjNDM7CSAqIG9iamVjdHMgb24gdGhhdCBDUFUmIzM5O3Mgc2hyaW5rIGxpc3QuIFNjYW4gYWxsIHBvc3NpYmxlIENQVXMgdG8KJiM0MzsJICogZHJhaW4gdGhvc2UgbGlzdHMuCiYjNDM7CSAqLwomIzQzOwlmb3JfZWFjaF9wb3NzaWJsZV9jcHUoY3B1KSB7CiAJCXNxID0gcGVyX2NwdV9wdHIoJmFtcDtzaHJpbmtfcWxpc3QsIGNwdSk7CiAJCXJhd19zcGluX2xvY2tfaXJxc2F2ZSgmYW1wO3NxLSZndDtsb2NrLCBmbGFncyk7CiAJCXFsaXN0X21vdmVfY2FjaGUoJmFtcDtzcS0mZ3Q7cWxpc3QsICZhbXA7dG9fZnJlZSwgY2FjaGUpOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDM6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA2MAoJCQkJCQkJb3V0cHV0OiAxNjIKCQkJCQkJCXRob3VnaHRzOiAyMjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqS0FTQU4gUXVhcmFudGluZSBDYWNoZSBEcmFpbmFnZSAtIEJ1ZyBGaXggVmVyaWZpY2F0aW9uKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgc3dpdGNoaW5nIHRoZSBDUFUgaXRlcmF0aW9uIGluIGBrYXNhbl9xdWFyYW50aW5lX3JlbW92ZV9jYWNoZSgpYCBmcm9tIGBmb3JfZWFjaF9vbmxpbmVfY3B1KGNwdSlgIHRvIGBmb3JfZWFjaF9wb3NzaWJsZV9jcHUoY3B1KWAgd2l0aGluIGBtbS9rYXNhbi9xdWFyYW50aW5lLmNgLiAgVGhlIGNvcmUgb2YgdGhpcyBpcyBhYm91dCBmaXhpbmcgYSByYWNlIGNvbmRpdGlvbiBvciBlZGdlIGNhc2UuICBFc3NlbnRpYWxseSwgdGhlcmUgd2FzIGEgc2NlbmFyaW8gd2hlcmUgYSBDUFUgY291bGQgZ28gb2ZmbGluZSAqYWZ0ZXIqIGBvbl9lYWNoX2NwdSgpYCBoYWQgZmluaXNoZWQgaXRzIHdvcmssIGxlYXZpbmcgc3RhbGUgZW50cmllcyBpbiB0aGUgS0FTQU4gcXVhcmFudGluZSBjYWNoZSBmb3IgdGhhdCBDUFUuICBUaGlzIHNvdW5kcyBsaWtlIGEgcG90ZW50aWFsIG1lbW9yeSBsZWFrIG9yLCBldmVuIHdvcnNlLCBhIHVzZS1hZnRlci1mcmVlIHNjZW5hcmlvIHdpdGhpbiB0aGUgS0FTQU4gc3Vic3lzdGVtLiBUaGUgY2hhbmdlIGVuc3VyZXMgYWxsIENQVXMsIGluY2x1ZGluZyB0aG9zZSB0aGF0IG1heSBiZSBnb2luZyBvZmZsaW5lLCBhcmUgY29uc2lkZXJlZCB0byBwcm9wZXJseSBkcmFpbiB0aGUgbGlzdHMuCgpJdCYjMzk7cyBmb2N1c2VkIG9uIHRoZSBLQVNBTiBxdWFyYW50aW5lIGFuZCBtZW1vcnkgbWFuYWdlbWVudCBpbnRlcm5hbHMuIFRoaW5raW5nIHRocm91Z2ggdGhpcywgaXQgY2xlYXJseSBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdXNpbmcgdW5pbml0aWFsaXplZCBtZW1vcnk7IGl0JiMzOTtzIGFsbCBhYm91dCBlbnN1cmluZyBleGlzdGluZyBtZW1vcnkgaXMgcHJvcGVybHkgaGFuZGxlZC4gV2UmIzM5O3JlIGp1c3QgbW9kaWZ5aW5nIHRoZSBsb29wIHRvIHByZXZlbnQgZGFuZ2xpbmcgcG9pbnRlcnMuCgpMZXQgbWUganVzdCBxdWlja2x5IGNvbmZpcm0gdGhhdCB0aGUga2V5IGNoYW5nZSBpcyBpbiBga2FzYW5fcXVhcmFudGluZV9yZW1vdmVfY2FjaGVgLCBhZ2FpbiB3aXRoIHRoYXQgQ1BVIGl0ZXJhdGlvbiBjaGFuZ2UuIFllcywganVzdCBhIGxvb3AsIGRyYWluaW5nIGEgbGlzdC4gTm8gdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWVzLiAgT2theSwgSSYjMzk7bSBjb25maWRlbnQuIEkmIzM5O20gc2V0dGluZyBgTmVlZHNLTVNBTmAgdG8gYGZhbHNlYCBmb3IgdGhpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDM6NDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYGthc2FuX3F1YXJhbnRpbmVfcmVtb3ZlX2NhY2hlYCBpbiBgbW0va2FzYW4vcXVhcmFudGluZS5jYCB0byBpdGVyYXRlIG92ZXIgYWxsIHBvc3NpYmxlIENQVXMgaW5zdGVhZCBvZiBvbmx5IG9ubGluZSBDUFVzIHdoZW4gZHJhaW5pbmcgdGhlIHNocmluayBsaXN0LiBUaGlzIGZpeGVzIGEgcG90ZW50aWFsIGlzc3VlIHdoZXJlIGNhY2hlIG9iamVjdHMgY291bGQgYmUgbGVmdCBvbiB0aGUgc2hyaW5rIGxpc3Qgb2YgYSBDUFUgdGhhdCBnb2VzIG9mZmxpbmUuIFRoaXMgY2hhbmdlIGFkZHJlc3NlcyBhIG1lbW9yeSBtYW5hZ2VtZW50IGlzc3VlIChsaWtlbHkgYSBtZW1vcnkgbGVhayBvciB1c2UtYWZ0ZXItZnJlZSByZWxhdGVkIHRvIEtBU0FOJiMzOTtzIHF1YXJhbnRpbmUpIGFuZCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBhbGxvY2F0aW9ucywgc3RydWN0dXJlcyBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgbG9naWMgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkuIFN0YW5kYXJkIEtBU0FOIGFuZCBvdGhlciBtZW1vcnkgZGV0ZWN0b3JzIGFyZSBzdWZmaWNpZW50IGZvciB0aGlzIGNvZGUsIGFuZCBLTVNBTiBpcyBub3QgYXBwbGljYWJsZS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBrYXNhbl9xdWFyYW50aW5lX3JlbW92ZV9jYWNoZWAgaW4gYG1tL2thc2FuL3F1YXJhbnRpbmUuY2AgdG8gaXRlcmF0ZSBvdmVyIGFsbCBwb3NzaWJsZSBDUFVzIGluc3RlYWQgb2Ygb25seSBvbmxpbmUgQ1BVcyB3aGVuIGRyYWluaW5nIHRoZSBzaHJpbmsgbGlzdC4gVGhpcyBmaXhlcyBhIHBvdGVudGlhbCBpc3N1ZSB3aGVyZSBjYWNoZSBvYmplY3RzIGNvdWxkIGJlIGxlZnQgb24gdGhlIHNocmluayBsaXN0IG9mIGEgQ1BVIHRoYXQgZ29lcyBvZmZsaW5lLiBUaGlzIGNoYW5nZSBhZGRyZXNzZXMgYSBtZW1vcnkgbWFuYWdlbWVudCBpc3N1ZSAobGlrZWx5IGEgbWVtb3J5IGxlYWsgb3IgdXNlLWFmdGVyLWZyZWUgcmVsYXRlZCB0byBLQVNBTiYjMzk7cyBxdWFyYW50aW5lKSBhbmQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgYWxsb2NhdGlvbnMsIHN0cnVjdHVyZXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIGxvZ2ljIHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBTdGFuZGFyZCBLQVNBTiBhbmQgb3RoZXIgbWVtb3J5IGRldGVjdG9ycyBhcmUgc3VmZmljaWVudCBmb3IgdGhpcyBjb2RlLCBhbmQgS01TQU4gaXMgbm90IGFwcGxpY2FibGUuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDAzOjQzOjEzLjI0OTE0NjY0M1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUxMTU0NTIwNDExLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktBU0FOXCIsXG4gICAgXCJLQVNBTl9HRU5FUklDXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia2FzYW5fcXVhcmFudGluZV9yZW1vdmVfY2FjaGVcIixcbiAgICBcImthc2FuX2NhY2hlX3Nocmlua1wiLFxuICAgIFwia2FzYW5fY2FjaGVfc2h1dGRvd25cIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGBrYXNhbl9xdWFyYW50aW5lX3JlbW92ZV9jYWNoZWAgaW4gYG1tL2thc2FuL3F1YXJhbnRpbmUuY2AgdG8gaXRlcmF0ZSBvdmVyIGFsbCBwb3NzaWJsZSBDUFVzIGluc3RlYWQgb2Ygb25seSBvbmxpbmUgQ1BVcyB3aGVuIGRyYWluaW5nIHRoZSBzaHJpbmsgbGlzdC4gVGhpcyBmaXhlcyBhIHBvdGVudGlhbCBpc3N1ZSB3aGVyZSBjYWNoZSBvYmplY3RzIGNvdWxkIGJlIGxlZnQgb24gdGhlIHNocmluayBsaXN0IG9mIGEgQ1BVIHRoYXQgZ29lcyBvZmZsaW5lLiBUaGlzIGNoYW5nZSBhZGRyZXNzZXMgYSBtZW1vcnkgbWFuYWdlbWVudCBpc3N1ZSAobGlrZWx5IGEgbWVtb3J5IGxlYWsgb3IgdXNlLWFmdGVyLWZyZWUgcmVsYXRlZCB0byBLQVNBTidzIHF1YXJhbnRpbmUpIGFuZCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBhbGxvY2F0aW9ucywgc3RydWN0dXJlcyBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgbG9naWMgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkuIFN0YW5kYXJkIEtBU0FOIGFuZCBvdGhlciBtZW1vcnkgZGV0ZWN0b3JzIGFyZSBzdWZmaWNpZW50IGZvciB0aGlzIGNvZGUsIGFuZCBLTVNBTiBpcyBub3QgYXBwbGljYWJsZS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBLQVNBTiBxdWFyYW50aW5lIGxvZ2ljIGJ5IGl0ZXJhdGluZyBvdmVyIGFsbCBwb3NzaWJsZSBDUFVzIGluc3RlYWQgb2Ygb25seSBvbmxpbmUgQ1BVcyB3aGVuIHJlbW92aW5nIGEgY2FjaGUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIGtlcm5lbCBtZW1vcnkgZGVidWdnaW5nIGxvZ2ljIHRoYXQgaXMgcmVhY2hhYmxlIHdoZW4gYSBrbWVtX2NhY2hlIGlzIHNocnVuayBvciBkZXN0cm95ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDAzOjQzOjEzLjI0OTE1MjI4M1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA2NjIyMTExNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGZhMThmYTcwMmIyMWRiYWRmZmZhYTVlNDg4ZjM2Y2Q0NDYwYzVhZThcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFNhdCBBdWcgOCAwMzo0MzoxMSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9tbS9rYXNhbi9xdWFyYW50aW5lLmMgYi9tbS9rYXNhbi9xdWFyYW50aW5lLmNcXG5pbmRleCA2OTU4YWE3MTNjNjdlLi4xNmY0ZTY3YmVlZTgyIDEwMDY0NFxcbi0tLSBhL21tL2thc2FuL3F1YXJhbnRpbmUuY1xcbisrKyBiL21tL2thc2FuL3F1YXJhbnRpbmUuY1xcbkBAIC0zNTUsNyArMzU1LDEyIEBAIHZvaWQga2FzYW5fcXVhcmFudGluZV9yZW1vdmVfY2FjaGUoc3RydWN0IGttZW1fY2FjaGUgKmNhY2hlKVxcbiBcXHQgKi9cXG4gXFx0b25fZWFjaF9jcHUocGVyX2NwdV9yZW1vdmVfY2FjaGUsIGNhY2hlLCAxKTtcXG4gXFxuLVxcdGZvcl9lYWNoX29ubGluZV9jcHUoY3B1KSB7XFxuK1xcdC8qXFxuK1xcdCAqIEEgQ1BVIGNhbiBnbyBvZmZsaW5lIGFmdGVyIG9uX2VhY2hfY3B1KCkgcmV0dXJucywgbGVhdmluZyBjYWNoZVxcbitcXHQgKiBvYmplY3RzIG9uIHRoYXQgQ1BVJ3Mgc2hyaW5rIGxpc3QuIFNjYW4gYWxsIHBvc3NpYmxlIENQVXMgdG9cXG4rXFx0ICogZHJhaW4gdGhvc2UgbGlzdHMuXFxuK1xcdCAqL1xcbitcXHRmb3JfZWFjaF9wb3NzaWJsZV9jcHUoY3B1KSB7XFxuIFxcdFxcdHNxID0gcGVyX2NwdV9wdHIoXFx1MDAyNnNocmlua19xbGlzdCwgY3B1KTtcXG4gXFx0XFx0cmF3X3NwaW5fbG9ja19pcnFzYXZlKFxcdTAwMjZzcS1cXHUwMDNlbG9jaywgZmxhZ3MpO1xcbiBcXHRcXHRxbGlzdF9tb3ZlX2NhY2hlKFxcdTAwMjZzcS1cXHUwMDNlcWxpc3QsIFxcdTAwMjZ0b19mcmVlLCBjYWNoZSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDAzOjQzOjE0LjMxNjE0Mzk1OFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjQyODc4ODEzMzcxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktBU0FOXCIsXG4gICAgXCJLQVNBTl9HRU5FUklDXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia2FzYW5fcXVhcmFudGluZV9yZW1vdmVfY2FjaGVcIixcbiAgICBcImthc2FuX2NhY2hlX3Nocmlua1wiLFxuICAgIFwia2FzYW5fY2FjaGVfc2h1dGRvd25cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBLQVNBTiBxdWFyYW50aW5lIGxvZ2ljIGJ5IGl0ZXJhdGluZyBvdmVyIGFsbCBwb3NzaWJsZSBDUFVzIGluc3RlYWQgb2Ygb25seSBvbmxpbmUgQ1BVcyB3aGVuIHJlbW92aW5nIGEgY2FjaGUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIGtlcm5lbCBtZW1vcnkgZGVidWdnaW5nIGxvZ2ljIHRoYXQgaXMgcmVhY2hhYmxlIHdoZW4gYSBrbWVtX2NhY2hlIGlzIHNocnVuayBvciBkZXN0cm95ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGZhMThmYTcwMmIyMWRiYWRmZmZhYTVlNDg4ZjM2Y2Q0NDYwYzVhZThcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEF1ZyA4IDAzOjQzOjExIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbW0va2FzYW4vcXVhcmFudGluZS5jIGIvbW0va2FzYW4vcXVhcmFudGluZS5jXG5pbmRleCA2OTU4YWE3MTNjNjdlLi4xNmY0ZTY3YmVlZTgyIDEwMDY0NFxuLS0tIGEvbW0va2FzYW4vcXVhcmFudGluZS5jXG4rKysgYi9tbS9rYXNhbi9xdWFyYW50aW5lLmNcbkBAIC0zNTUsNyArMzU1LDEyIEBAIHZvaWQga2FzYW5fcXVhcmFudGluZV9yZW1vdmVfY2FjaGUoc3RydWN0IGttZW1fY2FjaGUgKmNhY2hlKVxuIFx0ICovXG4gXHRvbl9lYWNoX2NwdShwZXJfY3B1X3JlbW92ZV9jYWNoZSwgY2FjaGUsIDEpO1xuIFxuLVx0Zm9yX2VhY2hfb25saW5lX2NwdShjcHUpIHtcbitcdC8qXG4rXHQgKiBBIENQVSBjYW4gZ28gb2ZmbGluZSBhZnRlciBvbl9lYWNoX2NwdSgpIHJldHVybnMsIGxlYXZpbmcgY2FjaGVcbitcdCAqIG9iamVjdHMgb24gdGhhdCBDUFUncyBzaHJpbmsgbGlzdC4gU2NhbiBhbGwgcG9zc2libGUgQ1BVcyB0b1xuK1x0ICogZHJhaW4gdGhvc2UgbGlzdHMuXG4rXHQgKi9cbitcdGZvcl9lYWNoX3Bvc3NpYmxlX2NwdShjcHUpIHtcbiBcdFx0c3EgPSBwZXJfY3B1X3B0cihcdTAwMjZzaHJpbmtfcWxpc3QsIGNwdSk7XG4gXHRcdHJhd19zcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZzcS1cdTAwM2Vsb2NrLCBmbGFncyk7XG4gXHRcdHFsaXN0X21vdmVfY2FjaGUoXHUwMDI2c3EtXHUwMDNlcWxpc3QsIFx1MDAyNnRvX2ZyZWUsIGNhY2hlKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDAzOjQzOjE0LjMxNjE0NTQ1OFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2MDA2NTY4MzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgS0FTQU4gQnVnIEZpeDogRnV6emluZyBQb3RlbnRpYWwqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgdHdlYWtzIHRoZSBLQVNBTiBxdWFyYW50aW5lIGxvZ2ljLiBTcGVjaWZpY2FsbHksIGl0J3Mgc3dhcHBpbmcgYGZvcl9lYWNoX29ubGluZV9jcHUoY3B1KWAgd2l0aCBgZm9yX2VhY2hfcG9zc2libGVfY3B1KGNwdSlgIHdpdGhpbiB0aGUgYGthc2FuX3F1YXJhbnRpbmVfcmVtb3ZlX2NhY2hlYCBmdW5jdGlvbiBpbiBgbW0va2FzYW4vcXVhcmFudGluZS5jYC4gVGhlIHBhdGNoIGRlc2NyaXB0aW9uIGV4cGxpY2l0bHkgY2FsbHMgdGhpcyBhIGJ1ZyBmaXgsIHdoaWNoIGltbWVkaWF0ZWx5IHBpcXVlcyBteSBpbnRlcmVzdCBmcm9tIGEgZnV6emluZyBwZXJzcGVjdGl2ZS5cblxuR2l2ZW4gdGhhdCBLQVNBTiBpcyBvZnRlbiBlbmFibGVkIGJ5IGRlZmF1bHQgZHVyaW5nIGZ1enppbmcsIGFuZCB0aGlzIGlzIGEgcmVsYXRpdmVseSBsb2NhbGl6ZWQgZml4IHdpdGhpbiBLQVNBTiwgdGhlIHBvdGVudGlhbCBpbXBhY3Qgb24gZnV6emluZyBlZmZlY3RpdmVuZXNzIHdhcnJhbnRzIGEgZGVlcGVyIGxvb2suIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgdGhpcyBjaGFuZ2UgaW50cm9kdWNlcyBuZXcgZnV6emluZyB0YXJnZXRzIG9yIGFsdGVycyBleGlzdGluZyBvbmVzLlxuXG5UaGUgZnVuY3Rpb24gaW4gcXVlc3Rpb24gaXMgYGthc2FuX3F1YXJhbnRpbmVfcmVtb3ZlX2NhY2hlYC4gVGhlIG5hbWUgaXRzZWxmIGhpbnRzIGF0IGl0cyBwdXJwb3NlOiByZW1vdmluZyBhIGNhY2hlIGZyb20gdGhlIHF1YXJhbnRpbmUuIEEgcXVpY2sgbWVudGFsIHJlZnJlc2jigKYgYWgsIHJpZ2h0LCB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aGVuIGEgYGttZW1fY2FjaGVgIGlzIGRlc3Ryb3llZC4gVGhhdCdzIGEgY29yZSBrZXJuZWwgZnVuY3Rpb24sIGFuZCB0aGUgYGttZW1fY2FjaGVgIHN1YnN5c3RlbSBpcyBvZnRlbiBhIHNvdXJjZSBvZiBpbnRlcmVzdGluZyBmdXp6aW5nIHRhcmdldHMuXG5cblllcywgdGhpcyBpcyBkZWZpbml0ZWx5IHdvcnRoIGZ1enppbmcuIEl0J3MgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBgbW0va2FzYW4vcXVhcmFudGluZS5jYCwgc3BlY2lmaWNhbGx5IHJlbGF0ZWQgdG8gdGhlIHJlbW92YWwgb2YgbWVtb3J5IGNhY2hlcy4gTGV0IG1lIHRha2UgYSBjbG9zZXIgbG9vayBhdCBga2FzYW5fcXVhcmFudGluZV9yZW1vdmVfY2FjaGVgIGFuZCB0aGUgY29udGV4dCBpbiB3aGljaCBpdCdzIGNhbGxlZC4gVGhpcyBjb3VsZCBiZSBhIGdvb2QgcGxhY2UgdG8gc3RhcnQgbXkgZnV6emluZyBhbmFseXNpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA2MywiT3V0cHV0VG9rZW5zIjoyMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDAzOjQzOjE4LjkxNjgwNDc3WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NjE5MDM1NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia2FzYW5fcXVhcmFudGluZV9yZW1vdmVfY2FjaGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0va2FzYW4vZ2VuZXJpYy5jPTIxNT12b2lkIGthc2FuX2NhY2hlX3NocmluayhzdHJ1Y3Qga21lbV9jYWNoZSAqY2FjaGUpXFxubW0va2FzYW4vZ2VuZXJpYy5jLTIxNi17XFxubW0va2FzYW4vZ2VuZXJpYy5jOjIxNzpcXHRrYXNhbl9xdWFyYW50aW5lX3JlbW92ZV9jYWNoZShjYWNoZSk7XFxubW0va2FzYW4vZ2VuZXJpYy5jLTIxOC19XFxuLS1cXG5tbS9rYXNhbi9nZW5lcmljLmM9MjIwPXZvaWQga2FzYW5fY2FjaGVfc2h1dGRvd24oc3RydWN0IGttZW1fY2FjaGUgKmNhY2hlKVxcbi0tXFxubW0va2FzYW4vZ2VuZXJpYy5jLTIyMi1cXHRpZiAoIV9fa21lbV9jYWNoZV9lbXB0eShjYWNoZSkpXFxubW0va2FzYW4vZ2VuZXJpYy5jOjIyMzpcXHRcXHRrYXNhbl9xdWFyYW50aW5lX3JlbW92ZV9jYWNoZShjYWNoZSk7XFxubW0va2FzYW4vZ2VuZXJpYy5jLTIyNC19XFxuLS1cXG5tbS9rYXNhbi9rYXNhbi5oPTQwNj12b2lkIGthc2FuX3F1YXJhbnRpbmVfcmVkdWNlKHZvaWQpO1xcbm1tL2thc2FuL2thc2FuLmg6NDA3OnZvaWQga2FzYW5fcXVhcmFudGluZV9yZW1vdmVfY2FjaGUoc3RydWN0IGttZW1fY2FjaGUgKmNhY2hlKTtcXG5tbS9rYXNhbi9rYXNhbi5oLTQwOC0jZWxzZVxcbi0tXFxubW0va2FzYW4va2FzYW4uaD00MTA9c3RhdGljIGlubGluZSB2b2lkIGthc2FuX3F1YXJhbnRpbmVfcmVkdWNlKHZvaWQpIHsgfVxcbm1tL2thc2FuL2thc2FuLmg6NDExOnN0YXRpYyBpbmxpbmUgdm9pZCBrYXNhbl9xdWFyYW50aW5lX3JlbW92ZV9jYWNoZShzdHJ1Y3Qga21lbV9jYWNoZSAqY2FjaGUpIHsgfVxcbm1tL2thc2FuL2thc2FuLmgtNDEyLSNlbmRpZlxcbi0tXFxubW0va2FzYW4vcXVhcmFudGluZS5jPTE4NT1ib29sIGthc2FuX3F1YXJhbnRpbmVfcHV0KHN0cnVjdCBrbWVtX2NhY2hlICpjYWNoZSwgdm9pZCAqb2JqZWN0KVxcbi0tXFxubW0va2FzYW4vcXVhcmFudGluZS5jLTIwMC1cXHQgKiBOb3RlOiBpcnEgbXVzdCBiZSBkaXNhYmxlZCB1bnRpbCBhZnRlciB3ZSBtb3ZlIHRoZSBiYXRjaCB0byB0aGVcXG5tbS9rYXNhbi9xdWFyYW50aW5lLmM6MjAxOlxcdCAqIGdsb2JhbCBxdWFyYW50aW5lLiBPdGhlcndpc2Uga2FzYW5fcXVhcmFudGluZV9yZW1vdmVfY2FjaGUoKSBjYW5cXG5tbS9rYXNhbi9xdWFyYW50aW5lLmMtMjAyLVxcdCAqIG1pc3Mgc29tZSBvYmplY3RzIGJlbG9uZ2luZyB0byB0aGUgY2FjaGUgaWYgdGhleSBhcmUgaW4gb3VyIGxvY2FsXFxubW0va2FzYW4vcXVhcmFudGluZS5jOjIwMzpcXHQgKiB0ZW1wIGxpc3QuIGthc2FuX3F1YXJhbnRpbmVfcmVtb3ZlX2NhY2hlKCkgZXhlY3V0ZXMgb25fZWFjaF9jcHUoKVxcbm1tL2thc2FuL3F1YXJhbnRpbmUuYy0yMDQtXFx0ICogYXQgdGhlIGJlZ2lubmluZyB3aGljaCBlbnN1cmVzIHRoYXQgaXQgZWl0aGVyIHNlZXMgdGhlIG9iamVjdHMgaW5cXG4tLVxcbm1tL2thc2FuL3F1YXJhbnRpbmUuYz0yMzk9dm9pZCBrYXNhbl9xdWFyYW50aW5lX3JlZHVjZSh2b2lkKVxcbi0tXFxubW0va2FzYW4vcXVhcmFudGluZS5jLTI1MC1cXHQvKlxcbm1tL2thc2FuL3F1YXJhbnRpbmUuYzoyNTE6XFx0ICogc3JjdSBjcml0aWNhbCBzZWN0aW9uIGVuc3VyZXMgdGhhdCBrYXNhbl9xdWFyYW50aW5lX3JlbW92ZV9jYWNoZSgpXFxubW0va2FzYW4vcXVhcmFudGluZS5jLTI1Mi1cXHQgKiB3aWxsIG5vdCBtaXNzIG9iamVjdHMgYmVsb25naW5nIHRvIHRoZSBjYWNoZSB3aGlsZSB0aGV5IGFyZSBpbiBvdXJcXG4tLVxcbm1tL2thc2FuL3F1YXJhbnRpbmUuYz0zMjY9c3RhdGljIHZvaWQgcGVyX2NwdV9yZW1vdmVfY2FjaGUodm9pZCAqYXJnKVxcbi0tXFxubW0va2FzYW4vcXVhcmFudGluZS5jLTM0MS0vKiBGcmVlIGFsbCBxdWFyYW50aW5lZCBvYmplY3RzIGJlbG9uZ2luZyB0byBjYWNoZS4gKi9cXG5tbS9rYXNhbi9xdWFyYW50aW5lLmM6MzQyOnZvaWQga2FzYW5fcXVhcmFudGluZV9yZW1vdmVfY2FjaGUoc3RydWN0IGttZW1fY2FjaGUgKmNhY2hlKVxcbm1tL2thc2FuL3F1YXJhbnRpbmUuYy0zNDMte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwMzo0MzoyMC40Nzg3MTI5MTFaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDgxMjMzMzQxMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIFRhcmdldCBJZGVudGlmaWNhdGlvbjogYGthc2FuX3F1YXJhbnRpbmVfcmVtb3ZlX2NhY2hlYCoqXG5cbk9rYXksIHNvIEkndmUgc3BvdHRlZCBga2FzYW5fcXVhcmFudGluZV9yZW1vdmVfY2FjaGVgLiBUaGF0J3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBJIGtub3cgaXQncyBjYWxsZWQgZnJvbSBga2FzYW5fY2FjaGVfc2hyaW5rYCBhbmQgYGthc2FuX2NhY2hlX3NodXRkb3duYCwgYW5kIHRob3NlLCBpbiB0dXJuLCBhcmUgdHJpZ2dlcmVkIHdoZW4gYSBrbWVtX2NhY2hlIGlzIGVpdGhlciBzaHJ1bmsgb3IgZGVzdHJveWVkLiBUaGUgZmFjdCB0aGF0IHRoZSBxdWFyYW50aW5lIHJlbW92YWwgaXMgaGFwcGVuaW5nIGR1cmluZyB0aGVzZSBjYWNoZSBsaWZlY3ljbGUgZXZlbnRzIHNjcmVhbXMgXCJmdXp6aW5nIG9wcG9ydHVuaXR5XCIgdG8gbWUuIEkgbWVhbiwgbWVtb3J5IG1hbmFnZW1lbnQgc3R1ZmYgaXMgYWxtb3N0IGFsd2F5cyBpbnRlcmVzdGluZyBmcm9tIGEgZnV6emluZyBwZXJzcGVjdGl2ZSwgYW5kIHRoaXMgaGFzIGEgbmljZSwgY29uZmluZWQgc2NvcGUuIFRoZSBtYWluIGZvY3VzIGhlcmUgd2lsbCBiZSBvbiB0aG9zZSB0aHJlZSBzeW1ib2xzOiBga2FzYW5fcXVhcmFudGluZV9yZW1vdmVfY2FjaGVgLCBga2FzYW5fY2FjaGVfc2hyaW5rYCwgYW5kIGBrYXNhbl9jYWNoZV9zaHV0ZG93bmAuXG5cbk5vdywgSSBuZWVkIHRvIGtub3cgbW9yZSBhYm91dCBga2FzYW5fcXVhcmFudGluZV9yZW1vdmVfY2FjaGVgLiBJcyBpdCBleHBvcnRlZD8gSSdsbCBxdWlja2x5IGNoZWNrIGl0cyBkZWZpbml0aW9uLCBpdCdzIGluIGBtbS9rYXNhbi9xdWFyYW50aW5lLmNgLiBPa2F5LCBzbyBpdCdzIG5vdCBzdGF0aWMgdGhlbiwgd2hpY2ggaXMgZ29vZCBmb3IgbWUuIFRpbWUgdG8gY2hlY2sgdGhlIGNvbmZpZ3MuIEkga25vdyBJIG5lZWQgS0FTQU5fR0VORVJJQyBmb3IgdGhpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzM4NSwiT3V0cHV0VG9rZW5zIjoxOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwMzo0MzozMS4yOTEwNDkyMjRaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTYyMzgwMjkyNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgS0FTQU5cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9hcm0vS2NvbmZpZz0xMDM0PWNvbmZpZyBQQUdFX09GRlNFVFxcbi0tXFxuYXJjaC9hcm0vS2NvbmZpZy0xMDQxLVxcbmFyY2gvYXJtL0tjb25maWc6MTA0Mjpjb25maWcgS0FTQU5fU0hBRE9XX09GRlNFVFxcbmFyY2gvYXJtL0tjb25maWctMTA0My1cXHRoZXhcXG4tLVxcbmFyY2gvYXJtNjQvS2NvbmZpZz0zODM9Y29uZmlnIEJVSUxUSU5fUkVUVVJOX0FERFJFU1NfU1RSSVBTX1BBQ1xcbi0tXFxuYXJjaC9hcm02NC9LY29uZmlnLTM5Ni1cXG5hcmNoL2FybTY0L0tjb25maWc6Mzk3OmNvbmZpZyBLQVNBTl9TSEFET1dfT0ZGU0VUXFxuYXJjaC9hcm02NC9LY29uZmlnLTM5OC1cXHRoZXhcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL0tjb25maWc9ODAxPWNvbmZpZyBBUkNIX1NVUFBPUlRTX1VQUk9CRVNcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL0tjb25maWctODAzLVxcbmFyY2gvbG9vbmdhcmNoL0tjb25maWc6ODA0OmNvbmZpZyBLQVNBTl9TSEFET1dfT0ZGU0VUXFxuYXJjaC9sb29uZ2FyY2gvS2NvbmZpZy04MDUtXFx0aGV4XFxuLS1cXG5hcmNoL3Bvd2VycGMvS2NvbmZpZy5kZWJ1Zz0zNTg9Y29uZmlnIEZBSUxfSU9NTVVcXG4tLVxcbmFyY2gvcG93ZXJwYy9LY29uZmlnLmRlYnVnLTM2Ny1cXG5hcmNoL3Bvd2VycGMvS2NvbmZpZy5kZWJ1ZzozNjg6Y29uZmlnIEtBU0FOX1NIQURPV19PRkZTRVRcXG5hcmNoL3Bvd2VycGMvS2NvbmZpZy5kZWJ1Zy0zNjktXFx0aGV4XFxuLS1cXG5hcmNoL3Jpc2N2L0tjb25maWc9MjkzPWNvbmZpZyBNTVVcXG4tLVxcbmFyY2gvcmlzY3YvS2NvbmZpZy0yOTktXFxuYXJjaC9yaXNjdi9LY29uZmlnOjMwMDpjb25maWcgS0FTQU5fU0hBRE9XX09GRlNFVFxcbmFyY2gvcmlzY3YvS2NvbmZpZy0zMDEtXFx0aGV4XFxuLS1cXG5hcmNoL3MzOTAvS2NvbmZpZz0zOD1jb25maWcgQVJDSF9TVVBQT1JUU19VUFJPQkVTXFxuLS1cXG5hcmNoL3MzOTAvS2NvbmZpZy00MC1cXG5hcmNoL3MzOTAvS2NvbmZpZzo0MTpjb25maWcgS0FTQU5fU0hBRE9XX09GRlNFVFxcbmFyY2gvczM5MC9LY29uZmlnLTQyLVxcdGhleFxcbi0tXFxuYXJjaC91bS9LY29uZmlnPTI2Nj1jb25maWcgVU1MX01BWF9VU0VSU1BBQ0VfSVRFUkFUSU9OU1xcbi0tXFxuYXJjaC91bS9LY29uZmlnLTI4MC1cXG5hcmNoL3VtL0tjb25maWc6MjgxOmNvbmZpZyBLQVNBTl9TSEFET1dfT0ZGU0VUXFxuYXJjaC91bS9LY29uZmlnLTI4Mi1cXHRoZXhcXG4tLVxcbmFyY2gveDg2L0tjb25maWc9NDA4PWNvbmZpZyBBVURJVF9BUkNIXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnLTQxMC1cXG5hcmNoL3g4Ni9LY29uZmlnOjQxMTpjb25maWcgS0FTQU5fU0hBRE9XX09GRlNFVFxcbmFyY2gveDg2L0tjb25maWctNDEyLVxcdGhleFxcbi0tXFxuYXJjaC94dGVuc2EvS2NvbmZpZz05OD1jb25maWcgSEFWRV9YVEVOU0FfR1BJTzMyXFxuLS1cXG5hcmNoL3h0ZW5zYS9LY29uZmlnLTEwMC1cXG5hcmNoL3h0ZW5zYS9LY29uZmlnOjEwMTpjb25maWcgS0FTQU5fU0hBRE9XX09GRlNFVFxcbmFyY2gveHRlbnNhL0tjb25maWctMTAyLVxcdGhleFxcbi0tXFxubGliL0tjb25maWcua2FzYW49NDM9Y29uZmlnIENDX0hBU19XT1JLSU5HX05PU0FOSVRJWkVfQUREUkVTU1xcbi0tXFxubGliL0tjb25maWcua2FzYW4tNDUtXFxubGliL0tjb25maWcua2FzYW46NDY6bWVudWNvbmZpZyBLQVNBTlxcbmxpYi9LY29uZmlnLmthc2FuLTQ3LVxcdGJvb2wgXFxcIktBU0FOOiBkeW5hbWljIG1lbW9yeSBzYWZldHkgZXJyb3IgZGV0ZWN0b3JcXFwiXFxuLS1cXG5saWIvS2NvbmZpZy5rYXNhbj03Mz1jaG9pY2VcXG4tLVxcbmxpYi9LY29uZmlnLmthc2FuLTg4LVxcbmxpYi9LY29uZmlnLmthc2FuOjg5OmNvbmZpZyBLQVNBTl9HRU5FUklDXFxubGliL0tjb25maWcua2FzYW4tOTAtXFx0Ym9vbCBcXFwiR2VuZXJpYyBLQVNBTlxcXCJcXG4tLVxcbmxpYi9LY29uZmlnLmthc2FuLTEwMy1cXG5saWIvS2NvbmZpZy5rYXNhbjoxMDQ6Y29uZmlnIEtBU0FOX1NXX1RBR1NcXG5saWIvS2NvbmZpZy5rYXNhbi0xMDUtXFx0Ym9vbCBcXFwiU29mdHdhcmUgVGFnLUJhc2VkIEtBU0FOXFxcIlxcbi0tXFxubGliL0tjb25maWcua2FzYW4tMTIyLVxcbmxpYi9LY29uZmlnLmthc2FuOjEyMzpjb25maWcgS0FTQU5fSFdfVEFHU1xcbmxpYi9LY29uZmlnLmthc2FuLTEyNC1cXHRib29sIFxcXCJIYXJkd2FyZSBUYWctQmFzZWQgS0FTQU5cXFwiXFxuLS1cXG5saWIvS2NvbmZpZy5rYXNhbj0xNDE9Y2hvaWNlXFxuLS1cXG5saWIvS2NvbmZpZy5rYXNhbi0xNDUtXFxubGliL0tjb25maWcua2FzYW46MTQ2OmNvbmZpZyBLQVNBTl9PVVRMSU5FXFxubGliL0tjb25maWcua2FzYW4tMTQ3LVxcdGJvb2wgXFxcIk91dGxpbmUgaW5zdHJ1bWVudGF0aW9uXFxcIlxcbi0tXFxubGliL0tjb25maWcua2FzYW4tMTUyLVxcbmxpYi9LY29uZmlnLmthc2FuOjE1Mzpjb25maWcgS0FTQU5fSU5MSU5FXFxubGliL0tjb25maWcua2FzYW4tMTU0LVxcdGJvb2wgXFxcIklubGluZSBpbnN0cnVtZW50YXRpb25cXFwiXFxuLS1cXG5saWIvS2NvbmZpZy5rYXNhbj0xNjE9ZW5kY2hvaWNlXFxubGliL0tjb25maWcua2FzYW4tMTYyLVxcbmxpYi9LY29uZmlnLmthc2FuOjE2Mzpjb25maWcgS0FTQU5fU1RBQ0tcXG5saWIvS2NvbmZpZy5rYXNhbi0xNjQtXFx0Ym9vbCBcXFwiU3RhY2sgaW5zdHJ1bWVudGF0aW9uICh1bnNhZmUpXFxcIiBpZiBDQ19JU19DTEFORyBcXHUwMDI2XFx1MDAyNiAhQ09NUElMRV9URVNUXFxuLS1cXG5saWIvS2NvbmZpZy5rYXNhbi0xODUtXFxubGliL0tjb25maWcua2FzYW46MTg2OmNvbmZpZyBLQVNBTl9WTUFMTE9DXFxubGliL0tjb25maWcua2FzYW4tMTg3LVxcdGJvb2wgXFxcIkNoZWNrIGFjY2Vzc2VzIHRvIHZtYWxsb2MgYWxsb2NhdGlvbnNcXFwiXFxuLS1cXG5saWIvS2NvbmZpZy5rYXNhbi0xOTctXFxubGliL0tjb25maWcua2FzYW46MTk4OmNvbmZpZyBLQVNBTl9LVU5JVF9URVNUXFxubGliL0tjb25maWcua2FzYW4tMTk5LVxcdHRyaXN0YXRlIFxcXCJLVW5pdC1jb21wYXRpYmxlIHRlc3RzIG9mIEtBU0FOIGJ1ZyBkZXRlY3Rpb24gY2FwYWJpbGl0aWVzXFxcIiBpZiAhS1VOSVRfQUxMX1RFU1RTXFxuLS1cXG5saWIvS2NvbmZpZy5rYXNhbi0yMDktXFxubGliL0tjb25maWcua2FzYW46MjEwOmNvbmZpZyBLQVNBTl9FWFRSQV9JTkZPXFxubGliL0tjb25maWcua2FzYW4tMjExLVxcdGJvb2wgXFxcIlJlY29yZCBhbmQgcmVwb3J0IG1vcmUgaW5mb3JtYXRpb25cXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDAzOjQzOjMyLjkxNDg1ODg3OFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI4MDYwMjk4NDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzOlxuXG4qKktBU0FOIENvbmZpZ3VyYXRpb24gRGVlcCBEaXZlKipcblxuT2theSwgc28gdGhlIGNvbmZpZyBpcyBzZXQgdG8gYEtBU0FOYC4gTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhlIGBrYXNhbl9xdWFyYW50aW5lX3JlbW92ZV9jYWNoZWAgZnVuY3Rpb24gaXMgYXZhaWxhYmxlIGFjcm9zcyBhbGwgS0FTQU4gbW9kZXMuIEl0J3MgYSBrZXkgZnVuY3Rpb24sIGFuZCBpdHMgYXZhaWxhYmlsaXR5IGNhbiByZWFsbHkgaW1wYWN0IGhvdyB0aGluZ3Mgd29yay4gVG8gZ2V0IHRoZSBkZWZpbml0aXZlIGFuc3dlciwgSSBrbm93IEkgbmVlZCB0byBkZWx2ZSBpbnRvIHRoZSBLQVNBTiBzb3VyY2UgY29kZS4gU3BlY2lmaWNhbGx5LCB0aGUgYG1tL2thc2FuL01ha2VmaWxlYCBmaWxlIGlzIHRoZSBwbGFjZSB0byBzdGFydC4gVGhhdCBNYWtlZmlsZSB3aWxsIGxpa2VseSBkZWZpbmUgdGhlIGJ1aWxkIGZsYWdzIGFuZCBjb25kaXRpb25hbCBjb21waWxhdGlvbiB0aGF0IGRldGVybWluZSBpZiB0aGlzIGZ1bmN0aW9uIGlzIGluY2x1ZGVkIGluIGRpZmZlcmVudCBLQVNBTiBidWlsZHMuIFRpbWUgdG8gZGl2ZSBpbiBhbmQgZ2V0IHNvbWUgY2xhcml0eS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTE5MiwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDAzOjQzOjM1LjcyMDg5MDc4OVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzM5MDQyNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJxdWFyYW50aW5lXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL2thc2FuL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL2thc2FuL01ha2VmaWxlPTk9Q0ZMQUdTX1JFTU9WRV9pbml0Lm8gPSAkKENDX0ZMQUdTX0ZUUkFDRSlcXG5tbS9rYXNhbi9NYWtlZmlsZToxMDpDRkxBR1NfUkVNT1ZFX3F1YXJhbnRpbmUubyA9ICQoQ0NfRkxBR1NfRlRSQUNFKVxcbm1tL2thc2FuL01ha2VmaWxlLTExLUNGTEFHU19SRU1PVkVfcmVwb3J0Lm8gPSAkKENDX0ZMQUdTX0ZUUkFDRSlcXG4tLVxcbm1tL2thc2FuL01ha2VmaWxlPTI4PUNGTEFHU19pbml0Lm8gOj0gJChDQ19GTEFHU19LQVNBTl9SVU5USU1FKVxcbm1tL2thc2FuL01ha2VmaWxlOjI5OkNGTEFHU19xdWFyYW50aW5lLm8gOj0gJChDQ19GTEFHU19LQVNBTl9SVU5USU1FKVxcbm1tL2thc2FuL01ha2VmaWxlLTMwLUNGTEFHU19yZXBvcnQubyA6PSAkKENDX0ZMQUdTX0tBU0FOX1JVTlRJTUUpXFxuLS1cXG5tbS9rYXNhbi9NYWtlZmlsZT01MT1vYmoteSA6PSBjb21tb24ubyByZXBvcnQub1xcbm1tL2thc2FuL01ha2VmaWxlOjUyOm9iai0kKENPTkZJR19LQVNBTl9HRU5FUklDKSArPSBpbml0Lm8gZ2VuZXJpYy5vIHJlcG9ydF9nZW5lcmljLm8gc2hhZG93Lm8gcXVhcmFudGluZS5vXFxubW0va2FzYW4vTWFrZWZpbGUtNTMtb2JqLSQoQ09ORklHX0tBU0FOX0hXX1RBR1MpICs9IGh3X3RhZ3MubyByZXBvcnRfaHdfdGFncy5vIHRhZ3MubyByZXBvcnRfdGFncy5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDAzOjQzOjM1Ljc2NDI4MzIzNVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI3MDQ1ODEyMDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqS0FTQU4gUXVhcmFudGluZSBhbmQgSXRzIENhbGxzKipcblxuT2theSwgc28gYHF1YXJhbnRpbmUub2AgaXMgYnVpbHQgd2l0aCBgQ09ORklHX0tBU0FOX0dFTkVSSUNgIGVuYWJsZWQuIFRoYXQgaW1tZWRpYXRlbHkgdGVsbHMgbWUgd2UgbmVlZCBgS0FTQU5fR0VORVJJQ2AgdG9vLiBMZXQncyBtYWtlIHN1cmUgdGhhdCBpcyBzZXQuXG5cbk5vdywgbXkgbmV4dCB0aG91Z2h0IGlzIGFib3V0IHVzYWdlIG9mIHRoZSBxdWFyYW50aW5lIG1lY2hhbmlzbS4gSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIGlmIGBrYXNhbl9xdWFyYW50aW5lX3JlbW92ZV9jYWNoZWAgaXMgY2FsbGVkIGZyb20gYW55d2hlcmUgZWxzZSBpbiB0aGUgY29kZSBiYXNlLiBJIHdhbnQgdG8gdW5kZXJzdGFuZCB0aGUgY29tcGxldGUgcGljdHVyZSBvZiBob3cgdGhlIHF1YXJhbnRpbmUgaXMgYmVpbmcgdXRpbGl6ZWQsIHNvIGtub3dpbmcgKndoZXJlKiB0aGlzIGZ1bmN0aW9uIGdldHMgY2FsbGVkIGlzIGltcG9ydGFudC4gVGhpcyBpcyBjcnVjaWFsIGZvciB1bmRlcnN0YW5kaW5nIGRlcGVuZGVuY2llcyBhbmQgcG90ZW50aWFsIGltcGFjdHMgb2YgY2hhbmdlcyB3aXRoaW4gdGhlIHF1YXJhbnRpbmUgaW1wbGVtZW50YXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU3MDIsIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwMzo0MzozOC40Njg4NjcxMDFaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NTAwNjA2OTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia2FzYW5fcXVhcmFudGluZV9yZW1vdmVfY2FjaGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0va2FzYW4vZ2VuZXJpYy5jPTIxNT12b2lkIGthc2FuX2NhY2hlX3NocmluayhzdHJ1Y3Qga21lbV9jYWNoZSAqY2FjaGUpXFxubW0va2FzYW4vZ2VuZXJpYy5jLTIxNi17XFxubW0va2FzYW4vZ2VuZXJpYy5jOjIxNzpcXHRrYXNhbl9xdWFyYW50aW5lX3JlbW92ZV9jYWNoZShjYWNoZSk7XFxubW0va2FzYW4vZ2VuZXJpYy5jLTIxOC19XFxuLS1cXG5tbS9rYXNhbi9nZW5lcmljLmM9MjIwPXZvaWQga2FzYW5fY2FjaGVfc2h1dGRvd24oc3RydWN0IGttZW1fY2FjaGUgKmNhY2hlKVxcbi0tXFxubW0va2FzYW4vZ2VuZXJpYy5jLTIyMi1cXHRpZiAoIV9fa21lbV9jYWNoZV9lbXB0eShjYWNoZSkpXFxubW0va2FzYW4vZ2VuZXJpYy5jOjIyMzpcXHRcXHRrYXNhbl9xdWFyYW50aW5lX3JlbW92ZV9jYWNoZShjYWNoZSk7XFxubW0va2FzYW4vZ2VuZXJpYy5jLTIyNC19XFxuLS1cXG5tbS9rYXNhbi9rYXNhbi5oPTQwNj12b2lkIGthc2FuX3F1YXJhbnRpbmVfcmVkdWNlKHZvaWQpO1xcbm1tL2thc2FuL2thc2FuLmg6NDA3OnZvaWQga2FzYW5fcXVhcmFudGluZV9yZW1vdmVfY2FjaGUoc3RydWN0IGttZW1fY2FjaGUgKmNhY2hlKTtcXG5tbS9rYXNhbi9rYXNhbi5oLTQwOC0jZWxzZVxcbi0tXFxubW0va2FzYW4va2FzYW4uaD00MTA9c3RhdGljIGlubGluZSB2b2lkIGthc2FuX3F1YXJhbnRpbmVfcmVkdWNlKHZvaWQpIHsgfVxcbm1tL2thc2FuL2thc2FuLmg6NDExOnN0YXRpYyBpbmxpbmUgdm9pZCBrYXNhbl9xdWFyYW50aW5lX3JlbW92ZV9jYWNoZShzdHJ1Y3Qga21lbV9jYWNoZSAqY2FjaGUpIHsgfVxcbm1tL2thc2FuL2thc2FuLmgtNDEyLSNlbmRpZlxcbi0tXFxubW0va2FzYW4vcXVhcmFudGluZS5jPTE4NT1ib29sIGthc2FuX3F1YXJhbnRpbmVfcHV0KHN0cnVjdCBrbWVtX2NhY2hlICpjYWNoZSwgdm9pZCAqb2JqZWN0KVxcbi0tXFxubW0va2FzYW4vcXVhcmFudGluZS5jLTIwMC1cXHQgKiBOb3RlOiBpcnEgbXVzdCBiZSBkaXNhYmxlZCB1bnRpbCBhZnRlciB3ZSBtb3ZlIHRoZSBiYXRjaCB0byB0aGVcXG5tbS9rYXNhbi9xdWFyYW50aW5lLmM6MjAxOlxcdCAqIGdsb2JhbCBxdWFyYW50aW5lLiBPdGhlcndpc2Uga2FzYW5fcXVhcmFudGluZV9yZW1vdmVfY2FjaGUoKSBjYW5cXG5tbS9rYXNhbi9xdWFyYW50aW5lLmMtMjAyLVxcdCAqIG1pc3Mgc29tZSBvYmplY3RzIGJlbG9uZ2luZyB0byB0aGUgY2FjaGUgaWYgdGhleSBhcmUgaW4gb3VyIGxvY2FsXFxubW0va2FzYW4vcXVhcmFudGluZS5jOjIwMzpcXHQgKiB0ZW1wIGxpc3QuIGthc2FuX3F1YXJhbnRpbmVfcmVtb3ZlX2NhY2hlKCkgZXhlY3V0ZXMgb25fZWFjaF9jcHUoKVxcbm1tL2thc2FuL3F1YXJhbnRpbmUuYy0yMDQtXFx0ICogYXQgdGhlIGJlZ2lubmluZyB3aGljaCBlbnN1cmVzIHRoYXQgaXQgZWl0aGVyIHNlZXMgdGhlIG9iamVjdHMgaW5cXG4tLVxcbm1tL2thc2FuL3F1YXJhbnRpbmUuYz0yMzk9dm9pZCBrYXNhbl9xdWFyYW50aW5lX3JlZHVjZSh2b2lkKVxcbi0tXFxubW0va2FzYW4vcXVhcmFudGluZS5jLTI1MC1cXHQvKlxcbm1tL2thc2FuL3F1YXJhbnRpbmUuYzoyNTE6XFx0ICogc3JjdSBjcml0aWNhbCBzZWN0aW9uIGVuc3VyZXMgdGhhdCBrYXNhbl9xdWFyYW50aW5lX3JlbW92ZV9jYWNoZSgpXFxubW0va2FzYW4vcXVhcmFudGluZS5jLTI1Mi1cXHQgKiB3aWxsIG5vdCBtaXNzIG9iamVjdHMgYmVsb25naW5nIHRvIHRoZSBjYWNoZSB3aGlsZSB0aGV5IGFyZSBpbiBvdXJcXG4tLVxcbm1tL2thc2FuL3F1YXJhbnRpbmUuYz0zMjY9c3RhdGljIHZvaWQgcGVyX2NwdV9yZW1vdmVfY2FjaGUodm9pZCAqYXJnKVxcbi0tXFxubW0va2FzYW4vcXVhcmFudGluZS5jLTM0MS0vKiBGcmVlIGFsbCBxdWFyYW50aW5lZCBvYmplY3RzIGJlbG9uZ2luZyB0byBjYWNoZS4gKi9cXG5tbS9rYXNhbi9xdWFyYW50aW5lLmM6MzQyOnZvaWQga2FzYW5fcXVhcmFudGluZV9yZW1vdmVfY2FjaGUoc3RydWN0IGttZW1fY2FjaGUgKmNhY2hlKVxcbm1tL2thc2FuL3F1YXJhbnRpbmUuYy0zNDMte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwMzo0MzozOS45MTg5MzM3MVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNzk2OTc1ODcxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBLQVNBTiBDYWNoZSBTaHJpbmthZ2UqKlxuXG5BbHJpZ2h0LCBzbyBJJ20gZm9jdXNpbmcgb24gdGhlIEtBU0FOIGNhY2hlIG1lY2hhbmlzbXMgaGVyZS4gTXkgaW5pdGlhbCB0aG91Z2h0IHByb2Nlc3MgaXMgY2VudGVyZWQgYXJvdW5kIGBrYXNhbl9jYWNoZV9zaHJpbmtgIGFuZCBga2FzYW5fY2FjaGVfc2h1dGRvd25gLiBUaGVzZSBhcmUgdGhlIGtleSBwbGF5ZXJzLCB0aGUgZnVuY3Rpb25zIHRoYXQgYXJlIGdvaW5nIHRvIGJlIG1ha2luZyBjaGFuZ2VzIHRvIHRoZSBjYWNoZSwgYW5kIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoZXJlIHRoZXkgYXJlIGJlaW5nIGNhbGxlZCBmcm9tLiBUaGVyZWZvcmUsIHRoZSBpbW1lZGlhdGUgbmV4dCBzdGVwIGlzIGNyeXN0YWwgY2xlYXI6IEknbSBnb2luZyB0byB0cmFjayBkb3duIGV2ZXJ5IHNpbmdsZSBjYWxsIHNpdGUgZm9yIGJvdGggYGthc2FuX2NhY2hlX3Nocmlua2AgYW5kIGBrYXNhbl9jYWNoZV9zaHV0ZG93bmAuIFVuZGVyc3RhbmRpbmcgdGhlaXIgY2FsbCBwYXRocyBpcyB0aGUgY3J1Y2lhbCBuZXh0IHN0ZXAgdG8gZmlndXJpbmcgb3V0IHRoZSBiaWdnZXIgcGljdHVyZSwgYW5kIHVuZGVyc3RhbmRpbmcgaG93IHRoZSBLQVNBTiBjYWNoZSB3b3Jrcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjcwMywiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDAzOjQzOjQyLjcxNTkxMjM1OVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ0MzM1NjI2OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrYXNhbl9jYWNoZV9zaHJpbmtcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC9rYXNhbi5oPTQ5Mj12b2lkIGthc2FuX2NhY2hlX2NyZWF0ZShzdHJ1Y3Qga21lbV9jYWNoZSAqY2FjaGUsIHVuc2lnbmVkIGludCAqc2l6ZSxcXG4tLVxcbmluY2x1ZGUvbGludXgva2FzYW4uaC00OTQtXFxuaW5jbHVkZS9saW51eC9rYXNhbi5oOjQ5NTp2b2lkIGthc2FuX2NhY2hlX3NocmluayhzdHJ1Y3Qga21lbV9jYWNoZSAqY2FjaGUpO1xcbmluY2x1ZGUvbGludXgva2FzYW4uaC00OTYtdm9pZCBrYXNhbl9jYWNoZV9zaHV0ZG93bihzdHJ1Y3Qga21lbV9jYWNoZSAqY2FjaGUpO1xcbi0tXFxuaW5jbHVkZS9saW51eC9rYXNhbi5oPTUwOD1zdGF0aWMgaW5saW5lIHZvaWQga2FzYW5fY2FjaGVfY3JlYXRlKHN0cnVjdCBrbWVtX2NhY2hlICpjYWNoZSxcXG4tLVxcbmluY2x1ZGUvbGludXgva2FzYW4uaC01MTEtXFxuaW5jbHVkZS9saW51eC9rYXNhbi5oOjUxMjpzdGF0aWMgaW5saW5lIHZvaWQga2FzYW5fY2FjaGVfc2hyaW5rKHN0cnVjdCBrbWVtX2NhY2hlICpjYWNoZSkge31cXG5pbmNsdWRlL2xpbnV4L2thc2FuLmgtNTEzLXN0YXRpYyBpbmxpbmUgdm9pZCBrYXNhbl9jYWNoZV9zaHV0ZG93bihzdHJ1Y3Qga21lbV9jYWNoZSAqY2FjaGUpIHt9XFxuLS1cXG5tbS9rYXNhbi9nZW5lcmljLmM9MjAzPWJvb2wga2FzYW5fYnl0ZV9hY2Nlc3NpYmxlKGNvbnN0IHZvaWQgKmFkZHIpXFxuLS1cXG5tbS9rYXNhbi9nZW5lcmljLmMtMjE0LVxcbm1tL2thc2FuL2dlbmVyaWMuYzoyMTU6dm9pZCBrYXNhbl9jYWNoZV9zaHJpbmsoc3RydWN0IGttZW1fY2FjaGUgKmNhY2hlKVxcbm1tL2thc2FuL2dlbmVyaWMuYy0yMTYte1xcbi0tXFxubW0vc2xhYl9jb21tb24uYz02MDI9aW50IGttZW1fY2FjaGVfc2hyaW5rKHN0cnVjdCBrbWVtX2NhY2hlICpjYWNoZXApXFxubW0vc2xhYl9jb21tb24uYy02MDMte1xcbm1tL3NsYWJfY29tbW9uLmM6NjA0OlxcdGthc2FuX2NhY2hlX3NocmluayhjYWNoZXApO1xcbm1tL3NsYWJfY29tbW9uLmMtNjA1LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwMzo0Mzo0NC4xNTkyNzMzMzhaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDYxNTY1NTY2MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOlxuXG4qKktBU0FOIEludGVyYWN0aW9uIHdpdGggU2xhYiBDYWNoaW5nKipcblxuUmlnaHQsIHNvIEkgc2VlIGhvdyBLQVNBTiBpbnRlZ3JhdGVzIHdpdGggdGhlIHNsYWIgYWxsb2NhdG9yLiBTcGVjaWZpY2FsbHksIHdoZW4gYGttZW1fY2FjaGVfc2hyaW5rYCBpcyBjYWxsZWQg4oCTIHRoYXQncyB0aGUgZnVuY3Rpb24gdGhhdCB0cmllcyB0byBmcmVlIHVwIHNvbWUgbWVtb3J5IGluIGEgcGFydGljdWxhciBzbGFiIGNhY2hlIOKAkyBpdCBhY3R1YWxseSB0cmlnZ2VycyBhIGNhbGwgdG8gYGthc2FuX2NhY2hlX3Nocmlua2AuIFRoYXQgbWFrZXMgcGVyZmVjdCBzZW5zZTsgS0FTQU4gbmVlZHMgdG8gYmUgYXdhcmUgb2YgYW5kIHBvdGVudGlhbGx5IG1vZGlmeSBpdHMgYmVoYXZpb3Igd2hlbiB0aGUgc2xhYiBjYWNoZSBpcyB1bmRlcmdvaW5nIGEgc2hyaW5rIG9wZXJhdGlvbi4gVGhpcyBpcyBsaWtlbHkgYWJvdXQgcmVkdWNpbmcgdGhlIGFtb3VudCBvZiBtZW1vcnkgS0FTQU4gdHJhY2tzIGZvciBwb3RlbnRpYWxseSBwb2lzb25lZCBkYXRhIHdpdGhpbiB0aGF0IGNhY2hlLiBJJ2QgaW1hZ2luZSB0aGlzIGNvdWxkIGludm9sdmUgY2xlYXJpbmcgc29tZSB0YWcgYml0cyBvciBwb3RlbnRpYWxseSByZW1vdmluZyBlbnRyaWVzIGZyb20gYSBzaGFkb3cgbWVtb3J5IG1hcCwgb3Igc29tZSBvdGhlciBvcGVyYXRpb24gY3JpdGljYWwgZm9yIG1haW50YWluaW5nIEtBU0FOJ3MgbWVtb3J5IGludGVncml0eS5cblxuU2ltaWxhcmx5LCB3aGVuIGEgc2xhYiBjYWNoZSBpcyBiZWluZyBjb21wbGV0ZWx5IGRlc3Ryb3llZCB2aWEgYGttZW1fY2FjaGVfZGVzdHJveWAsIEtBU0FOIGdldHMgaW52b2x2ZWQgdGhyb3VnaCBhIGNhbGwgdG8gYGthc2FuX2NhY2hlX3NodXRkb3duYC4gVGhpcyBpcyB0aGUgY2xlYW51cCBmdW5jdGlvbi4gVGhpcyBsaWtlbHkgcmVwcmVzZW50cyBLQVNBTiByZWxlYXNpbmcgYWxsIHRoZSByZXNvdXJjZXMgYXNzb2NpYXRlZCB3aXRoIHRyYWNraW5nIHRoYXQgY2FjaGUncyBtZW1vcnkuIFRoaXMgY291bGQgaW5jbHVkZSwgZm9yIGV4YW1wbGUsIGZyZWVpbmcgdXAgYW55IGRhdGEgc3RydWN0dXJlcyB1c2VkIGZvciBzaGFkb3cgbWVtb3J5IG1hbmFnZW1lbnQuIFRoZSBrZXkgaXMgZW5zdXJpbmcgdGhhdCBLQVNBTidzIGJvb2trZWVwaW5nIGlzIGZ1bGx5IHN5bmNocm9uaXplZCB3aXRoIHRoZSBzbGFiIGFsbG9jYXRvcidzIGxpZmVjeWNsZSBzbyB0aGF0IG5vIG1lbW9yeSByZW1haW5zIHBvaXNvbmVkIG9yIHRyYWNrZWQgdW5uZWNlc3NhcmlseSwgYW5kIHRoYXQgdGhlcmUgYXJlIG5vIGRhbmdsaW5nIHBvaW50ZXJzIG9yIG1ldGFkYXRhLiBJJ2QgYmUgaW50ZXJlc3RlZCBpbiBkaWdnaW5nIGluIGFuZCBzZWVpbmcgZXhhY3RseSB3aGF0IHN0YXRlIGl0J3MgdXBkYXRpbmcsIGJ1dCB0aGlzIGdpdmVzIG1lIGEgc29saWQgaWRlYSBvZiB3aGVyZSBLQVNBTidzIGhvb2tzIGFyZSB3aXRoaW4gdGhlIHNsYWIgY2FjaGUncyBsaWZlY3ljbGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjczNDksIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwMzo0Mzo0OC43NzQ5MzE4MjlaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0ODQxMTE4ODYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia2FzYW5fY2FjaGVfc2h1dGRvd25cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC9rYXNhbi5oPTQ5NT12b2lkIGthc2FuX2NhY2hlX3NocmluayhzdHJ1Y3Qga21lbV9jYWNoZSAqY2FjaGUpO1xcbmluY2x1ZGUvbGludXgva2FzYW4uaDo0OTY6dm9pZCBrYXNhbl9jYWNoZV9zaHV0ZG93bihzdHJ1Y3Qga21lbV9jYWNoZSAqY2FjaGUpO1xcbmluY2x1ZGUvbGludXgva2FzYW4uaC00OTctdm9pZCBrYXNhbl9yZWNvcmRfYXV4X3N0YWNrKHZvaWQgKnB0cik7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2thc2FuLmg9NTEyPXN0YXRpYyBpbmxpbmUgdm9pZCBrYXNhbl9jYWNoZV9zaHJpbmsoc3RydWN0IGttZW1fY2FjaGUgKmNhY2hlKSB7fVxcbmluY2x1ZGUvbGludXgva2FzYW4uaDo1MTM6c3RhdGljIGlubGluZSB2b2lkIGthc2FuX2NhY2hlX3NodXRkb3duKHN0cnVjdCBrbWVtX2NhY2hlICpjYWNoZSkge31cXG5pbmNsdWRlL2xpbnV4L2thc2FuLmgtNTE0LXN0YXRpYyBpbmxpbmUgdm9pZCBrYXNhbl9yZWNvcmRfYXV4X3N0YWNrKHZvaWQgKnB0cikge31cXG4tLVxcbm1tL2thc2FuL2dlbmVyaWMuYz0yMTU9dm9pZCBrYXNhbl9jYWNoZV9zaHJpbmsoc3RydWN0IGttZW1fY2FjaGUgKmNhY2hlKVxcbi0tXFxubW0va2FzYW4vZ2VuZXJpYy5jLTIxOS1cXG5tbS9rYXNhbi9nZW5lcmljLmM6MjIwOnZvaWQga2FzYW5fY2FjaGVfc2h1dGRvd24oc3RydWN0IGttZW1fY2FjaGUgKmNhY2hlKVxcbm1tL2thc2FuL2dlbmVyaWMuYy0yMjEte1xcbi0tXFxubW0vc2xhYl9jb21tb24uYz01Mjc9dm9pZCBrbWVtX2NhY2hlX2Rlc3Ryb3koc3RydWN0IGttZW1fY2FjaGUgKnMpXFxuLS1cXG5tbS9zbGFiX2NvbW1vbi5jLTU2Ni1cXHQvKiBmcmVlIGFzYW4gcXVhcmFudGluZWQgb2JqZWN0cyAqL1xcbm1tL3NsYWJfY29tbW9uLmM6NTY3OlxcdGthc2FuX2NhY2hlX3NodXRkb3duKHMpO1xcbm1tL3NsYWJfY29tbW9uLmMtNTY4LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwMzo0Mzo1MC4yNTkwNDczOTVaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Njg1OTM2NzAzMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIGFuZCBDb25maWd1cmF0aW9uIEFuYWx5c2lzIGZvciBLQVNBTiBDYWNoZSBPcGVyYXRpb25zKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlc2UgZnVuY3Rpb25zLCBga21lbV9jYWNoZV9zaHJpbmtgIGFuZCBga21lbV9jYWNoZV9kZXN0cm95YCwgYW5kIHRoZXkgbG9vayBsaWtlIHRoZSBwcmltYXJ5IGVudHJ5IHBvaW50cyBoZXJlLiBEZWZpbml0ZWx5IHdvcnRoIGZvY3VzaW5nIGZ1enppbmcgZWZmb3J0cyBvbiB0aGVtLiBBY3R1YWxseSwgSSBzaG91bGQgYWxzbyBsb29rIGF0IHRoZSBvdGhlciBzeW1ib2xzIHRoYXQgY291bGQgYmUgaGl0LCB3aGljaCBhcmU6IGBrYXNhbl9xdWFyYW50aW5lX3JlbW92ZV9jYWNoZWAsIGBrYXNhbl9jYWNoZV9zaHJpbmtgLCBhbmQgYGthc2FuX2NhY2hlX3NodXRkb3duYC4gV2FpdCBhIHNlY29uZCwgd2hpbGUgYGttZW1fY2FjaGVfc2hyaW5rYCBhbmQgYGttZW1fY2FjaGVfZGVzdHJveWAgYXJlIGdvb2QgZW50cnkgcG9pbnRzLCB0aGV5IGFyZSBtb3JlIGdlbmVyYWwuIFRoZSBzcGVjaWZpYyBmdW5jdGlvbiBJIG5lZWQgdG8gY29uY2VudHJhdGUgb24gaXMgYGthc2FuX3F1YXJhbnRpbmVfcmVtb3ZlX2NhY2hlYC5cblxuTm93LCBJIG5lZWQgdG8gY2hlY2sgZm9yIGFueSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIHJlcXVpcmVtZW50cy4gSSdtIHByZXR0eSBzdXJlIGBLQVNBTl9HRU5FUklDYCBpcyBuZWVkZWQuIExldCBtZSBkb3VibGUtY2hlY2sgaWYganVzdCBgS0FTQU5gIGlzIGVub3VnaC4gQWgsIHJpZ2h0LCBgS0FTQU5fR0VORVJJQ2AgaXMgYW4gb3B0aW9uICp1bmRlciogYEtBU0FOYC4gU28sIEknbGwgYWRkICpib3RoKiBgS0FTQU5gIGFuZCBgS0FTQU5fR0VORVJJQ2AgdG8gbXkgY29uZmlndXJhdGlvbiByZXF1aXJlbWVudHMuIExldCBtZSBqdXN0IGNvbmZpcm0gdGhhdCB0aGUgbmFtZSBpcyBleGFjdGx5IGBLQVNBTl9HRU5FUklDYC4gWXVwLCBgY29uZmlnIEtBU0FOX0dFTkVSSUNgLiBBbHJpZ2h0LCBJJ2xsIG91dHB1dCBgS0FTQU5gIGFuZCBgS0FTQU5fR0VORVJJQ2AgYXMgdGhlIG5lY2Vzc2FyeSBjb25maWd1cmF0aW9uIG9wdGlvbnMuXG5cbkp1c3QgdG8gYmUgdGhvcm91Z2gsIEknbSBnb2luZyB0byBkb3VibGUgY2hlY2sgaWYgYGthc2FuX3F1YXJhbnRpbmVfcmVtb3ZlX2NhY2hlYCBpcyBzdGF0aWMuIE5vcGUsIGl0J3Mgbm90LiBJdCdzIGEgYHZvaWQga2FzYW5fcXVhcmFudGluZV9yZW1vdmVfY2FjaGUoc3RydWN0IGttZW1fY2FjaGUgKmNhY2hlKWAuIEdvb2QgdG8ga25vdy5cblxuQW55dGhpbmcgZWxzZSBJIHNob3VsZCBjb25zaWRlcj8gQWgsIHllcywgdGhlcmUgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBoZXJlLiBUaGUgcGF0Y2ggcmVwbGFjZXMgYGZvcl9lYWNoX29ubGluZV9jcHUoY3B1KWAgd2l0aCBgZm9yX2VhY2hfcG9zc2libGVfY3B1KGNwdSlgLiBUaGlzIGlzIHRvIGFkZHJlc3MgYSBidWcgd2hlcmUgYSBDUFUgbWlnaHQgZ28gb2ZmbGluZSBhZnRlciBgb25fZWFjaF9jcHUoKWAgcmV0dXJucywgcG90ZW50aWFsbHkgbGVhdmluZyBjYWNoZSBvYmplY3RzIG9uIHRoYXQgQ1BVJ3Mgc2hyaW5rIGxpc3QuIEl0J3MgaW1wb3J0YW50IHRvIHJlbWVtYmVyIHRoaXMgaXMgYSBmdW5jdGlvbmFsIGZpeC5cblxuSSdsbCBiZSB1c2luZyB0aGUgYHNldC1yZXN1bHRzYCB0b29sIGZvciB0aGlzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MTIzLCJPdXRwdXRUb2tlbnMiOjEyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM3OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwMzo0Mzo1Ny4xMTg0MTY1ODVaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NjUzNzkwNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS0FTQU5cIixcbiAgICBcIktBU0FOX0dFTkVSSUNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJrYXNhbl9xdWFyYW50aW5lX3JlbW92ZV9jYWNoZVwiLFxuICAgIFwia2FzYW5fY2FjaGVfc2hyaW5rXCIsXG4gICAgXCJrYXNhbl9jYWNoZV9zaHV0ZG93blwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIEtBU0FOIHF1YXJhbnRpbmUgbG9naWMgYnkgaXRlcmF0aW5nIG92ZXIgYWxsIHBvc3NpYmxlIENQVXMgaW5zdGVhZCBvZiBvbmx5IG9ubGluZSBDUFVzIHdoZW4gcmVtb3ZpbmcgYSBjYWNoZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUga2VybmVsIG1lbW9yeSBkZWJ1Z2dpbmcgbG9naWMgdGhhdCBpcyByZWFjaGFibGUgd2hlbiBhIGttZW1fY2FjaGUgaXMgc2hydW5rIG9yIGRlc3Ryb3llZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLQVNBTlwiLFxuICAgIFwiS0FTQU5fR0VORVJJQ1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImthc2FuX3F1YXJhbnRpbmVfcmVtb3ZlX2NhY2hlXCIsXG4gICAgXCJrYXNhbl9jYWNoZV9zaHJpbmtcIixcbiAgICBcImthc2FuX2NhY2hlX3NodXRkb3duXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gS0FTQU4gcXVhcmFudGluZSBsb2dpYyBieSBpdGVyYXRpbmcgb3ZlciBhbGwgcG9zc2libGUgQ1BVcyBpbnN0ZWFkIG9mIG9ubHkgb25saW5lIENQVXMgd2hlbiByZW1vdmluZyBhIGNhY2hlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBrZXJuZWwgbWVtb3J5IGRlYnVnZ2luZyBsb2dpYyB0aGF0IGlzIHJlYWNoYWJsZSB3aGVuIGEga21lbV9jYWNoZSBpcyBzaHJ1bmsgb3IgZGVzdHJveWVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwMzo0Mzo1Ny4xOTQ5NjE5MTlaIiwiU2VxIjoxNywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcyMDg2OTUxNDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwMzo0Mzo1Ny4xOTU0Njg4NDlaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NzIwODE4MzY2NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYGthc2FuX3F1YXJhbnRpbmVfcmVtb3ZlX2NhY2hlYCBpbiBgbW0va2FzYW4vcXVhcmFudGluZS5jYCB0byBpdGVyYXRlIG92ZXIgYWxsIHBvc3NpYmxlIENQVXMgaW5zdGVhZCBvZiBvbmx5IG9ubGluZSBDUFVzIHdoZW4gZHJhaW5pbmcgdGhlIHNocmluayBsaXN0LiBUaGlzIGZpeGVzIGEgcG90ZW50aWFsIGlzc3VlIHdoZXJlIGNhY2hlIG9iamVjdHMgY291bGQgYmUgbGVmdCBvbiB0aGUgc2hyaW5rIGxpc3Qgb2YgYSBDUFUgdGhhdCBnb2VzIG9mZmxpbmUuIFRoaXMgY2hhbmdlIGFkZHJlc3NlcyBhIG1lbW9yeSBtYW5hZ2VtZW50IGlzc3VlIChsaWtlbHkgYSBtZW1vcnkgbGVhayBvciB1c2UtYWZ0ZXItZnJlZSByZWxhdGVkIHRvIEtBU0FOJ3MgcXVhcmFudGluZSkgYW5kIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGFsbG9jYXRpb25zLCBzdHJ1Y3R1cmVzIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciBsb2dpYyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gU3RhbmRhcmQgS0FTQU4gYW5kIG90aGVyIG1lbW9yeSBkZXRlY3RvcnMgYXJlIHN1ZmZpY2llbnQgZm9yIHRoaXMgY29kZSwgYW5kIEtNU0FOIGlzIG5vdCBhcHBsaWNhYmxlLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGZhMThmYTcwMmIyMWRiYWRmZmZhYTVlNDg4ZjM2Y2Q0NDYwYzVhZThcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEF1ZyA4IDAzOjQzOjExIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbW0va2FzYW4vcXVhcmFudGluZS5jIGIvbW0va2FzYW4vcXVhcmFudGluZS5jXG5pbmRleCA2OTU4YWE3MTNjNjdlLi4xNmY0ZTY3YmVlZTgyIDEwMDY0NFxuLS0tIGEvbW0va2FzYW4vcXVhcmFudGluZS5jXG4rKysgYi9tbS9rYXNhbi9xdWFyYW50aW5lLmNcbkBAIC0zNTUsNyArMzU1LDEyIEBAIHZvaWQga2FzYW5fcXVhcmFudGluZV9yZW1vdmVfY2FjaGUoc3RydWN0IGttZW1fY2FjaGUgKmNhY2hlKVxuIFx0ICovXG4gXHRvbl9lYWNoX2NwdShwZXJfY3B1X3JlbW92ZV9jYWNoZSwgY2FjaGUsIDEpO1xuIFxuLVx0Zm9yX2VhY2hfb25saW5lX2NwdShjcHUpIHtcbitcdC8qXG4rXHQgKiBBIENQVSBjYW4gZ28gb2ZmbGluZSBhZnRlciBvbl9lYWNoX2NwdSgpIHJldHVybnMsIGxlYXZpbmcgY2FjaGVcbitcdCAqIG9iamVjdHMgb24gdGhhdCBDUFUncyBzaHJpbmsgbGlzdC4gU2NhbiBhbGwgcG9zc2libGUgQ1BVcyB0b1xuK1x0ICogZHJhaW4gdGhvc2UgbGlzdHMuXG4rXHQgKi9cbitcdGZvcl9lYWNoX3Bvc3NpYmxlX2NwdShjcHUpIHtcbiBcdFx0c3EgPSBwZXJfY3B1X3B0cihcdTAwMjZzaHJpbmtfcWxpc3QsIGNwdSk7XG4gXHRcdHJhd19zcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZzcS1cdTAwM2Vsb2NrLCBmbGFncyk7XG4gXHRcdHFsaXN0X21vdmVfY2FjaGUoXHUwMDI2c3EtXHUwMDNlcWxpc3QsIFx1MDAyNnRvX2ZyZWUsIGNhY2hlKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDAzOjQzOjU3LjE5NTQ2OTg1OVoiLCJTZXEiOjE5LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MjA4MTU3Njc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKktBU0FOIFF1YXJhbnRpbmUgQ2FjaGUgRHJhaW5hZ2UgLSBCdWcgRml4IFZlcmlmaWNhdGlvbioqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgc3dpdGNoaW5nIHRoZSBDUFUgaXRlcmF0aW9uIGluIGBrYXNhbl9xdWFyYW50aW5lX3JlbW92ZV9jYWNoZSgpYCBmcm9tIGBmb3JfZWFjaF9vbmxpbmVfY3B1KGNwdSlgIHRvIGBmb3JfZWFjaF9wb3NzaWJsZV9jcHUoY3B1KWAgd2l0aGluIGBtbS9rYXNhbi9xdWFyYW50aW5lLmNgLiAgVGhlIGNvcmUgb2YgdGhpcyBpcyBhYm91dCBmaXhpbmcgYSByYWNlIGNvbmRpdGlvbiBvciBlZGdlIGNhc2UuICBFc3NlbnRpYWxseSwgdGhlcmUgd2FzIGEgc2NlbmFyaW8gd2hlcmUgYSBDUFUgY291bGQgZ28gb2ZmbGluZSAqYWZ0ZXIqIGBvbl9lYWNoX2NwdSgpYCBoYWQgZmluaXNoZWQgaXRzIHdvcmssIGxlYXZpbmcgc3RhbGUgZW50cmllcyBpbiB0aGUgS0FTQU4gcXVhcmFudGluZSBjYWNoZSBmb3IgdGhhdCBDUFUuICBUaGlzIHNvdW5kcyBsaWtlIGEgcG90ZW50aWFsIG1lbW9yeSBsZWFrIG9yLCBldmVuIHdvcnNlLCBhIHVzZS1hZnRlci1mcmVlIHNjZW5hcmlvIHdpdGhpbiB0aGUgS0FTQU4gc3Vic3lzdGVtLiBUaGUgY2hhbmdlIGVuc3VyZXMgYWxsIENQVXMsIGluY2x1ZGluZyB0aG9zZSB0aGF0IG1heSBiZSBnb2luZyBvZmZsaW5lLCBhcmUgY29uc2lkZXJlZCB0byBwcm9wZXJseSBkcmFpbiB0aGUgbGlzdHMuXG5cbkl0J3MgZm9jdXNlZCBvbiB0aGUgS0FTQU4gcXVhcmFudGluZSBhbmQgbWVtb3J5IG1hbmFnZW1lbnQgaW50ZXJuYWxzLiBUaGlua2luZyB0aHJvdWdoIHRoaXMsIGl0IGNsZWFybHkgZG9lc24ndCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdXNpbmcgdW5pbml0aWFsaXplZCBtZW1vcnk7IGl0J3MgYWxsIGFib3V0IGVuc3VyaW5nIGV4aXN0aW5nIG1lbW9yeSBpcyBwcm9wZXJseSBoYW5kbGVkLiBXZSdyZSBqdXN0IG1vZGlmeWluZyB0aGUgbG9vcCB0byBwcmV2ZW50IGRhbmdsaW5nIHBvaW50ZXJzLlxuXG5MZXQgbWUganVzdCBxdWlja2x5IGNvbmZpcm0gdGhhdCB0aGUga2V5IGNoYW5nZSBpcyBpbiBga2FzYW5fcXVhcmFudGluZV9yZW1vdmVfY2FjaGVgLCBhZ2FpbiB3aXRoIHRoYXQgQ1BVIGl0ZXJhdGlvbiBjaGFuZ2UuIFllcywganVzdCBhIGxvb3AsIGRyYWluaW5nIGEgbGlzdC4gTm8gdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWVzLiAgT2theSwgSSdtIGNvbmZpZGVudC4gSSdtIHNldHRpbmcgYE5lZWRzS01TQU5gIHRvIGBmYWxzZWAgZm9yIHRoaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwNjAsIk91dHB1dFRva2VucyI6MTYyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjI3LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDM6NDQ6MDQuNDAzNjMxNDk0WiIsIlNlcSI6MjAsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTkyOTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBga2FzYW5fcXVhcmFudGluZV9yZW1vdmVfY2FjaGVgIGluIGBtbS9rYXNhbi9xdWFyYW50aW5lLmNgIHRvIGl0ZXJhdGUgb3ZlciBhbGwgcG9zc2libGUgQ1BVcyBpbnN0ZWFkIG9mIG9ubHkgb25saW5lIENQVXMgd2hlbiBkcmFpbmluZyB0aGUgc2hyaW5rIGxpc3QuIFRoaXMgZml4ZXMgYSBwb3RlbnRpYWwgaXNzdWUgd2hlcmUgY2FjaGUgb2JqZWN0cyBjb3VsZCBiZSBsZWZ0IG9uIHRoZSBzaHJpbmsgbGlzdCBvZiBhIENQVSB0aGF0IGdvZXMgb2ZmbGluZS4gVGhpcyBjaGFuZ2UgYWRkcmVzc2VzIGEgbWVtb3J5IG1hbmFnZW1lbnQgaXNzdWUgKGxpa2VseSBhIG1lbW9yeSBsZWFrIG9yIHVzZS1hZnRlci1mcmVlIHJlbGF0ZWQgdG8gS0FTQU4ncyBxdWFyYW50aW5lKSBhbmQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgYWxsb2NhdGlvbnMsIHN0cnVjdHVyZXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIGxvZ2ljIHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBTdGFuZGFyZCBLQVNBTiBhbmQgb3RoZXIgbWVtb3J5IGRldGVjdG9ycyBhcmUgc3VmZmljaWVudCBmb3IgdGhpcyBjb2RlLCBhbmQgS01TQU4gaXMgbm90IGFwcGxpY2FibGUuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYGthc2FuX3F1YXJhbnRpbmVfcmVtb3ZlX2NhY2hlYCBpbiBgbW0va2FzYW4vcXVhcmFudGluZS5jYCB0byBpdGVyYXRlIG92ZXIgYWxsIHBvc3NpYmxlIENQVXMgaW5zdGVhZCBvZiBvbmx5IG9ubGluZSBDUFVzIHdoZW4gZHJhaW5pbmcgdGhlIHNocmluayBsaXN0LiBUaGlzIGZpeGVzIGEgcG90ZW50aWFsIGlzc3VlIHdoZXJlIGNhY2hlIG9iamVjdHMgY291bGQgYmUgbGVmdCBvbiB0aGUgc2hyaW5rIGxpc3Qgb2YgYSBDUFUgdGhhdCBnb2VzIG9mZmxpbmUuIFRoaXMgY2hhbmdlIGFkZHJlc3NlcyBhIG1lbW9yeSBtYW5hZ2VtZW50IGlzc3VlIChsaWtlbHkgYSBtZW1vcnkgbGVhayBvciB1c2UtYWZ0ZXItZnJlZSByZWxhdGVkIHRvIEtBU0FOJ3MgcXVhcmFudGluZSkgYW5kIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGFsbG9jYXRpb25zLCBzdHJ1Y3R1cmVzIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciBsb2dpYyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gU3RhbmRhcmQgS0FTQU4gYW5kIG90aGVyIG1lbW9yeSBkZXRlY3RvcnMgYXJlIHN1ZmZpY2llbnQgZm9yIHRoaXMgY29kZSwgYW5kIEtNU0FOIGlzIG5vdCBhcHBsaWNhYmxlLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflowrnrmm[1] Phase: Succeeded StartedAt: 2026-08-08 03:44:15 +0000 UTC FinishedAt: 2026-08-08 03:44:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrnrmm[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-08 03:44:15 +0000 UTC FinishedAt: 2026-08-08 03:44:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrnrmm[2] Phase: Succeeded StartedAt: 2026-08-08 03:44:15 +0000 UTC FinishedAt: 2026-08-08 07:25:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrnrmm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8086604be9733378461a5534c39cb72635226b23","config_name":"upstream-apparmor-kasan.config","enable_configs":["KASAN","KASAN_GENERIC"],"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":["kasan_quarantine_remove_cache","kasan_cache_shrink","kasan_cache_shutdown"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"8086604be9733378461a5534c39cb72635226b23","config_name":"upstream-apparmor-kasan.config","enable_configs":["KASAN","KASAN_GENERIC"],"series_id":"cbf6df25-6c5e-4a69-bda7-074def249357","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-08-08 03:44:15 +0000 UTC FinishedAt: 2026-08-08 07:25:14 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"8086604be9733378461a5534c39cb72635226b23","config_name":"upstream-apparmor-kasan.config","enable_configs":["KASAN","KASAN_GENERIC"],"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":["kasan_quarantine_remove_cache","kasan_cache_shrink","kasan_cache_shutdown"],"skip_cover_check":true},"patched":{"arch":"amd64","commit_hash":"8086604be9733378461a5534c39cb72635226b23","config_name":"upstream-apparmor-kasan.config","enable_configs":["KASAN","KASAN_GENERIC"],"series_id":"cbf6df25-6c5e-4a69-bda7-074def249357","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-workflowrnrmm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8086604be9733378461a5534c39cb72635226b23","config_name":"upstream-apparmor-kasan.config","enable_configs":["KASAN","KASAN_GENERIC"],"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":["kasan_quarantine_remove_cache","kasan_cache_shrink","kasan_cache_shutdown"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"8086604be9733378461a5534c39cb72635226b23","config_name":"upstream-apparmor-kasan.config","enable_configs":["KASAN","KASAN_GENERIC"],"series_id":"cbf6df25-6c5e-4a69-bda7-074def249357","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-08-08 03:44:15 +0000 UTC FinishedAt: 2026-08-08 03:44:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrnrmm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8086604be9733378461a5534c39cb72635226b23","config_name":"upstream-apparmor-kasan.config","enable_configs":["KASAN","KASAN_GENERIC"],"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":["kasan_quarantine_remove_cache","kasan_cache_shrink","kasan_cache_shutdown"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"8086604be9733378461a5534c39cb72635226b23","config_name":"upstream-apparmor-kasan.config","enable_configs":["KASAN","KASAN_GENERIC"],"series_id":"cbf6df25-6c5e-4a69-bda7-074def249357","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-08-08 03:44:15 +0000 UTC FinishedAt: 2026-08-08 03:44:20 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"8086604be9733378461a5534c39cb72635226b23","config_name":"upstream-apparmor-kasan.config","enable_configs":["KASAN","KASAN_GENERIC"],"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-workflowrnrmm/series-workflowrnrmm-convert-artifact-106732536/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrnrmm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8086604be9733378461a5534c39cb72635226b23","config_name":"upstream-apparmor-kasan.config","enable_configs":["KASAN","KASAN_GENERIC"],"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":["kasan_quarantine_remove_cache","kasan_cache_shrink","kasan_cache_shutdown"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"8086604be9733378461a5534c39cb72635226b23","config_name":"upstream-apparmor-kasan.config","enable_configs":["KASAN","KASAN_GENERIC"],"series_id":"cbf6df25-6c5e-4a69-bda7-074def249357","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-08-08 03:44:26 +0000 UTC FinishedAt: 2026-08-08 04:01:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrnrmm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8086604be9733378461a5534c39cb72635226b23","config_name":"upstream-apparmor-kasan.config","enable_configs":["KASAN","KASAN_GENERIC"],"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":["kasan_quarantine_remove_cache","kasan_cache_shrink","kasan_cache_shutdown"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"8086604be9733378461a5534c39cb72635226b23","config_name":"upstream-apparmor-kasan.config","enable_configs":["KASAN","KASAN_GENERIC"],"series_id":"cbf6df25-6c5e-4a69-bda7-074def249357","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-08-08 03:44:26 +0000 UTC FinishedAt: 2026-08-08 04:01:06 +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:*640a2b4c-6418-4db6-bceb-04f6dad7b751,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-workflowrnrmm/series-workflowrnrmm-convert-artifact-106732536/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": "4e4c68f6-f58c-4593-ae09-0815898ae62f", "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-workflowrnrmm/series-workflowrnrmm-build-action-3738329262/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrnrmm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8086604be9733378461a5534c39cb72635226b23","config_name":"upstream-apparmor-kasan.config","enable_configs":["KASAN","KASAN_GENERIC"],"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":["kasan_quarantine_remove_cache","kasan_cache_shrink","kasan_cache_shutdown"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"8086604be9733378461a5534c39cb72635226b23","config_name":"upstream-apparmor-kasan.config","enable_configs":["KASAN","KASAN_GENERIC"],"series_id":"cbf6df25-6c5e-4a69-bda7-074def249357","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-08-08 03:44:26 +0000 UTC FinishedAt: 2026-08-08 04:00:56 +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:*640a2b4c-6418-4db6-bceb-04f6dad7b751,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-workflowrnrmm/series-workflowrnrmm-convert-artifact-106732536/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": "4e4c68f6-f58c-4593-ae09-0815898ae62f", "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-workflowrnrmm/series-workflowrnrmm-build-action-3738329262/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrnrmm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8086604be9733378461a5534c39cb72635226b23","config_name":"upstream-apparmor-kasan.config","enable_configs":["KASAN","KASAN_GENERIC"],"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":["kasan_quarantine_remove_cache","kasan_cache_shrink","kasan_cache_shutdown"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"8086604be9733378461a5534c39cb72635226b23","config_name":"upstream-apparmor-kasan.config","enable_configs":["KASAN","KASAN_GENERIC"],"series_id":"cbf6df25-6c5e-4a69-bda7-074def249357","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-08-08 04:01:06 +0000 UTC FinishedAt: 2026-08-08 04:01:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrnrmm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8086604be9733378461a5534c39cb72635226b23","config_name":"upstream-apparmor-kasan.config","enable_configs":["KASAN","KASAN_GENERIC"],"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":["kasan_quarantine_remove_cache","kasan_cache_shrink","kasan_cache_shutdown"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"8086604be9733378461a5534c39cb72635226b23","config_name":"upstream-apparmor-kasan.config","enable_configs":["KASAN","KASAN_GENERIC"],"series_id":"cbf6df25-6c5e-4a69-bda7-074def249357","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-08-08 04:01:06 +0000 UTC FinishedAt: 2026-08-08 04:01:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrnrmm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8086604be9733378461a5534c39cb72635226b23","config_name":"upstream-apparmor-kasan.config","enable_configs":["KASAN","KASAN_GENERIC"],"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":["kasan_quarantine_remove_cache","kasan_cache_shrink","kasan_cache_shutdown"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"8086604be9733378461a5534c39cb72635226b23","config_name":"upstream-apparmor-kasan.config","enable_configs":["KASAN","KASAN_GENERIC"],"series_id":"cbf6df25-6c5e-4a69-bda7-074def249357","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-08-08 04:01:06 +0000 UTC FinishedAt: 2026-08-08 04:01:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrnrmm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8086604be9733378461a5534c39cb72635226b23","config_name":"upstream-apparmor-kasan.config","enable_configs":["KASAN","KASAN_GENERIC"],"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":["kasan_quarantine_remove_cache","kasan_cache_shrink","kasan_cache_shutdown"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"8086604be9733378461a5534c39cb72635226b23","config_name":"upstream-apparmor-kasan.config","enable_configs":["KASAN","KASAN_GENERIC"],"series_id":"cbf6df25-6c5e-4a69-bda7-074def249357","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-08-08 04:01:06 +0000 UTC FinishedAt: 2026-08-08 04:01:11 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"8086604be9733378461a5534c39cb72635226b23","config_name":"upstream-apparmor-kasan.config","enable_configs":["KASAN","KASAN_GENERIC"],"series_id":"cbf6df25-6c5e-4a69-bda7-074def249357","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-workflowrnrmm/series-workflowrnrmm-convert-artifact-1985747551/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrnrmm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8086604be9733378461a5534c39cb72635226b23","config_name":"upstream-apparmor-kasan.config","enable_configs":["KASAN","KASAN_GENERIC"],"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":["kasan_quarantine_remove_cache","kasan_cache_shrink","kasan_cache_shutdown"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"8086604be9733378461a5534c39cb72635226b23","config_name":"upstream-apparmor-kasan.config","enable_configs":["KASAN","KASAN_GENERIC"],"series_id":"cbf6df25-6c5e-4a69-bda7-074def249357","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-08-08 04:01:16 +0000 UTC FinishedAt: 2026-08-08 04:03:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrnrmm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8086604be9733378461a5534c39cb72635226b23","config_name":"upstream-apparmor-kasan.config","enable_configs":["KASAN","KASAN_GENERIC"],"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":["kasan_quarantine_remove_cache","kasan_cache_shrink","kasan_cache_shutdown"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"8086604be9733378461a5534c39cb72635226b23","config_name":"upstream-apparmor-kasan.config","enable_configs":["KASAN","KASAN_GENERIC"],"series_id":"cbf6df25-6c5e-4a69-bda7-074def249357","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-08-08 04:01:16 +0000 UTC FinishedAt: 2026-08-08 04:03:18 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*4e4c68f6-f58c-4593-ae09-0815898ae62f,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-workflowrnrmm/series-workflowrnrmm-build-action-3738329262/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-workflowrnrmm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8086604be9733378461a5534c39cb72635226b23","config_name":"upstream-apparmor-kasan.config","enable_configs":["KASAN","KASAN_GENERIC"],"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":["kasan_quarantine_remove_cache","kasan_cache_shrink","kasan_cache_shutdown"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"8086604be9733378461a5534c39cb72635226b23","config_name":"upstream-apparmor-kasan.config","enable_configs":["KASAN","KASAN_GENERIC"],"series_id":"cbf6df25-6c5e-4a69-bda7-074def249357","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-08-08 04:03:28 +0000 UTC FinishedAt: 2026-08-08 04:03:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrnrmm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8086604be9733378461a5534c39cb72635226b23","config_name":"upstream-apparmor-kasan.config","enable_configs":["KASAN","KASAN_GENERIC"],"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":["kasan_quarantine_remove_cache","kasan_cache_shrink","kasan_cache_shutdown"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"8086604be9733378461a5534c39cb72635226b23","config_name":"upstream-apparmor-kasan.config","enable_configs":["KASAN","KASAN_GENERIC"],"series_id":"cbf6df25-6c5e-4a69-bda7-074def249357","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-08-08 04:03:28 +0000 UTC FinishedAt: 2026-08-08 04:03:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrnrmm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8086604be9733378461a5534c39cb72635226b23","config_name":"upstream-apparmor-kasan.config","enable_configs":["KASAN","KASAN_GENERIC"],"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":["kasan_quarantine_remove_cache","kasan_cache_shrink","kasan_cache_shutdown"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"8086604be9733378461a5534c39cb72635226b23","config_name":"upstream-apparmor-kasan.config","enable_configs":["KASAN","KASAN_GENERIC"],"series_id":"cbf6df25-6c5e-4a69-bda7-074def249357","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-08-08 04:03:28 +0000 UTC FinishedAt: 2026-08-08 04:20:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrnrmm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8086604be9733378461a5534c39cb72635226b23","config_name":"upstream-apparmor-kasan.config","enable_configs":["KASAN","KASAN_GENERIC"],"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":["kasan_quarantine_remove_cache","kasan_cache_shrink","kasan_cache_shutdown"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"8086604be9733378461a5534c39cb72635226b23","config_name":"upstream-apparmor-kasan.config","enable_configs":["KASAN","KASAN_GENERIC"],"series_id":"cbf6df25-6c5e-4a69-bda7-074def249357","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-08-08 04:03:28 +0000 UTC FinishedAt: 2026-08-08 04:20:16 +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:*640a2b4c-6418-4db6-bceb-04f6dad7b751,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-workflowrnrmm/series-workflowrnrmm-convert-artifact-1985747551/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": "37bc1c3c-2e76-4c78-9041-ccc9cdb93eb4", "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-workflowrnrmm/series-workflowrnrmm-build-action-3324815347/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrnrmm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8086604be9733378461a5534c39cb72635226b23","config_name":"upstream-apparmor-kasan.config","enable_configs":["KASAN","KASAN_GENERIC"],"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":["kasan_quarantine_remove_cache","kasan_cache_shrink","kasan_cache_shutdown"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"8086604be9733378461a5534c39cb72635226b23","config_name":"upstream-apparmor-kasan.config","enable_configs":["KASAN","KASAN_GENERIC"],"series_id":"cbf6df25-6c5e-4a69-bda7-074def249357","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-08-08 04:03:28 +0000 UTC FinishedAt: 2026-08-08 04:20:07 +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:*640a2b4c-6418-4db6-bceb-04f6dad7b751,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-workflowrnrmm/series-workflowrnrmm-convert-artifact-1985747551/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": "37bc1c3c-2e76-4c78-9041-ccc9cdb93eb4", "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-workflowrnrmm/series-workflowrnrmm-build-action-3324815347/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrnrmm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8086604be9733378461a5534c39cb72635226b23","config_name":"upstream-apparmor-kasan.config","enable_configs":["KASAN","KASAN_GENERIC"],"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":["kasan_quarantine_remove_cache","kasan_cache_shrink","kasan_cache_shutdown"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"8086604be9733378461a5534c39cb72635226b23","config_name":"upstream-apparmor-kasan.config","enable_configs":["KASAN","KASAN_GENERIC"],"series_id":"cbf6df25-6c5e-4a69-bda7-074def249357","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-08-08 04:20:16 +0000 UTC FinishedAt: 2026-08-08 04:20:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrnrmm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8086604be9733378461a5534c39cb72635226b23","config_name":"upstream-apparmor-kasan.config","enable_configs":["KASAN","KASAN_GENERIC"],"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":["kasan_quarantine_remove_cache","kasan_cache_shrink","kasan_cache_shutdown"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"8086604be9733378461a5534c39cb72635226b23","config_name":"upstream-apparmor-kasan.config","enable_configs":["KASAN","KASAN_GENERIC"],"series_id":"cbf6df25-6c5e-4a69-bda7-074def249357","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-08-08 04:20:16 +0000 UTC FinishedAt: 2026-08-08 04:20:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrnrmm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8086604be9733378461a5534c39cb72635226b23","config_name":"upstream-apparmor-kasan.config","enable_configs":["KASAN","KASAN_GENERIC"],"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":["kasan_quarantine_remove_cache","kasan_cache_shrink","kasan_cache_shutdown"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"8086604be9733378461a5534c39cb72635226b23","config_name":"upstream-apparmor-kasan.config","enable_configs":["KASAN","KASAN_GENERIC"],"series_id":"cbf6df25-6c5e-4a69-bda7-074def249357","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-08-08 04:20:16 +0000 UTC FinishedAt: 2026-08-08 04:22:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrnrmm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8086604be9733378461a5534c39cb72635226b23","config_name":"upstream-apparmor-kasan.config","enable_configs":["KASAN","KASAN_GENERIC"],"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":["kasan_quarantine_remove_cache","kasan_cache_shrink","kasan_cache_shutdown"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"8086604be9733378461a5534c39cb72635226b23","config_name":"upstream-apparmor-kasan.config","enable_configs":["KASAN","KASAN_GENERIC"],"series_id":"cbf6df25-6c5e-4a69-bda7-074def249357","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-08-08 04:20:16 +0000 UTC FinishedAt: 2026-08-08 04:22:14 +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:*37bc1c3c-2e76-4c78-9041-ccc9cdb93eb4,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-workflowrnrmm/series-workflowrnrmm-build-action-3324815347/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-workflowrnrmm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8086604be9733378461a5534c39cb72635226b23","config_name":"upstream-apparmor-kasan.config","enable_configs":["KASAN","KASAN_GENERIC"],"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":["kasan_quarantine_remove_cache","kasan_cache_shrink","kasan_cache_shutdown"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"8086604be9733378461a5534c39cb72635226b23","config_name":"upstream-apparmor-kasan.config","enable_configs":["KASAN","KASAN_GENERIC"],"series_id":"cbf6df25-6c5e-4a69-bda7-074def249357","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-08-08 04:22:24 +0000 UTC FinishedAt: 2026-08-08 07:25:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrnrmm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8086604be9733378461a5534c39cb72635226b23","config_name":"upstream-apparmor-kasan.config","enable_configs":["KASAN","KASAN_GENERIC"],"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":["kasan_quarantine_remove_cache","kasan_cache_shrink","kasan_cache_shutdown"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"8086604be9733378461a5534c39cb72635226b23","config_name":"upstream-apparmor-kasan.config","enable_configs":["KASAN","KASAN_GENERIC"],"series_id":"cbf6df25-6c5e-4a69-bda7-074def249357","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-08-08 04:22:24 +0000 UTC FinishedAt: 2026-08-08 07:25:14 +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":["kasan_quarantine_remove_cache","kasan_cache_shrink","kasan_cache_shutdown"],"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:*4e4c68f6-f58c-4593-ae09-0815898ae62f,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*37bc1c3c-2e76-4c78-9041-ccc9cdb93eb4,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-workflowrnrmm/series-workflowrnrmm-build-action-3738329262/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-workflowrnrmm/series-workflowrnrmm-build-action-3324815347/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowrnrmm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8086604be9733378461a5534c39cb72635226b23","config_name":"upstream-apparmor-kasan.config","enable_configs":["KASAN","KASAN_GENERIC"],"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":["kasan_quarantine_remove_cache","kasan_cache_shrink","kasan_cache_shutdown"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"8086604be9733378461a5534c39cb72635226b23","config_name":"upstream-apparmor-kasan.config","enable_configs":["KASAN","KASAN_GENERIC"],"series_id":"cbf6df25-6c5e-4a69-bda7-074def249357","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-08-08 04:22:24 +0000 UTC FinishedAt: 2026-08-08 04:22:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrnrmm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8086604be9733378461a5534c39cb72635226b23","config_name":"upstream-apparmor-kasan.config","enable_configs":["KASAN","KASAN_GENERIC"],"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":["kasan_quarantine_remove_cache","kasan_cache_shrink","kasan_cache_shutdown"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"8086604be9733378461a5534c39cb72635226b23","config_name":"upstream-apparmor-kasan.config","enable_configs":["KASAN","KASAN_GENERIC"],"series_id":"cbf6df25-6c5e-4a69-bda7-074def249357","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-08-08 04:22:24 +0000 UTC FinishedAt: 2026-08-08 04:22:29 +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":["kasan_quarantine_remove_cache","kasan_cache_shrink","kasan_cache_shutdown"],"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-workflowrnrmm/series-workflowrnrmm-convert-artifact-3100988024/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrnrmm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8086604be9733378461a5534c39cb72635226b23","config_name":"upstream-apparmor-kasan.config","enable_configs":["KASAN","KASAN_GENERIC"],"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":["kasan_quarantine_remove_cache","kasan_cache_shrink","kasan_cache_shutdown"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"8086604be9733378461a5534c39cb72635226b23","config_name":"upstream-apparmor-kasan.config","enable_configs":["KASAN","KASAN_GENERIC"],"series_id":"cbf6df25-6c5e-4a69-bda7-074def249357","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-08-08 04:22:24 +0000 UTC FinishedAt: 2026-08-08 04:22:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrnrmm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8086604be9733378461a5534c39cb72635226b23","config_name":"upstream-apparmor-kasan.config","enable_configs":["KASAN","KASAN_GENERIC"],"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":["kasan_quarantine_remove_cache","kasan_cache_shrink","kasan_cache_shutdown"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"8086604be9733378461a5534c39cb72635226b23","config_name":"upstream-apparmor-kasan.config","enable_configs":["KASAN","KASAN_GENERIC"],"series_id":"cbf6df25-6c5e-4a69-bda7-074def249357","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-08-08 04:22:24 +0000 UTC FinishedAt: 2026-08-08 04:22:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrnrmm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8086604be9733378461a5534c39cb72635226b23","config_name":"upstream-apparmor-kasan.config","enable_configs":["KASAN","KASAN_GENERIC"],"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":["kasan_quarantine_remove_cache","kasan_cache_shrink","kasan_cache_shutdown"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"8086604be9733378461a5534c39cb72635226b23","config_name":"upstream-apparmor-kasan.config","enable_configs":["KASAN","KASAN_GENERIC"],"series_id":"cbf6df25-6c5e-4a69-bda7-074def249357","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-08-08 04:22:24 +0000 UTC FinishedAt: 2026-08-08 04:22:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrnrmm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8086604be9733378461a5534c39cb72635226b23","config_name":"upstream-apparmor-kasan.config","enable_configs":["KASAN","KASAN_GENERIC"],"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":["kasan_quarantine_remove_cache","kasan_cache_shrink","kasan_cache_shutdown"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"8086604be9733378461a5534c39cb72635226b23","config_name":"upstream-apparmor-kasan.config","enable_configs":["KASAN","KASAN_GENERIC"],"series_id":"cbf6df25-6c5e-4a69-bda7-074def249357","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-08-08 04:22:34 +0000 UTC FinishedAt: 2026-08-08 07:25:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrnrmm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8086604be9733378461a5534c39cb72635226b23","config_name":"upstream-apparmor-kasan.config","enable_configs":["KASAN","KASAN_GENERIC"],"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":["kasan_quarantine_remove_cache","kasan_cache_shrink","kasan_cache_shutdown"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"8086604be9733378461a5534c39cb72635226b23","config_name":"upstream-apparmor-kasan.config","enable_configs":["KASAN","KASAN_GENERIC"],"series_id":"cbf6df25-6c5e-4a69-bda7-074def249357","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-08-08 04:22:34 +0000 UTC FinishedAt: 2026-08-08 07:25:04 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*4e4c68f6-f58c-4593-ae09-0815898ae62f,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*37bc1c3c-2e76-4c78-9041-ccc9cdb93eb4,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-workflowrnrmm/series-workflowrnrmm-build-action-3738329262/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-workflowrnrmm/series-workflowrnrmm-build-action-3324815347/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-workflowrnrmm/series-workflowrnrmm-convert-artifact-3100988024/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,}