Name: series-workflowm7tbs Phase: Succeeded StartedAt: 2026-08-03 17:57:39 +0000 UTC FinishedAt: 2026-08-03 22:01:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm7tbs[0] Phase: Succeeded StartedAt: 2026-08-03 17:57:39 +0000 UTC FinishedAt: 2026-08-03 18:21:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm7tbs[0].run-triage Phase: Succeeded StartedAt: 2026-08-03 17:57:39 +0000 UTC FinishedAt: 2026-08-03 18:21:38 +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": "1dbd7c34bb92dd9c0b0363b75f6ec444299af108", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DAMON", "DAMON_PADDR", "DAMON_LRU_SORT", "SAMPLES", "SAMPLE_DAMON_MTIER" ], "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": "1dbd7c34bb92dd9c0b0363b75f6ec444299af108", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DAMON", "DAMON_PADDR", "DAMON_LRU_SORT", "SAMPLES", "SAMPLE_DAMON_MTIER" ], "series_id": "5062fd5d-c24f-4f8d-8ed1-665d37ad2b3c" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "damon_lru_sort_commit_inputs_store", "damon_lru_sort_enabled_store", "damon_sample_mtier_enable_store" ], "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+CgkJCTx0ZD4yMDI2LzA4LzAzIDE4OjE0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Nm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RBTU9OJiMzNDssCiAgICAmIzM0O0RBTU9OX1BBRERSJiMzNDssCiAgICAmIzM0O0RBTU9OX0xSVV9TT1JUJiMzNDssCiAgICAmIzM0O1NBTVBMRVMmIzM0OywKICAgICYjMzQ7U0FNUExFX0RBTU9OX01USUVSJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZGFtb25fbHJ1X3NvcnRfY29tbWl0X2lucHV0c19zdG9yZSYjMzQ7LAogICAgJiMzNDtkYW1vbl9scnVfc29ydF9lbmFibGVkX3N0b3JlJiMzNDssCiAgICAmIzM0O2RhbW9uX3NhbXBsZV9tdGllcl9lbmFibGVfc3RvcmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBpbnB1dCB2YWxpZGF0aW9uIGZvciBEQU1PTiBMUlUgc29ydCBhbmQgbWVtb3J5IHRpZXJpbmcgc2FtcGxlIG1vZHVsZSBwYXJhbWV0ZXJzIHRvIHByZXZlbnQgaW52YWxpZCB2YWx1ZXMgKGxpa2UgXHUwMDNlIDEwMDAwIG9yIDApIHRoYXQgY291bGQgY2F1c2UgZGl2aXNpb24gYnkgemVybyBvciBvdGhlciBpc3N1ZXMuIFRoZXNlIHBhcmFtZXRlcnMgYXJlIGFjY2Vzc2libGUgdmlhIHN5c2ZzIGFuZCBjYW4gYmUgbW9kaWZpZWQgYXQgcnVudGltZS4gVGhlIGNoYW5nZXMgYXJlIGZ1bmN0aW9uYWwgYW5kIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgc3lzZnMgbW9kdWxlIHBhcmFtZXRlciBzdG9yZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTg6MTQ8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA5ZmMwNzkwMDdhYmI2YWU3ZDk0NjhkNDcxYWY4MmQyY2RiOTRlOWY4XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMyAxODoxNDo0NyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9tbS9kYW1vbi9scnVfc29ydC5jIGIvbW0vZGFtb24vbHJ1X3NvcnQuY1xuaW5kZXggN2UwNzcwODRjYjAzYS4uMzkyMGQ1MDQyZjEwOSAxMDA2NDRcbi0tLSBhL21tL2RhbW9uL2xydV9zb3J0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL21tL2RhbW9uL2xydV9zb3J0LmNcbkBAIC0yMzMsNiAmIzQzOzIzMyw4IEBAIHN0YXRpYyBpbnQgZGFtb25fbHJ1X3NvcnRfYWRkX3F1b3RhX2dvYWxzKHN0cnVjdCBkYW1vcyAqaG90X3NjaGVtZSxcbiBcbiBcdGlmICghYWN0aXZlX21lbV9icClcbiBcdFx0cmV0dXJuIDA7XG4mIzQzO1x0aWYgKDEwMDAwIFx1MDAzYyBhY3RpdmVfbWVtX2JwKVxuJiM0MztcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXHRnb2FsID0gZGFtb3NfbmV3X3F1b3RhX2dvYWwoREFNT1NfUVVPVEFfQUNUSVZFX01FTV9CUCwgYWN0aXZlX21lbV9icCk7XG4gXHRpZiAoIWdvYWwpXG4gXHRcdHJldHVybiAtRU5PTUVNO1xuZGlmZiAtLWdpdCBhL3NhbXBsZXMvZGFtb24vbXRpZXIuYyBiL3NhbXBsZXMvZGFtb24vbXRpZXIuY1xuaW5kZXggYWM5YzI0YjkyZWFkOC4uZDExMjNlYmJmYWI5MCAxMDA2NDRcbi0tLSBhL3NhbXBsZXMvZGFtb24vbXRpZXIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvc2FtcGxlcy9kYW1vbi9tdGllci5jXG5AQCAtMTU2LDYgJiM0MzsxNTYsOSBAQCBzdGF0aWMgc3RydWN0IGRhbW9uX2N0eCAqZGFtb25fc2FtcGxlX210aWVyX2J1aWxkX2N0eChib29sIHByb21vdGUpXG4gXHRpZiAoIXNjaGVtZSlcbiBcdFx0Z290byBmcmVlX291dDtcbiBcdGRhbW9uX3NldF9zY2hlbWVzKGN0eCwgXHUwMDI2c2NoZW1lLCAxKTtcbiYjNDM7XHQvKiB6ZXJvIHRhcmdldCB2YWx1ZSBjYXVzZXMgZGl2aXNpb24gYnkgemVybyBpbiBkYW1vc19xdW90YV9zdG9yZSgpICovXG4mIzQzO1x0aWYgKCFub2RlMF9tZW1fdXNlZF9icCB8fCAhbm9kZTBfbWVtX2ZyZWVfYnApXG4mIzQzO1x0XHRnb3RvIGZyZWVfb3V0O1xuIFx0cXVvdGFfZ29hbCA9IGRhbW9zX25ld19xdW90YV9nb2FsKFxuIFx0XHRcdHByb21vdGUgPyBEQU1PU19RVU9UQV9OT0RFX01FTV9VU0VEX0JQIDpcbiBcdFx0XHREQU1PU19RVU9UQV9OT0RFX01FTV9GUkVFX0JQLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE4OjE0PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjZtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtEQU1PTiYjMzQ7LAogICAgJiMzNDtEQU1PTl9QQUREUiYjMzQ7LAogICAgJiMzNDtEQU1PTl9MUlVfU09SVCYjMzQ7LAogICAgJiMzNDtTQU1QTEVTJiMzNDssCiAgICAmIzM0O1NBTVBMRV9EQU1PTl9NVElFUiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2RhbW9uX2xydV9zb3J0X2NvbW1pdF9pbnB1dHNfc3RvcmUmIzM0OywKICAgICYjMzQ7ZGFtb25fbHJ1X3NvcnRfZW5hYmxlZF9zdG9yZSYjMzQ7LAogICAgJiMzNDtkYW1vbl9zYW1wbGVfbXRpZXJfZW5hYmxlX3N0b3JlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgaW5wdXQgdmFsaWRhdGlvbiBmb3IgREFNT04gTFJVIHNvcnQgYW5kIG1lbW9yeSB0aWVyaW5nIHNhbXBsZSBtb2R1bGUgcGFyYW1ldGVycyB0byBwcmV2ZW50IGludmFsaWQgdmFsdWVzIChsaWtlIFx1MDAzZSAxMDAwMCBvciAwKSB0aGF0IGNvdWxkIGNhdXNlIGRpdmlzaW9uIGJ5IHplcm8gb3Igb3RoZXIgaXNzdWVzLiBUaGVzZSBwYXJhbWV0ZXJzIGFyZSBhY2Nlc3NpYmxlIHZpYSBzeXNmcyBhbmQgY2FuIGJlIG1vZGlmaWVkIGF0IHJ1bnRpbWUuIFRoZSBjaGFuZ2VzIGFyZSBmdW5jdGlvbmFsIGFuZCByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIHN5c2ZzIG1vZHVsZSBwYXJhbWV0ZXIgc3RvcmVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgOWZjMDc5MDA3YWJiNmFlN2Q5NDY4ZDQ3MWFmODJkMmNkYjk0ZTlmOApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gQXVnIDMgMTg6MTQ6NDcgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9tbS9kYW1vbi9scnVfc29ydC5jIGIvbW0vZGFtb24vbHJ1X3NvcnQuYwppbmRleCA3ZTA3NzA4NGNiMDNhLi4zOTIwZDUwNDJmMTA5IDEwMDY0NAotLS0gYS9tbS9kYW1vbi9scnVfc29ydC5jCiYjNDM7JiM0MzsmIzQzOyBiL21tL2RhbW9uL2xydV9zb3J0LmMKQEAgLTIzMyw2ICYjNDM7MjMzLDggQEAgc3RhdGljIGludCBkYW1vbl9scnVfc29ydF9hZGRfcXVvdGFfZ29hbHMoc3RydWN0IGRhbW9zICpob3Rfc2NoZW1lLAogCiAJaWYgKCFhY3RpdmVfbWVtX2JwKQogCQlyZXR1cm4gMDsKJiM0MzsJaWYgKDEwMDAwICZsdDsgYWN0aXZlX21lbV9icCkKJiM0MzsJCXJldHVybiAtRUlOVkFMOwogCWdvYWwgPSBkYW1vc19uZXdfcXVvdGFfZ29hbChEQU1PU19RVU9UQV9BQ1RJVkVfTUVNX0JQLCBhY3RpdmVfbWVtX2JwKTsKIAlpZiAoIWdvYWwpCiAJCXJldHVybiAtRU5PTUVNOwpkaWZmIC0tZ2l0IGEvc2FtcGxlcy9kYW1vbi9tdGllci5jIGIvc2FtcGxlcy9kYW1vbi9tdGllci5jCmluZGV4IGFjOWMyNGI5MmVhZDguLmQxMTIzZWJiZmFiOTAgMTAwNjQ0Ci0tLSBhL3NhbXBsZXMvZGFtb24vbXRpZXIuYwomIzQzOyYjNDM7JiM0MzsgYi9zYW1wbGVzL2RhbW9uL210aWVyLmMKQEAgLTE1Niw2ICYjNDM7MTU2LDkgQEAgc3RhdGljIHN0cnVjdCBkYW1vbl9jdHggKmRhbW9uX3NhbXBsZV9tdGllcl9idWlsZF9jdHgoYm9vbCBwcm9tb3RlKQogCWlmICghc2NoZW1lKQogCQlnb3RvIGZyZWVfb3V0OwogCWRhbW9uX3NldF9zY2hlbWVzKGN0eCwgJmFtcDtzY2hlbWUsIDEpOwomIzQzOwkvKiB6ZXJvIHRhcmdldCB2YWx1ZSBjYXVzZXMgZGl2aXNpb24gYnkgemVybyBpbiBkYW1vc19xdW90YV9zdG9yZSgpICovCiYjNDM7CWlmICghbm9kZTBfbWVtX3VzZWRfYnAgfHwgIW5vZGUwX21lbV9mcmVlX2JwKQomIzQzOwkJZ290byBmcmVlX291dDsKIAlxdW90YV9nb2FsID0gZGFtb3NfbmV3X3F1b3RhX2dvYWwoCiAJCQlwcm9tb3RlID8gREFNT1NfUVVPVEFfTk9ERV9NRU1fVVNFRF9CUCA6CiAJCQlEQU1PU19RVU9UQV9OT0RFX01FTV9GUkVFX0JQLAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxODoxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzI0CgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogNDQ3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBEQU1PTiBMUlUgU29ydCBDaGFuZ2VzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0d28gZmlsZXMgdGhhdCBoYXZlIGJlZW4gbW9kaWZpZWQ6IGBtbS9kYW1vbi9scnVfc29ydC5jYCBhbmQgYHNhbXBsZXMvZGFtb24vbXRpZXIuY2AuIFNlZW1zIGxpa2UgdGhlcmUgaGF2ZSBiZWVuIHNvbWUgYWRqdXN0bWVudHMgdG8gaG93IERBTU9OIGhhbmRsZXMgcXVvdGFzLiBMZXQmIzM5O3MgZGlnIGluLgoKRmlyc3QsIGBtbS9kYW1vbi9scnVfc29ydC5jYCAtIGluIHRoZSBgZGFtb25fbHJ1X3NvcnRfYWRkX3F1b3RhX2dvYWxzYCBmdW5jdGlvbiwgdGhlcmUmIzM5O3MgYSBuZXcgY2hlY2suIEl0JiMzOTtzIGV4cGxpY2l0bHkgdmFsaWRhdGluZyB0aGUgYGFjdGl2ZV9tZW1fYnBgIHZhbHVlLCBtYWtpbmcgc3VyZSBpdCYjMzk7cyBub3QgZ3JlYXRlciB0aGFuIDEwMDAwLiBSZXR1cm5pbmcgYC1FSU5WQUxgIGlmIGl0IGlzLiBUaGF04oCZcyBpbnRlcmVzdGluZy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2h5IHRoaXMgbGltaXQgaXMgYmVpbmcgaW50cm9kdWNlZC4gSXMgdGhlcmUgYW4gaXNzdWUgd2hlcmUgYSBsYXJnZSBgYWN0aXZlX21lbV9icGAgY2F1c2VzIHNvbWUgc29ydCBvZiBvdmVyZmxvdyBvciBpbmNvcnJlY3QgY2FsY3VsYXRpb24gZG93biB0aGUgbGluZT8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIG5ldyBjb25zdHJhaW50IHdpdGhpbiB0aGUgYnJvYWRlciBEQU1PTiBMUlUgc29ydCBpbml0aWFsaXphdGlvbiBmbG93LiBJIG5lZWQgdG8gaW52ZXN0aWdhdGUgd2hlcmUgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYW5kIGhvdyBpdCYjMzk7cyB1c2VkLgoKTm93LCBsZXQmIzM5O3MgbW92ZSBvbnRvIGBzYW1wbGVzL2RhbW9uL210aWVyLmNgLiBIZXJlLCBpbiB0aGUgYGRhbW9uX3NhbXBsZV9tdGllcl9idWlsZF9jdHhgIGZ1bmN0aW9uLCB0aGVyZSYjMzk7cyBhIGNoZWNrIHRoYXQgZW5zdXJlcyBgbm9kZTBfbWVtX3VzZWRfYnBgIGFuZCBgbm9kZTBfbWVtX2ZyZWVfYnBgIGFyZSBub3QgemVyby4gSWYgdGhleSBhcmUsIGl0IGp1bXBzIHRvIGBmcmVlX291dGAuIFNvLCB0aGUgdGFyZ2V0IHZhbHVlcyBmb3IgcXVvdGFzIG5lZWQgdG8gYmUgbm9uLXplcm8gdG8gYXZvaWQgYSBkaXZpc2lvbiBieSB6ZXJvIGVycm9yIGluIGBkYW1vc19xdW90YV9zdG9yZSgpYC4gVGhhdCYjMzk7cyBhIGNsYXNzaWMgYnVnLiBNYWtlcyBzZW5zZSwgYW5kIGl0JiMzOTtzIGEgZ29vZCBkZWZlbnNpdmUgcHJvZ3JhbW1pbmcgbWVhc3VyZS4gTm93IEkgbmVlZCB0byBpbnZlc3RpZ2F0ZSBpZiB0aGlzIGZ1bmN0aW9uIGlzIGFsd2F5cyBjb3JyZWN0bHkgY29uZmlndXJlZCB0byBwcmV2ZW50IGlzc3VlcyBmcm9tIGV2ZXIgb2NjdXJpbmcuCgpPdmVyYWxsLCBpdCBsb29rcyBsaWtlIHRoZXNlIGNoYW5nZXMgYXJlIGFpbWVkIGF0IGltcHJvdmluZyB0aGUgcm9idXN0bmVzcyBvZiBEQU1PTiYjMzk7cyBxdW90YSBtYW5hZ2VtZW50LiBPbmUgY2hhbmdlIGlzIGEgc2ltcGxlIGNoZWNrIHRvIHByZXZlbnQgZGl2aXNpb24gYnkgemVybzsgdGhlIG90aGVyIHJlcXVpcmVzIGFkZGl0aW9uYWwgaW52ZXN0aWdhdGlvbiB0byBkZXRlcm1pbmUgd2h5IGEgcGFydGljdWxhciB1cHBlciBib3VuZCBvbiBhIG1lbW9yeSB2YWx1ZSBpcyByZXF1aXJlZC4gQm90aCBzZWVtIHRvIGJlIGFkZHJlc3NpbmcgcG90ZW50aWFsIG51bWVyaWNhbCBpc3N1ZXMgb3IgY29uZmlndXJhdGlvbi1yZWxhdGVkIHByb2JsZW1zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE4OjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RhbW9uX2xydV9zb3J0X2FkZF9xdW90YV9nb2FscyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9kYW1vbi9scnVfc29ydC5jPTIyMD1zdGF0aWMgc3RydWN0IGRhbW9zICpkYW1vbl9scnVfc29ydF9uZXdfY29sZF9zY2hlbWUodW5zaWduZWQgaW50IGNvbGRfdGhyZXMpXG4tLVxubW0vZGFtb24vbHJ1X3NvcnQuYy0yMjgtXG5tbS9kYW1vbi9scnVfc29ydC5jOjIyOTpzdGF0aWMgaW50IGRhbW9uX2xydV9zb3J0X2FkZF9xdW90YV9nb2FscyhzdHJ1Y3QgZGFtb3MgKmhvdF9zY2hlbWUsXG5tbS9kYW1vbi9scnVfc29ydC5jLTIzMC1cdFx0c3RydWN0IGRhbW9zICpjb2xkX3NjaGVtZSlcbi0tXG5tbS9kYW1vbi9scnVfc29ydC5jPTI3Mz1zdGF0aWMgaW50IGRhbW9uX2xydV9zb3J0X2FwcGx5X3BhcmFtZXRlcnModm9pZClcbi0tXG5tbS9kYW1vbi9scnVfc29ydC5jLTMyMy1cbm1tL2RhbW9uL2xydV9zb3J0LmM6MzI0Olx0ZXJyID0gZGFtb25fbHJ1X3NvcnRfYWRkX3F1b3RhX2dvYWxzKGhvdF9zY2hlbWUsIGNvbGRfc2NoZW1lKTtcbm1tL2RhbW9uL2xydV9zb3J0LmMtMzI1LVx0aWYgKGVycilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxODoxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTAzCgkJCQkJCQlvdXRwdXQ6IDI1CgkJCQkJCQl0aG91Z2h0czogMzYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzczoKCioqRGl2aW5nIGludG8gYGRhbW9uX2xydV9zb3J0X2FwcGx5X3BhcmFtZXRlcnNgKioKCk9rYXksIHNvIEkmIzM5O20gZm9jdXNpbmcgb24gYGRhbW9uX2xydV9zb3J0X2FwcGx5X3BhcmFtZXRlcnNgLiBUaGUgZnVuY3Rpb24gbmFtZSBpdHNlbGYgc3VnZ2VzdHMgaXQmIzM5O3MgaW52b2x2ZWQgaW4gYXBwbHlpbmcgcGFyYW1ldGVycywgc3BlY2lmaWNhbGx5IHJlbGF0ZWQgdG8gdGhlIExSVSBzb3J0aW5nIHdpdGhpbiBEQU1PTi4gTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgY2FsbCBzaXRlcy4gTXkgZ3V0IGZlZWxpbmcgdGVsbHMgbWUgaXQmIzM5O3MgbGlrZWx5IGNhbGxlZCBmcm9tIGBkYW1vbl9scnVfc29ydF90dXJub25gIG9yIHNvbWV0aGluZyBhbmFsb2dvdXMuIFRoYXQgc2VlbXMgbGlrZSB0aGUgbW9zdCBsb2dpY2FsIGVudHJ5IHBvaW50IGZvciBhcHBseWluZyB0aGVzZSBzb3J0IHBhcmFtZXRlcnMsIHJpZ2h0PyBJdCBwcm9iYWJseSBoYXBwZW5zIHdoZW4gdGhlIExSVSBzb3J0aW5nIG1lY2hhbmlzbSBpcyBhY3RpdmF0ZWQuIFNvLCB0aW1lIHRvIHZlcmlmeS4gTGV0JiMzOTtzIGRpZyBpbnRvIHRoZSBjb2RlIGFuZCBjb25maXJtIHRob3NlIHN1c3BpY2lvbnMgYW5kIHRyYWNlIHRoZSBjYWxsIGNoYWluLiBObyBzZW5zZSBpbiBtYWtpbmcgYXNzdW1wdGlvbnMuIExldCYjMzk7cyBnZXQgdGhlIGRldGFpbHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTg6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGFtb25fbHJ1X3NvcnRfYXBwbHlfcGFyYW1ldGVycyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9kYW1vbi9scnVfc29ydC5jPTI1MT1zdGF0aWMgaW50IGRhbW9uX2xydV9zb3J0X2FkZF9maWx0ZXJzKHN0cnVjdCBkYW1vcyAqaG90X3NjaGVtZSxcbi0tXG5tbS9kYW1vbi9scnVfc29ydC5jLTI3Mi1cbm1tL2RhbW9uL2xydV9zb3J0LmM6MjczOnN0YXRpYyBpbnQgZGFtb25fbHJ1X3NvcnRfYXBwbHlfcGFyYW1ldGVycyh2b2lkKVxubW0vZGFtb24vbHJ1X3NvcnQuYy0yNzQte1xuLS1cbm1tL2RhbW9uL2xydV9zb3J0LmM9MzQ0PXN0YXRpYyBpbnQgZGFtb25fbHJ1X3NvcnRfY29tbWl0X2lucHV0c19mbih2b2lkICphcmcpXG5tbS9kYW1vbi9scnVfc29ydC5jLTM0NS17XG5tbS9kYW1vbi9scnVfc29ydC5jOjM0NjpcdHJldHVybiBkYW1vbl9scnVfc29ydF9hcHBseV9wYXJhbWV0ZXJzKCk7XG5tbS9kYW1vbi9scnVfc29ydC5jLTM0Ny19XG4tLVxubW0vZGFtb24vbHJ1X3NvcnQuYz00MTA9c3RhdGljIGludCBkYW1vbl9scnVfc29ydF90dXJuKGJvb2wgb24pXG4tLVxubW0vZGFtb24vbHJ1X3NvcnQuYy00MTgtXG5tbS9kYW1vbi9scnVfc29ydC5jOjQxOTpcdGVyciA9IGRhbW9uX2xydV9zb3J0X2FwcGx5X3BhcmFtZXRlcnMoKTtcbm1tL2RhbW9uL2xydV9zb3J0LmMtNDIwLVx0aWYgKGVycilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxODoxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MDcxCgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBteXNlbGY6CgoqKkludmVzdGlnYXRpbmcgdGhlIENvbmZpZ3VyYXRpb24gZm9yIGBtbS9kYW1vbi9scnVfc29ydC5jYCoqCgpPa2F5LCBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IEtjb25maWcgb3B0aW9ucyBlbmFibGUgdGhlIGNvbXBpbGF0aW9uIG9mIGBtbS9kYW1vbi9scnVfc29ydC5jYC4gVGhpcyBpcyBhIHByZXR0eSBzdHJhaWdodGZvcndhcmQgZGVidWdnaW5nIHN0ZXAsIGJ1dCBuZWNlc3Nhcnkgbm9uZXRoZWxlc3MuIFNpbmNlIHRoaXMgaXMgbGlrZWx5IHJlbGF0ZWQgdG8gdGhlIERBTU9OIChEYXRhIEFjY2VzcyBNT05pdG9yKSBzdWJzeXN0ZW0sIEkmIzM5O2xsIHN0YXJ0IGJ5IHBva2luZyBhcm91bmQgdGhlIHJlbGV2YW50IEtjb25maWcgZmlsZXMuIEkmIzM5O2xsIG5lZWQgdG8gcmVtZW1iZXIgd2hlcmUgREFNT04mIzM5O3MgY29uZmlndXJhdGlvbiBpcyBnZW5lcmFsbHkgbG9jYXRlZCB3aXRoaW4gdGhlIGtlcm5lbCB0cmVlLiBDaGFuY2VzIGFyZSBpdCYjMzk7cyB1bmRlciBgbW1gIG9yIHBlcmhhcHMgYSBzdWJkaXJlY3RvcnkuIEZyb20gdGhlcmUsIEkmIzM5O2xsIGhhdmUgdG8gZWl0aGVyOiAoYSkgZ3JlcCBmb3IgdGhlIGZpbGUgbmFtZSBkaXJlY3RseSB0byBmaW5kIHRoZSBlbmFibGluZyBjb25maWcsIG9yIChiKSB0cmFjZSB0aHJvdWdoIHJlbGF0ZWQgY29uZmlndXJhdGlvbnMsIGxvb2tpbmcgZm9yIGRlcGVuZGVuY2llcyBhbmQgY29uZGl0aW9uYWxzLiBFaXRoZXIgbWV0aG9kIHdpbGwgbGVhZCBtZSB0byB0aGUgYW5zd2VyLCBhc3N1bWluZyB0aGUgbW9kdWxlIGhhcyBwcm9wZXIgS2NvbmZpZyBzdXBwb3J0LiBJIGFsc28gbmVlZCB0byBiZSBtaW5kZnVsIG9mIGFueSBpbnRlcm1lZGlhdGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHRoYXQgbWlnaHQgYmUgaW4gcGxheS4gSSYjMzk7bGwgbWFrZSBzdXJlIHRvIG5vdGUgYWxsIHJlbGV2YW50IG9wdGlvbnMsIGluIGNhc2UgdGhlcmUgYXJlIGZ1cnRoZXIgZGVwZW5kZW5jaWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE4OjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2xydV9zb3J0Lm8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vZGFtb24vTWFrZWZpbGU9Nz1vYmotJChDT05GSUdfREFNT05fUkVDTEFJTSlcdCYjNDM7PSBtb2R1bGVzLWNvbW1vbi5vIHJlY2xhaW0ub1xubW0vZGFtb24vTWFrZWZpbGU6ODpvYmotJChDT05GSUdfREFNT05fTFJVX1NPUlQpXHQmIzQzOz0gbW9kdWxlcy1jb21tb24ubyBscnVfc29ydC5vXG5tbS9kYW1vbi9NYWtlZmlsZS05LW9iai0kKENPTkZJR19EQU1PTl9TVEFUKVx0JiM0Mzs9IG1vZHVsZXMtY29tbW9uLm8gc3RhdC5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTg6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDQ1NQoJCQkJCQkJb3V0cHV0OiAxOAoJCQkJCQkJdGhvdWdodHM6IDMxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246CgoqKkFuYWx5emluZyBEQU1PTiBhbmQgTFJVIFNvcnRpbmcqKgoKUmlnaHQsIHNvIGBDT05GSUdfREFNT05fTFJVX1NPUlRgIGlzIGVzc2VudGlhbCwgdGhhdCBtdWNoIGlzIGNsZWFyIGZyb20gdGhlIGNvbnRleHQuIExldCBtZSBtYWtlIHN1cmUgbXkgdW5kZXJzdGFuZGluZyBvZiB0aGlzIGRlcGVuZGVuY3kgaXMgYWNjdXJhdGUuIFRvIGdldCBhIHByYWN0aWNhbCBmZWVsIGZvciBob3cgaXQmIzM5O3MgdXNlZCwgSSYjMzk7bSBnb2luZyB0byB0YWtlIGEgbG9vayBhdCBgc2FtcGxlcy9kYW1vbi9tdGllci5jYC4gVGhhdCYjMzk7cyB1c3VhbGx5IGEgZ29vZCBwbGFjZSB0byBzdGFydCwgYXMgaXQgZ2l2ZXMgYSB3b3JraW5nIGV4YW1wbGUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgaW1wbGVtZW50YXRpb24gaW4gb3JkZXIgdG8gYXBwbHkgaXQgdG8gYSBuZXcgcHJvamVjdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTg6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXRpZXIubyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtzYW1wbGVzL2RhbW9uL01ha2VmaWxlPTQ9b2JqLSQoQ09ORklHX1NBTVBMRV9EQU1PTl9QUkNMKSAmIzQzOz0gcHJjbC5vXG5zYW1wbGVzL2RhbW9uL01ha2VmaWxlOjU6b2JqLSQoQ09ORklHX1NBTVBMRV9EQU1PTl9NVElFUikgJiM0Mzs9IG10aWVyLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTg6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDcwMgoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDExMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGlzIHRlY2huaWNhbCB0aG91Z2h0IHByb2Nlc3MsIGZyb20gYW4gZXhwZXJ0JiMzOTtzIHBlcnNwZWN0aXZlOgoKKipJbnZlc3RpZ2F0aW5nIERBTU9OJiMzOTtzIFRpZXJpbmcgSW1wbGVtZW50YXRpb24qKgoKQWxyaWdodCwgdGhlIGluaXRpYWwgY2x1ZSBpcyBgQ09ORklHX1NBTVBMRV9EQU1PTl9NVElFUmAuIEl0JiMzOTtzIGEgY29uZmlndXJhdGlvbiBvcHRpb24sIGFuZCBJIGtub3cgZnJvbSBleHBlcmllbmNlIHRoYXQgdGhlc2UgYXJlIGNydWNpYWwuIEhvd2V2ZXIsIHRoZSBzdWJzZXF1ZW50IG1lbnRpb24gb2YgYHNhbXBsZXMvZGFtb24vbXRpZXIuY2AgaW1tZWRpYXRlbHkgY2xhcmlmaWVzIHRoYXQgd2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgYSAqc2FtcGxlKiBtb2R1bGUuIE9rYXksIHRoYXQmIzM5O3MgaW1wb3J0YW50IGNvbnRleHQuIEl0JiMzOTtzIGlsbHVzdHJhdGl2ZSwgYnV0IGxpa2VseSAqbm90KiB0aGUgY29yZSBmdW5jdGlvbmFsaXR5IEkmIzM5O20gYWZ0ZXIuCgpUaGUgcmVhbCBtZWF0IG9mIHRoaXMgc2VlbXMgdG8gYmUgaW4gYG1tL2RhbW9uL2xydV9zb3J0LmNgLiBBaCwgYSBrZXJuZWwgbW9kdWxlLCBsaWtlbHkgYSBjb3JlIGZlYXR1cmUsIHJlbGF0ZWQgdG8gREFNT04mIzM5O3MgTFJVLWJhc2VkIHNvcnRpbmcuIE5vdywgbXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgd2hldGhlciB0aGlzIGZ1bmN0aW9uYWxpdHksIHNwZWNpZmljYWxseSBgZGFtb25fbHJ1X3NvcnRfYXBwbHlfcGFyYW1ldGVyc2AsIGlzIGRpcmVjdGx5IGFjY2Vzc2libGUgZnJvbSB1c2Vyc3BhY2UuIFRoYXQmIzM5O3MgdXN1YWxseSB0aGUgY3J1eCBvZiB0aGVzZSBkZXNpZ25zIOKAkyB0aGUgYWJpbGl0eSB0byBjb250cm9sIGFuZCB0dW5lIGJlaGF2aW9yIGZyb20gYSBoaWdoZXIgbGV2ZWwgaXMga2V5LgoKTXkgZm9jdXMgbmFycm93cyB0byB0aGUgYGRhbW9uX2xydV9zb3J0X3R1cm5gIGZ1bmN0aW9uLCB3aGljaCBpcywgaWYgSSByZWNhbGwsIGlzIHRvZ2dsZWQgdGhyb3VnaCBgZGFtb25fbHJ1X3NvcnRfZW5hYmxlZF9zdG9yZWAgb3Igc29tZXRoaW5nIHNpbWlsYXIuIFRoaXMgcG9pbnRzIHRvIHRoZSBlbmFibGluZyBtZWNoYW5pc20sIGFuZCBsaWtlbHkgdGhlIGNvbnRyb2wgcG9pbnQgaW4gdXNlcnNwYWNlLiBHb29kLiBUaGlzIGlzIHRoZSBwYXRoIHRvIGludmVzdGlnYXRlIHRvIHVuZGVyc3RhbmQgaWYgdGhlcmUmIzM5O3MgYW55IHVzZXIgY29udHJvbCBvbiB0aGlzIExSVSBzb3J0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxODoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkYW1vbl9scnVfc29ydF90dXJuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL2RhbW9uL2xydV9zb3J0LmM9NDA1PXN0YXRpYyBzdHJ1Y3QgZGFtb25fY2FsbF9jb250cm9sIGNhbGxfY29udHJvbCA9IHtcbi0tXG5tbS9kYW1vbi9scnVfc29ydC5jLTQwOS1cbm1tL2RhbW9uL2xydV9zb3J0LmM6NDEwOnN0YXRpYyBpbnQgZGFtb25fbHJ1X3NvcnRfdHVybihib29sIG9uKVxubW0vZGFtb24vbHJ1X3NvcnQuYy00MTEte1xuLS1cbm1tL2RhbW9uL2xydV9zb3J0LmM9NDYwPXN0YXRpYyBpbnQgZGFtb25fbHJ1X3NvcnRfZW5hYmxlZF9zdG9yZShjb25zdCBjaGFyICp2YWwsXG4tLVxubW0vZGFtb24vbHJ1X3NvcnQuYy00NzktXG5tbS9kYW1vbi9scnVfc29ydC5jOjQ4MDpcdHJldHVybiBkYW1vbl9scnVfc29ydF90dXJuKGVuYWJsZWQpO1xubW0vZGFtb24vbHJ1X3NvcnQuYy00ODEtfVxuLS1cbm1tL2RhbW9uL2xydV9zb3J0LmM9NTM0PXN0YXRpYyBpbnQgX19pbml0IGRhbW9uX2xydV9zb3J0X2luaXQodm9pZClcbi0tXG5tbS9kYW1vbi9scnVfc29ydC5jLTU0OS1cdGlmIChlbmFibGVkKVxubW0vZGFtb24vbHJ1X3NvcnQuYzo1NTA6XHRcdGVyciA9IGRhbW9uX2xydV9zb3J0X3R1cm4odHJ1ZSk7XG5tbS9kYW1vbi9scnVfc29ydC5jLTU1MS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTg6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTQ3MQoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDYzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3Npbmc6CgoqKkFuYWx5emluZyBEQU1PTiBMUlUgU29ydCBGdW5jdGlvbmFsaXR5KioKCkFscmlnaHQsIHNvIGBkYW1vbl9scnVfc29ydF9lbmFibGVkX3N0b3JlYCBpcyBkZWZpbml0ZWx5IGEgc3lzZnMgc3RvcmUgZnVuY3Rpb24sIEkgYWxyZWFkeSBrbmV3IHRoYXQuIFRoZSBrZXkgaGVyZSBpcyBmaWd1cmluZyBvdXQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSByZXN0IG9mIHRoZSBEQU1PTiBMUlUgc29ydGluZyBtZWNoYW5pc20uIEkmIzM5O20gbm90aW5nIHRoYXQgYGRhbW9uX2xydV9zb3J0X2NvbW1pdF9pbnB1dHNfZm5gIGlzIGFsc28gZGlyZWN0bHkgcmVhY2hhYmxlIGZyb20gdGhhdCBwb2ludCwgd2hpY2ggaXMgaW1wb3J0YW50LiBOb3csIHRvIHVuZGVyc3RhbmQgdGhlIGZsb3cgYW5kIGltcGFjdCBvZiB0aGlzIGZ1bmN0aW9uYWxpdHksIEkgbmVlZCB0byBmb2N1cyBvbiBob3cgYGRhbW9uX2xydV9zb3J0X2NvbW1pdF9pbnB1dHNfZm5gIG9wZXJhdGVzLiBMZXQmIzM5O3MgZGVsdmUgaW50byB0aGF0IGZ1bmN0aW9uIGFuZCBzZWUgd2hhdCBpdCYjMzk7cyBkb2luZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTg6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGFtb25fbHJ1X3NvcnRfY29tbWl0X2lucHV0c19mbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9kYW1vbi9scnVfc29ydC5jPTI3Mz1zdGF0aWMgaW50IGRhbW9uX2xydV9zb3J0X2FwcGx5X3BhcmFtZXRlcnModm9pZClcbi0tXG5tbS9kYW1vbi9scnVfc29ydC5jLTM0My1cbm1tL2RhbW9uL2xydV9zb3J0LmM6MzQ0OnN0YXRpYyBpbnQgZGFtb25fbHJ1X3NvcnRfY29tbWl0X2lucHV0c19mbih2b2lkICphcmcpXG5tbS9kYW1vbi9scnVfc29ydC5jLTM0NS17XG4tLVxubW0vZGFtb24vbHJ1X3NvcnQuYz0zNDk9c3RhdGljIGludCBkYW1vbl9scnVfc29ydF9jb21taXRfaW5wdXRzX3N0b3JlKGNvbnN0IGNoYXIgKnZhbCxcbi0tXG5tbS9kYW1vbi9scnVfc29ydC5jLTM1NC1cdHN0cnVjdCBkYW1vbl9jYWxsX2NvbnRyb2wgY29udHJvbCA9IHtcbm1tL2RhbW9uL2xydV9zb3J0LmM6MzU1Olx0XHQuZm4gPSBkYW1vbl9scnVfc29ydF9jb21taXRfaW5wdXRzX2ZuLFxubW0vZGFtb24vbHJ1X3NvcnQuYy0zNTYtXHR9O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxODoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1OTY2CgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogOTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBgZGFtb25fbHJ1X3NvcnRfYWRkX3F1b3RhX2dvYWxzYCB3aXRoIFN5c2ZzIGFuZCBJbnB1dCBWYWxpZGF0aW9uKioKCk9rYXksIHNvIEkmIzM5O3ZlIGJlZW4gbG9va2luZyBhdCBob3cgdG8gZnV6eiB0aGUgYGRhbW9uX2xydV9zb3J0X2FkZF9xdW90YV9nb2Fsc2AgZnVuY3Rpb24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB0YXJnZXQgaXQgdGhyb3VnaCBzeXNmcywgd2hpY2ggc2VlbXMgbGlrZSBhIHByb21pc2luZyBlbnRyeSBwb2ludC4gVGhlIGludGVyZXN0aW5nIHBhcnQgaXMgdGhhdCB0aGUgcGF0Y2ggaW50cm9kdWNlcyBhIGNydWNpYWwgaW5wdXQgdmFsaWRhdGlvbiBzdGVwLiBJdCBub3cgY2hlY2tzIHRoZSBgYWN0aXZlX21lbV9icGAgdmFsdWUsIGVuc3VyaW5nIGl0IGRvZXNuJiMzOTt0IGV4Y2VlZCAxMDAwMC4gSWYgaXQgZG9lcywgYSBzdHJhaWdodGZvcndhcmQgYC1FSU5WQUxgIGlzIHJldHVybmVkLgoKTXkgbmV4dCBzdGVwIGlzIHRvIGRpZyBpbnRvIHRoZSBjb2RlIGl0c2VsZiwgc3BlY2lmaWNhbGx5IGBtbS9kYW1vbi9scnVfc29ydC5jYCwgdG8gcGlucG9pbnQgd2hlcmUgdGhpcyBgYWN0aXZlX21lbV9icGAgY2hlY2sgaXMgYWN0dWFsbHkgaW1wbGVtZW50ZWQgYW5kIGhvdyBpdCBpbXBhY3RzIHRoZSBvdmVyYWxsIGZsb3cgb2YgdGhlIGZ1bmN0aW9uLiBVbmRlcnN0YW5kaW5nIHRoZSBwcmVjaXNlIGxvY2F0aW9uIGFuZCBpdHMgY29udGV4dCBpcyBrZXkgdG8gY3JhZnRpbmcgZWZmZWN0aXZlIGZ1enppbmcgaW5wdXRzLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IHZhbHVlcyBjYW4gZ2V0IG1lIHBhc3QgdGhlIHZhbGlkYXRpb24gYW5kIHdoYXQgc3BlY2lmaWMgc2NlbmFyaW9zIG1pZ2h0IGxlYWQgdG8gaW50ZXJlc3RpbmcgYmVoYXZpb3Igd2l0aGluIHRoZSBmdW5jdGlvbiYjMzk7cyBjb3JlIGxvZ2ljLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxODoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthY3RpdmVfbWVtX2JwJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O0RvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvbW0vZGFtb24vbHJ1X3NvcnQucnN0PTg0PXZpb2xhdGUgdGhpcyBydWxlLCB0aGUga2VybmVsIG1heSBleGhpYml0IHVuZGVmaW5lZCBiZWhhdmlvci5cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvbW0vZGFtb24vbHJ1X3NvcnQucnN0LTg1LVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9tbS9kYW1vbi9scnVfc29ydC5yc3Q6ODY6YWN0aXZlX21lbV9icFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9tbS9kYW1vbi9scnVfc29ydC5yc3QtODctLS0tLS0tLS0tLS0tLVxuLS1cbkRvY3VtZW50YXRpb24vbW0vZGFtb24vZGVzaWduLnJzdD02OTE9bWVjaGFuaXNtIHRyaWVzIHRvIG1ha2UgYGBjdXJyZW50X3ZhbHVlYGAgb2YgYGB0YXJnZXRfbWV0cmljYGAgYmUgc2FtZSB0b1xuLS1cbkRvY3VtZW50YXRpb24vbW0vZGFtb24vZGVzaWduLnJzdC03MDktICBzcGVjaWZpYyBOVU1BIG5vZGUsIGluIGJwICgxLzEwLDAwMCkuXG5Eb2N1bWVudGF0aW9uL21tL2RhbW9uL2Rlc2lnbi5yc3Q6NzEwOi0gYGBhY3RpdmVfbWVtX2JwYGA6IEFjdGl2ZSB0byBhY3RpdmUgJiM0MzsgaW5hY3RpdmUgKExSVSkgbWVtb3J5IHNpemUgcmF0aW8gaW4gYnBcbkRvY3VtZW50YXRpb24vbW0vZGFtb24vZGVzaWduLnJzdC03MTEtICAoMS8xMCwwMDApLlxuRG9jdW1lbnRhdGlvbi9tbS9kYW1vbi9kZXNpZ24ucnN0OjcxMjotIGBgaW5hY3RpdmVfbWVtX2JwYGA6IEluYWN0aXZlIHRvIGFjdGl2ZSAmIzQzOyBpbmFjdGl2ZSAoTFJVKSBtZW1vcnkgc2l6ZSByYXRpbyBpblxuRG9jdW1lbnRhdGlvbi9tbS9kYW1vbi9kZXNpZ24ucnN0LTcxMy0gIGJwICgxLzEwLDAwMCkuXG4tLVxubW0vZGFtb24vY29yZS5jPTI5ODU9c3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb3NfZ2V0X25vZGVfZWxpZ2libGVfbWVtX2JwKHN0cnVjdCBkYW1vbl9jdHggKmMsXG4tLVxubW0vZGFtb24vY29yZS5jLTI5OTQtICovXG5tbS9kYW1vbi9jb3JlLmM6Mjk5NTpzdGF0aWMgdW5zaWduZWQgaW50IGRhbW9zX2dldF9pbl9hY3RpdmVfbWVtX2JwKGJvb2wgYWN0aXZlX3JhdGlvKVxubW0vZGFtb24vY29yZS5jLTI5OTYte1xuLS1cbm1tL2RhbW9uL2NvcmUuYz0zMDEwPXN0YXRpYyB2b2lkIGRhbW9zX3NldF9xdW90YV9nb2FsX2N1cnJlbnRfdmFsdWUoc3RydWN0IGRhbW9uX2N0eCAqYyxcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMzAzMy1cdGNhc2UgREFNT1NfUVVPVEFfSU5BQ1RJVkVfTUVNX0JQOlxubW0vZGFtb24vY29yZS5jOjMwMzQ6XHRcdGdvYWwtXHUwMDNlY3VycmVudF92YWx1ZSA9IGRhbW9zX2dldF9pbl9hY3RpdmVfbWVtX2JwKFxubW0vZGFtb24vY29yZS5jLTMwMzUtXHRcdFx0XHRnb2FsLVx1MDAzZW1ldHJpYyA9PSBEQU1PU19RVU9UQV9BQ1RJVkVfTUVNX0JQKTtcbi0tXG5tbS9kYW1vbi9scnVfc29ydC5jPTM5PXN0YXRpYyBib29sIGNvbW1pdF9pbnB1dHMgX19yZWFkX21vc3RseTtcbi0tXG5tbS9kYW1vbi9scnVfc29ydC5jLTUxLSAqL1xubW0vZGFtb24vbHJ1X3NvcnQuYzo1MjpzdGF0aWMgdW5zaWduZWQgbG9uZyBhY3RpdmVfbWVtX2JwIF9fcmVhZF9tb3N0bHk7XG5tbS9kYW1vbi9scnVfc29ydC5jOjUzOm1vZHVsZV9wYXJhbShhY3RpdmVfbWVtX2JwLCB1bG9uZywgMDYwMCk7XG5tbS9kYW1vbi9scnVfc29ydC5jLTU0LVxuLS1cbm1tL2RhbW9uL2xydV9zb3J0LmM9MjI5PXN0YXRpYyBpbnQgZGFtb25fbHJ1X3NvcnRfYWRkX3F1b3RhX2dvYWxzKHN0cnVjdCBkYW1vcyAqaG90X3NjaGVtZSxcbi0tXG5tbS9kYW1vbi9scnVfc29ydC5jLTIzMy1cbm1tL2RhbW9uL2xydV9zb3J0LmM6MjM0Olx0aWYgKCFhY3RpdmVfbWVtX2JwKVxubW0vZGFtb24vbHJ1X3NvcnQuYy0yMzUtXHRcdHJldHVybiAwO1xubW0vZGFtb24vbHJ1X3NvcnQuYzoyMzY6XHRpZiAoMTAwMDAgXHUwMDNjIGFjdGl2ZV9tZW1fYnApXG5tbS9kYW1vbi9scnVfc29ydC5jLTIzNy1cdFx0cmV0dXJuIC1FSU5WQUw7XG5tbS9kYW1vbi9scnVfc29ydC5jOjIzODpcdGdvYWwgPSBkYW1vc19uZXdfcXVvdGFfZ29hbChEQU1PU19RVU9UQV9BQ1RJVkVfTUVNX0JQLCBhY3RpdmVfbWVtX2JwKTtcbm1tL2RhbW9uL2xydV9zb3J0LmMtMjM5LVx0aWYgKCFnb2FsKVxuLS1cbm1tL2RhbW9uL2xydV9zb3J0LmMtMjQzLVx0Z29hbCA9IGRhbW9zX25ld19xdW90YV9nb2FsKERBTU9TX1FVT1RBX0lOQUNUSVZFX01FTV9CUCxcbm1tL2RhbW9uL2xydV9zb3J0LmM6MjQ0Olx0XHRcdDEwMDAwIC0gYWN0aXZlX21lbV9icCAmIzQzOyAyKTtcbm1tL2RhbW9uL2xydV9zb3J0LmMtMjQ1LVx0aWYgKCFnb2FsKVxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0xMjM1PXN0cnVjdCBkYW1vc19zeXNmc19xZ29hbF9tZXRyaWNfbmFtZSBkYW1vc19zeXNmc19xZ29hbF9tZXRyaWNfbmFtZXNbXSA9IHtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTI2MS1cdFx0Lm1ldHJpYyA9IERBTU9TX1FVT1RBX0FDVElWRV9NRU1fQlAsXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTI2MjpcdFx0Lm5hbWUgPSBcJiMzNDthY3RpdmVfbWVtX2JwXCYjMzQ7LFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEyNjMtXHR9LFxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMjY1LVx0XHQubWV0cmljID0gREFNT1NfUVVPVEFfSU5BQ1RJVkVfTUVNX0JQLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEyNjY6XHRcdC5uYW1lID0gXCYjMzQ7aW5hY3RpdmVfbWVtX2JwXCYjMzQ7LFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEyNjctXHR9LFxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RhbW9uL3N5c2ZzLnNoPTE5Nj10ZXN0X2dvYWwoKVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RhbW9uL3N5c2ZzLnNoLTIwOS1cdGVuc3VyZV93cml0ZV9zdWNjIFwmIzM0OyRmcGF0aFwmIzM0OyBcJiMzNDtub2RlX21lbWNnX2ZyZWVfYnBcJiMzNDsgXCYjMzQ7dmFsaWQgaW5wdXRcJiMzNDtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RhbW9uL3N5c2ZzLnNoOjIxMDpcdGVuc3VyZV93cml0ZV9zdWNjIFwmIzM0OyRmcGF0aFwmIzM0OyBcJiMzNDthY3RpdmVfbWVtX2JwXCYjMzQ7IFwmIzM0O3ZhbGlkIGlucHV0XCYjMzQ7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kYW1vbi9zeXNmcy5zaDoyMTE6XHRlbnN1cmVfd3JpdGVfc3VjYyBcJiMzNDskZnBhdGhcJiMzNDsgXCYjMzQ7aW5hY3RpdmVfbWVtX2JwXCYjMzQ7IFwmIzM0O3ZhbGlkIGlucHV0XCYjMzQ7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kYW1vbi9zeXNmcy5zaC0yMTItXHRlbnN1cmVfd3JpdGVfc3VjYyBcJiMzNDskZnBhdGhcJiMzNDsgXCYjMzQ7bm9kZV9lbGlnaWJsZV9tZW1fYnBcJiMzNDsgXCYjMzQ7dmFsaWQgaW5wdXRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTg6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzc1OAoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDIyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIHRoZSBgYWN0aXZlX21lbV9icGAgUGFyYW1ldGVyIGluIERBTU9OJiMzOTtzIExSVSBTb3J0aW5nKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBtbS9kYW1vbi9scnVfc29ydC5jYCBmaWxlLCBhbmQgSSBzZWUgdGhpcyBgYWN0aXZlX21lbV9icGAgcGFyYW1ldGVyIGRlZmluZWQuICBJdCYjMzk7cyBhIGBtb2R1bGVfcGFyYW1gLCB3aGljaCBpcyBncmVhdCwgbWVhbmluZyBpdCYjMzk7cyBjb25maWd1cmFibGUgYXQgcnVudGltZS4gSSBjYW4gc2V0IGl0IHZpYSBzeXNmcywgc3BlY2lmaWNhbGx5IGF0IGAvc3lzL21vZHVsZS9kYW1vbl9scnVfc29ydC9wYXJhbWV0ZXJzL2FjdGl2ZV9tZW1fYnBgLiBUaGF0JiMzOTtzIGltcG9ydGFudDsgSSBjYW4gdHVuZSB0aGlzIHdpdGhvdXQgcmVjb21waWxpbmcgdGhlIGtlcm5lbC4KCk5vdywgSSYjMzk7bSBhbHNvIGdsYW5jaW5nIGF0IGBzYW1wbGVzL2RhbW9uL210aWVyLmNgLiAgSSBzZWUgb3RoZXIgc2ltaWxhciBtb2R1bGUgcGFyYW1ldGVycyB0aGVyZSwgc3BlY2lmaWNhbGx5IGBub2RlMF9tZW1fdXNlZF9icGAgYW5kIGBub2RlMF9tZW1fZnJlZV9icGAuIEkmIzM5O20gY3VyaW91cyBhYm91dCB0aGUgcmVsYXRpb25zaGlwIG9mIHRob3NlLCBzbyBJJiMzOTtsbCBjaGVjayBgbXRpZXIuY2AgYWdhaW4gZm9yIHVzYWdlcyBvZiBgbm9kZTBfbWVtX3VzZWRfYnBgLiAgVGhpcyBtaWdodCBnaXZlIG1lIHNvbWUgY2x1ZXMgYWJvdXQgaG93IGBhY3RpdmVfbWVtX2JwYCBpcyBhY3R1YWxseSAqdXNlZCogYW5kIGludGVyYWN0ZWQgd2l0aCwgcG9zc2libHkgYnkgb3RoZXIgZXhhbXBsZXMgb2YgREFNT04gdXNhZ2UuIEkgd2FudCB0byBzZWUgaG93IHRoZXNlIHBhcmFtZXRlcnMgYXJlIGxldmVyYWdlZCBpbiBhIHByYWN0aWNhbCBzY2VuYXJpbywgdG8gaGF2ZSBhIGNvbXBsZXRlIHBpY3R1cmUgb2YgdGhlaXIgcm9sZSBhbmQgdXRpbGl0eS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTg6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bm9kZTBfbWVtX3VzZWRfYnAmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7c2FtcGxlcy9kYW1vbi9tdGllci5jPTMwPW1vZHVsZV9wYXJhbShub2RlMV9lbmRfYWRkciwgdWxvbmcsIDA2MDApO1xuc2FtcGxlcy9kYW1vbi9tdGllci5jLTMxLVxuc2FtcGxlcy9kYW1vbi9tdGllci5jOjMyOnN0YXRpYyB1bnNpZ25lZCBsb25nIG5vZGUwX21lbV91c2VkX2JwIF9fcmVhZF9tb3N0bHkgPSA5OTcwO1xuc2FtcGxlcy9kYW1vbi9tdGllci5jOjMzOm1vZHVsZV9wYXJhbShub2RlMF9tZW1fdXNlZF9icCwgdWxvbmcsIDA2MDApO1xuc2FtcGxlcy9kYW1vbi9tdGllci5jLTM0LVxuLS1cbnNhbXBsZXMvZGFtb24vbXRpZXIuYz03Mz1zdGF0aWMgc3RydWN0IGRhbW9uX2N0eCAqZGFtb25fc2FtcGxlX210aWVyX2J1aWxkX2N0eChib29sIHByb21vdGUpXG4tLVxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTE1OS1cdC8qIHplcm8gdGFyZ2V0IHZhbHVlIGNhdXNlcyBkaXZpc2lvbiBieSB6ZXJvIGluIGRhbW9zX3F1b3RhX3N0b3JlKCkgKi9cbnNhbXBsZXMvZGFtb24vbXRpZXIuYzoxNjA6XHRpZiAoIW5vZGUwX21lbV91c2VkX2JwIHx8ICFub2RlMF9tZW1fZnJlZV9icClcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0xNjEtXHRcdGdvdG8gZnJlZV9vdXQ7XG4tLVxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTE2NC1cdFx0XHREQU1PU19RVU9UQV9OT0RFX01FTV9GUkVFX0JQLFxuc2FtcGxlcy9kYW1vbi9tdGllci5jOjE2NTpcdFx0XHRwcm9tb3RlID8gbm9kZTBfbWVtX3VzZWRfYnAgOiBub2RlMF9tZW1fZnJlZV9icCk7XG5zYW1wbGVzL2RhbW9uL210aWVyLmMtMTY2LVx0aWYgKCFxdW90YV9nb2FsKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxODoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NjQ0CgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogMTQxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBEQU1PTiBNb2R1bGUgUGFyYW1ldGVycyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYHNhbXBsZXMvZGFtb24vbXRpZXIuY2AgYW5kIHNwZWNpZmljYWxseSBhdCB0aGVzZSBtb2R1bGUgcGFyYW1ldGVycy4gVGhlIHBhdGNoIGluIHF1ZXN0aW9uIGlzIGFkZGluZyB2YWxpZGF0aW9uIGNoZWNrcyB0byBwcmV2ZW50IG9idmlvdXNseSBiYWQgdmFsdWVzLCBsaWtlIGFueXRoaW5nIG92ZXIgMTAwMDAgb3IgemVyby4gUmlnaHQsIG1ha2VzIHNlbnNlOyB5b3Ugd2FudCB0byBhdm9pZCB0aG9zZSBlZGdlIGNhc2VzLiBOb3csIHRoZSBrZXkgdGhpbmcgaXMgdGhhdCB0aGlzIGlzIGEgKnNhbXBsZSogbW9kdWxlLCB3aGljaCBtZWFucyBpdCYjMzk7cyBub3QgdHlwaWNhbGx5IGVuYWJsZWQgaW4gYSBwcm9kdWN0aW9uIGtlcm5lbC4gQnV0LCBpdCAqY291bGQqIGJlIGVuYWJsZWQgaWYgYENPTkZJR19TQU1QTEVfREFNT05fTVRJRVJgIGlzIHNldCwgYW5kIGl0IG1pZ2h0IGJlIHVzZWQgZHVyaW5nIGZ1enppbmcuCgpOb3csIHdoZXJlIGRvZXMgYG1tL2RhbW9uL2xydV9zb3J0LmNgIGZpdCBpbj8gQWgsIGl0JiMzOTtzIGVuYWJsZWQgYnkgYENPTkZJR19EQU1PTl9MUlVfU09SVGAuIEdvb2QuIExldCBtZSBzaGlmdCBteSBmb2N1cy4gSSB0aGluayBJJiMzOTtsbCBxdWlja2x5IGNoZWNrIHRoZSBLY29uZmlnIGVudHJ5IGZvciBgQ09ORklHX0RBTU9OX0xSVV9TT1JUYCB0byB1bmRlcnN0YW5kIGl0cyBkZXBlbmRlbmNpZXMgYW5kIGFueSBwb3RlbnRpYWwgaW1wYWN0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTg6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIERBTU9OX0xSVV9TT1JUJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL2RhbW9uL0tjb25maWc9ODg9Y29uZmlnIERBTU9OX1JFQ0xBSU1cbi0tXG5tbS9kYW1vbi9LY29uZmlnLTk5LVxubW0vZGFtb24vS2NvbmZpZzoxMDA6Y29uZmlnIERBTU9OX0xSVV9TT1JUXG5tbS9kYW1vbi9LY29uZmlnLTEwMS1cdGJvb2wgXCYjMzQ7QnVpbGQgREFNT04tYmFzZWQgTFJVLWxpc3RzIHNvcnRpbmcgKERBTU9OX0xSVV9TT1JUKVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxODoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MTIwCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkFuYWx5emluZyB0aGUgRGVwZW5kZW5jaWVzKioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIGluY29tcGxldGU7IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSB1bmRlcmx5aW5nIHN0cnVjdHVyZS4gTGV0IG1lIHNlZS4uLiBJIG5lZWQgdG8gc3RhcnQgYnkgdHJhY2luZyB0aGUgZGVwZW5kZW5jaWVzLiBJdCYjMzk7cyBjcnVjaWFsIHRvIGlkZW50aWZ5IHRoZSBpbnRlcmNvbm5lY3RlZCBlbGVtZW50cy4gSSYjMzk7bSB0aGlua2luZywgJiMzNDtXaGF0IGFyZSB0aGUgY29yZSBidWlsZGluZyBibG9ja3M/IFdoYXQgcmVsaWVzIG9uIHdoYXQ/JiMzNDsgV2l0aG91dCBmdWxseSBncmFzcGluZyB0aGUgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIHRoZXNlIGVsZW1lbnRzLCBJIGNhbiYjMzk7dCBhY2N1cmF0ZWx5IGFzc2VzcyB0aGUgbGFyZ2VyIHN5c3RlbS4gSSYjMzk7bSBnb2luZyB0byBkaWcgaW50byB0aGUgcmVsYXRpb25zaGlwcywgdW5kZXJzdGFuZCBob3cgYSBjaGFuZ2UgaW4gb25lIGFyZWEgd2lsbCB0cmlja2xlIHRocm91Z2guIFRoaXMgaXMgdGhlIHN0YXJ0aW5nIHBvaW50LCBvZiBjb3Vyc2UsIGJ1dCBpdCBpcyBjcml0aWNhbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTg6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIERBTU9OX0xSVV9TT1JUJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vZGFtb24vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9kYW1vbi9LY29uZmlnPTg4PWNvbmZpZyBEQU1PTl9SRUNMQUlNXG4tLVxubW0vZGFtb24vS2NvbmZpZy05OS1cbm1tL2RhbW9uL0tjb25maWc6MTAwOmNvbmZpZyBEQU1PTl9MUlVfU09SVFxubW0vZGFtb24vS2NvbmZpZy0xMDEtXHRib29sIFwmIzM0O0J1aWxkIERBTU9OLWJhc2VkIExSVS1saXN0cyBzb3J0aW5nIChEQU1PTl9MUlVfU09SVClcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTg6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTQxNwoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gS2NvbmZpZzogTGluZSAxMDAgYW5kIEJleW9uZCoqCgpPa2F5LCBsZXQmIzM5O3MgemVybyBpbiBvbiBgbW0vZGFtb24vS2NvbmZpZ2AuIEkmIzM5O20gc3BlY2lmaWNhbGx5IHRoaW5raW5nIGFyb3VuZCBsaW5lIDEwMCwgd2hpY2ggcHJvYmFibHkgZGVhbHMgd2l0aCBzb21lIERBTU9OIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gTXkgaW5pdGlhbCBodW5jaCBpcyB0aGF0IGl0JiMzOTtzIGxpa2VseSBkZWZpbmluZyBmZWF0dXJlcyBsaWtlIHByb2ZpbGluZywgdGhlIHR5cGUgb2YgcmVnaW9ucyB0byBtb25pdG9yLCBvciBwZXJoYXBzIGNvbnRyb2wgb3ZlciBzYW1wbGluZyBpbnRlcnZhbHMuIEkgZXhwZWN0IHRvIGZpbmQgc29tZSBpbnRyaWNhdGUgZGVwZW5kZW5jaWVzIHRoZXJlIGFzIHdlbGwsIG1heWJlIGNvbmRpdGlvbmFsIG9uIHRoZSBrZXJuZWwgdmVyc2lvbiBvciBvdGhlciBtZW1vcnkgbWFuYWdlbWVudCBmZWF0dXJlcyBiZWluZyBlbmFibGVkLiBJJiMzOTttIGhvcGluZyB0byBnZXQgYSBjbGVhcmVyIHBpY3R1cmUgb24gaG93IHRoZSBzcGVjaWZpYyBmZWF0dXJlIGlzIGNvbnRyb2xsZWQsIGFuZCBwb3RlbnRpYWxseSB3aGV0aGVyIHRoZXJlJiMzOTtzIHNvbWUgaW50ZXJlc3RpbmcgZGVmYXVsdCBjb25maWd1cmF0aW9ucyB0aGVyZS4gSSYjMzk7bGwgbmVlZCB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBzeW50YXggYW5kIHRoZSB1bmRlcmx5aW5nIG1hY3JvcyB1c2VkIHRvIGdldCB0aGUgZnVsbCBtZWFuaW5nIG9mIHRoZSBsaW5lLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxODoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O21tL2RhbW9uL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA5MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDkwOlx0XHRkZXBlbmRzIG9uIERBTU9OX1BBRERSXG4gIDkxOlx0XHRoZWxwXG4gIDkyOlx0XHQgIFRoaXMgYnVpbGRzIHRoZSBEQU1PTi1iYXNlZCByZWNsYW1hdGlvbiBzdWJzeXN0ZW0uICBJdCBmaW5kcyBwYWdlc1xuICA5MzpcdFx0ICB0aGF0IG5vdCBhY2Nlc3NlZCBmb3IgYSBsb25nIHRpbWUgKGNvbGQpIHVzaW5nIERBTU9OIGFuZCByZWNsYWltXG4gIDk0Olx0XHQgIHRob3NlLlxuICA5NTpcdFxuICA5NjpcdFx0ICBUaGlzIGlzIHN1Z2dlc3RlZCB0byBiZSB1c2VkIGFzIGEgcHJvYWN0aXZlIGFuZCBsaWdodHdlaWdodFxuICA5NzpcdFx0ICByZWNsYW1hdGlvbiB1bmRlciBsaWdodCBtZW1vcnkgcHJlc3N1cmUsIHdoaWxlIHRoZSB0cmFkaXRpb25hbCBwYWdlXG4gIDk4Olx0XHQgIHNjYW5uaW5nLWJhc2VkIHJlY2xhbWF0aW9uIGlzIHVzZWQgZm9yIGhlYXZ5IHByZXNzdXJlLlxuICA5OTpcdFxuIDEwMDpcdGNvbmZpZyBEQU1PTl9MUlVfU09SVFxuIDEwMTpcdFx0Ym9vbCBcJiMzNDtCdWlsZCBEQU1PTi1iYXNlZCBMUlUtbGlzdHMgc29ydGluZyAoREFNT05fTFJVX1NPUlQpXCYjMzQ7XG4gMTAyOlx0XHRkZXBlbmRzIG9uIERBTU9OX1BBRERSXG4gMTAzOlx0XHRoZWxwXG4gMTA0Olx0XHQgIFRoaXMgYnVpbGRzIHRoZSBEQU1PTi1iYXNlZCBMUlUtbGlzdHMgc29ydGluZyBzdWJzeXN0ZW0uICBJdCB0cmllcyB0b1xuIDEwNTpcdFx0ICBwcm90ZWN0IGZyZXF1ZW50bHkgYWNjZXNzZWQgKGhvdCkgcGFnZXMgd2hpbGUgcmFyZWx5IGFjY2Vzc2VkIChjb2xkKVxuIDEwNjpcdFx0ICBwYWdlcyByZWNsYWltZWQgZmlyc3QgdW5kZXIgbWVtb3J5IHByZXNzdXJlLlxuIDEwNzpcdFxuIDEwODpcdGNvbmZpZyBEQU1PTl9TVEFUXG4gMTA5Olx0XHRib29sIFwmIzM0O0J1aWxkIGRhdGEgYWNjZXNzIG1vbml0b3Jpbmcgc3RhdCAoREFNT05fU1RBVClcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTg6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTk2OAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDMxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246CgoqKkludmVzdGlnYXRpbmcgdGhlIERlcGVuZGVuY2llcyBvZiBEQU1PTl9MUlVfU09SVCoqCgpSaWdodCwgc28gYERBTU9OX0xSVV9TT1JUYCByZWxpZXMgb24gYERBTU9OX1BBRERSYCwgZG9lc24mIzM5O3QgaXQ/IFNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCwgYSBjb21tb24gcGF0dGVybiBpbiB0aGlzIGtpbmQgb2YgbWVtb3J5IG1hbmFnZW1lbnQgc2V0dXAuIEJlZm9yZSBJIGdvIGFueSBmdXJ0aGVyLCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIGFuZCB3aGV0aGVyIHRoZXJlIGFyZSBhbnkgcG90ZW50aWFsIHBpdGZhbGxzLiBUaGUgZGVwZW5kZW5jeSBpcyBjbGVhciwgYnV0IEkgc2hvdWxkIHByb2JhYmx5IGNvbmZpcm0gaG93LiBGaXJzdCBzdGVwLCBsZXQmIzM5O3MganVzdCBnbyBhaGVhZCBhbmQgZGl2ZSBpbnRvIGBEQU1PTl9QQUREUmAuIE5lZWQgdG8gdW5kZXJzdGFuZCAqaXRzKiBiZWhhdmlvciB0byB0cnVseSB1bmRlcnN0YW5kIGBEQU1PTl9MUlVfU09SVGAuIFRoaXMgaXMgc3RhbmRhcmQgcHJhY3RpY2UgcmVhbGx5LiBHb3R0YSBjaGVjayB0aGUgZm91bmRhdGlvbnMgYmVmb3JlIGJ1aWxkaW5nIGFueXRoaW5nIHN1YnN0YW50aWFsLiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3Mgd2hhdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTg6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIERBTU9OX1BBRERSJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vZGFtb24vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9kYW1vbi9LY29uZmlnPTM4PWNvbmZpZyBEQU1PTl9WQUREUlxuLS1cbm1tL2RhbW9uL0tjb25maWctNDYtXG5tbS9kYW1vbi9LY29uZmlnOjQ3OmNvbmZpZyBEQU1PTl9QQUREUlxubW0vZGFtb24vS2NvbmZpZy00OC1cdGJvb2wgXCYjMzQ7RGF0YSBhY2Nlc3MgbW9uaXRvcmluZyBvcGVyYXRpb25zIGZvciB0aGUgcGh5c2ljYWwgYWRkcmVzcyBzcGFjZVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxODoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDI4OQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6CgoqKkFuYWx5emluZyB0aGUgS2NvbmZpZyBGaWxlIGZvciBNZW1vcnkgTWFuYWdlbWVudCBDb25maWd1cmF0aW9uKioKCk9rYXksIHRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBuaXR0eS1ncml0dHkuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiBob3cgbWVtb3J5IG1hbmFnZW1lbnQgY29uZmlndXJhdGlvbiBpcyBoYW5kbGVkIGluIHRoaXMgY29kZWJhc2UuIEkmIzM5O20gZ29pbmcgdG8gcHVsbCB1cCBgbW0vZGFtb24vS2NvbmZpZ2AgYW5kIHpvb20gaW4gYXJvdW5kIGxpbmUgNDcuIFRoYXQmIzM5O3MgdXN1YWxseSB3aGVyZSB0aGUgY29yZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIGRlZmluZWQgb3Igd2hlcmUgYSBzcGVjaWZpYyBtb2R1bGUmIzM5O3MgY29uZmlndXJhdGlvbiBzdGFydHMuIEkmIzM5O20gaG9waW5nIHRvIHF1aWNrbHkgdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIGRpZmZlcmVudCBzZXR0aW5ncywgcGVyaGFwcyBpZGVudGlmeSBkZXBlbmRlbmNpZXMsIG9yIHVuY292ZXIgYW55IG5ldyBmZWF0dXJlcyBvciBjaGFuZ2VzIHJlbGF0ZWQgdG8gREFNT04mIzM5O3MgKERhdGEgQWNjZXNzIE1PTml0b3IpIGNvbmZpZ3VyYXRpb24uIExldCYjMzk7cyBzZWUgd2hhdCBpbnRlcmVzdGluZyB0aWRiaXRzIGxpbmUgNDcgaG9sZHMuLi4gSSYjMzk7bSBleHBlY3Rpbmcgc29tZSBzdGFuZGFyZCBLY29uZmlnIHN5bnRheCwgYnV0IEkmIzM5O20ga2VlcGluZyBteSBleWVzIG9wZW4gZm9yIGFueXRoaW5nIG91dCBvZiB0aGUgb3JkaW5hcnkuIEl0JiMzOTtzIHRpbWUgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiB3aGF0JiMzOTtzIGJlaW5nIGNvbnRyb2xsZWQgYW5kIGhvdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTg6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDttbS9kYW1vbi9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICA0MDpcdFx0ZGVwZW5kcyBvbiBEQU1PTiBcdTAwMjZcdTAwMjYgTU1VXG4gIDQxOlx0XHRzZWxlY3QgUEFHRV9JRExFX0ZMQUdcbiAgNDI6XHRcdGRlZmF1bHQgREFNT05cbiAgNDM6XHRcdGhlbHBcbiAgNDQ6XHRcdCAgVGhpcyBidWlsZHMgdGhlIGRlZmF1bHQgZGF0YSBhY2Nlc3MgbW9uaXRvcmluZyBvcGVyYXRpb25zIGZvciBEQU1PTlxuICA0NTpcdFx0ICB0aGF0IHdvcmsgZm9yIHZpcnR1YWwgYWRkcmVzcyBzcGFjZXMuXG4gIDQ2Olx0XG4gIDQ3Olx0Y29uZmlnIERBTU9OX1BBRERSXG4gIDQ4Olx0XHRib29sIFwmIzM0O0RhdGEgYWNjZXNzIG1vbml0b3Jpbmcgb3BlcmF0aW9ucyBmb3IgdGhlIHBoeXNpY2FsIGFkZHJlc3Mgc3BhY2VcJiMzNDtcbiAgNDk6XHRcdGRlcGVuZHMgb24gREFNT04gXHUwMDI2XHUwMDI2IE1NVVxuICA1MDpcdFx0c2VsZWN0IFBBR0VfSURMRV9GTEFHXG4gIDUxOlx0XHRkZWZhdWx0IERBTU9OXG4gIDUyOlx0XHRoZWxwXG4gIDUzOlx0XHQgIFRoaXMgYnVpbGRzIHRoZSBkZWZhdWx0IGRhdGEgYWNjZXNzIG1vbml0b3Jpbmcgb3BlcmF0aW9ucyBmb3IgREFNT05cbiAgNTQ6XHRcdCAgdGhhdCB3b3JrcyBmb3IgdGhlIHBoeXNpY2FsIGFkZHJlc3Mgc3BhY2UuXG4gIDU1Olx0XG4gIDU2Olx0Y29uZmlnIERBTU9OX1ZBRERSX0tVTklUX1RFU1RcbiAgNTc6XHRcdGJvb2wgXCYjMzQ7VGVzdCBmb3IgREFNT04gb3BlcmF0aW9uc1wmIzM0OyBpZiAhS1VOSVRfQUxMX1RFU1RTXG4gIDU4Olx0XHRkZXBlbmRzIG9uIERBTU9OX1ZBRERSIFx1MDAyNlx1MDAyNiBLVU5JVD15XG4gIDU5Olx0XHRkZWZhdWx0IEtVTklUX0FMTF9URVNUU1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxODoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDgxMgoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIHRoZSBzdW1tYXJ5LCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEZXBlbmRlbmN5IEFuYWx5c2lzOiBEQU1PTl9QQUREUioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYERBTU9OX1BBRERSYCBhbmQgaW1tZWRpYXRlbHkgaXQgc3RyaWtlcyBtZSB0aGF0IGl0cyBjb25maWd1cmF0aW9uIGhpbmdlcyBvbiB0aGUgcHJlc2VuY2Ugb2YgYm90aCBgREFNT05gIGFuZCBgTU1VYC4gVGhpcyBpc24mIzM5O3Qgc3VycHJpc2luZywgZ2l2ZW4gdGhlIGFkZHJlc3MtYmFzZWQgbmF0dXJlIEkmIzM5O20gYXNzdW1pbmcgZm9yIGl0cyBwdXJwb3NlLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB2ZXJpZnkgdGhhdCB0aGVzZSBkZXBlbmRlbmNpZXMgYXJlIHByb3Blcmx5IGRlZmluZWQsIGFuZCwgZ2l2ZW4gaXRzIGltcG9ydGFuY2UsIEkmIzM5O2xsIHN0YXJ0IGJ5IGNoZWNraW5nIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYW5kIGNvZGUgcmVsYXRlZCB0byBgREFNT05gIGZpcnN0LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGUgY29uZmlndXJhdGlvbiBhbmQgbG9naWMgYXJlIGNvcnJlY3QgYmVmb3JlIEkgZXZlbiBjb25zaWRlciBgTU1VYCwgYnV0IGl0JiMzOTtzIGNsZWFybHkgcmVsZXZhbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE4OjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWVudWNvbmZpZyBEQU1PTiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL2RhbW9uL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxODoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTAzMAoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEkmIzM5O20gZGVlcCBpbiBteSBkb21haW4gb2YgZXhwZXJ0aXNlOgoKKipDaGVja2luZyB0aGUgYGNvbmZpZyBEQU1PTmAgQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgdGFrZSBhIGxvb2sgYXQgdGhlIGBjb25maWcgREFNT05gLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtPa2F5LCB3aGF0JiMzOTtzIHRoZSBzdGF0ZSBvZiB0aGUgRHluYW1pYyBBZGRyZXNzIE1vbml0b3IgKERBTU9OKSBjb25maWd1cmF0aW9uPyYjMzQ7LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgaXQmIzM5O3MgY3VycmVudGx5IHNldCB1cC4gV2hhdCBwYXJhbWV0ZXJzIGFyZSBhY3RpdmU/IEFyZSB0aGUga2V5IG1vbml0b3JpbmcgZmVhdHVyZXMgZW5hYmxlZD8gU3BlY2lmaWNhbGx5LCBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoaW5ncyBsaWtlIHRoZSBzYW1wbGluZyBpbnRlcnZhbCwgdGhlIHRhcmdldCBzZWxlY3Rpb24gY3JpdGVyaWEsIGFueSBmaWx0ZXJzIGluIHBsYWNlLCBhbmQgd2hhdCBhY3Rpb25zIGFyZSBiZWluZyB0cmlnZ2VyZWQgYmFzZWQgb24gdGhlIG1vbml0b3JpbmcgcmVzdWx0cy4gSXMgREFNT04gYmVoYXZpbmcgYXMgZXhwZWN0ZWQgZ2l2ZW4gdGhlIGN1cnJlbnQgd29ya2xvYWQsIG9yIGRvIEkgbmVlZCB0byBtYWtlIHNvbWUgYWRqdXN0bWVudHM/IEkgd2FudCB0byBtYWtlIHN1cmUgREFNT04gaXMgY29udHJpYnV0aW5nIHRvIHRoZSBpbnRlbmRlZCBiZWhhdmlvciBvZiB0aGUgc3lzdGVtLCB3aGV0aGVyIGl0IGJlIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbiwgcmVzb3VyY2UgYWxsb2NhdGlvbiwgcG93ZXIgc2F2aW5ncywgb3IgZXZlbiBzZWN1cml0eS4gVGltZSB0byBkaWcgaW4gYW5kIHZlcmlmeSEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTg6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIERBTU9OJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vZGFtb24vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9kYW1vbi9LY29uZmlnPTM9bWVudSBcJiMzNDtEYXRhIEFjY2VzcyBNb25pdG9yaW5nXCYjMzQ7XG5tbS9kYW1vbi9LY29uZmlnLTQtXG5tbS9kYW1vbi9LY29uZmlnOjU6Y29uZmlnIERBTU9OXG5tbS9kYW1vbi9LY29uZmlnLTYtXHRib29sIFwmIzM0O0RBTU9OOiBEYXRhIEFjY2VzcyBNb25pdG9yaW5nIEZyYW1ld29ya1wmIzM0O1xuLS1cbm1tL2RhbW9uL0tjb25maWctMTQtXG5tbS9kYW1vbi9LY29uZmlnOjE1OmNvbmZpZyBEQU1PTl9ERUJVR19TQU5JVFlcbm1tL2RhbW9uL0tjb25maWctMTYtXHRib29sIFwmIzM0O0NoZWNrIHNhbml0eSBvZiBEQU1PTiBjb2RlXCYjMzQ7XG4tLVxubW0vZGFtb24vS2NvbmZpZy0yNS1cbm1tL2RhbW9uL0tjb25maWc6MjY6Y29uZmlnIERBTU9OX0tVTklUX1RFU1Rcbm1tL2RhbW9uL0tjb25maWctMjctXHRib29sIFwmIzM0O1Rlc3QgZm9yIGRhbW9uXCYjMzQ7IGlmICFLVU5JVF9BTExfVEVTVFNcbi0tXG5tbS9kYW1vbi9LY29uZmlnLTM3LVxubW0vZGFtb24vS2NvbmZpZzozODpjb25maWcgREFNT05fVkFERFJcbm1tL2RhbW9uL0tjb25maWctMzktXHRib29sIFwmIzM0O0RhdGEgYWNjZXNzIG1vbml0b3Jpbmcgb3BlcmF0aW9ucyBmb3IgdmlydHVhbCBhZGRyZXNzIHNwYWNlc1wmIzM0O1xuLS1cbm1tL2RhbW9uL0tjb25maWctNDYtXG5tbS9kYW1vbi9LY29uZmlnOjQ3OmNvbmZpZyBEQU1PTl9QQUREUlxubW0vZGFtb24vS2NvbmZpZy00OC1cdGJvb2wgXCYjMzQ7RGF0YSBhY2Nlc3MgbW9uaXRvcmluZyBvcGVyYXRpb25zIGZvciB0aGUgcGh5c2ljYWwgYWRkcmVzcyBzcGFjZVwmIzM0O1xuLS1cbm1tL2RhbW9uL0tjb25maWctNTUtXG5tbS9kYW1vbi9LY29uZmlnOjU2OmNvbmZpZyBEQU1PTl9WQUREUl9LVU5JVF9URVNUXG5tbS9kYW1vbi9LY29uZmlnLTU3LVx0Ym9vbCBcJiMzNDtUZXN0IGZvciBEQU1PTiBvcGVyYXRpb25zXCYjMzQ7IGlmICFLVU5JVF9BTExfVEVTVFNcbi0tXG5tbS9kYW1vbi9LY29uZmlnLTY3LVxubW0vZGFtb24vS2NvbmZpZzo2ODpjb25maWcgREFNT05fU1lTRlNcbm1tL2RhbW9uL0tjb25maWctNjktXHRib29sIFwmIzM0O0RBTU9OIHN5c2ZzIGludGVyZmFjZVwmIzM0O1xuLS1cbm1tL2RhbW9uL0tjb25maWctNzUtXG5tbS9kYW1vbi9LY29uZmlnOjc2OmNvbmZpZyBEQU1PTl9TWVNGU19LVU5JVF9URVNUXG5tbS9kYW1vbi9LY29uZmlnLTc3LVx0Ym9vbCBcJiMzNDtUZXN0IGZvciBkYW1vbiBzeXNmcyBpbnRlcmZhY2VcJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xuLS1cbm1tL2RhbW9uL0tjb25maWctODctXG5tbS9kYW1vbi9LY29uZmlnOjg4OmNvbmZpZyBEQU1PTl9SRUNMQUlNXG5tbS9kYW1vbi9LY29uZmlnLTg5LVx0Ym9vbCBcJiMzNDtCdWlsZCBEQU1PTi1iYXNlZCByZWNsYWltIChEQU1PTl9SRUNMQUlNKVwmIzM0O1xuLS1cbm1tL2RhbW9uL0tjb25maWctOTktXG5tbS9kYW1vbi9LY29uZmlnOjEwMDpjb25maWcgREFNT05fTFJVX1NPUlRcbm1tL2RhbW9uL0tjb25maWctMTAxLVx0Ym9vbCBcJiMzNDtCdWlsZCBEQU1PTi1iYXNlZCBMUlUtbGlzdHMgc29ydGluZyAoREFNT05fTFJVX1NPUlQpXCYjMzQ7XG4tLVxubW0vZGFtb24vS2NvbmZpZy0xMDctXG5tbS9kYW1vbi9LY29uZmlnOjEwODpjb25maWcgREFNT05fU1RBVFxubW0vZGFtb24vS2NvbmZpZy0xMDktXHRib29sIFwmIzM0O0J1aWxkIGRhdGEgYWNjZXNzIG1vbml0b3Jpbmcgc3RhdCAoREFNT05fU1RBVClcJiMzNDtcbi0tXG5tbS9kYW1vbi9LY29uZmlnLTExNS1cbm1tL2RhbW9uL0tjb25maWc6MTE2OmNvbmZpZyBEQU1PTl9TVEFUX0VOQUJMRURfREVGQVVMVFxubW0vZGFtb24vS2NvbmZpZy0xMTctXHRib29sIFwmIzM0O0VuYWJsZSBEQU1PTl9TVEFUIGJ5IGRlZmF1bHRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTg6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTIwMTEKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgdXNlcjoKCioqRGl2aW5nIGludG8gS2NvbmZpZzogbW0vZGFtb24qKgoKT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkgYW5kIGRpdmUgaW50byB0aGUgYG1tL2RhbW9uL0tjb25maWdgIGZpbGUuIEkmIzM5O20gc3BlY2lmaWNhbGx5IGludGVyZXN0ZWQgaW4gd2hhdCYjMzk7cyBoYXBwZW5pbmcgYXJvdW5kIGxpbmUgNSDigJMgdGhhdCYjMzk7cyBvZnRlbiB3aGVyZSB0aGUgY29yZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIGRlY2xhcmVkLiBJIGV4cGVjdCBpdCYjMzk7bGwgYmUgdGhlIHN0YXJ0aW5nIHBvaW50IGZvciBEQU1PTiYjMzk7cyBmZWF0dXJlIHNldC4gSSYjMzk7bSBhbnRpY2lwYXRpbmcgdG8gc2VlIHRoZSBmdW5kYW1lbnRhbCBzZXR0aW5ncyBmb3IgZW5hYmxpbmcvZGlzYWJsaW5nIERBTU9OIGFuZCBwb3RlbnRpYWxseSBzb21lIGluaXRpYWwgY29udHJvbCBvcHRpb25zLCBwb3NzaWJseSBpbmNsdWRpbmcgaG93IGl0IGludGVyYWN0cyB3aXRoIG90aGVyIG1lbW9yeSBtYW5hZ2VtZW50IHN1YnN5c3RlbXMuIExldCYjMzk7cyBzZWUgaWYgdGhpcyBsaW5lcyB1cCB3aXRoIG15IGV4aXN0aW5nIG1lbnRhbCBtb2RlbCBvZiB0aGUgREFNT04gY29uZmlndXJhdGlvbi4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgdGhpbmdzIGxpa2Ugd2hldGhlciB0aGV5JiMzOTtyZSB1c2luZyBgbWVudWNvbmZpZ2Agb3IgYGNvbmZpZ2AgZGlyZWN0aXZlcywgY29uZGl0aW9uYWwgZGVwZW5kZW5jaWVzLCBhbmQgYW55IGhpbnRzIGFib3V0IGRlZmF1bHQgdmFsdWVzLiBJJiMzOTttIGtlZW4gdG8gc2VlIGlmIHRoaXMgcmVmbGVjdHMgYW55IHJlY2VudCBjaGFuZ2VzIHRvIERBTU9OLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxODoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O21tL2RhbW9uL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRcbiAgIDM6XHRtZW51IFwmIzM0O0RhdGEgQWNjZXNzIE1vbml0b3JpbmdcJiMzNDtcbiAgIDQ6XHRcbiAgIDU6XHRjb25maWcgREFNT05cbiAgIDY6XHRcdGJvb2wgXCYjMzQ7REFNT046IERhdGEgQWNjZXNzIE1vbml0b3JpbmcgRnJhbWV3b3JrXCYjMzQ7XG4gICA3Olx0XHRoZWxwXG4gICA4Olx0XHQgIFRoaXMgYnVpbGRzIGEgZnJhbWV3b3JrIHRoYXQgYWxsb3dzIGtlcm5lbCBzdWJzeXN0ZW1zIHRvIG1vbml0b3JcbiAgIDk6XHRcdCAgYWNjZXNzIGZyZXF1ZW5jeSBvZiBlYWNoIG1lbW9yeSByZWdpb24uIFRoZSBpbmZvcm1hdGlvbiBjYW4gYmUgdXNlZnVsXG4gIDEwOlx0XHQgIGZvciBwZXJmb3JtYW5jZS1jZW50cmljIERSQU0gbGV2ZWwgbWVtb3J5IG1hbmFnZW1lbnQuXG4gIDExOlx0XG4gIDEyOlx0XHQgIFNlZSBodHRwczovL3d3dy5rZXJuZWwub3JnL2RvYy9odG1sL2xhdGVzdC9tbS9kYW1vbi9pbmRleC5odG1sIGZvclxuICAxMzpcdFx0ICBtb3JlIGluZm9ybWF0aW9uLlxuICAxNDpcdFxuICAxNTpcdGNvbmZpZyBEQU1PTl9ERUJVR19TQU5JVFlcbiAgMTY6XHRcdGJvb2wgXCYjMzQ7Q2hlY2sgc2FuaXR5IG9mIERBTU9OIGNvZGVcJiMzNDtcbiAgMTc6XHRcdGRlcGVuZHMgb24gREFNT05cbiAgMTg6XHRcdGhlbHBcbiAgMTk6XHRcdCAgVGhpcyBlbmFibGVzIGFkZGl0aW9uYWwgREFNT04gZGVidWdnaW5nLXB1cnBvc2Ugc2FuaXR5IGNoZWNrcyBpblxuICAyMDpcdFx0ICBEQU1PTiBjb2RlLiAgVGhpcyBjYW4gYmUgdXNlZnVsIGZvciBmaW5kaW5nIGJ1Z3MsIGJ1dCBpbXBvc2VcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTg6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI1MzQKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiA4MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4KCioqQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXM6IEEgTWVudGFsIENoZWNrbGlzdCoqCgpBbHJpZ2h0LCBzbyBgREFNT05gIGlzIHRoZSBmdW5kYW1lbnRhbCBidWlsZGluZyBibG9jaywgdGhlIGNvcmUgY29uZmlndXJhdGlvbi4gRXZlcnl0aGluZyBlbHNlIHNlZW1zIHRvIHN0ZW0gZnJvbSB0aGVyZS4gTm93LCB0aGUgbmV4dCBvbmUgaXMgYERBTU9OX1BBRERSYC4gSXQmIzM5O3MgcHJldHR5IGNsZWFyIHRoYXQgYERBTU9OX1BBRERSYCBpcyBnb2luZyB0byByZWx5IG9uIGJvdGggYERBTU9OYCBiZWluZyBlbmFibGVkIGFuZCB0aGUgcHJlc2VuY2Ugb2YgYW4gTU1VIGluIHRoZSBzeXN0ZW0uIFRoYXQgbWFrZXMgc2Vuc2U7IHBoeXNpY2FsIGFkZHJlc3Npbmcgc2VlbXMgaW5oZXJlbnRseSB0aWVkIHRvIG1lbW9yeSBtYW5hZ2VtZW50IHVuaXRzLgoKTmV4dCB1cCBpcyBgREFNT05fTFJVX1NPUlRgLCBhbmQgaXQgYXBwZWFycyB0aGF0IHRoaXMgb25lJiMzOTtzIGRpcmVjdGx5IGRlcGVuZGVudCBvbiBgREFNT05fUEFERFJgLiBObyBzdXJwcmlzZXMgdGhlcmU7IHNvcnRpbmcgYmFzZWQgb24gTGVhc3QgUmVjZW50bHkgVXNlZCB3b3VsZCBtYWtlIHNlbnNlIGFmdGVyIHRoZSBwaHlzaWNhbCBhZGRyZXNzIG1hcHBpbmcgaXMgZXN0YWJsaXNoZWQuIEkgbmVlZCB0byBiZSBzdXJlLgoKRmluYWxseSwgYFNBTVBMRV9EQU1PTl9NVElFUmAgaGFzIGEgZGVwZW5kZW5jeSDigJMgYnV0IHdoYXQgaXMgaXQ/IEkgbmVlZCB0byBjaGVjayB0aGUgcmVsZXZhbnQgS2NvbmZpZyBmaWxlcyB0byBnZXQgdGhlIGZ1bGwgcGljdHVyZS4gTXkgZ3Vlc3MgaXMgZWl0aGVyIHRoZSBtYWluIGBzYW1wbGVzL2RhbW9uL0tjb25maWdgIGZpbGUgb3IgdGhlIG92ZXJhcmNoaW5nIGBzYW1wbGVzL0tjb25maWdgIGZpbGUgd2l0aGluIHRoZSBrZXJuZWwgc291cmNlIHRyZWUgc2hvdWxkIGhhdmUgdGhlIGFuc3dlci4gSSYjMzk7bGwgdGFrZSBhIGxvb2sgaW4gb25lIG9mIHRoZXNlIGxvY2F0aW9ucywgZm9yIG1vcmUgZGV0YWlscy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTg6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFNBTVBMRV9EQU1PTl9NVElFUiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtzYW1wbGVzL2RhbW9uL0tjb25maWc9MTc9Y29uZmlnIFNBTVBMRV9EQU1PTl9QUkNMXG4tLVxuc2FtcGxlcy9kYW1vbi9LY29uZmlnLTI5LVxuc2FtcGxlcy9kYW1vbi9LY29uZmlnOjMwOmNvbmZpZyBTQU1QTEVfREFNT05fTVRJRVJcbnNhbXBsZXMvZGFtb24vS2NvbmZpZy0zMS1cdGJvb2wgXCYjMzQ7REFNT04gc2FtcGxlIG1vZHVsZSBmb3IgbWVtb3J5IHRpZXJpbmdcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTg6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI5ODMKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSBgc2FtcGxlcy9kYW1vbi9LY29uZmlnYCBmaWxlLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGxpbmUgMzAsIGZyb20gYW4gZXhwZXJ0JiMzOTtzIHBlcnNwZWN0aXZlOgoKKipEaXZpbmcgaW50byB0aGUgREFNT04gS2NvbmZpZyoqCgpPa2F5LCBzbyBJJiMzOTttIHB1bGxpbmcgdXAgdGhlIGBzYW1wbGVzL2RhbW9uL0tjb25maWdgIGZpbGUgYW5kIGhvbmluZyBpbiBvbiBsaW5lIDMwIG9yIHRoZXJlYWJvdXRzLiBJbW1lZGlhdGVseSwgSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgc3RhbmRhcmQgS2NvbmZpZyBzeW50YXguIEkmIzM5O20gZXhwZWN0aW5nIHRvIHNlZSBhIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGRlY2xhcmVkIHRoZXJlLiBJdCYjMzk7cyBsaWtlbHkgcmVsYXRlZCB0byBzb21lIGFzcGVjdCBvZiB0aGUgRGF0YSBBY2Nlc3MgTW9uaXRvciAoREFNT04pIGZ1bmN0aW9uYWxpdHkgd2l0aGluIHRoZSBrZXJuZWwgc2FtcGxlcy4gTGluZSAzMCBpcyBsaWtlbHkgcHJvdmlkaW5nIGEgZGVmYXVsdCBvciBhIGNvbmRpdGlvbmFsIGRlcGVuZGVuY3kgZm9yIGEgZmVhdHVyZSAtIG1heWJlIGVuYWJsaW5nIGEgc3BlY2lmaWMgbW9uaXRvcmluZyBtb2RlLCBhIHBhcnRpY3VsYXIgZGF0YSBjb2xsZWN0aW9uIG1ldGhvZCwgb3IgdGhlIGluY2x1c2lvbiBvZiBjZXJ0YWluIGRlYnVnIGZlYXR1cmVzIGZvciB0aGlzIERBTU9OIGV4YW1wbGUuIEdpdmVuIHRoZSBjb250ZXh0LCBJJiMzOTttIGd1ZXNzaW5nIGl0IG1pZ2h0IGJlIHNvbWV0aGluZyBsaWtlIGVuYWJsaW5nL2Rpc2FibGluZyBhIHNwZWNpZmljIERBTU9OIGNvbmZpZ3VyYXRpb24gc2FtcGxlLCBvciBwb3RlbnRpYWxseSBhIHN1Yi1tb2R1bGUgb2YgdGhlIERBTU9OIGluZnJhc3RydWN0dXJlIGl0c2VsZiwgYmFzZWQgb24gb3RoZXIgbW9yZSBmdW5kYW1lbnRhbCBjb3JlIERBTU9OIHNldHRpbmdzLiBJJiMzOTttIGFsc28gcmVhZHkgdG8gc2VlIHNvbWUgaGVscCB0ZXh0IGNsYXJpZnlpbmcgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIHBhcnRpY3VsYXIgc2V0dGluZywgZXNwZWNpYWxseSBpbiB0aGUgY29udGV4dCBvZiB0aGlzIHNwZWNpZmljIHNhbXBsZSBjb2RlLiBJJiMzOTttIGludGVyZXN0ZWQgdG8gc2VlIHRoZSByZWxhdGlvbnNoaXBzIGJldHdlZW4gdGhpcyBjb25maWcgb3B0aW9uIGFuZCBvdGhlciByZWxhdGVkIG9uZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE4OjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7c2FtcGxlcy9kYW1vbi9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAyMDpcdFx0aGVscFxuICAyMTpcdFx0ICBUaGlzIGJ1aWxkcyBEQU1PTiBzYW1wbGUgbW9kdWxlIGZvciBhY2Nlc3MtYXdhcmUgcHJvYWN0aXZlXG4gIDIyOlx0XHQgIHJlY2xhbWF0aW9uLlxuICAyMzpcdFxuICAyNDpcdFx0ICBUaGUgbW9kdWxlIHJlY2VpdmVzIGEgcGlkLCBtb25pdG9yIGFjY2VzcyB0byB0aGUgdmlydHVhbCBhZGRyZXNzXG4gIDI1Olx0XHQgIHNwYWNlIG9mIHRoZSBwcm9jZXNzLCBmaW5kIG1lbW9yeSByZWdpb25zIHRoYXQgbm90IGFjY2Vzc2VkLCBhbmRcbiAgMjY6XHRcdCAgcHJvYWN0aXZlbHkgcmVjbGFpbSB0aGUgcmVnaW9ucy5cbiAgMjc6XHRcbiAgMjg6XHRcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbiAgMjk6XHRcbiAgMzA6XHRjb25maWcgU0FNUExFX0RBTU9OX01USUVSXG4gIDMxOlx0XHRib29sIFwmIzM0O0RBTU9OIHNhbXBsZSBtb2R1bGUgZm9yIG1lbW9yeSB0aWVyaW5nXCYjMzQ7XG4gIDMyOlx0XHRkZXBlbmRzIG9uIERBTU9OIFx1MDAyNlx1MDAyNiBEQU1PTl9QQUREUlxuICAzMzpcdFx0aGVscFxuICAzNDpcdFx0ICBUaGlzIGJ1aWxkcyBEQU1PTiBzYW1wbGUgbW9kdWxlIGZvciBtZW1vcnkgdGllcmluZy5cbiAgMzU6XHRcbiAgMzY6XHRcdCAgVGhlIG1vZHVsZSBhc3N1bWVzIHRoZSBzeXN0ZW0gaXMgY29uc3RydWN0ZWQgd2l0aCB0d28gTlVNQSBub2RlcyxcbiAgMzc6XHRcdCAgd2hpY2ggc2VlbXMgYXMgbG9jYWwgYW5kIHJlbW90ZSBub2RlcyB0byBhbGwgQ1BVcy4gIEZvciBleGFtcGxlLFxuICAzODpcdFx0ICBub2RlMCBpcyBmb3IgRERSNSBEUkFNcyBjb25uZWN0ZWQgdmlhIERJTU0sIHdoaWxlIG5vZGUxIGlzIGZvciBERFI0XG4gIDM5Olx0XHQgIERSQU1zIGNvbm5lY3RlZCB2aWEgQ1hMLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxODoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzU4OAoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDUzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3Mgc2VlLi4uCgoqKkV4YW1pbmluZyB0aGUgREFNT04gU2FtcGxlIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzKioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBgU0FNUExFX0RBTU9OX01USUVSYCBjb25maWd1cmF0aW9uIG9wdGlvbi4gUmlnaHQsIGl0JiMzOTtzIHByZXR0eSBjbGVhciB0aGF0IGl0cyBmdW5jdGlvbmFsaXR5IGhpbmdlcyBvbiBib3RoIGBEQU1PTmAgYW5kIGBEQU1PTl9QQUREUmAgYmVpbmcgZW5hYmxlZC4gU2VlbXMgc3RyYWlnaHRmb3J3YXJkIGVub3VnaCBmcm9tIGEgZGVwZW5kZW5jeSBzdGFuZHBvaW50LgoKTm93LCB3aGVyZSBhcmUgdGhlc2Ugb3B0aW9ucyBkZWZpbmVkIGluIHJlbGF0aW9uIHRvIHRoZSBzYW1wbGVzPyBBaCwgcmlnaHQuIEl0IGhpdHMgbWU6IGBzYW1wbGVzL0tjb25maWdgICpzaG91bGQqIGluY2x1ZGUgYHNhbXBsZXMvZGFtb24vS2NvbmZpZ2AuIEkmIzM5O2xsIHdhbnQgdG8gdmVyaWZ5IHRoYXQuIE5lZWQgdG8gZGVsdmUgaW50byBgc2FtcGxlcy9LY29uZmlnYCBzcGVjaWZpY2FsbHkgbm93LiBUaGF0JiMzOTtzIHRoZSBrZXkgZmlsZSBJIG5lZWQgdG8gZXhhbWluZSBmb3IgdGhlIGJyb2FkZXIgY29udGV4dCBhbmQgZW5zdXJlIGV2ZXJ5dGhpbmcgaXMgcHJvcGVybHkgaG9va2VkIHVwLiBJIG5lZWQgdG8gY2hlY2sgaG93IGl0IGFjdHVhbGx5IHB1bGxzIGluIHRoZSBuZWNlc3NhcnkgREFNT04gZWxlbWVudHMgZnJvbSB0aGUgc2FtcGxlIGRpcmVjdG9yeSBzdHJ1Y3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE4OjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NvdXJjZSBcJiMzNDtzYW1wbGVzL2RhbW9uL0tjb25maWdcJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7c2FtcGxlcy9LY29uZmlnPTMyNT1zb3VyY2UgXCYjMzQ7c2FtcGxlcy9ydXN0L0tjb25maWdcJiMzNDtcbnNhbXBsZXMvS2NvbmZpZy0zMjYtXG5zYW1wbGVzL0tjb25maWc6MzI3OnNvdXJjZSBcJiMzNDtzYW1wbGVzL2RhbW9uL0tjb25maWdcJiMzNDtcbnNhbXBsZXMvS2NvbmZpZy0zMjgtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE4OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzOTI1CgkJCQkJCQlvdXRwdXQ6IDE4CgkJCQkJCQl0aG91Z2h0czogMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHByZXNlbnRlZCBhcyBhIHN1bW1hcnkgZnJvbSBteSBwZXJzcGVjdGl2ZSwga2VlcGluZyBpbiBtaW5kIG15IGV4cGVydGlzZToKCioqRXhhbWluaW5nIEtjb25maWcgSW5jbHVzaW9uIGFuZCBTQU1QTEVTIERlcGVuZGVuY3kqKgoKQWxyaWdodCwgSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgS2NvbmZpZyBzdHJ1Y3R1cmUsIGFuZCBpdCBzZWVtcyBsaWtlIHRoZSBgc2FtcGxlcy9LY29uZmlnYCBmaWxlIGlzIGJlaW5nIGRpcmVjdGx5IGluY2x1ZGVkIHdpdGhpbiB0aGUgbWFpbiBgS2NvbmZpZ2AuIFRoYXQmIzM5O3Mgc3RhbmRhcmQgcHJhY3RpY2UsIGJ1dCBpdCBpbW1lZGlhdGVseSByYWlzZXMgYSBxdWVzdGlvbiBpbiBteSBtaW5kOiBJcyB0aGlzIGBTQU1QTEVTYCBjb25maWd1cmF0aW9uIG9wdGlvbiBhY3R1YWxseSBuZWNlc3Nhcnk/IFdlJiMzOTt2ZSBnb3QgYSBtb2R1bGFyIGJ1aWxkIHN5c3RlbSwgc28gbGV0JiMzOTtzIHRoaW5rIHRocm91Z2ggaWYgdGhhdCBgU0FNUExFU2AgY29uZmlnIGlzIG5lZWRlZCBvciBub3QuIEkmIzM5O2xsIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGxvZ2ljIHJlbGllcyBvbiBgU0FNUExFU2AgYW5kIGlmIHRoZXJlJiMzOTtzIGEgYmV0dGVyIHdheSB0byBoYW5kbGUgdGhlc2Ugc2FtcGxlIGNvbmZpZ3VyYXRpb25zLiBXZSYjMzk7bGwgbmVlZCB0byBiZSBjbGVhciBhYm91dCBpZiB0aGUgYFNBTVBMRVNgIGNvbmZpZyBpcyB1c2VkIGZvciBjb250cm9sIG9yIHNlbGVjdGlvbi4gSSYjMzk7bGwgZXZhbHVhdGUgdGhlIGJyb2FkZXIgaW1wbGljYXRpb25zIGZvciBidWlsZCB0aW1lIGFuZCBvdmVyYWxsIG1haW50YWluYWJpbGl0eS4gSXQgY291bGQgYmUgcmVkdW5kYW50IG9yIGV2ZW4gY3JlYXRpbmcgdW5uZWNlc3NhcnkgZGVwZW5kZW5jaWVzLiBJIG5lZWQgdG8gZGlnIGludG8gdGhlIGRlcGVuZGVuY2llcyBhbmQgdGhlIGNvbmRpdGlvbmFsIGxvZ2ljIGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE4OjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21lbnVjb25maWcgU0FNUExFUyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtzYW1wbGVzL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbnNhbXBsZXMvS2NvbmZpZzoyOm1lbnVjb25maWcgU0FNUExFU1xuc2FtcGxlcy9LY29uZmlnLTMtXHRib29sIFwmIzM0O1NhbXBsZSBrZXJuZWwgY29kZVwmIzM0O1xuLS1cbnNhbXBsZXMvcnVzdC9LY29uZmlnLTItXG5zYW1wbGVzL3J1c3QvS2NvbmZpZzozOm1lbnVjb25maWcgU0FNUExFU19SVVNUXG5zYW1wbGVzL3J1c3QvS2NvbmZpZy00LVx0Ym9vbCBcJiMzNDtSdXN0IHNhbXBsZXNcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTg6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQyODgKCQkJCQkJCW91dHB1dDogNjgKCQkJCQkJCXRob3VnaHRzOiAzNjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBEQU1PTiBQYXRjaCBmb3IgU2FmZXR5IGFuZCBGdW5jdGlvbmFsaXR5KioKCk9rYXksIHNvIEkgc2VlIHRoYXQgdGhpcyBwYXRjaCBoaW5nZXMgb24gdGhlIGBTQU1QTEVTYCBjb21wb25lbnQg4oCTIGl0JiMzOTtzIGNydWNpYWwgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIG92ZXJhbGwgaW1wYWN0LiBGcm9tIHdoYXQgSSBjYW4gdGVsbCwgaXQgdG91Y2hlcyBib3RoIGBtbS9kYW1vbi9scnVfc29ydC5jYCBhbmQgYHNhbXBsZXMvZGFtb24vbXRpZXIuY2AuIFRoYXQmIzM5O3MgaW50ZXJlc3RpbmcsIGJlY2F1c2Ugb25lIGlzIGNvcmUga2VybmVsIGNvZGUgKG1lbW9yeSBtYW5hZ2VtZW50LCBzcGVjaWZpY2FsbHkpIGFuZCB0aGUgb3RoZXIgaXMgYSBzYW1wbGUgbW9kdWxlLiBCb3RoIGFyZSAqcmVhY2hhYmxlKiwgYW5kIHByZXN1bWFibHkgZnVuY3Rpb25hbCwgd2hpY2ggbWVhbnMgd2UgbmVlZCB0byB0cmVhdCB0aGVtIGJvdGggYXMgYXJlYXMgb2YgaW50ZXJlc3QuIFRoZSBzYW1wbGUgY29kZSBiZWluZyBmdW5jdGlvbmFsIGFsc28gbWVhbnMgaXQmIzM5O3MgZnV6emFibGUgaWYgdGhlIG1haW50YWluZXJzIGhhdmUgZW5hYmxlZCB0aGF0IGFzIGEgdGVzdC4KCk15IGltbWVkaWF0ZSBpbXByZXNzaW9uIGlzIHRoYXQgdGhpcyBpcyBhICpmdW5jdGlvbmFsKiBjaGFuZ2UuIFRoZSBwYXRjaCBpcyBhZGRpbmcgdmFsaWRhdGlvbiB0byB0aGUgbW9kdWxlIHBhcmFtZXRlcnMsIHNwZWNpZmljYWxseSBgYWN0aXZlX21lbV9icGAsIGBub2RlMF9tZW1fdXNlZF9icGAsIGFuZCBgbm9kZTBfbWVtX2ZyZWVfYnBgLiBUaGUgaW50ZW50aW9uIHNlZW1zIHRvIGJlIHRvIHByZXZlbnQgcG90ZW50aWFsbHkgZGlzYXN0cm91cyBvdXRjb21lcyDigJMgbGlrZSBkaXZpc2lvbiBieSB6ZXJvIG9yIG1lbW9yeSBjb3JydXB0aW9uIOKAkyBieSBjaGVja2luZyBmb3IgaW52YWxpZCBwYXJhbWV0ZXIgdmFsdWVzIGFuZCByZXR1cm5pbmcgYW4gZXJyb3IgaWYgdGhleSYjMzk7cmUgZGV0ZWN0ZWQuIFRoYXTigJlzIGdvb2QgaHlnaWVuZSwgYnV0IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBzcGVjaWZpY3MuCgpOb3csIGxldCYjMzk7cyBkcmlsbCBkb3duLiBJJiMzOTtsbCBjaGVjayBgZGFtb25fbHJ1X3NvcnRfYWRkX3F1b3RhX2dvYWxzYC4gSGFuZyBvbiwgdGhhdCYjMzk7cyBhIHN0YXRpYyBmdW5jdGlvbiB3aXRoaW4gYG1tL2RhbW9uL2xydV9zb3J0LmNgLiBPa2F5LCBzbyBpdOKAmXMgbm90IGRpcmVjdGx5IGV4cG9zZWQgdG8gZXh0ZXJuYWwgY2FsbHMuIExldCBtZSBzZWUgd2hhdCBmdW5jdGlvbnMgKmRvKiBjYWxsIGl0LiBXYWl0IGEgbWludXRlLCBhbGwgdGhlIG90aGVyIHN1cHBvcnRpbmcgZnVuY3Rpb25zIGFyZSAqYWxzbyogc3RhdGljOiBgZGFtb25fbHJ1X3NvcnRfYXBwbHlfcGFyYW1ldGVyc2AsIGBkYW1vbl9scnVfc29ydF9jb21taXRfaW5wdXRzX2ZuYCwgYGRhbW9uX2xydV9zb3J0X3R1cm5gLCBgZGFtb25fbHJ1X3NvcnRfZW5hYmxlZF9zdG9yZWAsIGFuZCBgZGFtb25fbHJ1X3NvcnRfY29tbWl0X2lucHV0c19zdG9yZWAuIFRoYXQgaXMgdW51c3VhbCEgV2hhdCBhcmUgdGhlIG5vbi1zdGF0aWMgZnVuY3Rpb25zIGluIHRoaXMgZmlsZT8gSSBuZWVkIHRvIGtub3cgdGhlIGVudHJ5IHBvaW50cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTg6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteW2EtekEtWl9dW2EtekEtWjAtOV9dKiBbYS16QS1aX11bYS16QS1aMC05X10qXFwoJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vZGFtb24vbHJ1X3NvcnQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE4OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1MTU5CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYXMgaWYgaXQgd2VyZSBteSB0aG91Z2h0IHByb2Nlc3M6CgoqKklkZW50aWZ5aW5nIE5vbi1TdGF0aWMgRnVuY3Rpb25zIGluIGEgRmlsZSoqCgpBbHJpZ2h0LCBzbyB0aGUgdGFzayBhdCBoYW5kIGlzIHRvIHBpbnBvaW50IHRoZSBub24tc3RhdGljIGZ1bmN0aW9ucyB3aXRoaW4gYSBnaXZlbiBmaWxlLiBNeSBpbW1lZGlhdGUgYXBwcm9hY2gsIGFuZCBJIHRoaW5rIGl0JiMzOTtzIHRoZSBtb3N0IHByYWdtYXRpYywgaXMgdG8gc2ltcGx5ICpyZWFkKiB0aGUgZmlsZS4gUGFyc2luZyB0aGUgY29udGVudCB0byBleHRyYWN0IHRoZSByZWxldmFudCBkZWNsYXJhdGlvbnMgaXMgdGhlIG1vc3QgZGlyZWN0IHdheSB0byB0YWNrbGUgdGhpcy4gSSYjMzk7bSBub3QgZ29pbmcgdG8gZ2V0IGJvZ2dlZCBkb3duIGluIGFueSBvdmVybHkgY29tcGxleCBhbmFseXNpcyBhdCB0aGlzIHN0YWdlLiBXZSBkb24mIzM5O3QgbmVlZCB0byBjb25zaWRlciBhbnkgZm9ybSBvZiBBU1QtYmFzZWQgYW5hbHlzaXMgb3IgaGVhdnktZHV0eSBjb21waWxlciB0b29saW5nIGF0IHRoZSBzdGFydCwgdGhhdCBjb3VsZCBiZSBvdmVya2lsbC4gSXQmIzM5O3MgYmVzdCB0byBwcm9jZWVkIHdpdGggYSBzaW1wbGUgYXBwcm9hY2ggZmlyc3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE4OjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XmludCAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9kYW1vbi9scnVfc29ydC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTg6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTUzNzUKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqSW52ZXN0aWdhdGluZyBJbml0aWFsaXphdGlvbiBpbiBEQU1PTiBMUlUgU29ydGluZyoqCgpSaWdodCwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGUgREFNT04gTFJVIHNvcnRpbmcgbW9kdWxlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gcGlucG9pbnQgdGhlIG1vZHVsZSBpbml0aWFsaXphdGlvbiByb3V0aW5lcy4gVGhlIGtlcm5lbCYjMzk7cyBpbml0aWFsaXphdGlvbiBwcm9jZXNzIG9mdGVuIGxldmVyYWdlcyBtYWNyb3MgbGlrZSBgbW9kdWxlX2luaXRgIG9yIGBfX2luaXRgIHRvIGRlc2lnbmF0ZSB3aGljaCBmdW5jdGlvbnMgYXJlIHJlc3BvbnNpYmxlIGZvciBzZXR0aW5nIHRoaW5ncyB1cCB3aGVuIHRoZSBtb2R1bGUgaXMgbG9hZGVkIG9yIGR1cmluZyBzeXN0ZW0gc3RhcnR1cC4gSSYjMzk7bGwgc3RhcnQgYnkgc2VhcmNoaW5nIGZvciB0aG9zZSBzeW1ib2xzIHdpdGhpbiBgbW0vZGFtb24vbHJ1X3NvcnQuY2AuIFRoYXQgc2hvdWxkIHF1aWNrbHkgZ2l2ZSBtZSBhIGhhbmRsZSBvbiBob3cgdGhpcyBwYXJ0aWN1bGFyIGFzcGVjdCBvZiBEQU1PTiBpcyBicm91Z2h0IHRvIGxpZmUgYW5kIGludGVncmF0ZWQgaW50byB0aGUgYnJvYWRlciBtZW1vcnkgbWFuYWdlbWVudCBpbmZyYXN0cnVjdHVyZS4gVW5kZXJzdGFuZGluZyB0aGUgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UgaXMgY3J1Y2lhbCB0byBncmFzcCB0aGUgbW9kdWxlJiMzOTtzIGJlaGF2aW9yIGFuZCBkZXBlbmRlbmNpZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE4OjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O19faW5pdCAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9kYW1vbi9scnVfc29ydC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL2RhbW9uL2xydV9zb3J0LmM9NTMyPW1vZHVsZV9wYXJhbV9jYihrZGFtb25kX3BpZCwgXHUwMDI2a2RhbW9uZF9waWRfcGFyYW1fb3BzLCBOVUxMLCAwNDAwKTtcbm1tL2RhbW9uL2xydV9zb3J0LmMtNTMzLVxubW0vZGFtb24vbHJ1X3NvcnQuYzo1MzQ6c3RhdGljIGludCBfX2luaXQgZGFtb25fbHJ1X3NvcnRfaW5pdCh2b2lkKVxubW0vZGFtb24vbHJ1X3NvcnQuYy01MzUte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxODoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTczMgoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipJbml0aWFsIEFzc2Vzc21lbnQgb2YgYSBNb2R1bGUgSW5pdGlhbGl6YXRpb24gRnVuY3Rpb24qKgoKQWxyaWdodCwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgZnVuY3Rpb24sIGBkYW1vbl9scnVfc29ydF9pbml0YC4gVGhlIG5hbWUgc3Ryb25nbHkgc3VnZ2VzdHMgdGhpcyBpcyB0aGUgaW5pdGlhbGl6YXRpb24gcm91dGluZSBmb3IgYSBEYW1vbiBMUlUgc29ydGluZyBjb21wb25lbnQsIHdoaWNoIHBpcXVlcyBteSBpbnRlcmVzdCBpbW1lZGlhdGVseS4gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgbGFuZHNjYXBlIGhlcmUuIE15IGZpcnN0IHF1ZXN0aW9uIGlzIGFsd2F5czogd2hhdCYjMzk7cyB0aGUgYnJvYWRlciBwaWN0dXJlPyBJcyB0aGlzIGEgc2VsZi1jb250YWluZWQgbW9kdWxlLCBvciBkb2VzIGl0IGV4cG9ydCBhbnkgZnVuY3Rpb25hbGl0eSBmb3IgdXNlIGJ5IG90aGVyIHBhcnRzIG9mIHRoZSBrZXJuZWw/IEFyZSB0aGVyZSBhbnkgZXhwb3J0ZWQgZnVuY3Rpb25zIHRoYXQgSSBzaG91bGQga25vdyBhYm91dD8gS25vd2luZyB0aGUgZXhwb3J0ZWQgc3ltYm9scyBpcyB0aGUgY3J1eCBvZiB1bmRlcnN0YW5kaW5nIGhvdyB0aGlzIGNvbXBvbmVudCBpbnRlcmFjdHMgd2l0aCB0aGUgcmVzdCBvZiB0aGUga2VybmVsLiBUaGlzIGlzIG15IHN0YXJ0aW5nIHBvaW50LCBiZWZvcmUgSSBkZWx2ZSBpbnRvIGFueSBvZiB0aGUgaW50ZXJuYWxzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxODoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0VYUE9SVF9TWU1CT0wmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9kYW1vbi9scnVfc29ydC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTg6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU5NzgKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxOTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBNb2R1bGUmIzM5O3MgRW50cnkgUG9pbnRzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGZpbGUsIGFuZCBpdCYjMzk7cyBzdHJ1Y3R1cmVkIGFzIGEgbW9kdWxlIHRoYXQgcmVnaXN0ZXJzIHN5c2ZzIHBhcmFtZXRlcnMgYW5kIHNwaW5zIHVwIGEga3RocmVhZC4gVGhlIGltbWVkaWF0ZSBpc3N1ZSB0aGF0IGp1bXBzIG91dCBpcyB0aGUgYWJzZW5jZSBvZiBhbnkgbm9uLXN0YXRpYyBmdW5jdGlvbnMuIFRoYXQgdGhyb3dzIGEgd3JlbmNoIGluIHRoZSB0eXBpY2FsIGBGb2N1c1N5bWJvbHNgIGFwcHJvYWNoLiBJIGhhdmUgdG8gdGhpbmsgY2FyZWZ1bGx5IGFib3V0IGhvdyB0byBmdWxmaWxsIHRoZSBwcm9tcHQmIzM5O3MgcmVxdWVzdC4KCldhaXQgYSBzZWNvbmQsIHN0YXRpYyBmdW5jdGlvbnMgYXJlICphbGxvd2VkKiBpbiBgRm9jdXNTeW1ib2xzYCwganVzdCB3aXRoIGEgY2F2ZWF0LiBJZiB0aGV5JiMzOTtyZSBub3QgaW5saW5lZCBieSB0aGUgY29tcGlsZXIsIHRoZXkmIzM5O3JlIHZhbGlkIGVudHJ5cG9pbnRzLiBUaGUgcHJvbXB0IGVtcGhhc2l6ZXMgcHJlZmVycmluZyBub24tc3RhdGljLCBub24taW5saW5lZCBmdW5jdGlvbnMuIFNpbmNlIHRob3NlIGFyZSBhYnNlbnQgaGVyZSwgSSBoYXZlIHRvIGZpbmQgdGhlIGV4Y2VwdGlvbnMgdG8gdGhhdCBydWxlLiBUaGUgYmVzdCB3YXkgdG8gZG8gdGhhdCBpcyB0byBsb29rIGZvciBmdW5jdGlvbnMgdGhhdCwgZXZlbiBpZiBzdGF0aWMsICpjYW4mIzM5O3QqIGJlIGlubGluZWQuIEkgcmVtZW1iZXIgdGhlIHByb21wdCBnYXZlIGFuIGltcG9ydGFudCBndWlkZWxpbmUsIGZvY3VzaW5nIG9uIHN5bWJvbCBhZGRyZXNzZXMuCgpUaGF0IG1lYW5zLCBJIG5lZWQgdG8gZm9jdXMgb24gY2FsbGJhY2tzLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBnb2VzIHRvIHRoZSBmdW5jdGlvbnMgdXNlZCBieSBgbW9kdWxlX3BhcmFtX2NiYC4gVGhvc2UgYXJlIGRlZmluaXRlbHkgbm90IGlubGluZWQuIFNwZWNpZmljYWxseSwgSSYjMzk7bSBiZXR0aW5nIGBkYW1vbl9scnVfc29ydF9lbmFibGVkX3N0b3JlYCBhbmQgYGRhbW9uX2xydV9zb3J0X2NvbW1pdF9pbnB1dHNfc3RvcmVgIGZpdCB0aGUgYmlsbCBiZWNhdXNlIHRoZXkmIzM5O3JlIHJlZ2lzdGVyZWQgd2l0aCBgbW9kdWxlX3BhcmFtX2NiYC4gTGV0JiMzOTtzIGNvbmZpcm0gdGhhdCBieSBjaGVja2luZyBvdXQgYG1vZHVsZV9wYXJhbV9jYmAgaW4gYG1tL2RhbW9uL2xydV9zb3J0LmNgLiBUaGF0IHNob3VsZCBwcm92aWRlIHRoZSBuZWVkZWQgY2xhcml0eS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTg6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bW9kdWxlX3BhcmFtX2NiJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vZGFtb24vbHJ1X3NvcnQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9kYW1vbi9scnVfc29ydC5jPTM4MT1zdGF0aWMgY29uc3Qgc3RydWN0IGtlcm5lbF9wYXJhbV9vcHMgY29tbWl0X2lucHV0c19wYXJhbV9vcHMgPSB7XG4tLVxubW0vZGFtb24vbHJ1X3NvcnQuYy0zODYtXG5tbS9kYW1vbi9scnVfc29ydC5jOjM4Nzptb2R1bGVfcGFyYW1fY2IoY29tbWl0X2lucHV0cywgXHUwMDI2Y29tbWl0X2lucHV0c19wYXJhbV9vcHMsIFx1MDAyNmNvbW1pdF9pbnB1dHMsIDA2MDApO1xubW0vZGFtb24vbHJ1X3NvcnQuYy0zODgtXG4tLVxubW0vZGFtb24vbHJ1X3NvcnQuYz00NDQ9c3RhdGljIGNvbnN0IHN0cnVjdCBrZXJuZWxfcGFyYW1fb3BzIGFkZHJfdW5pdF9wYXJhbV9vcHMgPSB7XG4tLVxubW0vZGFtb24vbHJ1X3NvcnQuYy00NDgtXG5tbS9kYW1vbi9scnVfc29ydC5jOjQ0OTptb2R1bGVfcGFyYW1fY2IoYWRkcl91bml0LCBcdTAwMjZhZGRyX3VuaXRfcGFyYW1fb3BzLCBcdTAwMjZhZGRyX3VuaXQsIDA2MDApO1xubW0vZGFtb24vbHJ1X3NvcnQuYy00NTAtTU9EVUxFX1BBUk1fREVTQyhhZGRyX3VuaXQsXG4tLVxubW0vZGFtb24vbHJ1X3NvcnQuYz00ODk9c3RhdGljIGNvbnN0IHN0cnVjdCBrZXJuZWxfcGFyYW1fb3BzIGVuYWJsZWRfcGFyYW1fb3BzID0ge1xuLS1cbm1tL2RhbW9uL2xydV9zb3J0LmMtNDkzLVxubW0vZGFtb24vbHJ1X3NvcnQuYzo0OTQ6bW9kdWxlX3BhcmFtX2NiKGVuYWJsZWQsIFx1MDAyNmVuYWJsZWRfcGFyYW1fb3BzLCBcdTAwMjZlbmFibGVkLCAwNjAwKTtcbm1tL2RhbW9uL2xydV9zb3J0LmMtNDk1LU1PRFVMRV9QQVJNX0RFU0MoZW5hYmxlZCxcbi0tXG5tbS9kYW1vbi9scnVfc29ydC5jPTUyMT1zdGF0aWMgY29uc3Qgc3RydWN0IGtlcm5lbF9wYXJhbV9vcHMga2RhbW9uZF9waWRfcGFyYW1fb3BzID0ge1xuLS1cbm1tL2RhbW9uL2xydV9zb3J0LmMtNTMxLSAqL1xubW0vZGFtb24vbHJ1X3NvcnQuYzo1MzI6bW9kdWxlX3BhcmFtX2NiKGtkYW1vbmRfcGlkLCBcdTAwMjZrZGFtb25kX3BpZF9wYXJhbV9vcHMsIE5VTEwsIDA0MDApO1xubW0vZGFtb24vbHJ1X3NvcnQuYy01MzMtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE4OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3MDI5CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3Mgb24gd2hhdCBJJiMzOTttIGFib3V0IHRvIGRvOgoKKipDaGVja2luZyBgY29tbWl0X2lucHV0c19wYXJhbV9vcHNgKioKCkFscmlnaHQsIEkmIzM5O20gZ29pbmcgdG8gdGFrZSBhIGxvb2sgYXQgYGNvbW1pdF9pbnB1dHNfcGFyYW1fb3BzYC4gVGhpcyBpcyBwcm9iYWJseSB3aGVyZSB0aGUgY29yZSBsb2dpYyByZXNpZGVzLCBhbmQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgZXhhY3RseSBob3cgaXQgZnVuY3Rpb25zLiBJIGV4cGVjdCBpdCB0byBoYW5kbGUgdGhlIGNydWNpYWwgdGFzayBvZiBjb21taXR0aW5nIG9yIHNhdmluZyBjZXJ0YWluIGlucHV0cyBvciBwYXJhbWV0ZXJzIOKAkyBsaWtlbHkgcmVsYXRlZCB0byBhIG1vZGVsLCBkYXRhc2V0LCBvciBjb25maWd1cmF0aW9uIOKAkyB0byBwZXJzaXN0ZW50IHN0b3JhZ2Ugb3IgYSBwcm9jZXNzaW5nIHBpcGVsaW5lLiBJJiMzOTttIGdvaW5nIHRvIHNjcnV0aW5pemUgdGhlIGNvZGUgd2l0aGluIHRoaXMgZnVuY3Rpb24gdG8gdW5kZXJzdGFuZCB0aGUgc3BlY2lmaWMgb3BlcmF0aW9ucyBpdCBwZXJmb3JtcywgbG9va2luZyBmb3IgdGhpbmdzIGxpa2UgZGF0YSB2YWxpZGF0aW9uLCB0cmFuc2Zvcm1hdGlvbnMsIGVycm9yIGhhbmRsaW5nLCBhbmQgdGhlIGRlc3RpbmF0aW9uIG9mIHRoZSBjb21taXR0ZWQgZGF0YS4gTXkgZXhwZXJpZW5jZSB0ZWxscyBtZSB0aGF0IHRoaXMgaXMgYSBjcml0aWNhbCBzZWN0aW9uIHRoYXQgbmVlZHMgY2FyZWZ1bCByZXZpZXcsIHNvIEkmIzM5O2xsIGJlIG1ldGhvZGljYWwgYW5kIGF0dGVudGl2ZSB0byBkZXRhaWwuIEkmIzM5O20gZ29pbmcgdG8gbG9vayBmb3IgYW55IHBvdGVudGlhbCBib3R0bGVuZWNrcywgaW5lZmZpY2llbmNpZXMsIG9yIGFyZWFzIHRoYXQgbWlnaHQgbGVhZCB0byB1bmV4cGVjdGVkIGJlaGF2aW9yIGluIGEgcHJvZHVjdGlvbiBlbnZpcm9ubWVudC4gSSYjMzk7bGwgZm9jdXMgb24gaG93IGl0IGludGVyZmFjZXMgd2l0aCBvdGhlciBjb21wb25lbnRzIG9mIHRoZSBzeXN0ZW0sIHBheWluZyBjbG9zZSBhdHRlbnRpb24gdG8gZGF0YSBkZXBlbmRlbmNpZXMgYW5kIHBvdGVudGlhbCBzaWRlIGVmZmVjdHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE4OjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbW1pdF9pbnB1dHNfcGFyYW1fb3BzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vZGFtb24vbHJ1X3NvcnQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9kYW1vbi9scnVfc29ydC5jPTM0OT1zdGF0aWMgaW50IGRhbW9uX2xydV9zb3J0X2NvbW1pdF9pbnB1dHNfc3RvcmUoY29uc3QgY2hhciAqdmFsLFxuLS1cbm1tL2RhbW9uL2xydV9zb3J0LmMtMzgwLVxubW0vZGFtb24vbHJ1X3NvcnQuYzozODE6c3RhdGljIGNvbnN0IHN0cnVjdCBrZXJuZWxfcGFyYW1fb3BzIGNvbW1pdF9pbnB1dHNfcGFyYW1fb3BzID0ge1xubW0vZGFtb24vbHJ1X3NvcnQuYy0zODItXHQuZmxhZ3MgPSBLRVJORUxfUEFSQU1fT1BTX0ZMX05PQVJHLFxuLS1cbm1tL2RhbW9uL2xydV9zb3J0LmMtMzg2LVxubW0vZGFtb24vbHJ1X3NvcnQuYzozODc6bW9kdWxlX3BhcmFtX2NiKGNvbW1pdF9pbnB1dHMsIFx1MDAyNmNvbW1pdF9pbnB1dHNfcGFyYW1fb3BzLCBcdTAwMjZjb21taXRfaW5wdXRzLCAwNjAwKTtcbm1tL2RhbW9uL2xydV9zb3J0LmMtMzg4LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxODoyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzUzMgoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipDaGVja2luZyBgZW5hYmxlZF9wYXJhbV9vcHNgKioKCkFscmlnaHQsIHRpbWUgdG8gZGl2ZSBpbi4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7TGV0JiMzOTtzIGNoZWNrIGBlbmFibGVkX3BhcmFtX29wc2AuJiMzNDsgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbiBvZiB0aGlzIGZlYXR1cmUsIHBhcnRpY3VsYXJseSBpdHMgY3VycmVudCBzZXR0aW5ncy4gVGhpcyBsaWtlbHkgaW5kaWNhdGVzIHRoZSBzcGVjaWZpYyBvcGVyYXRpb25zIG9yIHBhcmFtZXRlciBtb2RpZmljYXRpb25zIHRoYXQgYXJlIGFjdGl2ZWx5IGVuYWJsZWQgd2l0aGluIHRoaXMgcGFydGljdWxhciBzdGFnZSBvZiB0aGUgcHJvY2Vzcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgdGhlcmUgYXJlIGFueSBwYXJhbWV0ZXJzIHRoYXQgYXJlLCBvciBhcmVuJiMzOTt0LCBiZWluZyBhbHRlcmVkLiBJIHNob3VsZCBiZSBhYmxlIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIGlmIHRoZXJlIGFyZSBzZXR0aW5ncyB0aGF0IGNvdWxkIGltcGFjdCBwZXJmb3JtYW5jZSBvciBiZWhhdmlvci4gVGhlIGdvYWwgaXMgbGlrZWx5IHRvIGVuc3VyZSB0aGF0IHRoaXMgYWxpZ25zIHdpdGggdGhlIGV4cGVjdGVkIHdvcmtmbG93IG9yIHRvIGRpYWdub3NlIGEgcG90ZW50aWFsIGRpc2NyZXBhbmN5LiBMZXQmIzM5O3MgZGlnIGluIGFuZCBtYWtlIHN1cmUgbm90aGluZyB1bnVzdWFsIGlzIGhhcHBlbmluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTg6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZW5hYmxlZF9wYXJhbV9vcHMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9kYW1vbi9scnVfc29ydC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL2RhbW9uL2xydV9zb3J0LmM9NDgzPXN0YXRpYyBpbnQgZGFtb25fbHJ1X3NvcnRfZW5hYmxlZF9sb2FkKGNoYXIgKmJ1ZmZlcixcbi0tXG5tbS9kYW1vbi9scnVfc29ydC5jLTQ4OC1cbm1tL2RhbW9uL2xydV9zb3J0LmM6NDg5OnN0YXRpYyBjb25zdCBzdHJ1Y3Qga2VybmVsX3BhcmFtX29wcyBlbmFibGVkX3BhcmFtX29wcyA9IHtcbm1tL2RhbW9uL2xydV9zb3J0LmMtNDkwLVx0LnNldCA9IGRhbW9uX2xydV9zb3J0X2VuYWJsZWRfc3RvcmUsXG4tLVxubW0vZGFtb24vbHJ1X3NvcnQuYy00OTMtXG5tbS9kYW1vbi9scnVfc29ydC5jOjQ5NDptb2R1bGVfcGFyYW1fY2IoZW5hYmxlZCwgXHUwMDI2ZW5hYmxlZF9wYXJhbV9vcHMsIFx1MDAyNmVuYWJsZWQsIDA2MDApO1xubW0vZGFtb24vbHJ1X3NvcnQuYy00OTUtTU9EVUxFX1BBUk1fREVTQyhlbmFibGVkLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxODoyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzk2NQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDUzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3Mgc2VlLCB0aGlua2luZyB0aHJvdWdoIHRoaXMuLi4KCioqRm9jdXMgU3ltYm9sIENhbmRpZGF0ZXMgZm9yIENvbnNpZGVyYXRpb24qKgoKQWxyaWdodCwgSSYjMzk7bSB0YWtpbmcgYSBsb29rIGF0IHBvdGVudGlhbCBgRm9jdXNTeW1ib2xzYCBoZXJlLiBCYXNlZCBvbiB3aGF0IEkmIzM5O3ZlIHNlZW4sIGBkYW1vbl9scnVfc29ydF9jb21taXRfaW5wdXRzX3N0b3JlYCBhbmQgYGRhbW9uX2xydV9zb3J0X2VuYWJsZWRfc3RvcmVgIHNlZW0gbGlrZSBzdHJvbmcgY29udGVuZGVycy4gVGhlaXIgbmFtZXMgc3VnZ2VzdCB0aGV5JiMzOTtyZSBjZW50cmFsIHRvIHRoZSBMUlUgc29ydGluZyBwcm9jZXNzIHdpdGhpbiBEYW1vbiwgd2hpY2ggaXMgZGVmaW5pdGVseSBhIGtleSBhcmVhIHRvIG1vbml0b3IuIEkgbmVlZCB0byBkaWcgaW50byB0aGVpciBmdW5jdGlvbnMgdG8gY29uZmlybSwgb2YgY291cnNlLCBidXQgdGhlIGluaXRpYWwgaW5kaWNhdGlvbiBpcyBwcm9taXNpbmcuCgpUaGVuIEkgZ2V0IHRoaW5raW5nLCBzaG91bGQgSSBjb25zaWRlciB0aGUgZmlsZSBgc2FtcGxlcy9kYW1vbi9tdGllci5jYCBpbiBteSBhbmFseXNpcz8gSSYjMzk7bGwgcHJvYmFibHkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgaXQgZG9lcyBhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZXNlIG90aGVyIGNvbXBvbmVudHMsIGJlY2F1c2UgaXQgKm1pZ2h0KiBiZSByZWxldmFudC4gSSB3aWxsIG5lZWQgdG8gbG9vayBpbnRvIGl0IHRvIGJlIHN1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE4OjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21vZHVsZV9wYXJhbV9jYiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O3NhbXBsZXMvZGFtb24vbXRpZXIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtzYW1wbGVzL2RhbW9uL210aWVyLmM9NDY9c3RhdGljIGJvb2wgZW5hYmxlZCBfX3JlYWRfbW9zdGx5O1xuc2FtcGxlcy9kYW1vbi9tdGllci5jOjQ3Om1vZHVsZV9wYXJhbV9jYihlbmFibGVkLCBcdTAwMjZlbmFibGVkX3BhcmFtX29wcywgXHUwMDI2ZW5hYmxlZCwgMDYwMCk7XG5zYW1wbGVzL2RhbW9uL210aWVyLmMtNDgtTU9EVUxFX1BBUk1fREVTQyhlbmFibGVkLCBcJiMzNDtFbmFibGUgb3IgZGlzYWJsZSBEQU1PTl9TQU1QTEVfTVRJRVJcJiMzNDspO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxODoyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODM0NwoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIHJldmlld2luZyB0aGlzOgoKKipJbnZlc3RpZ2F0aW5nIGBlbmFibGVkX3BhcmFtX29wc2AgaW4gYHNhbXBsZXMvZGFtb24vbXRpZXIuY2AqKgoKT2theSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBzeXN0ZW0gaXMgbWFuYWdpbmcgaXRzIHBhcmFtZXRlciBvcGVyYXRpb25zLCBhbmQgdGhlIGBzYW1wbGVzL2RhbW9uL210aWVyLmNgIGZpbGUgc2VlbXMgbGlrZSBhIGdvb2QgcGxhY2UgdG8gc3RhcnQuIEkmIzM5O20gZ29pbmcgdG8gY2hlY2sgdGhlIGBlbmFibGVkX3BhcmFtX29wc2AgdmFyaWFibGUgc3BlY2lmaWNhbGx5LiBNeSBleHBlY3RhdGlvbiBpcyB0aGF0IHRoaXMgdmFyaWFibGUgbGlrZWx5IGNvbnRyb2xzIHdoaWNoIHBhcmFtZXRlciBvcGVyYXRpb25zIGFyZSBjdXJyZW50bHkgYWN0aXZlIG9yIGFsbG93ZWQgd2l0aGluIHRoaXMgdGllcmVkIG1lbW9yeSBjb250ZXh0LiBJJiMzOTtsbCBuZWVkIHRvIHNlZSBob3cgaXQmIzM5O3MgaW5pdGlhbGl6ZWQsIGhvdyBpdCYjMzk7cyBtb2RpZmllZCwgYW5kIG1vc3QgaW1wb3J0YW50bHksIGhvdyBpdHMgdmFsdWUgaXMgdXNlZCB0byBkZXRlcm1pbmUgdGhlIGJlaGF2aW9yIG9mIHRoZSBEYW1vbiBzYW1wbGluZyBwcm9jZXNzIHdpdGhpbiB0aGlzIG11bHRpLXRpZXJlZCBhcmNoaXRlY3R1cmUuIEkgbmVlZCB0byBiZSBhYmxlIHRvIHF1aWNrbHkgdW5kZXJzdGFuZCB0aGUgY29udHJvbCBmbG93IHJlbGF0ZWQgdG8gdGhpcyB2YXJpYWJsZSwgYXMgaXQmIzM5O3MgbGlrZWx5IGEgY3JpdGljYWwgY29tcG9uZW50IGluIHVuZGVyc3RhbmRpbmcgdGhlIG92ZXJhbGwgY29uZmlndXJhdGlvbiBvZiB0aGUgdGllcmluZyBiZWhhdmlvci4gSSYjMzk7bSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gd2hldGhlciB0aGlzIHZhcmlhYmxlIGlzIHJlYWQsIG9yIG1vZGlmaWVkLCB1c2luZyBhdG9taWMgb3BlcmF0aW9ucyBvciBhbnkga2luZCBvZiBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlcywgYXMgdGhlc2Ugb3BlcmF0aW9ucyBtYXkgc2lnbmFsIGEgbXVsdGl0aHJlYWRlZCBlbnZpcm9ubWVudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTg6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZW5hYmxlZF9wYXJhbV9vcHMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtzYW1wbGVzL2RhbW9uL210aWVyLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7c2FtcGxlcy9kYW1vbi9tdGllci5jPTM4PXN0YXRpYyBpbnQgZGFtb25fc2FtcGxlX210aWVyX2VuYWJsZV9zdG9yZShcbi0tXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtNDAtXG5zYW1wbGVzL2RhbW9uL210aWVyLmM6NDE6c3RhdGljIGNvbnN0IHN0cnVjdCBrZXJuZWxfcGFyYW1fb3BzIGVuYWJsZWRfcGFyYW1fb3BzID0ge1xuc2FtcGxlcy9kYW1vbi9tdGllci5jLTQyLVx0LnNldCA9IGRhbW9uX3NhbXBsZV9tdGllcl9lbmFibGVfc3RvcmUsXG4tLVxuc2FtcGxlcy9kYW1vbi9tdGllci5jPTQ2PXN0YXRpYyBib29sIGVuYWJsZWQgX19yZWFkX21vc3RseTtcbnNhbXBsZXMvZGFtb24vbXRpZXIuYzo0Nzptb2R1bGVfcGFyYW1fY2IoZW5hYmxlZCwgXHUwMDI2ZW5hYmxlZF9wYXJhbV9vcHMsIFx1MDAyNmVuYWJsZWQsIDA2MDApO1xuc2FtcGxlcy9kYW1vbi9tdGllci5jLTQ4LU1PRFVMRV9QQVJNX0RFU0MoZW5hYmxlZCwgXCYjMzQ7RW5hYmxlIG9yIGRpc2FibGUgREFNT05fU0FNUExFX01USUVSXCYjMzQ7KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTg6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg4NDcKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiA1MjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQ29uZmlndXJhdGlvbiAmYW1wOyBTeW1ib2wgRGVlcCBEaXZlKioKCk9rYXksIHNvIEkmIzM5O20gaG9uaW5nIGluIG9uIGBkYW1vbl9zYW1wbGVfbXRpZXJfZW5hYmxlX3N0b3JlYCBhcyBhIGtleSBmb2N1cy4gTWFrZXMgc2Vuc2UuIExldCYjMzk7cyBzZWUgd2hhdCB0aGUgY29uZmlndXJhdGlvbiBuZWVkcyBhcmUsIHNvIEkmIzM5O20gY2hlY2tpbmcgZm9yIHdoYXQgdG8gZW5hYmxlOiBgQ09ORklHX0RBTU9OX0xSVV9TT1JUYCwgYENPTkZJR19TQU1QTEVfREFNT05fTVRJRVJgLCBgQ09ORklHX0RBTU9OYCwgYENPTkZJR19EQU1PTl9QQUREUmAsIGFuZCBgQ09ORklHX1NBTVBMRVNgLgoKRmlyc3QsIEkgbmVlZCB0byBjb25maXJtIGBDT05GSUdfREFNT05fTFJVX1NPUlRgIGRvZXNuJiMzOTt0IHJlbHkgb24gYENPTkZJR19EQU1PTl9SRUNMQUlNYC4gR29vZCwgaXQgc2VlbXMgdGhleSYjMzk7cmUgaW5kZXBlbmRlbnQuIE5vdywgYENPTkZJR19TQU1QTEVfREFNT05fTVRJRVJgLi4uIE9rYXksIGl0cyBkZXBlbmRlbmNpZXMgYXJlIGBEQU1PTiAmYW1wOyZhbXA7IERBTU9OX1BBRERSYC4KClNvLCB0aGUgY29uZmlndXJhdGlvbnMgSSAqcmVhbGx5KiBuZWVkIHRvIGVuYWJsZSBhcmU6IGBEQU1PTl9MUlVfU09SVGAsIGBTQU1QTEVfREFNT05fTVRJRVJgLCBgREFNT05gLCBgREFNT05fUEFERFJgLCBhbmQgYFNBTVBMRVNgLgoKQnV0IHdhaXQsIGFyZSBgREFNT05gIGFuZCBgREFNT05fUEFERFJgIGFjdHVhbGx5IHNlbGVjdGVkIG9yIGRlZmF1bHQ/IGBEQU1PTmAgaXMgYSBib29sZWFuLiBgREFNT05fUEFERFJgIGRlcGVuZHMgb24gYERBTU9OICZhbXA7JmFtcDsgTU1VYC4gU28sIEkmIzM5O2xsIHN0cmVhbWxpbmUgdGhpcyBsaXN0OiBgREFNT05gLCBgREFNT05fUEFERFJgLCBgREFNT05fTFJVX1NPUlRgLCBgU0FNUExFU2AsIGFuZCBgU0FNUExFX0RBTU9OX01USUVSYC4gVGhpcyBpcyB0aGUgY29yZSBzZXQuCgpOb3csIGxldCYjMzk7cyB2ZXJpZnkgYGRhbW9uX2xydV9zb3J0X2FkZF9xdW90YV9nb2Fsc2AgaW4gYG1tL2RhbW9uL2xydV9zb3J0LmNgIGlzIGltcG9ydGFudC4gSXQmIzM5O3Mgc3RhdGljLCB3aGljaCBpcyBhIGtleSBub3RlLCBidXQgaXQmIzM5O3MgdGhlIGZ1bmN0aW9uIHRoYXQgaGFkIHRoZSBtb2RpZmljYXRpb25zLiBDYW4gSSBhZGQgaXQgdG8gYEZvY3VzU3ltYm9sc2A/IFN1cmUsIEkgY2FuIGFkZCBpdCwgYnV0IGl0JiMzOTtzICpsaWtlbHkqIHRvIGJlIGlubGluZWQuIElmIGl0JiMzOTtzIGlubGluZWQsIHN5emthbGxlciBtaWdodCBub3QgYmUgYWJsZSB0byB0cmFjZSBpdCBkaXJlY3RseSwgYnV0IGl0IHNob3VsZCB0cmFjZSB0aGUgY2FsbGVyLCBzbyB0aGF0JiMzOTtzIG9rYXkuIFRoZSBjYWxsZXIgb2YgdGhhdCBpcyBgZGFtb25fbHJ1X3NvcnRfYXBwbHlfcGFyYW1ldGVyc2AsIHdoaWNoIGlzIGFsc28gc3RhdGljLiBUaGUgY2FsbGVycyBvZiAqdGhhdCogYXJlIGBkYW1vbl9scnVfc29ydF9jb21taXRfaW5wdXRzX3N0b3JlYCBhbmQgYGRhbW9uX2xydV9zb3J0X3R1cm5gLiBTbywgSSYjMzk7bGwgYWRkIHRob3NlIHRocmVlIHN5bWJvbHMgYXMgd2VsbDogYGRhbW9uX2xydV9zb3J0X2NvbW1pdF9pbnB1dHNfc3RvcmVgLCBgZGFtb25fbHJ1X3NvcnRfZW5hYmxlZF9zdG9yZWAsIGFuZCBgZGFtb25fc2FtcGxlX210aWVyX2VuYWJsZV9zdG9yZWAuCgpBbHJpZ2h0LCBqdXN0IHRvIG1ha2Ugc3VyZSBJJiMzOTttIHNvbGlkIG9uIHRoaXMuLi4gbGV0JiMzOTtzIGRvdWJsZS1jaGVjayB0aGUgZnVuY3Rpb24gYGRhbW9uX3NhbXBsZV9tdGllcl9idWlsZF9jdHhgIGluIGBzYW1wbGVzL2RhbW9uL210aWVyLmNgLiBHb3R0YSBiZSB0aG9yb3VnaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTg6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGFtb25fc2FtcGxlX210aWVyX2J1aWxkX2N0eCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O3NhbXBsZXMvZGFtb24vbXRpZXIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtzYW1wbGVzL2RhbW9uL210aWVyLmM9NjA9c3RhdGljIGludCBuaWRfdG9fcGh5cyhpbnQgdGFyZ2V0X25vZGUsIHN0cnVjdCByZWdpb25fcmFuZ2UgKnJhbmdlKVxuLS1cbnNhbXBsZXMvZGFtb24vbXRpZXIuYy03Mi1cbnNhbXBsZXMvZGFtb24vbXRpZXIuYzo3MzpzdGF0aWMgc3RydWN0IGRhbW9uX2N0eCAqZGFtb25fc2FtcGxlX210aWVyX2J1aWxkX2N0eChib29sIHByb21vdGUpXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtNzQte1xuLS1cbnNhbXBsZXMvZGFtb24vbXRpZXIuYz0xODA9c3RhdGljIGludCBkYW1vbl9zYW1wbGVfbXRpZXJfc3RhcnQodm9pZClcbi0tXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtMTg0LVxuc2FtcGxlcy9kYW1vbi9tdGllci5jOjE4NTpcdGN0eCA9IGRhbW9uX3NhbXBsZV9tdGllcl9idWlsZF9jdHgodHJ1ZSk7XG5zYW1wbGVzL2RhbW9uL210aWVyLmMtMTg2LVx0aWYgKCFjdHgpXG4tLVxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTE4OC1cdGN0eHNbMF0gPSBjdHg7XG5zYW1wbGVzL2RhbW9uL210aWVyLmM6MTg5Olx0Y3R4ID0gZGFtb25fc2FtcGxlX210aWVyX2J1aWxkX2N0eChmYWxzZSk7XG5zYW1wbGVzL2RhbW9uL210aWVyLmMtMTkwLVx0aWYgKCFjdHgpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTg6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjAzMDMKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSYjMzk7bSBhbiBleHBlcnQgaW4gdGhpcyBhcmVhIGFuZCB0aGlua2luZyB0aHJvdWdoIHRoaXMgcGllY2Ugb2YgY29kZToKCioqVGhpbmtpbmcgVGhyb3VnaCB0aGUgTXVsdGktVGllciBTYW1wbGluZyBQcm9jZXNzKioKCkFscmlnaHQsIHNvIGBkYW1vbl9zYW1wbGVfbXRpZXJfc3RhcnRgIGlzIGJlaW5nIGNhbGxlZCBmcm9tIHdpdGhpbiBgZGFtb25fc2FtcGxlX210aWVyX3R1cm5gLiBUaGF0JiMzOTtzIHRoZSBrZXkgc3RhcnRpbmcgcG9pbnQuIFRoaXMgdGVsbHMgbWUgdGhhdCB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGEgbXVsdGktdGllcmVkIHNhbXBsaW5nIHByb2Nlc3MsIGFuZCBgX3N0YXJ0YCBtdXN0IGluaXRpYWxpemUgb3Igc2V0IHVwIHNvbWV0aGluZywgcHJlc3VtYWJseSBhdCB0aGUgYmVnaW5uaW5nIG9mIGVhY2ggJiMzNDt0dXJuJiMzNDsgb3IgaXRlcmF0aW9uLiBJdCYjMzk7cyBsaWtlbHkgdGhhdCBgZGFtb25fc2FtcGxlX210aWVyX3R1cm5gIHJlcHJlc2VudHMgYSBzaW5nbGUgc2FtcGxpbmcgKmN5Y2xlKiB3aXRoaW4gdGhlIG11bHRpLXRpZXJlZCBzdHJ1Y3R1cmUuCgpJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0ICYjMzQ7dGllcnMmIzM0OyB3ZSYjMzk7cmUgdGFsa2luZyBhYm91dCBoZXJlLiBBcmUgd2Ugc2FtcGxpbmcgYXQgZGlmZmVyZW50IGdyYW51bGFyaXRpZXM/IE1heWJlIHdlIHN0YXJ0IHdpdGggYSBjb2Fyc2UtZ3JhaW5lZCBzYW1wbGUgYW5kIHByb2dyZXNzaXZlbHkgcmVmaW5lIGl0IHRocm91Z2ggbXVsdGlwbGUgdGllcnM/IE9yIHBlcmhhcHMgaXQmIzM5O3MgYSBoaWVyYXJjaGljYWwgc3RydWN0dXJlLCB3aGVyZSBlYWNoIHRpZXIgcmVwcmVzZW50cyBhIGRpZmZlcmVudCBhc3BlY3Qgb3IgZGltZW5zaW9uIG9mIHRoZSBkYXRhLiAKCldoYXRldmVyIHRoZSBzcGVjaWZpY3MsIGBfc3RhcnRgIHByb2JhYmx5IHNldHMgdXAgdGhlIG5lY2Vzc2FyeSBzdGF0ZSBmb3IgdGhlIGN1cnJlbnQgdGllciBvciB0aGUgc2FtcGxpbmcgcHJvY2VzcyBvdmVyYWxsLiBUaGlzIGNvdWxkIGludm9sdmUgaW5pdGlhbGl6aW5nIGFjY3VtdWxhdG9ycywgc2V0dGluZyB1cCByYW5kb20gbnVtYmVyIGdlbmVyYXRvcnMsIHByZS1jYWxjdWxhdGluZyBzb21lIHZhbHVlcywgb3IgbWF5YmUgZXZlbiBmZXRjaGluZyBkYXRhIG5lY2Vzc2FyeSBmb3IgdGhpcyAmIzM0O3R1cm4uJiMzNDsgSSYjMzk7bGwgbmVlZCB0byBkaWcgZGVlcGVyIGludG8gdGhlIGNvZGUgb2YgYGRhbW9uX3NhbXBsZV9tdGllcl9zdGFydGAgdG8gdW5kZXJzdGFuZCAqcHJlY2lzZWx5KiB3aGF0IGl0IGRvZXMsIGJ1dCB0aGlzIGluaXRpYWwgY2FsbCBmcm9tIGBfdHVybmAgZnJhbWVzIHRoZSBjb250ZXh0IGFuZCB0aGUgb3ZlcmFsbCBmbG93LiBJdCYjMzk7cyB2ZXJ5IGxpa2VseSB0aGF0IGBfc3RhcnRgIHByZXBhcmVzIGZvciB0aGUgbG9naWMgaW1wbGVtZW50ZWQgaW4gdGhlIGBfdHVybmAgZnVuY3Rpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE4OjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RhbW9uX3NhbXBsZV9tdGllcl9zdGFydCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O3NhbXBsZXMvZGFtb24vbXRpZXIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtzYW1wbGVzL2RhbW9uL210aWVyLmM9NzM9c3RhdGljIHN0cnVjdCBkYW1vbl9jdHggKmRhbW9uX3NhbXBsZV9tdGllcl9idWlsZF9jdHgoYm9vbCBwcm9tb3RlKVxuLS1cbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0xNzktXG5zYW1wbGVzL2RhbW9uL210aWVyLmM6MTgwOnN0YXRpYyBpbnQgZGFtb25fc2FtcGxlX210aWVyX3N0YXJ0KHZvaWQpXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtMTgxLXtcbi0tXG5zYW1wbGVzL2RhbW9uL210aWVyLmM9MjExPXN0YXRpYyBpbnQgZGFtb25fc2FtcGxlX210aWVyX2VuYWJsZV9zdG9yZShcbi0tXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtMjI3LVx0aWYgKGVuYWJsZWQpIHtcbnNhbXBsZXMvZGFtb24vbXRpZXIuYzoyMjg6XHRcdGVyciA9IGRhbW9uX3NhbXBsZV9tdGllcl9zdGFydCgpO1xuc2FtcGxlcy9kYW1vbi9tdGllci5jLTIyOS1cdFx0aWYgKGVycilcbi0tXG5zYW1wbGVzL2RhbW9uL210aWVyLmM9MjM3PXN0YXRpYyBpbnQgX19pbml0IGRhbW9uX3NhbXBsZV9tdGllcl9pbml0KHZvaWQpXG4tLVxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTI0Ny1cdGlmIChlbmFibGVkKSB7XG5zYW1wbGVzL2RhbW9uL210aWVyLmM6MjQ4Olx0XHRlcnIgPSBkYW1vbl9zYW1wbGVfbXRpZXJfc3RhcnQoKTtcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0yNDktXHRcdGlmIChlcnIpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE4OjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxMDIzCgkJCQkJCQlvdXRwdXQ6IDY4CgkJCQkJCQl0aG91Z2h0czogMTE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgREFNT04gTVRpZXIgRW5hYmxlbWVudCBQYXRoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBkYW1vbl9zYW1wbGVfbXRpZXJfZW5hYmxlX3N0b3JlYCBmdW5jdGlvbjsgdGhhdCYjMzk7cyB0aGUgc3RhcnRpbmcgcG9pbnQsIHRoZSBlbnRyeSBnYXRlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIE1UaWVyIGVuYWJsZW1lbnQgYWN0dWFsbHkgZnVuY3Rpb25zLgoKTm93LCBsZXQmIzM5O3MganVzdCBtYWtlIGEgbGlzdCwgYSBtZW50YWwgbWFwIG9mIHRob3NlIGBGb2N1c1N5bWJvbHNgIHRvIHF1aWNrbHkgZ2V0IGEgc2Vuc2Ugb2YgdGhlIHBpZWNlcyBpbnZvbHZlZDogSSBzZWUgYGRhbW9uX2xydV9zb3J0X2NvbW1pdF9pbnB1dHNfc3RvcmVgLCBgZGFtb25fbHJ1X3NvcnRfZW5hYmxlZF9zdG9yZWAsIGFuZCwgb2YgY291cnNlLCB0aGUgbWFpbiBvbmUsIGBkYW1vbl9zYW1wbGVfbXRpZXJfZW5hYmxlX3N0b3JlYC4gVGhlc2UgYXJlIHRoZSBrZXkgdmFyaWFibGVzIHRvIHdhdGNoIGFzIHRoaXMgd2hvbGUgZmxvdyBpcyBleGVjdXRlZC4KClRvIG1ha2Ugc3VyZSBJIGhhdmVuJiMzOTt0IG1pc3NlZCBhbnl0aGluZyBjcnVjaWFsLCBJIHNob3VsZCBzY2FuIHRoZSBjb2RlLCBzcGVjaWZpY2FsbHkgbG9va2luZyBhdCBgbW0vZGFtb24vbHJ1X3NvcnQuY2AgYW5kIGBzYW1wbGVzL2RhbW9uL210aWVyLmNgLiBJIG5lZWQgdG8gZW5zdXJlIHRoYXQgbm8gY3JpdGljYWwgbG9naWMgaXMgaGlkZGVuIHdpdGhpbiBhIGZ1bmN0aW9uIHRoYXQgaXNuJiMzOTt0IGRlZmluZWQgYXMgYHN0YXRpY2AuIEkgYW0ganVzdCBtYWtpbmcgc3VyZSB0aGVyZSBhcmVuJiMzOTt0IGFueSBzdXJwcmlzZSBjYWxscyBJJiMzOTttIG5vdCBleHBlY3RpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE4OjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XlthLXpBLVpfXVthLXpBLVowLTlfXSogW2EtekEtWl9dW2EtekEtWjAtOV9dKlxcKCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL2RhbW9uL2xydV9zb3J0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjY3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxODoyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTQ2MwoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDQ2NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGb2N1cyBTeW1ib2wgYW5kIEVuYWJsZSBDb25maWcgSWRlbnRpZmljYXRpb24qKgoKT2theSwgSSYjMzk7dmUgYWxyZWFkeSBjb25maXJtZWQgdGhlIGluaXRpYWwgYXNzdW1wdGlvbnMg4oCTIHRoZXNlIGZ1bmN0aW9ucyBhcmUsIGFzIGV4cGVjdGVkLCBzdGF0aWMuIExldCYjMzk7cyBtYWtlIHN1cmUgb3VyIGJhc2VzIGFyZSBjb3ZlcmVkLgoKRmlyc3QsIEkgY2hlY2tlZCBgZGFtb25fbHJ1X3NvcnRfY29tbWl0X2lucHV0c19zdG9yZWAuIEl0JiMzOTtzIHN0YXRpYywgd2hpY2ggaXMgZ29vZC4KCmBgYGMKc3RhdGljIGludCBkYW1vbl9scnVfc29ydF9jb21taXRfaW5wdXRzX3N0b3JlKGNvbnN0IGNoYXIgKnZhbCwKCQljb25zdCBzdHJ1Y3Qga2VybmVsX3BhcmFtICprcCkKYGBgCgpBbmQgZ2l2ZW4gdGhhdCBpdCYjMzk7cyBwYXNzZWQgdG8gYGtlcm5lbF9wYXJhbV9vcHNgIGFzIGEgZnVuY3Rpb24gcG9pbnRlciwgaW5saW5pbmcgaXNuJiMzOTt0IGdvaW5nIHRvIGJlIGFuIGlzc3VlLiBTbywgdGhhdCYjMzk7cyBzYWZlIHRvIGluY2x1ZGUgYXMgYSBmb2N1cyBzeW1ib2wuCgpNb3Zpbmcgb24sIEkgbmVlZCB0byBjaGVjayBgZGFtb25fbHJ1X3NvcnRfZW5hYmxlZF9zdG9yZWAuIFl1cCwgc3RhdGljLgoKYGBgYwpzdGF0aWMgaW50IGRhbW9uX2xydV9zb3J0X2VuYWJsZWRfc3RvcmUoY29uc3QgY2hhciAqdmFsLAoJCWNvbnN0IHN0cnVjdCBrZXJuZWxfcGFyYW0gKmtwKQpgYGAKCkFnYWluLCB0aGUgZnVuY3Rpb24gcG9pbnRlciBjb250ZXh0IGNvbmZpcm1zIGl0cyBzdWl0YWJpbGl0eS4KCkZpbmFsbHksIGxldCYjMzk7cyBsb29rIGF0IGBkYW1vbl9zYW1wbGVfbXRpZXJfZW5hYmxlX3N0b3JlYC4gWWVwLCBzdGF0aWMuCgpgYGBjCnN0YXRpYyBpbnQgZGFtb25fc2FtcGxlX210aWVyX2VuYWJsZV9zdG9yZShjb25zdCBjaGFyICp2YWwsCgkJY29uc3Qgc3RydWN0IGtlcm5lbF9wYXJhbSAqa3ApCmBgYAoKU2FtZSBzdG9yeSwgZnVuY3Rpb24gcG9pbnRlciwgYW5kIGl0JiMzOTtzIGFsbCBnb29kLgoKVGhlcmVmb3JlLCBvdXIgKipGb2N1c1N5bWJvbHMqKiBhcmU6Ci0gICBgZGFtb25fbHJ1X3NvcnRfY29tbWl0X2lucHV0c19zdG9yZWAKLSAgIGBkYW1vbl9scnVfc29ydF9lbmFibGVkX3N0b3JlYAotICAgYGRhbW9uX3NhbXBsZV9tdGllcl9lbmFibGVfc3RvcmVgCgpOb3csIGxldCYjMzk7cyBpZGVudGlmeSB0aGUgKipFbmFibGVDb25maWdzKio6Ci0gICBgREFNT05gCi0gICBgREFNT05fUEFERFJgCi0gICBgREFNT05fTFJVX1NPUlRgCi0gICBgU0FNUExFU2AKLSAgIGBTQU1QTEVfREFNT05fTVRJRVJgCgpUaGUgcGF0Y2ggaXMgYWJvdXQgaW5wdXQgdmFsaWRhdGlvbiB0byBwcmV2ZW50IGludmFsaWQgcGFyYW1ldGVycy4gVGhlc2UgcGFyYW1ldGVycyBhcmUgYXZhaWxhYmxlIHZpYSBzeXNmcyBhbmQgY2FuIGJlIGNoYW5nZWQgYXQgcnVudGltZS4gVGhlIGNoYW5nZXMgYXJlIGZ1bmN0aW9uYWwgYW5kIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgdGhlIHN5c2ZzIG1vZHVsZSBwYXJhbWV0ZXIgc3RvcmVzLiBOb3cgbGV0IG1lIGRvdWJsZS1jaGVjayB0aGF0IGBEQU1PTl9MUlVfU09SVGAgZG9lcyBub3QgZGVwZW5kIG9uIG90aGVyIGNvbmZpZ3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE4OjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBEQU1PTl9MUlVfU09SVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL2RhbW9uL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vZGFtb24vS2NvbmZpZz04OD1jb25maWcgREFNT05fUkVDTEFJTVxuLS1cbm1tL2RhbW9uL0tjb25maWctOTktXG5tbS9kYW1vbi9LY29uZmlnOjEwMDpjb25maWcgREFNT05fTFJVX1NPUlRcbm1tL2RhbW9uL0tjb25maWctMTAxLVx0Ym9vbCBcJiMzNDtCdWlsZCBEQU1PTi1iYXNlZCBMUlUtbGlzdHMgc29ydGluZyAoREFNT05fTFJVX1NPUlQpXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE4OjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyNTQ1CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIERBTU9OIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSYjMzk7dmUgbG9va2VkIGludG8gdGhpcyBhbHJlYWR5LCBhbmQgaXQmIzM5O3MgcHJldHR5IGNsZWFyIHRoYXQgdGhlIGJlaGF2aW9yIGhpbmdlcyBvbiBgREFNT05fUEFERFJgLiBOb3csIGBEQU1PTl9QQUREUmAgaXMgaXRzZWxmIGNvbmRpdGlvbmFsLCBhbmQgaXQgcmVxdWlyZXMgYm90aCBgREFNT05gICphbmQqIGBNTVVgIHRvIGJlIGVuYWJsZWQuIEkga25vdyBgTU1VYCBpcyBiYXNpY2FsbHkgYSBnaXZlbiBvbiBzdGFuZGFyZCBhcmNoaXRlY3R1cmVzLCBzbyB0aGF0JiMzOTtzIGxpa2VseSBub3QgdGhlIHN0dW1ibGluZyBibG9jay4KCkJ1dCBqdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgbGV0JiMzOTtzIGp1c3QgbWFrZSBzdXJlIHRoZXJlIGFyZW4mIzM5O3QgYW55IG90aGVyIGRlcGVuZGVuY2llcyBmb3IgYFNBTVBMRV9EQU1PTl9NVElFUmAgdGhhdCBJIGhhdmVuJiMzOTt0IGFjY291bnRlZCBmb3IgeWV0LiBHb3R0YSBiZSB0aG9yb3VnaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTg6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFNBTVBMRV9EQU1PTl9NVElFUiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O3NhbXBsZXMvZGFtb24vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtzYW1wbGVzL2RhbW9uL0tjb25maWc9MTc9Y29uZmlnIFNBTVBMRV9EQU1PTl9QUkNMXG4tLVxuc2FtcGxlcy9kYW1vbi9LY29uZmlnLTI5LVxuc2FtcGxlcy9kYW1vbi9LY29uZmlnOjMwOmNvbmZpZyBTQU1QTEVfREFNT05fTVRJRVJcbnNhbXBsZXMvZGFtb24vS2NvbmZpZy0zMS1cdGJvb2wgXCYjMzQ7REFNT04gc2FtcGxlIG1vZHVsZSBmb3IgbWVtb3J5IHRpZXJpbmdcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTg6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjI4NzQKCQkJCQkJCW91dHB1dDogMTg2CgkJCQkJCQl0aG91Z2h0czogMzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipBc3Nlc3NtZW50IG9mIENvbmZpZ3VyYXRpb24gYW5kIE5leHQgU3RlcHMqKgoKQWxyaWdodCwgSSYjMzk7dmUgY29uZmlybWVkIHRoYXQgdGhlIGNvbmZpZ3VyYXRpb24gaGluZ2VzIG9uIGBEQU1PTiAmYW1wOyZhbXA7IERBTU9OX1BBRERSYC4gVGhlIGluaXRpYWwgdHJvdWJsZXNob290aW5nIHN0ZXBzIGluZGljYXRlZCB0aGV5IHdlcmUsIGluIGZhY3QsIHNldCBjb3JyZWN0bHksIHNvIHRoYXQgcGF0aCBzZWVtcyBjbGVhcmVkLiBOb3csIHdpdGggdGhlIGZvdW5kYXRpb25hbCBlbGVtZW50cyBpbiBwbGFjZSwgdGhlIG5leHQgbG9naWNhbCBzdGVwIHRvIGdldCB0byB0aGUgc29sdXRpb24gaXMgdG8gY2FsbCB0aGUgYHNldC1yZXN1bHRzYCBmdW5jdGlvbiB0byBwcm9jZWVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxODoyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7REFNT04mIzM0OywKICAgICYjMzQ7REFNT05fUEFERFImIzM0OywKICAgICYjMzQ7REFNT05fTFJVX1NPUlQmIzM0OywKICAgICYjMzQ7U0FNUExFUyYjMzQ7LAogICAgJiMzNDtTQU1QTEVfREFNT05fTVRJRVImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkYW1vbl9scnVfc29ydF9jb21taXRfaW5wdXRzX3N0b3JlJiMzNDssCiAgICAmIzM0O2RhbW9uX2xydV9zb3J0X2VuYWJsZWRfc3RvcmUmIzM0OywKICAgICYjMzQ7ZGFtb25fc2FtcGxlX210aWVyX2VuYWJsZV9zdG9yZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGlucHV0IHZhbGlkYXRpb24gZm9yIERBTU9OIExSVSBzb3J0IGFuZCBtZW1vcnkgdGllcmluZyBzYW1wbGUgbW9kdWxlIHBhcmFtZXRlcnMgdG8gcHJldmVudCBpbnZhbGlkIHZhbHVlcyAobGlrZSBcdTAwM2UgMTAwMDAgb3IgMCkgdGhhdCBjb3VsZCBjYXVzZSBkaXZpc2lvbiBieSB6ZXJvIG9yIG90aGVyIGlzc3Vlcy4gVGhlc2UgcGFyYW1ldGVycyBhcmUgYWNjZXNzaWJsZSB2aWEgc3lzZnMgYW5kIGNhbiBiZSBtb2RpZmllZCBhdCBydW50aW1lLiBUaGUgY2hhbmdlcyBhcmUgZnVuY3Rpb25hbCBhbmQgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBzeXNmcyBtb2R1bGUgcGFyYW1ldGVyIHN0b3Jlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7REFNT04mIzM0OywKICAgICYjMzQ7REFNT05fUEFERFImIzM0OywKICAgICYjMzQ7REFNT05fTFJVX1NPUlQmIzM0OywKICAgICYjMzQ7U0FNUExFUyYjMzQ7LAogICAgJiMzNDtTQU1QTEVfREFNT05fTVRJRVImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkYW1vbl9scnVfc29ydF9jb21taXRfaW5wdXRzX3N0b3JlJiMzNDssCiAgICAmIzM0O2RhbW9uX2xydV9zb3J0X2VuYWJsZWRfc3RvcmUmIzM0OywKICAgICYjMzQ7ZGFtb25fc2FtcGxlX210aWVyX2VuYWJsZV9zdG9yZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGlucHV0IHZhbGlkYXRpb24gZm9yIERBTU9OIExSVSBzb3J0IGFuZCBtZW1vcnkgdGllcmluZyBzYW1wbGUgbW9kdWxlIHBhcmFtZXRlcnMgdG8gcHJldmVudCBpbnZhbGlkIHZhbHVlcyAobGlrZSBcdTAwM2UgMTAwMDAgb3IgMCkgdGhhdCBjb3VsZCBjYXVzZSBkaXZpc2lvbiBieSB6ZXJvIG9yIG90aGVyIGlzc3Vlcy4gVGhlc2UgcGFyYW1ldGVycyBhcmUgYWNjZXNzaWJsZSB2aWEgc3lzZnMgYW5kIGNhbiBiZSBtb2RpZmllZCBhdCBydW50aW1lLiBUaGUgY2hhbmdlcyBhcmUgZnVuY3Rpb25hbCBhbmQgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBzeXNmcyBtb2R1bGUgcGFyYW1ldGVyIHN0b3Jlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE4OjE0OjQ4LjIyMzI2NDY5OFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM5OTEyMTE1MDQyNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJEQU1PTlwiLFxuICAgIFwiREFNT05fUEFERFJcIixcbiAgICBcIkRBTU9OX0xSVV9TT1JUXCIsXG4gICAgXCJTQU1QTEVTXCIsXG4gICAgXCJTQU1QTEVfREFNT05fTVRJRVJcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkYW1vbl9scnVfc29ydF9jb21taXRfaW5wdXRzX3N0b3JlXCIsXG4gICAgXCJkYW1vbl9scnVfc29ydF9lbmFibGVkX3N0b3JlXCIsXG4gICAgXCJkYW1vbl9zYW1wbGVfbXRpZXJfZW5hYmxlX3N0b3JlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBpbnB1dCB2YWxpZGF0aW9uIGZvciBEQU1PTiBMUlUgc29ydCBhbmQgbWVtb3J5IHRpZXJpbmcgc2FtcGxlIG1vZHVsZSBwYXJhbWV0ZXJzIHRvIHByZXZlbnQgaW52YWxpZCB2YWx1ZXMgKGxpa2UgXFx1MDAzZSAxMDAwMCBvciAwKSB0aGF0IGNvdWxkIGNhdXNlIGRpdmlzaW9uIGJ5IHplcm8gb3Igb3RoZXIgaXNzdWVzLiBUaGVzZSBwYXJhbWV0ZXJzIGFyZSBhY2Nlc3NpYmxlIHZpYSBzeXNmcyBhbmQgY2FuIGJlIG1vZGlmaWVkIGF0IHJ1bnRpbWUuIFRoZSBjaGFuZ2VzIGFyZSBmdW5jdGlvbmFsIGFuZCByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIHN5c2ZzIG1vZHVsZSBwYXJhbWV0ZXIgc3RvcmVzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxODoxNDo0OC4yMjMyNjk2MjhaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQwMTA2MTIzNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDlmYzA3OTAwN2FiYjZhZTdkOTQ2OGQ0NzFhZjgyZDJjZGI5NGU5ZjhcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBBdWcgMyAxODoxNDo0NyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9tbS9kYW1vbi9scnVfc29ydC5jIGIvbW0vZGFtb24vbHJ1X3NvcnQuY1xcbmluZGV4IDdlMDc3MDg0Y2IwM2EuLjM5MjBkNTA0MmYxMDkgMTAwNjQ0XFxuLS0tIGEvbW0vZGFtb24vbHJ1X3NvcnQuY1xcbisrKyBiL21tL2RhbW9uL2xydV9zb3J0LmNcXG5AQCAtMjMzLDYgKzIzMyw4IEBAIHN0YXRpYyBpbnQgZGFtb25fbHJ1X3NvcnRfYWRkX3F1b3RhX2dvYWxzKHN0cnVjdCBkYW1vcyAqaG90X3NjaGVtZSxcXG4gXFxuIFxcdGlmICghYWN0aXZlX21lbV9icClcXG4gXFx0XFx0cmV0dXJuIDA7XFxuK1xcdGlmICgxMDAwMCBcXHUwMDNjIGFjdGl2ZV9tZW1fYnApXFxuK1xcdFxcdHJldHVybiAtRUlOVkFMO1xcbiBcXHRnb2FsID0gZGFtb3NfbmV3X3F1b3RhX2dvYWwoREFNT1NfUVVPVEFfQUNUSVZFX01FTV9CUCwgYWN0aXZlX21lbV9icCk7XFxuIFxcdGlmICghZ29hbClcXG4gXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuZGlmZiAtLWdpdCBhL3NhbXBsZXMvZGFtb24vbXRpZXIuYyBiL3NhbXBsZXMvZGFtb24vbXRpZXIuY1xcbmluZGV4IGFjOWMyNGI5MmVhZDguLmQxMTIzZWJiZmFiOTAgMTAwNjQ0XFxuLS0tIGEvc2FtcGxlcy9kYW1vbi9tdGllci5jXFxuKysrIGIvc2FtcGxlcy9kYW1vbi9tdGllci5jXFxuQEAgLTE1Niw2ICsxNTYsOSBAQCBzdGF0aWMgc3RydWN0IGRhbW9uX2N0eCAqZGFtb25fc2FtcGxlX210aWVyX2J1aWxkX2N0eChib29sIHByb21vdGUpXFxuIFxcdGlmICghc2NoZW1lKVxcbiBcXHRcXHRnb3RvIGZyZWVfb3V0O1xcbiBcXHRkYW1vbl9zZXRfc2NoZW1lcyhjdHgsIFxcdTAwMjZzY2hlbWUsIDEpO1xcbitcXHQvKiB6ZXJvIHRhcmdldCB2YWx1ZSBjYXVzZXMgZGl2aXNpb24gYnkgemVybyBpbiBkYW1vc19xdW90YV9zdG9yZSgpICovXFxuK1xcdGlmICghbm9kZTBfbWVtX3VzZWRfYnAgfHwgIW5vZGUwX21lbV9mcmVlX2JwKVxcbitcXHRcXHRnb3RvIGZyZWVfb3V0O1xcbiBcXHRxdW90YV9nb2FsID0gZGFtb3NfbmV3X3F1b3RhX2dvYWwoXFxuIFxcdFxcdFxcdHByb21vdGUgPyBEQU1PU19RVU9UQV9OT0RFX01FTV9VU0VEX0JQIDpcXG4gXFx0XFx0XFx0REFNT1NfUVVPVEFfTk9ERV9NRU1fRlJFRV9CUCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTg6MTQ6NDguNjI1MTE1ODEzWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6Mzk4NzE5Mjg1NzcwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkRBTU9OXCIsXG4gICAgXCJEQU1PTl9QQUREUlwiLFxuICAgIFwiREFNT05fTFJVX1NPUlRcIixcbiAgICBcIlNBTVBMRVNcIixcbiAgICBcIlNBTVBMRV9EQU1PTl9NVElFUlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRhbW9uX2xydV9zb3J0X2NvbW1pdF9pbnB1dHNfc3RvcmVcIixcbiAgICBcImRhbW9uX2xydV9zb3J0X2VuYWJsZWRfc3RvcmVcIixcbiAgICBcImRhbW9uX3NhbXBsZV9tdGllcl9lbmFibGVfc3RvcmVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGlucHV0IHZhbGlkYXRpb24gZm9yIERBTU9OIExSVSBzb3J0IGFuZCBtZW1vcnkgdGllcmluZyBzYW1wbGUgbW9kdWxlIHBhcmFtZXRlcnMgdG8gcHJldmVudCBpbnZhbGlkIHZhbHVlcyAobGlrZSBcXHUwMDNlIDEwMDAwIG9yIDApIHRoYXQgY291bGQgY2F1c2UgZGl2aXNpb24gYnkgemVybyBvciBvdGhlciBpc3N1ZXMuIFRoZXNlIHBhcmFtZXRlcnMgYXJlIGFjY2Vzc2libGUgdmlhIHN5c2ZzIGFuZCBjYW4gYmUgbW9kaWZpZWQgYXQgcnVudGltZS4gVGhlIGNoYW5nZXMgYXJlIGZ1bmN0aW9uYWwgYW5kIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgc3lzZnMgbW9kdWxlIHBhcmFtZXRlciBzdG9yZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDlmYzA3OTAwN2FiYjZhZTdkOTQ2OGQ0NzFhZjgyZDJjZGI5NGU5ZjhcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAzIDE4OjE0OjQ3IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbW0vZGFtb24vbHJ1X3NvcnQuYyBiL21tL2RhbW9uL2xydV9zb3J0LmNcbmluZGV4IDdlMDc3MDg0Y2IwM2EuLjM5MjBkNTA0MmYxMDkgMTAwNjQ0XG4tLS0gYS9tbS9kYW1vbi9scnVfc29ydC5jXG4rKysgYi9tbS9kYW1vbi9scnVfc29ydC5jXG5AQCAtMjMzLDYgKzIzMyw4IEBAIHN0YXRpYyBpbnQgZGFtb25fbHJ1X3NvcnRfYWRkX3F1b3RhX2dvYWxzKHN0cnVjdCBkYW1vcyAqaG90X3NjaGVtZSxcbiBcbiBcdGlmICghYWN0aXZlX21lbV9icClcbiBcdFx0cmV0dXJuIDA7XG4rXHRpZiAoMTAwMDAgXHUwMDNjIGFjdGl2ZV9tZW1fYnApXG4rXHRcdHJldHVybiAtRUlOVkFMO1xuIFx0Z29hbCA9IGRhbW9zX25ld19xdW90YV9nb2FsKERBTU9TX1FVT1RBX0FDVElWRV9NRU1fQlAsIGFjdGl2ZV9tZW1fYnApO1xuIFx0aWYgKCFnb2FsKVxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbmRpZmYgLS1naXQgYS9zYW1wbGVzL2RhbW9uL210aWVyLmMgYi9zYW1wbGVzL2RhbW9uL210aWVyLmNcbmluZGV4IGFjOWMyNGI5MmVhZDguLmQxMTIzZWJiZmFiOTAgMTAwNjQ0XG4tLS0gYS9zYW1wbGVzL2RhbW9uL210aWVyLmNcbisrKyBiL3NhbXBsZXMvZGFtb24vbXRpZXIuY1xuQEAgLTE1Niw2ICsxNTYsOSBAQCBzdGF0aWMgc3RydWN0IGRhbW9uX2N0eCAqZGFtb25fc2FtcGxlX210aWVyX2J1aWxkX2N0eChib29sIHByb21vdGUpXG4gXHRpZiAoIXNjaGVtZSlcbiBcdFx0Z290byBmcmVlX291dDtcbiBcdGRhbW9uX3NldF9zY2hlbWVzKGN0eCwgXHUwMDI2c2NoZW1lLCAxKTtcbitcdC8qIHplcm8gdGFyZ2V0IHZhbHVlIGNhdXNlcyBkaXZpc2lvbiBieSB6ZXJvIGluIGRhbW9zX3F1b3RhX3N0b3JlKCkgKi9cbitcdGlmICghbm9kZTBfbWVtX3VzZWRfYnAgfHwgIW5vZGUwX21lbV9mcmVlX2JwKVxuK1x0XHRnb3RvIGZyZWVfb3V0O1xuIFx0cXVvdGFfZ29hbCA9IGRhbW9zX25ld19xdW90YV9nb2FsKFxuIFx0XHRcdHByb21vdGUgPyBEQU1PU19RVU9UQV9OT0RFX01FTV9VU0VEX0JQIDpcbiBcdFx0XHREQU1PU19RVU9UQV9OT0RFX01FTV9GUkVFX0JQLFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTg6MTQ6NDguNjI1MTE3NTUzWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTMwMjkzMzEyOTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIERBTU9OIExSVSBTb3J0IENoYW5nZXMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0d28gZmlsZXMgdGhhdCBoYXZlIGJlZW4gbW9kaWZpZWQ6IGBtbS9kYW1vbi9scnVfc29ydC5jYCBhbmQgYHNhbXBsZXMvZGFtb24vbXRpZXIuY2AuIFNlZW1zIGxpa2UgdGhlcmUgaGF2ZSBiZWVuIHNvbWUgYWRqdXN0bWVudHMgdG8gaG93IERBTU9OIGhhbmRsZXMgcXVvdGFzLiBMZXQncyBkaWcgaW4uXG5cbkZpcnN0LCBgbW0vZGFtb24vbHJ1X3NvcnQuY2AgLSBpbiB0aGUgYGRhbW9uX2xydV9zb3J0X2FkZF9xdW90YV9nb2Fsc2AgZnVuY3Rpb24sIHRoZXJlJ3MgYSBuZXcgY2hlY2suIEl0J3MgZXhwbGljaXRseSB2YWxpZGF0aW5nIHRoZSBgYWN0aXZlX21lbV9icGAgdmFsdWUsIG1ha2luZyBzdXJlIGl0J3Mgbm90IGdyZWF0ZXIgdGhhbiAxMDAwMC4gUmV0dXJuaW5nIGAtRUlOVkFMYCBpZiBpdCBpcy4gVGhhdOKAmXMgaW50ZXJlc3RpbmcuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoeSB0aGlzIGxpbWl0IGlzIGJlaW5nIGludHJvZHVjZWQuIElzIHRoZXJlIGFuIGlzc3VlIHdoZXJlIGEgbGFyZ2UgYGFjdGl2ZV9tZW1fYnBgIGNhdXNlcyBzb21lIHNvcnQgb2Ygb3ZlcmZsb3cgb3IgaW5jb3JyZWN0IGNhbGN1bGF0aW9uIGRvd24gdGhlIGxpbmU/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBuZXcgY29uc3RyYWludCB3aXRoaW4gdGhlIGJyb2FkZXIgREFNT04gTFJVIHNvcnQgaW5pdGlhbGl6YXRpb24gZmxvdy4gSSBuZWVkIHRvIGludmVzdGlnYXRlIHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGFuZCBob3cgaXQncyB1c2VkLlxuXG5Ob3csIGxldCdzIG1vdmUgb250byBgc2FtcGxlcy9kYW1vbi9tdGllci5jYC4gSGVyZSwgaW4gdGhlIGBkYW1vbl9zYW1wbGVfbXRpZXJfYnVpbGRfY3R4YCBmdW5jdGlvbiwgdGhlcmUncyBhIGNoZWNrIHRoYXQgZW5zdXJlcyBgbm9kZTBfbWVtX3VzZWRfYnBgIGFuZCBgbm9kZTBfbWVtX2ZyZWVfYnBgIGFyZSBub3QgemVyby4gSWYgdGhleSBhcmUsIGl0IGp1bXBzIHRvIGBmcmVlX291dGAuIFNvLCB0aGUgdGFyZ2V0IHZhbHVlcyBmb3IgcXVvdGFzIG5lZWQgdG8gYmUgbm9uLXplcm8gdG8gYXZvaWQgYSBkaXZpc2lvbiBieSB6ZXJvIGVycm9yIGluIGBkYW1vc19xdW90YV9zdG9yZSgpYC4gVGhhdCdzIGEgY2xhc3NpYyBidWcuIE1ha2VzIHNlbnNlLCBhbmQgaXQncyBhIGdvb2QgZGVmZW5zaXZlIHByb2dyYW1taW5nIG1lYXN1cmUuIE5vdyBJIG5lZWQgdG8gaW52ZXN0aWdhdGUgaWYgdGhpcyBmdW5jdGlvbiBpcyBhbHdheXMgY29ycmVjdGx5IGNvbmZpZ3VyZWQgdG8gcHJldmVudCBpc3N1ZXMgZnJvbSBldmVyIG9jY3VyaW5nLlxuXG5PdmVyYWxsLCBpdCBsb29rcyBsaWtlIHRoZXNlIGNoYW5nZXMgYXJlIGFpbWVkIGF0IGltcHJvdmluZyB0aGUgcm9idXN0bmVzcyBvZiBEQU1PTidzIHF1b3RhIG1hbmFnZW1lbnQuIE9uZSBjaGFuZ2UgaXMgYSBzaW1wbGUgY2hlY2sgdG8gcHJldmVudCBkaXZpc2lvbiBieSB6ZXJvOyB0aGUgb3RoZXIgcmVxdWlyZXMgYWRkaXRpb25hbCBpbnZlc3RpZ2F0aW9uIHRvIGRldGVybWluZSB3aHkgYSBwYXJ0aWN1bGFyIHVwcGVyIGJvdW5kIG9uIGEgbWVtb3J5IHZhbHVlIGlzIHJlcXVpcmVkLiBCb3RoIHNlZW0gdG8gYmUgYWRkcmVzc2luZyBwb3RlbnRpYWwgbnVtZXJpY2FsIGlzc3VlcyBvciBjb25maWd1cmF0aW9uLXJlbGF0ZWQgcHJvYmxlbXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzMjQsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NDcsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxODoxNTowMS42NTQ0NTIwNzJaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc3Nzk5MzU0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkYW1vbl9scnVfc29ydF9hZGRfcXVvdGFfZ29hbHNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vZGFtb24vbHJ1X3NvcnQuYz0yMjA9c3RhdGljIHN0cnVjdCBkYW1vcyAqZGFtb25fbHJ1X3NvcnRfbmV3X2NvbGRfc2NoZW1lKHVuc2lnbmVkIGludCBjb2xkX3RocmVzKVxcbi0tXFxubW0vZGFtb24vbHJ1X3NvcnQuYy0yMjgtXFxubW0vZGFtb24vbHJ1X3NvcnQuYzoyMjk6c3RhdGljIGludCBkYW1vbl9scnVfc29ydF9hZGRfcXVvdGFfZ29hbHMoc3RydWN0IGRhbW9zICpob3Rfc2NoZW1lLFxcbm1tL2RhbW9uL2xydV9zb3J0LmMtMjMwLVxcdFxcdHN0cnVjdCBkYW1vcyAqY29sZF9zY2hlbWUpXFxuLS1cXG5tbS9kYW1vbi9scnVfc29ydC5jPTI3Mz1zdGF0aWMgaW50IGRhbW9uX2xydV9zb3J0X2FwcGx5X3BhcmFtZXRlcnModm9pZClcXG4tLVxcbm1tL2RhbW9uL2xydV9zb3J0LmMtMzIzLVxcbm1tL2RhbW9uL2xydV9zb3J0LmM6MzI0OlxcdGVyciA9IGRhbW9uX2xydV9zb3J0X2FkZF9xdW90YV9nb2Fscyhob3Rfc2NoZW1lLCBjb2xkX3NjaGVtZSk7XFxubW0vZGFtb24vbHJ1X3NvcnQuYy0zMjUtXFx0aWYgKGVycilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTg6MTU6MDMuNDMyNDQ5NzYxWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ4MzY0NzA4MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gYGRhbW9uX2xydV9zb3J0X2FwcGx5X3BhcmFtZXRlcnNgKipcblxuT2theSwgc28gSSdtIGZvY3VzaW5nIG9uIGBkYW1vbl9scnVfc29ydF9hcHBseV9wYXJhbWV0ZXJzYC4gVGhlIGZ1bmN0aW9uIG5hbWUgaXRzZWxmIHN1Z2dlc3RzIGl0J3MgaW52b2x2ZWQgaW4gYXBwbHlpbmcgcGFyYW1ldGVycywgc3BlY2lmaWNhbGx5IHJlbGF0ZWQgdG8gdGhlIExSVSBzb3J0aW5nIHdpdGhpbiBEQU1PTi4gTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgY2FsbCBzaXRlcy4gTXkgZ3V0IGZlZWxpbmcgdGVsbHMgbWUgaXQncyBsaWtlbHkgY2FsbGVkIGZyb20gYGRhbW9uX2xydV9zb3J0X3R1cm5vbmAgb3Igc29tZXRoaW5nIGFuYWxvZ291cy4gVGhhdCBzZWVtcyBsaWtlIHRoZSBtb3N0IGxvZ2ljYWwgZW50cnkgcG9pbnQgZm9yIGFwcGx5aW5nIHRoZXNlIHNvcnQgcGFyYW1ldGVycywgcmlnaHQ/IEl0IHByb2JhYmx5IGhhcHBlbnMgd2hlbiB0aGUgTFJVIHNvcnRpbmcgbWVjaGFuaXNtIGlzIGFjdGl2YXRlZC4gU28sIHRpbWUgdG8gdmVyaWZ5LiBMZXQncyBkaWcgaW50byB0aGUgY29kZSBhbmQgY29uZmlybSB0aG9zZSBzdXNwaWNpb25zIGFuZCB0cmFjZSB0aGUgY2FsbCBjaGFpbi4gTm8gc2Vuc2UgaW4gbWFraW5nIGFzc3VtcHRpb25zLiBMZXQncyBnZXQgdGhlIGRldGFpbHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1MDMsIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxODoxNTowNi45MTYwOTkwMTRaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTcxMTI4ODI2MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkYW1vbl9scnVfc29ydF9hcHBseV9wYXJhbWV0ZXJzXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL2RhbW9uL2xydV9zb3J0LmM9MjUxPXN0YXRpYyBpbnQgZGFtb25fbHJ1X3NvcnRfYWRkX2ZpbHRlcnMoc3RydWN0IGRhbW9zICpob3Rfc2NoZW1lLFxcbi0tXFxubW0vZGFtb24vbHJ1X3NvcnQuYy0yNzItXFxubW0vZGFtb24vbHJ1X3NvcnQuYzoyNzM6c3RhdGljIGludCBkYW1vbl9scnVfc29ydF9hcHBseV9wYXJhbWV0ZXJzKHZvaWQpXFxubW0vZGFtb24vbHJ1X3NvcnQuYy0yNzQte1xcbi0tXFxubW0vZGFtb24vbHJ1X3NvcnQuYz0zNDQ9c3RhdGljIGludCBkYW1vbl9scnVfc29ydF9jb21taXRfaW5wdXRzX2ZuKHZvaWQgKmFyZylcXG5tbS9kYW1vbi9scnVfc29ydC5jLTM0NS17XFxubW0vZGFtb24vbHJ1X3NvcnQuYzozNDY6XFx0cmV0dXJuIGRhbW9uX2xydV9zb3J0X2FwcGx5X3BhcmFtZXRlcnMoKTtcXG5tbS9kYW1vbi9scnVfc29ydC5jLTM0Ny19XFxuLS1cXG5tbS9kYW1vbi9scnVfc29ydC5jPTQxMD1zdGF0aWMgaW50IGRhbW9uX2xydV9zb3J0X3R1cm4oYm9vbCBvbilcXG4tLVxcbm1tL2RhbW9uL2xydV9zb3J0LmMtNDE4LVxcbm1tL2RhbW9uL2xydV9zb3J0LmM6NDE5OlxcdGVyciA9IGRhbW9uX2xydV9zb3J0X2FwcGx5X3BhcmFtZXRlcnMoKTtcXG5tbS9kYW1vbi9scnVfc29ydC5jLTQyMC1cXHRpZiAoZXJyKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxODoxNTowOC42MjczOTMwOTdaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTA3MzEwOTEzOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgbXlzZWxmOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIENvbmZpZ3VyYXRpb24gZm9yIGBtbS9kYW1vbi9scnVfc29ydC5jYCoqXG5cbk9rYXksIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgS2NvbmZpZyBvcHRpb25zIGVuYWJsZSB0aGUgY29tcGlsYXRpb24gb2YgYG1tL2RhbW9uL2xydV9zb3J0LmNgLiBUaGlzIGlzIGEgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCBkZWJ1Z2dpbmcgc3RlcCwgYnV0IG5lY2Vzc2FyeSBub25ldGhlbGVzcy4gU2luY2UgdGhpcyBpcyBsaWtlbHkgcmVsYXRlZCB0byB0aGUgREFNT04gKERhdGEgQWNjZXNzIE1PTml0b3IpIHN1YnN5c3RlbSwgSSdsbCBzdGFydCBieSBwb2tpbmcgYXJvdW5kIHRoZSByZWxldmFudCBLY29uZmlnIGZpbGVzLiBJJ2xsIG5lZWQgdG8gcmVtZW1iZXIgd2hlcmUgREFNT04ncyBjb25maWd1cmF0aW9uIGlzIGdlbmVyYWxseSBsb2NhdGVkIHdpdGhpbiB0aGUga2VybmVsIHRyZWUuIENoYW5jZXMgYXJlIGl0J3MgdW5kZXIgYG1tYCBvciBwZXJoYXBzIGEgc3ViZGlyZWN0b3J5LiBGcm9tIHRoZXJlLCBJJ2xsIGhhdmUgdG8gZWl0aGVyOiAoYSkgZ3JlcCBmb3IgdGhlIGZpbGUgbmFtZSBkaXJlY3RseSB0byBmaW5kIHRoZSBlbmFibGluZyBjb25maWcsIG9yIChiKSB0cmFjZSB0aHJvdWdoIHJlbGF0ZWQgY29uZmlndXJhdGlvbnMsIGxvb2tpbmcgZm9yIGRlcGVuZGVuY2llcyBhbmQgY29uZGl0aW9uYWxzLiBFaXRoZXIgbWV0aG9kIHdpbGwgbGVhZCBtZSB0byB0aGUgYW5zd2VyLCBhc3N1bWluZyB0aGUgbW9kdWxlIGhhcyBwcm9wZXIgS2NvbmZpZyBzdXBwb3J0LiBJIGFsc28gbmVlZCB0byBiZSBtaW5kZnVsIG9mIGFueSBpbnRlcm1lZGlhdGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHRoYXQgbWlnaHQgYmUgaW4gcGxheS4gSSdsbCBtYWtlIHN1cmUgdG8gbm90ZSBhbGwgcmVsZXZhbnQgb3B0aW9ucywgaW4gY2FzZSB0aGVyZSBhcmUgZnVydGhlciBkZXBlbmRlbmNpZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQwNzEsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxODoxNTo0Ny43MDA1MDQ5ODVaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjMzNjQ3OTE0NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJscnVfc29ydC5vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL2RhbW9uL01ha2VmaWxlPTc9b2JqLSQoQ09ORklHX0RBTU9OX1JFQ0xBSU0pXFx0Kz0gbW9kdWxlcy1jb21tb24ubyByZWNsYWltLm9cXG5tbS9kYW1vbi9NYWtlZmlsZTo4Om9iai0kKENPTkZJR19EQU1PTl9MUlVfU09SVClcXHQrPSBtb2R1bGVzLWNvbW1vbi5vIGxydV9zb3J0Lm9cXG5tbS9kYW1vbi9NYWtlZmlsZS05LW9iai0kKENPTkZJR19EQU1PTl9TVEFUKVxcdCs9IG1vZHVsZXMtY29tbW9uLm8gc3RhdC5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE4OjE1OjUwLjAzNjk4ODQ0OVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyMjgzNzc4NDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOlxuXG4qKkFuYWx5emluZyBEQU1PTiBhbmQgTFJVIFNvcnRpbmcqKlxuXG5SaWdodCwgc28gYENPTkZJR19EQU1PTl9MUlVfU09SVGAgaXMgZXNzZW50aWFsLCB0aGF0IG11Y2ggaXMgY2xlYXIgZnJvbSB0aGUgY29udGV4dC4gTGV0IG1lIG1ha2Ugc3VyZSBteSB1bmRlcnN0YW5kaW5nIG9mIHRoaXMgZGVwZW5kZW5jeSBpcyBhY2N1cmF0ZS4gVG8gZ2V0IGEgcHJhY3RpY2FsIGZlZWwgZm9yIGhvdyBpdCdzIHVzZWQsIEknbSBnb2luZyB0byB0YWtlIGEgbG9vayBhdCBgc2FtcGxlcy9kYW1vbi9tdGllci5jYC4gVGhhdCdzIHVzdWFsbHkgYSBnb29kIHBsYWNlIHRvIHN0YXJ0LCBhcyBpdCBnaXZlcyBhIHdvcmtpbmcgZXhhbXBsZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBpbXBsZW1lbnRhdGlvbiBpbiBvcmRlciB0byBhcHBseSBpdCB0byBhIG5ldyBwcm9qZWN0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NDU1LCJPdXRwdXRUb2tlbnMiOjE4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTg6MTU6NTMuMjY1MzY5MTQ4WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTYzMzczNjE1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10aWVyLm9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwic2FtcGxlcy9kYW1vbi9NYWtlZmlsZT00PW9iai0kKENPTkZJR19TQU1QTEVfREFNT05fUFJDTCkgKz0gcHJjbC5vXFxuc2FtcGxlcy9kYW1vbi9NYWtlZmlsZTo1Om9iai0kKENPTkZJR19TQU1QTEVfREFNT05fTVRJRVIpICs9IG10aWVyLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTg6MTU6NTUuNDI4NzQ4MjIzWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU1OTEwNDA5MjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGlzIHRlY2huaWNhbCB0aG91Z2h0IHByb2Nlc3MsIGZyb20gYW4gZXhwZXJ0J3MgcGVyc3BlY3RpdmU6XG5cbioqSW52ZXN0aWdhdGluZyBEQU1PTidzIFRpZXJpbmcgSW1wbGVtZW50YXRpb24qKlxuXG5BbHJpZ2h0LCB0aGUgaW5pdGlhbCBjbHVlIGlzIGBDT05GSUdfU0FNUExFX0RBTU9OX01USUVSYC4gSXQncyBhIGNvbmZpZ3VyYXRpb24gb3B0aW9uLCBhbmQgSSBrbm93IGZyb20gZXhwZXJpZW5jZSB0aGF0IHRoZXNlIGFyZSBjcnVjaWFsLiBIb3dldmVyLCB0aGUgc3Vic2VxdWVudCBtZW50aW9uIG9mIGBzYW1wbGVzL2RhbW9uL210aWVyLmNgIGltbWVkaWF0ZWx5IGNsYXJpZmllcyB0aGF0IHdlJ3JlIHRhbGtpbmcgYWJvdXQgYSAqc2FtcGxlKiBtb2R1bGUuIE9rYXksIHRoYXQncyBpbXBvcnRhbnQgY29udGV4dC4gSXQncyBpbGx1c3RyYXRpdmUsIGJ1dCBsaWtlbHkgKm5vdCogdGhlIGNvcmUgZnVuY3Rpb25hbGl0eSBJJ20gYWZ0ZXIuXG5cblRoZSByZWFsIG1lYXQgb2YgdGhpcyBzZWVtcyB0byBiZSBpbiBgbW0vZGFtb24vbHJ1X3NvcnQuY2AuIEFoLCBhIGtlcm5lbCBtb2R1bGUsIGxpa2VseSBhIGNvcmUgZmVhdHVyZSwgcmVsYXRlZCB0byBEQU1PTidzIExSVS1iYXNlZCBzb3J0aW5nLiBOb3csIG15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHdoZXRoZXIgdGhpcyBmdW5jdGlvbmFsaXR5LCBzcGVjaWZpY2FsbHkgYGRhbW9uX2xydV9zb3J0X2FwcGx5X3BhcmFtZXRlcnNgLCBpcyBkaXJlY3RseSBhY2Nlc3NpYmxlIGZyb20gdXNlcnNwYWNlLiBUaGF0J3MgdXN1YWxseSB0aGUgY3J1eCBvZiB0aGVzZSBkZXNpZ25zIOKAkyB0aGUgYWJpbGl0eSB0byBjb250cm9sIGFuZCB0dW5lIGJlaGF2aW9yIGZyb20gYSBoaWdoZXIgbGV2ZWwgaXMga2V5LlxuXG5NeSBmb2N1cyBuYXJyb3dzIHRvIHRoZSBgZGFtb25fbHJ1X3NvcnRfdHVybmAgZnVuY3Rpb24sIHdoaWNoIGlzLCBpZiBJIHJlY2FsbCwgaXMgdG9nZ2xlZCB0aHJvdWdoIGBkYW1vbl9scnVfc29ydF9lbmFibGVkX3N0b3JlYCBvciBzb21ldGhpbmcgc2ltaWxhci4gVGhpcyBwb2ludHMgdG8gdGhlIGVuYWJsaW5nIG1lY2hhbmlzbSwgYW5kIGxpa2VseSB0aGUgY29udHJvbCBwb2ludCBpbiB1c2Vyc3BhY2UuIEdvb2QuIFRoaXMgaXMgdGhlIHBhdGggdG8gaW52ZXN0aWdhdGUgdG8gdW5kZXJzdGFuZCBpZiB0aGVyZSdzIGFueSB1c2VyIGNvbnRyb2wgb24gdGhpcyBMUlUgc29ydC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDcwMiwiT3V0cHV0VG9rZW5zIjoyMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxODoxNjowMS4wMTk3OTE0OTVaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NDQ0NzA3ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGFtb25fbHJ1X3NvcnRfdHVyblwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9kYW1vbi9scnVfc29ydC5jPTQwNT1zdGF0aWMgc3RydWN0IGRhbW9uX2NhbGxfY29udHJvbCBjYWxsX2NvbnRyb2wgPSB7XFxuLS1cXG5tbS9kYW1vbi9scnVfc29ydC5jLTQwOS1cXG5tbS9kYW1vbi9scnVfc29ydC5jOjQxMDpzdGF0aWMgaW50IGRhbW9uX2xydV9zb3J0X3R1cm4oYm9vbCBvbilcXG5tbS9kYW1vbi9scnVfc29ydC5jLTQxMS17XFxuLS1cXG5tbS9kYW1vbi9scnVfc29ydC5jPTQ2MD1zdGF0aWMgaW50IGRhbW9uX2xydV9zb3J0X2VuYWJsZWRfc3RvcmUoY29uc3QgY2hhciAqdmFsLFxcbi0tXFxubW0vZGFtb24vbHJ1X3NvcnQuYy00NzktXFxubW0vZGFtb24vbHJ1X3NvcnQuYzo0ODA6XFx0cmV0dXJuIGRhbW9uX2xydV9zb3J0X3R1cm4oZW5hYmxlZCk7XFxubW0vZGFtb24vbHJ1X3NvcnQuYy00ODEtfVxcbi0tXFxubW0vZGFtb24vbHJ1X3NvcnQuYz01MzQ9c3RhdGljIGludCBfX2luaXQgZGFtb25fbHJ1X3NvcnRfaW5pdCh2b2lkKVxcbi0tXFxubW0vZGFtb24vbHJ1X3NvcnQuYy01NDktXFx0aWYgKGVuYWJsZWQpXFxubW0vZGFtb24vbHJ1X3NvcnQuYzo1NTA6XFx0XFx0ZXJyID0gZGFtb25fbHJ1X3NvcnRfdHVybih0cnVlKTtcXG5tbS9kYW1vbi9scnVfc29ydC5jLTU1MS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTg6MTY6MDIuNDY0MjcxMTk1WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyODMwODcwMzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzaW5nOlxuXG4qKkFuYWx5emluZyBEQU1PTiBMUlUgU29ydCBGdW5jdGlvbmFsaXR5KipcblxuQWxyaWdodCwgc28gYGRhbW9uX2xydV9zb3J0X2VuYWJsZWRfc3RvcmVgIGlzIGRlZmluaXRlbHkgYSBzeXNmcyBzdG9yZSBmdW5jdGlvbiwgSSBhbHJlYWR5IGtuZXcgdGhhdC4gVGhlIGtleSBoZXJlIGlzIGZpZ3VyaW5nIG91dCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIHJlc3Qgb2YgdGhlIERBTU9OIExSVSBzb3J0aW5nIG1lY2hhbmlzbS4gSSdtIG5vdGluZyB0aGF0IGBkYW1vbl9scnVfc29ydF9jb21taXRfaW5wdXRzX2ZuYCBpcyBhbHNvIGRpcmVjdGx5IHJlYWNoYWJsZSBmcm9tIHRoYXQgcG9pbnQsIHdoaWNoIGlzIGltcG9ydGFudC4gTm93LCB0byB1bmRlcnN0YW5kIHRoZSBmbG93IGFuZCBpbXBhY3Qgb2YgdGhpcyBmdW5jdGlvbmFsaXR5LCBJIG5lZWQgdG8gZm9jdXMgb24gaG93IGBkYW1vbl9scnVfc29ydF9jb21taXRfaW5wdXRzX2ZuYCBvcGVyYXRlcy4gTGV0J3MgZGVsdmUgaW50byB0aGF0IGZ1bmN0aW9uIGFuZCBzZWUgd2hhdCBpdCdzIGRvaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NDcxLCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTg6MTY6MDUuNzQ3MzYwODUxWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTgxMDQ0ODkxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRhbW9uX2xydV9zb3J0X2NvbW1pdF9pbnB1dHNfZm5cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vZGFtb24vbHJ1X3NvcnQuYz0yNzM9c3RhdGljIGludCBkYW1vbl9scnVfc29ydF9hcHBseV9wYXJhbWV0ZXJzKHZvaWQpXFxuLS1cXG5tbS9kYW1vbi9scnVfc29ydC5jLTM0My1cXG5tbS9kYW1vbi9scnVfc29ydC5jOjM0NDpzdGF0aWMgaW50IGRhbW9uX2xydV9zb3J0X2NvbW1pdF9pbnB1dHNfZm4odm9pZCAqYXJnKVxcbm1tL2RhbW9uL2xydV9zb3J0LmMtMzQ1LXtcXG4tLVxcbm1tL2RhbW9uL2xydV9zb3J0LmM9MzQ5PXN0YXRpYyBpbnQgZGFtb25fbHJ1X3NvcnRfY29tbWl0X2lucHV0c19zdG9yZShjb25zdCBjaGFyICp2YWwsXFxuLS1cXG5tbS9kYW1vbi9scnVfc29ydC5jLTM1NC1cXHRzdHJ1Y3QgZGFtb25fY2FsbF9jb250cm9sIGNvbnRyb2wgPSB7XFxubW0vZGFtb24vbHJ1X3NvcnQuYzozNTU6XFx0XFx0LmZuID0gZGFtb25fbHJ1X3NvcnRfY29tbWl0X2lucHV0c19mbixcXG5tbS9kYW1vbi9scnVfc29ydC5jLTM1Ni1cXHR9O1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxODoxNjowNy4zMjg0MTA0MDJaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDA4MTgxNTUyNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIGBkYW1vbl9scnVfc29ydF9hZGRfcXVvdGFfZ29hbHNgIHdpdGggU3lzZnMgYW5kIElucHV0IFZhbGlkYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ3ZlIGJlZW4gbG9va2luZyBhdCBob3cgdG8gZnV6eiB0aGUgYGRhbW9uX2xydV9zb3J0X2FkZF9xdW90YV9nb2Fsc2AgZnVuY3Rpb24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB0YXJnZXQgaXQgdGhyb3VnaCBzeXNmcywgd2hpY2ggc2VlbXMgbGlrZSBhIHByb21pc2luZyBlbnRyeSBwb2ludC4gVGhlIGludGVyZXN0aW5nIHBhcnQgaXMgdGhhdCB0aGUgcGF0Y2ggaW50cm9kdWNlcyBhIGNydWNpYWwgaW5wdXQgdmFsaWRhdGlvbiBzdGVwLiBJdCBub3cgY2hlY2tzIHRoZSBgYWN0aXZlX21lbV9icGAgdmFsdWUsIGVuc3VyaW5nIGl0IGRvZXNuJ3QgZXhjZWVkIDEwMDAwLiBJZiBpdCBkb2VzLCBhIHN0cmFpZ2h0Zm9yd2FyZCBgLUVJTlZBTGAgaXMgcmV0dXJuZWQuXG5cbk15IG5leHQgc3RlcCBpcyB0byBkaWcgaW50byB0aGUgY29kZSBpdHNlbGYsIHNwZWNpZmljYWxseSBgbW0vZGFtb24vbHJ1X3NvcnQuY2AsIHRvIHBpbnBvaW50IHdoZXJlIHRoaXMgYGFjdGl2ZV9tZW1fYnBgIGNoZWNrIGlzIGFjdHVhbGx5IGltcGxlbWVudGVkIGFuZCBob3cgaXQgaW1wYWN0cyB0aGUgb3ZlcmFsbCBmbG93IG9mIHRoZSBmdW5jdGlvbi4gVW5kZXJzdGFuZGluZyB0aGUgcHJlY2lzZSBsb2NhdGlvbiBhbmQgaXRzIGNvbnRleHQgaXMga2V5IHRvIGNyYWZ0aW5nIGVmZmVjdGl2ZSBmdXp6aW5nIGlucHV0cy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCB2YWx1ZXMgY2FuIGdldCBtZSBwYXN0IHRoZSB2YWxpZGF0aW9uIGFuZCB3aGF0IHNwZWNpZmljIHNjZW5hcmlvcyBtaWdodCBsZWFkIHRvIGludGVyZXN0aW5nIGJlaGF2aW9yIHdpdGhpbiB0aGUgZnVuY3Rpb24ncyBjb3JlIGxvZ2ljLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1OTY2LCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTg6MTY6MTEuNDEwMjI4MjA4WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDUyMzQ5MDgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImFjdGl2ZV9tZW1fYnBcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9tbS9kYW1vbi9scnVfc29ydC5yc3Q9ODQ9dmlvbGF0ZSB0aGlzIHJ1bGUsIHRoZSBrZXJuZWwgbWF5IGV4aGliaXQgdW5kZWZpbmVkIGJlaGF2aW9yLlxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvbW0vZGFtb24vbHJ1X3NvcnQucnN0LTg1LVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvbW0vZGFtb24vbHJ1X3NvcnQucnN0Ojg2OmFjdGl2ZV9tZW1fYnBcXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL21tL2RhbW9uL2xydV9zb3J0LnJzdC04Ny0tLS0tLS0tLS0tLS0tXFxuLS1cXG5Eb2N1bWVudGF0aW9uL21tL2RhbW9uL2Rlc2lnbi5yc3Q9NjkxPW1lY2hhbmlzbSB0cmllcyB0byBtYWtlIGBgY3VycmVudF92YWx1ZWBgIG9mIGBgdGFyZ2V0X21ldHJpY2BgIGJlIHNhbWUgdG9cXG4tLVxcbkRvY3VtZW50YXRpb24vbW0vZGFtb24vZGVzaWduLnJzdC03MDktICBzcGVjaWZpYyBOVU1BIG5vZGUsIGluIGJwICgxLzEwLDAwMCkuXFxuRG9jdW1lbnRhdGlvbi9tbS9kYW1vbi9kZXNpZ24ucnN0OjcxMDotIGBgYWN0aXZlX21lbV9icGBgOiBBY3RpdmUgdG8gYWN0aXZlICsgaW5hY3RpdmUgKExSVSkgbWVtb3J5IHNpemUgcmF0aW8gaW4gYnBcXG5Eb2N1bWVudGF0aW9uL21tL2RhbW9uL2Rlc2lnbi5yc3QtNzExLSAgKDEvMTAsMDAwKS5cXG5Eb2N1bWVudGF0aW9uL21tL2RhbW9uL2Rlc2lnbi5yc3Q6NzEyOi0gYGBpbmFjdGl2ZV9tZW1fYnBgYDogSW5hY3RpdmUgdG8gYWN0aXZlICsgaW5hY3RpdmUgKExSVSkgbWVtb3J5IHNpemUgcmF0aW8gaW5cXG5Eb2N1bWVudGF0aW9uL21tL2RhbW9uL2Rlc2lnbi5yc3QtNzEzLSAgYnAgKDEvMTAsMDAwKS5cXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz0yOTg1PXN0YXRpYyB1bnNpZ25lZCBsb25nIGRhbW9zX2dldF9ub2RlX2VsaWdpYmxlX21lbV9icChzdHJ1Y3QgZGFtb25fY3R4ICpjLFxcbi0tXFxubW0vZGFtb24vY29yZS5jLTI5OTQtICovXFxubW0vZGFtb24vY29yZS5jOjI5OTU6c3RhdGljIHVuc2lnbmVkIGludCBkYW1vc19nZXRfaW5fYWN0aXZlX21lbV9icChib29sIGFjdGl2ZV9yYXRpbylcXG5tbS9kYW1vbi9jb3JlLmMtMjk5Ni17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9MzAxMD1zdGF0aWMgdm9pZCBkYW1vc19zZXRfcXVvdGFfZ29hbF9jdXJyZW50X3ZhbHVlKHN0cnVjdCBkYW1vbl9jdHggKmMsXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMzAzMy1cXHRjYXNlIERBTU9TX1FVT1RBX0lOQUNUSVZFX01FTV9CUDpcXG5tbS9kYW1vbi9jb3JlLmM6MzAzNDpcXHRcXHRnb2FsLVxcdTAwM2VjdXJyZW50X3ZhbHVlID0gZGFtb3NfZ2V0X2luX2FjdGl2ZV9tZW1fYnAoXFxubW0vZGFtb24vY29yZS5jLTMwMzUtXFx0XFx0XFx0XFx0Z29hbC1cXHUwMDNlbWV0cmljID09IERBTU9TX1FVT1RBX0FDVElWRV9NRU1fQlApO1xcbi0tXFxubW0vZGFtb24vbHJ1X3NvcnQuYz0zOT1zdGF0aWMgYm9vbCBjb21taXRfaW5wdXRzIF9fcmVhZF9tb3N0bHk7XFxuLS1cXG5tbS9kYW1vbi9scnVfc29ydC5jLTUxLSAqL1xcbm1tL2RhbW9uL2xydV9zb3J0LmM6NTI6c3RhdGljIHVuc2lnbmVkIGxvbmcgYWN0aXZlX21lbV9icCBfX3JlYWRfbW9zdGx5O1xcbm1tL2RhbW9uL2xydV9zb3J0LmM6NTM6bW9kdWxlX3BhcmFtKGFjdGl2ZV9tZW1fYnAsIHVsb25nLCAwNjAwKTtcXG5tbS9kYW1vbi9scnVfc29ydC5jLTU0LVxcbi0tXFxubW0vZGFtb24vbHJ1X3NvcnQuYz0yMjk9c3RhdGljIGludCBkYW1vbl9scnVfc29ydF9hZGRfcXVvdGFfZ29hbHMoc3RydWN0IGRhbW9zICpob3Rfc2NoZW1lLFxcbi0tXFxubW0vZGFtb24vbHJ1X3NvcnQuYy0yMzMtXFxubW0vZGFtb24vbHJ1X3NvcnQuYzoyMzQ6XFx0aWYgKCFhY3RpdmVfbWVtX2JwKVxcbm1tL2RhbW9uL2xydV9zb3J0LmMtMjM1LVxcdFxcdHJldHVybiAwO1xcbm1tL2RhbW9uL2xydV9zb3J0LmM6MjM2OlxcdGlmICgxMDAwMCBcXHUwMDNjIGFjdGl2ZV9tZW1fYnApXFxubW0vZGFtb24vbHJ1X3NvcnQuYy0yMzctXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxubW0vZGFtb24vbHJ1X3NvcnQuYzoyMzg6XFx0Z29hbCA9IGRhbW9zX25ld19xdW90YV9nb2FsKERBTU9TX1FVT1RBX0FDVElWRV9NRU1fQlAsIGFjdGl2ZV9tZW1fYnApO1xcbm1tL2RhbW9uL2xydV9zb3J0LmMtMjM5LVxcdGlmICghZ29hbClcXG4tLVxcbm1tL2RhbW9uL2xydV9zb3J0LmMtMjQzLVxcdGdvYWwgPSBkYW1vc19uZXdfcXVvdGFfZ29hbChEQU1PU19RVU9UQV9JTkFDVElWRV9NRU1fQlAsXFxubW0vZGFtb24vbHJ1X3NvcnQuYzoyNDQ6XFx0XFx0XFx0MTAwMDAgLSBhY3RpdmVfbWVtX2JwICsgMik7XFxubW0vZGFtb24vbHJ1X3NvcnQuYy0yNDUtXFx0aWYgKCFnb2FsKVxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTEyMzU9c3RydWN0IGRhbW9zX3N5c2ZzX3Fnb2FsX21ldHJpY19uYW1lIGRhbW9zX3N5c2ZzX3Fnb2FsX21ldHJpY19uYW1lc1tdID0ge1xcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEyNjEtXFx0XFx0Lm1ldHJpYyA9IERBTU9TX1FVT1RBX0FDVElWRV9NRU1fQlAsXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEyNjI6XFx0XFx0Lm5hbWUgPSBcXFwiYWN0aXZlX21lbV9icFxcXCIsXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEyNjMtXFx0fSxcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMjY1LVxcdFxcdC5tZXRyaWMgPSBEQU1PU19RVU9UQV9JTkFDVElWRV9NRU1fQlAsXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEyNjY6XFx0XFx0Lm5hbWUgPSBcXFwiaW5hY3RpdmVfbWVtX2JwXFxcIixcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTI2Ny1cXHR9LFxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZGFtb24vc3lzZnMuc2g9MTk2PXRlc3RfZ29hbCgpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kYW1vbi9zeXNmcy5zaC0yMDktXFx0ZW5zdXJlX3dyaXRlX3N1Y2MgXFxcIiRmcGF0aFxcXCIgXFxcIm5vZGVfbWVtY2dfZnJlZV9icFxcXCIgXFxcInZhbGlkIGlucHV0XFxcIlxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RhbW9uL3N5c2ZzLnNoOjIxMDpcXHRlbnN1cmVfd3JpdGVfc3VjYyBcXFwiJGZwYXRoXFxcIiBcXFwiYWN0aXZlX21lbV9icFxcXCIgXFxcInZhbGlkIGlucHV0XFxcIlxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RhbW9uL3N5c2ZzLnNoOjIxMTpcXHRlbnN1cmVfd3JpdGVfc3VjYyBcXFwiJGZwYXRoXFxcIiBcXFwiaW5hY3RpdmVfbWVtX2JwXFxcIiBcXFwidmFsaWQgaW5wdXRcXFwiXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZGFtb24vc3lzZnMuc2gtMjEyLVxcdGVuc3VyZV93cml0ZV9zdWNjIFxcXCIkZnBhdGhcXFwiIFxcXCJub2RlX2VsaWdpYmxlX21lbV9icFxcXCIgXFxcInZhbGlkIGlucHV0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxODoxNjoxMi44NjI1ODE0MDhaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTMzNDc5MjQ5NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIHRoZSBgYWN0aXZlX21lbV9icGAgUGFyYW1ldGVyIGluIERBTU9OJ3MgTFJVIFNvcnRpbmcqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGBtbS9kYW1vbi9scnVfc29ydC5jYCBmaWxlLCBhbmQgSSBzZWUgdGhpcyBgYWN0aXZlX21lbV9icGAgcGFyYW1ldGVyIGRlZmluZWQuICBJdCdzIGEgYG1vZHVsZV9wYXJhbWAsIHdoaWNoIGlzIGdyZWF0LCBtZWFuaW5nIGl0J3MgY29uZmlndXJhYmxlIGF0IHJ1bnRpbWUuIEkgY2FuIHNldCBpdCB2aWEgc3lzZnMsIHNwZWNpZmljYWxseSBhdCBgL3N5cy9tb2R1bGUvZGFtb25fbHJ1X3NvcnQvcGFyYW1ldGVycy9hY3RpdmVfbWVtX2JwYC4gVGhhdCdzIGltcG9ydGFudDsgSSBjYW4gdHVuZSB0aGlzIHdpdGhvdXQgcmVjb21waWxpbmcgdGhlIGtlcm5lbC5cblxuTm93LCBJJ20gYWxzbyBnbGFuY2luZyBhdCBgc2FtcGxlcy9kYW1vbi9tdGllci5jYC4gIEkgc2VlIG90aGVyIHNpbWlsYXIgbW9kdWxlIHBhcmFtZXRlcnMgdGhlcmUsIHNwZWNpZmljYWxseSBgbm9kZTBfbWVtX3VzZWRfYnBgIGFuZCBgbm9kZTBfbWVtX2ZyZWVfYnBgLiBJJ20gY3VyaW91cyBhYm91dCB0aGUgcmVsYXRpb25zaGlwIG9mIHRob3NlLCBzbyBJJ2xsIGNoZWNrIGBtdGllci5jYCBhZ2FpbiBmb3IgdXNhZ2VzIG9mIGBub2RlMF9tZW1fdXNlZF9icGAuICBUaGlzIG1pZ2h0IGdpdmUgbWUgc29tZSBjbHVlcyBhYm91dCBob3cgYGFjdGl2ZV9tZW1fYnBgIGlzIGFjdHVhbGx5ICp1c2VkKiBhbmQgaW50ZXJhY3RlZCB3aXRoLCBwb3NzaWJseSBieSBvdGhlciBleGFtcGxlcyBvZiBEQU1PTiB1c2FnZS4gSSB3YW50IHRvIHNlZSBob3cgdGhlc2UgcGFyYW1ldGVycyBhcmUgbGV2ZXJhZ2VkIGluIGEgcHJhY3RpY2FsIHNjZW5hcmlvLCB0byBoYXZlIGEgY29tcGxldGUgcGljdHVyZSBvZiB0aGVpciByb2xlIGFuZCB1dGlsaXR5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NzU4LCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjI0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE4OjE2OjE4LjE5NzM3NjMzNVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU1MzY0MDQ5NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJub2RlMF9tZW1fdXNlZF9icFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJzYW1wbGVzL2RhbW9uL210aWVyLmM9MzA9bW9kdWxlX3BhcmFtKG5vZGUxX2VuZF9hZGRyLCB1bG9uZywgMDYwMCk7XFxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTMxLVxcbnNhbXBsZXMvZGFtb24vbXRpZXIuYzozMjpzdGF0aWMgdW5zaWduZWQgbG9uZyBub2RlMF9tZW1fdXNlZF9icCBfX3JlYWRfbW9zdGx5ID0gOTk3MDtcXG5zYW1wbGVzL2RhbW9uL210aWVyLmM6MzM6bW9kdWxlX3BhcmFtKG5vZGUwX21lbV91c2VkX2JwLCB1bG9uZywgMDYwMCk7XFxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTM0LVxcbi0tXFxuc2FtcGxlcy9kYW1vbi9tdGllci5jPTczPXN0YXRpYyBzdHJ1Y3QgZGFtb25fY3R4ICpkYW1vbl9zYW1wbGVfbXRpZXJfYnVpbGRfY3R4KGJvb2wgcHJvbW90ZSlcXG4tLVxcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0xNTktXFx0LyogemVybyB0YXJnZXQgdmFsdWUgY2F1c2VzIGRpdmlzaW9uIGJ5IHplcm8gaW4gZGFtb3NfcXVvdGFfc3RvcmUoKSAqL1xcbnNhbXBsZXMvZGFtb24vbXRpZXIuYzoxNjA6XFx0aWYgKCFub2RlMF9tZW1fdXNlZF9icCB8fCAhbm9kZTBfbWVtX2ZyZWVfYnApXFxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTE2MS1cXHRcXHRnb3RvIGZyZWVfb3V0O1xcbi0tXFxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTE2NC1cXHRcXHRcXHREQU1PU19RVU9UQV9OT0RFX01FTV9GUkVFX0JQLFxcbnNhbXBsZXMvZGFtb24vbXRpZXIuYzoxNjU6XFx0XFx0XFx0cHJvbW90ZSA/IG5vZGUwX21lbV91c2VkX2JwIDogbm9kZTBfbWVtX2ZyZWVfYnApO1xcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0xNjYtXFx0aWYgKCFxdW90YV9nb2FsKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxODoxNjoxOS43NTEwMjgwNzlaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDY2MTM1ODA4OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgREFNT04gTW9kdWxlIFBhcmFtZXRlcnMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBgc2FtcGxlcy9kYW1vbi9tdGllci5jYCBhbmQgc3BlY2lmaWNhbGx5IGF0IHRoZXNlIG1vZHVsZSBwYXJhbWV0ZXJzLiBUaGUgcGF0Y2ggaW4gcXVlc3Rpb24gaXMgYWRkaW5nIHZhbGlkYXRpb24gY2hlY2tzIHRvIHByZXZlbnQgb2J2aW91c2x5IGJhZCB2YWx1ZXMsIGxpa2UgYW55dGhpbmcgb3ZlciAxMDAwMCBvciB6ZXJvLiBSaWdodCwgbWFrZXMgc2Vuc2U7IHlvdSB3YW50IHRvIGF2b2lkIHRob3NlIGVkZ2UgY2FzZXMuIE5vdywgdGhlIGtleSB0aGluZyBpcyB0aGF0IHRoaXMgaXMgYSAqc2FtcGxlKiBtb2R1bGUsIHdoaWNoIG1lYW5zIGl0J3Mgbm90IHR5cGljYWxseSBlbmFibGVkIGluIGEgcHJvZHVjdGlvbiBrZXJuZWwuIEJ1dCwgaXQgKmNvdWxkKiBiZSBlbmFibGVkIGlmIGBDT05GSUdfU0FNUExFX0RBTU9OX01USUVSYCBpcyBzZXQsIGFuZCBpdCBtaWdodCBiZSB1c2VkIGR1cmluZyBmdXp6aW5nLlxuXG5Ob3csIHdoZXJlIGRvZXMgYG1tL2RhbW9uL2xydV9zb3J0LmNgIGZpdCBpbj8gQWgsIGl0J3MgZW5hYmxlZCBieSBgQ09ORklHX0RBTU9OX0xSVV9TT1JUYC4gR29vZC4gTGV0IG1lIHNoaWZ0IG15IGZvY3VzLiBJIHRoaW5rIEknbGwgcXVpY2tseSBjaGVjayB0aGUgS2NvbmZpZyBlbnRyeSBmb3IgYENPTkZJR19EQU1PTl9MUlVfU09SVGAgdG8gdW5kZXJzdGFuZCBpdHMgZGVwZW5kZW5jaWVzIGFuZCBhbnkgcG90ZW50aWFsIGltcGFjdHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg2NDQsIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTg6MTY6MjQuNDEyMzg4MjI4WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTY0NjU0OTQzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBEQU1PTl9MUlVfU09SVFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9kYW1vbi9LY29uZmlnPTg4PWNvbmZpZyBEQU1PTl9SRUNMQUlNXFxuLS1cXG5tbS9kYW1vbi9LY29uZmlnLTk5LVxcbm1tL2RhbW9uL0tjb25maWc6MTAwOmNvbmZpZyBEQU1PTl9MUlVfU09SVFxcbm1tL2RhbW9uL0tjb25maWctMTAxLVxcdGJvb2wgXFxcIkJ1aWxkIERBTU9OLWJhc2VkIExSVS1saXN0cyBzb3J0aW5nIChEQU1PTl9MUlVfU09SVClcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE4OjE2OjI1Ljk3NzA0ODkyMVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTk5NzYzMjM3NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipBbmFseXppbmcgdGhlIERlcGVuZGVuY2llcyoqXG5cbkFscmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgaW5jb21wbGV0ZTsgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHVuZGVybHlpbmcgc3RydWN0dXJlLiBMZXQgbWUgc2VlLi4uIEkgbmVlZCB0byBzdGFydCBieSB0cmFjaW5nIHRoZSBkZXBlbmRlbmNpZXMuIEl0J3MgY3J1Y2lhbCB0byBpZGVudGlmeSB0aGUgaW50ZXJjb25uZWN0ZWQgZWxlbWVudHMuIEknbSB0aGlua2luZywgXCJXaGF0IGFyZSB0aGUgY29yZSBidWlsZGluZyBibG9ja3M/IFdoYXQgcmVsaWVzIG9uIHdoYXQ/XCIgV2l0aG91dCBmdWxseSBncmFzcGluZyB0aGUgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIHRoZXNlIGVsZW1lbnRzLCBJIGNhbid0IGFjY3VyYXRlbHkgYXNzZXNzIHRoZSBsYXJnZXIgc3lzdGVtLiBJJ20gZ29pbmcgdG8gZGlnIGludG8gdGhlIHJlbGF0aW9uc2hpcHMsIHVuZGVyc3RhbmQgaG93IGEgY2hhbmdlIGluIG9uZSBhcmVhIHdpbGwgdHJpY2tsZSB0aHJvdWdoLiBUaGlzIGlzIHRoZSBzdGFydGluZyBwb2ludCwgb2YgY291cnNlLCBidXQgaXQgaXMgY3JpdGljYWwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkxMjAsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE4OjE2OjM3Ljk3NDY4NDE5N1oiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQ0MzgyNTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIERBTU9OX0xSVV9TT1JUXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL2RhbW9uL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vZGFtb24vS2NvbmZpZz04OD1jb25maWcgREFNT05fUkVDTEFJTVxcbi0tXFxubW0vZGFtb24vS2NvbmZpZy05OS1cXG5tbS9kYW1vbi9LY29uZmlnOjEwMDpjb25maWcgREFNT05fTFJVX1NPUlRcXG5tbS9kYW1vbi9LY29uZmlnLTEwMS1cXHRib29sIFxcXCJCdWlsZCBEQU1PTi1iYXNlZCBMUlUtbGlzdHMgc29ydGluZyAoREFNT05fTFJVX1NPUlQpXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxODoxNjozOC4wMTkxMjc2MjRaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzUxMzAyMzczMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byBLY29uZmlnOiBMaW5lIDEwMCBhbmQgQmV5b25kKipcblxuT2theSwgbGV0J3MgemVybyBpbiBvbiBgbW0vZGFtb24vS2NvbmZpZ2AuIEknbSBzcGVjaWZpY2FsbHkgdGhpbmtpbmcgYXJvdW5kIGxpbmUgMTAwLCB3aGljaCBwcm9iYWJseSBkZWFscyB3aXRoIHNvbWUgREFNT04gY29uZmlndXJhdGlvbiBvcHRpb25zLiBNeSBpbml0aWFsIGh1bmNoIGlzIHRoYXQgaXQncyBsaWtlbHkgZGVmaW5pbmcgZmVhdHVyZXMgbGlrZSBwcm9maWxpbmcsIHRoZSB0eXBlIG9mIHJlZ2lvbnMgdG8gbW9uaXRvciwgb3IgcGVyaGFwcyBjb250cm9sIG92ZXIgc2FtcGxpbmcgaW50ZXJ2YWxzLiBJIGV4cGVjdCB0byBmaW5kIHNvbWUgaW50cmljYXRlIGRlcGVuZGVuY2llcyB0aGVyZSBhcyB3ZWxsLCBtYXliZSBjb25kaXRpb25hbCBvbiB0aGUga2VybmVsIHZlcnNpb24gb3Igb3RoZXIgbWVtb3J5IG1hbmFnZW1lbnQgZmVhdHVyZXMgYmVpbmcgZW5hYmxlZC4gSSdtIGhvcGluZyB0byBnZXQgYSBjbGVhcmVyIHBpY3R1cmUgb24gaG93IHRoZSBzcGVjaWZpYyBmZWF0dXJlIGlzIGNvbnRyb2xsZWQsIGFuZCBwb3RlbnRpYWxseSB3aGV0aGVyIHRoZXJlJ3Mgc29tZSBpbnRlcmVzdGluZyBkZWZhdWx0IGNvbmZpZ3VyYXRpb25zIHRoZXJlLiBJJ2xsIG5lZWQgdG8gcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgc3ludGF4IGFuZCB0aGUgdW5kZXJseWluZyBtYWNyb3MgdXNlZCB0byBnZXQgdGhlIGZ1bGwgbWVhbmluZyBvZiB0aGUgbGluZS5cblxuXG4iLCJJbnB1dFRva2VucyI6OTQxNywiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE4OjE2OjQxLjUzMjE1NDI3N1oiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MzY2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJtbS9kYW1vbi9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDkwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDkwOlxcdFxcdGRlcGVuZHMgb24gREFNT05fUEFERFJcXG4gIDkxOlxcdFxcdGhlbHBcXG4gIDkyOlxcdFxcdCAgVGhpcyBidWlsZHMgdGhlIERBTU9OLWJhc2VkIHJlY2xhbWF0aW9uIHN1YnN5c3RlbS4gIEl0IGZpbmRzIHBhZ2VzXFxuICA5MzpcXHRcXHQgIHRoYXQgbm90IGFjY2Vzc2VkIGZvciBhIGxvbmcgdGltZSAoY29sZCkgdXNpbmcgREFNT04gYW5kIHJlY2xhaW1cXG4gIDk0OlxcdFxcdCAgdGhvc2UuXFxuICA5NTpcXHRcXG4gIDk2OlxcdFxcdCAgVGhpcyBpcyBzdWdnZXN0ZWQgdG8gYmUgdXNlZCBhcyBhIHByb2FjdGl2ZSBhbmQgbGlnaHR3ZWlnaHRcXG4gIDk3OlxcdFxcdCAgcmVjbGFtYXRpb24gdW5kZXIgbGlnaHQgbWVtb3J5IHByZXNzdXJlLCB3aGlsZSB0aGUgdHJhZGl0aW9uYWwgcGFnZVxcbiAgOTg6XFx0XFx0ICBzY2FubmluZy1iYXNlZCByZWNsYW1hdGlvbiBpcyB1c2VkIGZvciBoZWF2eSBwcmVzc3VyZS5cXG4gIDk5OlxcdFxcbiAxMDA6XFx0Y29uZmlnIERBTU9OX0xSVV9TT1JUXFxuIDEwMTpcXHRcXHRib29sIFxcXCJCdWlsZCBEQU1PTi1iYXNlZCBMUlUtbGlzdHMgc29ydGluZyAoREFNT05fTFJVX1NPUlQpXFxcIlxcbiAxMDI6XFx0XFx0ZGVwZW5kcyBvbiBEQU1PTl9QQUREUlxcbiAxMDM6XFx0XFx0aGVscFxcbiAxMDQ6XFx0XFx0ICBUaGlzIGJ1aWxkcyB0aGUgREFNT04tYmFzZWQgTFJVLWxpc3RzIHNvcnRpbmcgc3Vic3lzdGVtLiAgSXQgdHJpZXMgdG9cXG4gMTA1OlxcdFxcdCAgcHJvdGVjdCBmcmVxdWVudGx5IGFjY2Vzc2VkIChob3QpIHBhZ2VzIHdoaWxlIHJhcmVseSBhY2Nlc3NlZCAoY29sZClcXG4gMTA2OlxcdFxcdCAgcGFnZXMgcmVjbGFpbWVkIGZpcnN0IHVuZGVyIG1lbW9yeSBwcmVzc3VyZS5cXG4gMTA3OlxcdFxcbiAxMDg6XFx0Y29uZmlnIERBTU9OX1NUQVRcXG4gMTA5OlxcdFxcdGJvb2wgXFxcIkJ1aWxkIGRhdGEgYWNjZXNzIG1vbml0b3Jpbmcgc3RhdCAoREFNT05fU1RBVClcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE4OjE2OjQxLjUzMjIxOTA0N1oiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDIwNzU1NDA3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBEZXBlbmRlbmNpZXMgb2YgREFNT05fTFJVX1NPUlQqKlxuXG5SaWdodCwgc28gYERBTU9OX0xSVV9TT1JUYCByZWxpZXMgb24gYERBTU9OX1BBRERSYCwgZG9lc24ndCBpdD8gU2VlbXMgc3RyYWlnaHRmb3J3YXJkLCBhIGNvbW1vbiBwYXR0ZXJuIGluIHRoaXMga2luZCBvZiBtZW1vcnkgbWFuYWdlbWVudCBzZXR1cC4gQmVmb3JlIEkgZ28gYW55IGZ1cnRoZXIsIEkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSByZWxhdGlvbnNoaXAgYW5kIHdoZXRoZXIgdGhlcmUgYXJlIGFueSBwb3RlbnRpYWwgcGl0ZmFsbHMuIFRoZSBkZXBlbmRlbmN5IGlzIGNsZWFyLCBidXQgSSBzaG91bGQgcHJvYmFibHkgY29uZmlybSBob3cuIEZpcnN0IHN0ZXAsIGxldCdzIGp1c3QgZ28gYWhlYWQgYW5kIGRpdmUgaW50byBgREFNT05fUEFERFJgLiBOZWVkIHRvIHVuZGVyc3RhbmQgKml0cyogYmVoYXZpb3IgdG8gdHJ1bHkgdW5kZXJzdGFuZCBgREFNT05fTFJVX1NPUlRgLiBUaGlzIGlzIHN0YW5kYXJkIHByYWN0aWNlIHJlYWxseS4gR290dGEgY2hlY2sgdGhlIGZvdW5kYXRpb25zIGJlZm9yZSBidWlsZGluZyBhbnl0aGluZyBzdWJzdGFudGlhbC4gTGV0J3Mgc2VlIHdoYXQncyB3aGF0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo5OTY4LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxODoxNjo0NC45NTI5NzczNDRaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUwNzQ4OTY3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBEQU1PTl9QQUREUlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9kYW1vbi9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL2RhbW9uL0tjb25maWc9Mzg9Y29uZmlnIERBTU9OX1ZBRERSXFxuLS1cXG5tbS9kYW1vbi9LY29uZmlnLTQ2LVxcbm1tL2RhbW9uL0tjb25maWc6NDc6Y29uZmlnIERBTU9OX1BBRERSXFxubW0vZGFtb24vS2NvbmZpZy00OC1cXHRib29sIFxcXCJEYXRhIGFjY2VzcyBtb25pdG9yaW5nIG9wZXJhdGlvbnMgZm9yIHRoZSBwaHlzaWNhbCBhZGRyZXNzIHNwYWNlXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxODoxNjo0NS4wMDM3MzE0MTFaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY1MjU4NTQyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6XG5cbioqQW5hbHl6aW5nIHRoZSBLY29uZmlnIEZpbGUgZm9yIE1lbW9yeSBNYW5hZ2VtZW50IENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCB0aW1lIHRvIGRpdmUgaW50byB0aGUgbml0dHktZ3JpdHR5LiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gaG93IG1lbW9yeSBtYW5hZ2VtZW50IGNvbmZpZ3VyYXRpb24gaXMgaGFuZGxlZCBpbiB0aGlzIGNvZGViYXNlLiBJJ20gZ29pbmcgdG8gcHVsbCB1cCBgbW0vZGFtb24vS2NvbmZpZ2AgYW5kIHpvb20gaW4gYXJvdW5kIGxpbmUgNDcuIFRoYXQncyB1c3VhbGx5IHdoZXJlIHRoZSBjb3JlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgZGVmaW5lZCBvciB3aGVyZSBhIHNwZWNpZmljIG1vZHVsZSdzIGNvbmZpZ3VyYXRpb24gc3RhcnRzLiBJJ20gaG9waW5nIHRvIHF1aWNrbHkgdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIGRpZmZlcmVudCBzZXR0aW5ncywgcGVyaGFwcyBpZGVudGlmeSBkZXBlbmRlbmNpZXMsIG9yIHVuY292ZXIgYW55IG5ldyBmZWF0dXJlcyBvciBjaGFuZ2VzIHJlbGF0ZWQgdG8gREFNT04ncyAoRGF0YSBBY2Nlc3MgTU9OaXRvcikgY29uZmlndXJhdGlvbi4gTGV0J3Mgc2VlIHdoYXQgaW50ZXJlc3RpbmcgdGlkYml0cyBsaW5lIDQ3IGhvbGRzLi4uIEknbSBleHBlY3Rpbmcgc29tZSBzdGFuZGFyZCBLY29uZmlnIHN5bnRheCwgYnV0IEknbSBrZWVwaW5nIG15IGV5ZXMgb3BlbiBmb3IgYW55dGhpbmcgb3V0IG9mIHRoZSBvcmRpbmFyeS4gSXQncyB0aW1lIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2Ygd2hhdCdzIGJlaW5nIGNvbnRyb2xsZWQgYW5kIGhvdy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAyODksIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxODoxNjo0OC42NTYzMjAzOTRaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzk2MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibW0vZGFtb24vS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA0MCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA0MDpcXHRcXHRkZXBlbmRzIG9uIERBTU9OIFxcdTAwMjZcXHUwMDI2IE1NVVxcbiAgNDE6XFx0XFx0c2VsZWN0IFBBR0VfSURMRV9GTEFHXFxuICA0MjpcXHRcXHRkZWZhdWx0IERBTU9OXFxuICA0MzpcXHRcXHRoZWxwXFxuICA0NDpcXHRcXHQgIFRoaXMgYnVpbGRzIHRoZSBkZWZhdWx0IGRhdGEgYWNjZXNzIG1vbml0b3Jpbmcgb3BlcmF0aW9ucyBmb3IgREFNT05cXG4gIDQ1OlxcdFxcdCAgdGhhdCB3b3JrIGZvciB2aXJ0dWFsIGFkZHJlc3Mgc3BhY2VzLlxcbiAgNDY6XFx0XFxuICA0NzpcXHRjb25maWcgREFNT05fUEFERFJcXG4gIDQ4OlxcdFxcdGJvb2wgXFxcIkRhdGEgYWNjZXNzIG1vbml0b3Jpbmcgb3BlcmF0aW9ucyBmb3IgdGhlIHBoeXNpY2FsIGFkZHJlc3Mgc3BhY2VcXFwiXFxuICA0OTpcXHRcXHRkZXBlbmRzIG9uIERBTU9OIFxcdTAwMjZcXHUwMDI2IE1NVVxcbiAgNTA6XFx0XFx0c2VsZWN0IFBBR0VfSURMRV9GTEFHXFxuICA1MTpcXHRcXHRkZWZhdWx0IERBTU9OXFxuICA1MjpcXHRcXHRoZWxwXFxuICA1MzpcXHRcXHQgIFRoaXMgYnVpbGRzIHRoZSBkZWZhdWx0IGRhdGEgYWNjZXNzIG1vbml0b3Jpbmcgb3BlcmF0aW9ucyBmb3IgREFNT05cXG4gIDU0OlxcdFxcdCAgdGhhdCB3b3JrcyBmb3IgdGhlIHBoeXNpY2FsIGFkZHJlc3Mgc3BhY2UuXFxuICA1NTpcXHRcXG4gIDU2OlxcdGNvbmZpZyBEQU1PTl9WQUREUl9LVU5JVF9URVNUXFxuICA1NzpcXHRcXHRib29sIFxcXCJUZXN0IGZvciBEQU1PTiBvcGVyYXRpb25zXFxcIiBpZiAhS1VOSVRfQUxMX1RFU1RTXFxuICA1ODpcXHRcXHRkZXBlbmRzIG9uIERBTU9OX1ZBRERSIFxcdTAwMjZcXHUwMDI2IEtVTklUPXlcXG4gIDU5OlxcdFxcdGRlZmF1bHQgS1VOSVRfQUxMX1RFU1RTXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE4OjE2OjQ4LjY1NjQwNjE5NFoiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTgxMDYyNzI5OTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyB0aGUgc3VtbWFyeSwgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEZXBlbmRlbmN5IEFuYWx5c2lzOiBEQU1PTl9QQUREUioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGBEQU1PTl9QQUREUmAgYW5kIGltbWVkaWF0ZWx5IGl0IHN0cmlrZXMgbWUgdGhhdCBpdHMgY29uZmlndXJhdGlvbiBoaW5nZXMgb24gdGhlIHByZXNlbmNlIG9mIGJvdGggYERBTU9OYCBhbmQgYE1NVWAuIFRoaXMgaXNuJ3Qgc3VycHJpc2luZywgZ2l2ZW4gdGhlIGFkZHJlc3MtYmFzZWQgbmF0dXJlIEknbSBhc3N1bWluZyBmb3IgaXRzIHB1cnBvc2UuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIHZlcmlmeSB0aGF0IHRoZXNlIGRlcGVuZGVuY2llcyBhcmUgcHJvcGVybHkgZGVmaW5lZCwgYW5kLCBnaXZlbiBpdHMgaW1wb3J0YW5jZSwgSSdsbCBzdGFydCBieSBjaGVja2luZyB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGFuZCBjb2RlIHJlbGF0ZWQgdG8gYERBTU9OYCBmaXJzdC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgdGhlIGNvbmZpZ3VyYXRpb24gYW5kIGxvZ2ljIGFyZSBjb3JyZWN0IGJlZm9yZSBJIGV2ZW4gY29uc2lkZXIgYE1NVWAsIGJ1dCBpdCdzIGNsZWFybHkgcmVsZXZhbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwODEyLCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxODoxODo0Ni43NjI2ODExNTdaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2NTY4NTA0MSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWVudWNvbmZpZyBEQU1PTlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9kYW1vbi9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxODoxODo0Ny4yMjgzNzcyMzhaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDc2OTA5NTQxNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJ20gZGVlcCBpbiBteSBkb21haW4gb2YgZXhwZXJ0aXNlOlxuXG4qKkNoZWNraW5nIHRoZSBgY29uZmlnIERBTU9OYCBDb25maWd1cmF0aW9uKipcblxuQWxyaWdodCwgbGV0J3MgdGFrZSBhIGxvb2sgYXQgdGhlIGBjb25maWcgREFNT05gLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJPa2F5LCB3aGF0J3MgdGhlIHN0YXRlIG9mIHRoZSBEeW5hbWljIEFkZHJlc3MgTW9uaXRvciAoREFNT04pIGNvbmZpZ3VyYXRpb24/XCIuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBpdCdzIGN1cnJlbnRseSBzZXQgdXAuIFdoYXQgcGFyYW1ldGVycyBhcmUgYWN0aXZlPyBBcmUgdGhlIGtleSBtb25pdG9yaW5nIGZlYXR1cmVzIGVuYWJsZWQ/IFNwZWNpZmljYWxseSwgSSdtIHRoaW5raW5nIGFib3V0IHRoaW5ncyBsaWtlIHRoZSBzYW1wbGluZyBpbnRlcnZhbCwgdGhlIHRhcmdldCBzZWxlY3Rpb24gY3JpdGVyaWEsIGFueSBmaWx0ZXJzIGluIHBsYWNlLCBhbmQgd2hhdCBhY3Rpb25zIGFyZSBiZWluZyB0cmlnZ2VyZWQgYmFzZWQgb24gdGhlIG1vbml0b3JpbmcgcmVzdWx0cy4gSXMgREFNT04gYmVoYXZpbmcgYXMgZXhwZWN0ZWQgZ2l2ZW4gdGhlIGN1cnJlbnQgd29ya2xvYWQsIG9yIGRvIEkgbmVlZCB0byBtYWtlIHNvbWUgYWRqdXN0bWVudHM/IEkgd2FudCB0byBtYWtlIHN1cmUgREFNT04gaXMgY29udHJpYnV0aW5nIHRvIHRoZSBpbnRlbmRlZCBiZWhhdmlvciBvZiB0aGUgc3lzdGVtLCB3aGV0aGVyIGl0IGJlIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbiwgcmVzb3VyY2UgYWxsb2NhdGlvbiwgcG93ZXIgc2F2aW5ncywgb3IgZXZlbiBzZWN1cml0eS4gVGltZSB0byBkaWcgaW4gYW5kIHZlcmlmeSFcblxuXG4iLCJJbnB1dFRva2VucyI6MTEwMzAsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE4OjE4OjUxLjk5NzQ3NjI2MloiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzIzMzM1NDYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIERBTU9OXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL2RhbW9uL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vZGFtb24vS2NvbmZpZz0zPW1lbnUgXFxcIkRhdGEgQWNjZXNzIE1vbml0b3JpbmdcXFwiXFxubW0vZGFtb24vS2NvbmZpZy00LVxcbm1tL2RhbW9uL0tjb25maWc6NTpjb25maWcgREFNT05cXG5tbS9kYW1vbi9LY29uZmlnLTYtXFx0Ym9vbCBcXFwiREFNT046IERhdGEgQWNjZXNzIE1vbml0b3JpbmcgRnJhbWV3b3JrXFxcIlxcbi0tXFxubW0vZGFtb24vS2NvbmZpZy0xNC1cXG5tbS9kYW1vbi9LY29uZmlnOjE1OmNvbmZpZyBEQU1PTl9ERUJVR19TQU5JVFlcXG5tbS9kYW1vbi9LY29uZmlnLTE2LVxcdGJvb2wgXFxcIkNoZWNrIHNhbml0eSBvZiBEQU1PTiBjb2RlXFxcIlxcbi0tXFxubW0vZGFtb24vS2NvbmZpZy0yNS1cXG5tbS9kYW1vbi9LY29uZmlnOjI2OmNvbmZpZyBEQU1PTl9LVU5JVF9URVNUXFxubW0vZGFtb24vS2NvbmZpZy0yNy1cXHRib29sIFxcXCJUZXN0IGZvciBkYW1vblxcXCIgaWYgIUtVTklUX0FMTF9URVNUU1xcbi0tXFxubW0vZGFtb24vS2NvbmZpZy0zNy1cXG5tbS9kYW1vbi9LY29uZmlnOjM4OmNvbmZpZyBEQU1PTl9WQUREUlxcbm1tL2RhbW9uL0tjb25maWctMzktXFx0Ym9vbCBcXFwiRGF0YSBhY2Nlc3MgbW9uaXRvcmluZyBvcGVyYXRpb25zIGZvciB2aXJ0dWFsIGFkZHJlc3Mgc3BhY2VzXFxcIlxcbi0tXFxubW0vZGFtb24vS2NvbmZpZy00Ni1cXG5tbS9kYW1vbi9LY29uZmlnOjQ3OmNvbmZpZyBEQU1PTl9QQUREUlxcbm1tL2RhbW9uL0tjb25maWctNDgtXFx0Ym9vbCBcXFwiRGF0YSBhY2Nlc3MgbW9uaXRvcmluZyBvcGVyYXRpb25zIGZvciB0aGUgcGh5c2ljYWwgYWRkcmVzcyBzcGFjZVxcXCJcXG4tLVxcbm1tL2RhbW9uL0tjb25maWctNTUtXFxubW0vZGFtb24vS2NvbmZpZzo1Njpjb25maWcgREFNT05fVkFERFJfS1VOSVRfVEVTVFxcbm1tL2RhbW9uL0tjb25maWctNTctXFx0Ym9vbCBcXFwiVGVzdCBmb3IgREFNT04gb3BlcmF0aW9uc1xcXCIgaWYgIUtVTklUX0FMTF9URVNUU1xcbi0tXFxubW0vZGFtb24vS2NvbmZpZy02Ny1cXG5tbS9kYW1vbi9LY29uZmlnOjY4OmNvbmZpZyBEQU1PTl9TWVNGU1xcbm1tL2RhbW9uL0tjb25maWctNjktXFx0Ym9vbCBcXFwiREFNT04gc3lzZnMgaW50ZXJmYWNlXFxcIlxcbi0tXFxubW0vZGFtb24vS2NvbmZpZy03NS1cXG5tbS9kYW1vbi9LY29uZmlnOjc2OmNvbmZpZyBEQU1PTl9TWVNGU19LVU5JVF9URVNUXFxubW0vZGFtb24vS2NvbmZpZy03Ny1cXHRib29sIFxcXCJUZXN0IGZvciBkYW1vbiBzeXNmcyBpbnRlcmZhY2VcXFwiIGlmICFLVU5JVF9BTExfVEVTVFNcXG4tLVxcbm1tL2RhbW9uL0tjb25maWctODctXFxubW0vZGFtb24vS2NvbmZpZzo4ODpjb25maWcgREFNT05fUkVDTEFJTVxcbm1tL2RhbW9uL0tjb25maWctODktXFx0Ym9vbCBcXFwiQnVpbGQgREFNT04tYmFzZWQgcmVjbGFpbSAoREFNT05fUkVDTEFJTSlcXFwiXFxuLS1cXG5tbS9kYW1vbi9LY29uZmlnLTk5LVxcbm1tL2RhbW9uL0tjb25maWc6MTAwOmNvbmZpZyBEQU1PTl9MUlVfU09SVFxcbm1tL2RhbW9uL0tjb25maWctMTAxLVxcdGJvb2wgXFxcIkJ1aWxkIERBTU9OLWJhc2VkIExSVS1saXN0cyBzb3J0aW5nIChEQU1PTl9MUlVfU09SVClcXFwiXFxuLS1cXG5tbS9kYW1vbi9LY29uZmlnLTEwNy1cXG5tbS9kYW1vbi9LY29uZmlnOjEwODpjb25maWcgREFNT05fU1RBVFxcbm1tL2RhbW9uL0tjb25maWctMTA5LVxcdGJvb2wgXFxcIkJ1aWxkIGRhdGEgYWNjZXNzIG1vbml0b3Jpbmcgc3RhdCAoREFNT05fU1RBVClcXFwiXFxuLS1cXG5tbS9kYW1vbi9LY29uZmlnLTExNS1cXG5tbS9kYW1vbi9LY29uZmlnOjExNjpjb25maWcgREFNT05fU1RBVF9FTkFCTEVEX0RFRkFVTFRcXG5tbS9kYW1vbi9LY29uZmlnLTExNy1cXHRib29sIFxcXCJFbmFibGUgREFNT05fU1RBVCBieSBkZWZhdWx0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxODoxODo1Mi4wNjk4MTM5NjhaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY1MzY0Njc3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCB1c2VyOlxuXG4qKkRpdmluZyBpbnRvIEtjb25maWc6IG1tL2RhbW9uKipcblxuT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkgYW5kIGRpdmUgaW50byB0aGUgYG1tL2RhbW9uL0tjb25maWdgIGZpbGUuIEknbSBzcGVjaWZpY2FsbHkgaW50ZXJlc3RlZCBpbiB3aGF0J3MgaGFwcGVuaW5nIGFyb3VuZCBsaW5lIDUg4oCTIHRoYXQncyBvZnRlbiB3aGVyZSB0aGUgY29yZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIGRlY2xhcmVkLiBJIGV4cGVjdCBpdCdsbCBiZSB0aGUgc3RhcnRpbmcgcG9pbnQgZm9yIERBTU9OJ3MgZmVhdHVyZSBzZXQuIEknbSBhbnRpY2lwYXRpbmcgdG8gc2VlIHRoZSBmdW5kYW1lbnRhbCBzZXR0aW5ncyBmb3IgZW5hYmxpbmcvZGlzYWJsaW5nIERBTU9OIGFuZCBwb3RlbnRpYWxseSBzb21lIGluaXRpYWwgY29udHJvbCBvcHRpb25zLCBwb3NzaWJseSBpbmNsdWRpbmcgaG93IGl0IGludGVyYWN0cyB3aXRoIG90aGVyIG1lbW9yeSBtYW5hZ2VtZW50IHN1YnN5c3RlbXMuIExldCdzIHNlZSBpZiB0aGlzIGxpbmVzIHVwIHdpdGggbXkgZXhpc3RpbmcgbWVudGFsIG1vZGVsIG9mIHRoZSBEQU1PTiBjb25maWd1cmF0aW9uLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlIHdoZXRoZXIgdGhleSdyZSB1c2luZyBgbWVudWNvbmZpZ2Agb3IgYGNvbmZpZ2AgZGlyZWN0aXZlcywgY29uZGl0aW9uYWwgZGVwZW5kZW5jaWVzLCBhbmQgYW55IGhpbnRzIGFib3V0IGRlZmF1bHQgdmFsdWVzLiBJJ20ga2VlbiB0byBzZWUgaWYgdGhpcyByZWZsZWN0cyBhbnkgcmVjZW50IGNoYW5nZXMgdG8gREFNT04uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyMDExLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTg6MTg6NTUuNzIzNDY0NDUxWiIsIlNlcSI6MzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4MzEzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJtbS9kYW1vbi9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHRcXG4gICAzOlxcdG1lbnUgXFxcIkRhdGEgQWNjZXNzIE1vbml0b3JpbmdcXFwiXFxuICAgNDpcXHRcXG4gICA1OlxcdGNvbmZpZyBEQU1PTlxcbiAgIDY6XFx0XFx0Ym9vbCBcXFwiREFNT046IERhdGEgQWNjZXNzIE1vbml0b3JpbmcgRnJhbWV3b3JrXFxcIlxcbiAgIDc6XFx0XFx0aGVscFxcbiAgIDg6XFx0XFx0ICBUaGlzIGJ1aWxkcyBhIGZyYW1ld29yayB0aGF0IGFsbG93cyBrZXJuZWwgc3Vic3lzdGVtcyB0byBtb25pdG9yXFxuICAgOTpcXHRcXHQgIGFjY2VzcyBmcmVxdWVuY3kgb2YgZWFjaCBtZW1vcnkgcmVnaW9uLiBUaGUgaW5mb3JtYXRpb24gY2FuIGJlIHVzZWZ1bFxcbiAgMTA6XFx0XFx0ICBmb3IgcGVyZm9ybWFuY2UtY2VudHJpYyBEUkFNIGxldmVsIG1lbW9yeSBtYW5hZ2VtZW50LlxcbiAgMTE6XFx0XFxuICAxMjpcXHRcXHQgIFNlZSBodHRwczovL3d3dy5rZXJuZWwub3JnL2RvYy9odG1sL2xhdGVzdC9tbS9kYW1vbi9pbmRleC5odG1sIGZvclxcbiAgMTM6XFx0XFx0ICBtb3JlIGluZm9ybWF0aW9uLlxcbiAgMTQ6XFx0XFxuICAxNTpcXHRjb25maWcgREFNT05fREVCVUdfU0FOSVRZXFxuICAxNjpcXHRcXHRib29sIFxcXCJDaGVjayBzYW5pdHkgb2YgREFNT04gY29kZVxcXCJcXG4gIDE3OlxcdFxcdGRlcGVuZHMgb24gREFNT05cXG4gIDE4OlxcdFxcdGhlbHBcXG4gIDE5OlxcdFxcdCAgVGhpcyBlbmFibGVzIGFkZGl0aW9uYWwgREFNT04gZGVidWdnaW5nLXB1cnBvc2Ugc2FuaXR5IGNoZWNrcyBpblxcbiAgMjA6XFx0XFx0ICBEQU1PTiBjb2RlLiAgVGhpcyBjYW4gYmUgdXNlZnVsIGZvciBmaW5kaW5nIGJ1Z3MsIGJ1dCBpbXBvc2VcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTg6MTg6NTUuNzIzNjUyMTcxWiIsIlNlcSI6MzUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxNTk1NjcyNjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi5cblxuKipDb25maWd1cmF0aW9uIERlcGVuZGVuY2llczogQSBNZW50YWwgQ2hlY2tsaXN0KipcblxuQWxyaWdodCwgc28gYERBTU9OYCBpcyB0aGUgZnVuZGFtZW50YWwgYnVpbGRpbmcgYmxvY2ssIHRoZSBjb3JlIGNvbmZpZ3VyYXRpb24uIEV2ZXJ5dGhpbmcgZWxzZSBzZWVtcyB0byBzdGVtIGZyb20gdGhlcmUuIE5vdywgdGhlIG5leHQgb25lIGlzIGBEQU1PTl9QQUREUmAuIEl0J3MgcHJldHR5IGNsZWFyIHRoYXQgYERBTU9OX1BBRERSYCBpcyBnb2luZyB0byByZWx5IG9uIGJvdGggYERBTU9OYCBiZWluZyBlbmFibGVkIGFuZCB0aGUgcHJlc2VuY2Ugb2YgYW4gTU1VIGluIHRoZSBzeXN0ZW0uIFRoYXQgbWFrZXMgc2Vuc2U7IHBoeXNpY2FsIGFkZHJlc3Npbmcgc2VlbXMgaW5oZXJlbnRseSB0aWVkIHRvIG1lbW9yeSBtYW5hZ2VtZW50IHVuaXRzLlxuXG5OZXh0IHVwIGlzIGBEQU1PTl9MUlVfU09SVGAsIGFuZCBpdCBhcHBlYXJzIHRoYXQgdGhpcyBvbmUncyBkaXJlY3RseSBkZXBlbmRlbnQgb24gYERBTU9OX1BBRERSYC4gTm8gc3VycHJpc2VzIHRoZXJlOyBzb3J0aW5nIGJhc2VkIG9uIExlYXN0IFJlY2VudGx5IFVzZWQgd291bGQgbWFrZSBzZW5zZSBhZnRlciB0aGUgcGh5c2ljYWwgYWRkcmVzcyBtYXBwaW5nIGlzIGVzdGFibGlzaGVkLiBJIG5lZWQgdG8gYmUgc3VyZS5cblxuRmluYWxseSwgYFNBTVBMRV9EQU1PTl9NVElFUmAgaGFzIGEgZGVwZW5kZW5jeSDigJMgYnV0IHdoYXQgaXMgaXQ/IEkgbmVlZCB0byBjaGVjayB0aGUgcmVsZXZhbnQgS2NvbmZpZyBmaWxlcyB0byBnZXQgdGhlIGZ1bGwgcGljdHVyZS4gTXkgZ3Vlc3MgaXMgZWl0aGVyIHRoZSBtYWluIGBzYW1wbGVzL2RhbW9uL0tjb25maWdgIGZpbGUgb3IgdGhlIG92ZXJhcmNoaW5nIGBzYW1wbGVzL0tjb25maWdgIGZpbGUgd2l0aGluIHRoZSBrZXJuZWwgc291cmNlIHRyZWUgc2hvdWxkIGhhdmUgdGhlIGFuc3dlci4gSSdsbCB0YWtlIGEgbG9vayBpbiBvbmUgb2YgdGhlc2UgbG9jYXRpb25zLCBmb3IgbW9yZSBkZXRhaWxzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjUzNCwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTg6MTg6NTkuODgzMjIzMzkyWiIsIlNlcSI6MzYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTk1NDM1NTUzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBTQU1QTEVfREFNT05fTVRJRVJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwic2FtcGxlcy9kYW1vbi9LY29uZmlnPTE3PWNvbmZpZyBTQU1QTEVfREFNT05fUFJDTFxcbi0tXFxuc2FtcGxlcy9kYW1vbi9LY29uZmlnLTI5LVxcbnNhbXBsZXMvZGFtb24vS2NvbmZpZzozMDpjb25maWcgU0FNUExFX0RBTU9OX01USUVSXFxuc2FtcGxlcy9kYW1vbi9LY29uZmlnLTMxLVxcdGJvb2wgXFxcIkRBTU9OIHNhbXBsZSBtb2R1bGUgZm9yIG1lbW9yeSB0aWVyaW5nXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxODoxOTowMi4wNzg2NjM4ODZaIiwiU2VxIjozNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTUwODY5NjExOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIGBzYW1wbGVzL2RhbW9uL0tjb25maWdgIGZpbGUsIHNwZWNpZmljYWxseSBhcm91bmQgbGluZSAzMCwgZnJvbSBhbiBleHBlcnQncyBwZXJzcGVjdGl2ZTpcblxuKipEaXZpbmcgaW50byB0aGUgREFNT04gS2NvbmZpZyoqXG5cbk9rYXksIHNvIEknbSBwdWxsaW5nIHVwIHRoZSBgc2FtcGxlcy9kYW1vbi9LY29uZmlnYCBmaWxlIGFuZCBob25pbmcgaW4gb24gbGluZSAzMCBvciB0aGVyZWFib3V0cy4gSW1tZWRpYXRlbHksIEknbSB0aGlua2luZyBhYm91dCB0aGUgc3RhbmRhcmQgS2NvbmZpZyBzeW50YXguIEknbSBleHBlY3RpbmcgdG8gc2VlIGEgY29uZmlndXJhdGlvbiBvcHRpb24gZGVjbGFyZWQgdGhlcmUuIEl0J3MgbGlrZWx5IHJlbGF0ZWQgdG8gc29tZSBhc3BlY3Qgb2YgdGhlIERhdGEgQWNjZXNzIE1vbml0b3IgKERBTU9OKSBmdW5jdGlvbmFsaXR5IHdpdGhpbiB0aGUga2VybmVsIHNhbXBsZXMuIExpbmUgMzAgaXMgbGlrZWx5IHByb3ZpZGluZyBhIGRlZmF1bHQgb3IgYSBjb25kaXRpb25hbCBkZXBlbmRlbmN5IGZvciBhIGZlYXR1cmUgLSBtYXliZSBlbmFibGluZyBhIHNwZWNpZmljIG1vbml0b3JpbmcgbW9kZSwgYSBwYXJ0aWN1bGFyIGRhdGEgY29sbGVjdGlvbiBtZXRob2QsIG9yIHRoZSBpbmNsdXNpb24gb2YgY2VydGFpbiBkZWJ1ZyBmZWF0dXJlcyBmb3IgdGhpcyBEQU1PTiBleGFtcGxlLiBHaXZlbiB0aGUgY29udGV4dCwgSSdtIGd1ZXNzaW5nIGl0IG1pZ2h0IGJlIHNvbWV0aGluZyBsaWtlIGVuYWJsaW5nL2Rpc2FibGluZyBhIHNwZWNpZmljIERBTU9OIGNvbmZpZ3VyYXRpb24gc2FtcGxlLCBvciBwb3RlbnRpYWxseSBhIHN1Yi1tb2R1bGUgb2YgdGhlIERBTU9OIGluZnJhc3RydWN0dXJlIGl0c2VsZiwgYmFzZWQgb24gb3RoZXIgbW9yZSBmdW5kYW1lbnRhbCBjb3JlIERBTU9OIHNldHRpbmdzLiBJJ20gYWxzbyByZWFkeSB0byBzZWUgc29tZSBoZWxwIHRleHQgY2xhcmlmeWluZyB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgcGFydGljdWxhciBzZXR0aW5nLCBlc3BlY2lhbGx5IGluIHRoZSBjb250ZXh0IG9mIHRoaXMgc3BlY2lmaWMgc2FtcGxlIGNvZGUuIEknbSBpbnRlcmVzdGVkIHRvIHNlZSB0aGUgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIHRoaXMgY29uZmlnIG9wdGlvbiBhbmQgb3RoZXIgcmVsYXRlZCBvbmVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjk4MywiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE4OjE5OjA3LjU4NzM2MzExM1oiLCJTZXEiOjM4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5ODc4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJzYW1wbGVzL2RhbW9uL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMjAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgMjA6XFx0XFx0aGVscFxcbiAgMjE6XFx0XFx0ICBUaGlzIGJ1aWxkcyBEQU1PTiBzYW1wbGUgbW9kdWxlIGZvciBhY2Nlc3MtYXdhcmUgcHJvYWN0aXZlXFxuICAyMjpcXHRcXHQgIHJlY2xhbWF0aW9uLlxcbiAgMjM6XFx0XFxuICAyNDpcXHRcXHQgIFRoZSBtb2R1bGUgcmVjZWl2ZXMgYSBwaWQsIG1vbml0b3IgYWNjZXNzIHRvIHRoZSB2aXJ0dWFsIGFkZHJlc3NcXG4gIDI1OlxcdFxcdCAgc3BhY2Ugb2YgdGhlIHByb2Nlc3MsIGZpbmQgbWVtb3J5IHJlZ2lvbnMgdGhhdCBub3QgYWNjZXNzZWQsIGFuZFxcbiAgMjY6XFx0XFx0ICBwcm9hY3RpdmVseSByZWNsYWltIHRoZSByZWdpb25zLlxcbiAgMjc6XFx0XFxuICAyODpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IE4uXFxuICAyOTpcXHRcXG4gIDMwOlxcdGNvbmZpZyBTQU1QTEVfREFNT05fTVRJRVJcXG4gIDMxOlxcdFxcdGJvb2wgXFxcIkRBTU9OIHNhbXBsZSBtb2R1bGUgZm9yIG1lbW9yeSB0aWVyaW5nXFxcIlxcbiAgMzI6XFx0XFx0ZGVwZW5kcyBvbiBEQU1PTiBcXHUwMDI2XFx1MDAyNiBEQU1PTl9QQUREUlxcbiAgMzM6XFx0XFx0aGVscFxcbiAgMzQ6XFx0XFx0ICBUaGlzIGJ1aWxkcyBEQU1PTiBzYW1wbGUgbW9kdWxlIGZvciBtZW1vcnkgdGllcmluZy5cXG4gIDM1OlxcdFxcbiAgMzY6XFx0XFx0ICBUaGUgbW9kdWxlIGFzc3VtZXMgdGhlIHN5c3RlbSBpcyBjb25zdHJ1Y3RlZCB3aXRoIHR3byBOVU1BIG5vZGVzLFxcbiAgMzc6XFx0XFx0ICB3aGljaCBzZWVtcyBhcyBsb2NhbCBhbmQgcmVtb3RlIG5vZGVzIHRvIGFsbCBDUFVzLiAgRm9yIGV4YW1wbGUsXFxuICAzODpcXHRcXHQgIG5vZGUwIGlzIGZvciBERFI1IERSQU1zIGNvbm5lY3RlZCB2aWEgRElNTSwgd2hpbGUgbm9kZTEgaXMgZm9yIEREUjRcXG4gIDM5OlxcdFxcdCAgRFJBTXMgY29ubmVjdGVkIHZpYSBDWEwuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE4OjE5OjA3LjU4NzQ2NDA4M1oiLCJTZXEiOjM5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4MTQyNjg3NDE0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBzZWUuLi5cblxuKipFeGFtaW5pbmcgdGhlIERBTU9OIFNhbXBsZSBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyoqXG5cbkFscmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIGBTQU1QTEVfREFNT05fTVRJRVJgIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBSaWdodCwgaXQncyBwcmV0dHkgY2xlYXIgdGhhdCBpdHMgZnVuY3Rpb25hbGl0eSBoaW5nZXMgb24gYm90aCBgREFNT05gIGFuZCBgREFNT05fUEFERFJgIGJlaW5nIGVuYWJsZWQuIFNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2ggZnJvbSBhIGRlcGVuZGVuY3kgc3RhbmRwb2ludC5cblxuTm93LCB3aGVyZSBhcmUgdGhlc2Ugb3B0aW9ucyBkZWZpbmVkIGluIHJlbGF0aW9uIHRvIHRoZSBzYW1wbGVzPyBBaCwgcmlnaHQuIEl0IGhpdHMgbWU6IGBzYW1wbGVzL0tjb25maWdgICpzaG91bGQqIGluY2x1ZGUgYHNhbXBsZXMvZGFtb24vS2NvbmZpZ2AuIEknbGwgd2FudCB0byB2ZXJpZnkgdGhhdC4gTmVlZCB0byBkZWx2ZSBpbnRvIGBzYW1wbGVzL0tjb25maWdgIHNwZWNpZmljYWxseSBub3cuIFRoYXQncyB0aGUga2V5IGZpbGUgSSBuZWVkIHRvIGV4YW1pbmUgZm9yIHRoZSBicm9hZGVyIGNvbnRleHQgYW5kIGVuc3VyZSBldmVyeXRoaW5nIGlzIHByb3Blcmx5IGhvb2tlZCB1cC4gSSBuZWVkIHRvIGNoZWNrIGhvdyBpdCBhY3R1YWxseSBwdWxscyBpbiB0aGUgbmVjZXNzYXJ5IERBTU9OIGVsZW1lbnRzIGZyb20gdGhlIHNhbXBsZSBkaXJlY3Rvcnkgc3RydWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzU4OCwiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTg6MTk6MTUuNzMwMTU0MzM4WiIsIlNlcSI6NDAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTM3MzEwMTY3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNvdXJjZSBcXFwic2FtcGxlcy9kYW1vbi9LY29uZmlnXFxcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJzYW1wbGVzL0tjb25maWc9MzI1PXNvdXJjZSBcXFwic2FtcGxlcy9ydXN0L0tjb25maWdcXFwiXFxuc2FtcGxlcy9LY29uZmlnLTMyNi1cXG5zYW1wbGVzL0tjb25maWc6MzI3OnNvdXJjZSBcXFwic2FtcGxlcy9kYW1vbi9LY29uZmlnXFxcIlxcbnNhbXBsZXMvS2NvbmZpZy0zMjgtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE4OjE5OjE3Ljg2NzQ2OTc5NFoiLCJTZXEiOjQxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDMwMzcwODkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHByZXNlbnRlZCBhcyBhIHN1bW1hcnkgZnJvbSBteSBwZXJzcGVjdGl2ZSwga2VlcGluZyBpbiBtaW5kIG15IGV4cGVydGlzZTpcblxuKipFeGFtaW5pbmcgS2NvbmZpZyBJbmNsdXNpb24gYW5kIFNBTVBMRVMgRGVwZW5kZW5jeSoqXG5cbkFscmlnaHQsIEknbSBsb29raW5nIGF0IHRoaXMgS2NvbmZpZyBzdHJ1Y3R1cmUsIGFuZCBpdCBzZWVtcyBsaWtlIHRoZSBgc2FtcGxlcy9LY29uZmlnYCBmaWxlIGlzIGJlaW5nIGRpcmVjdGx5IGluY2x1ZGVkIHdpdGhpbiB0aGUgbWFpbiBgS2NvbmZpZ2AuIFRoYXQncyBzdGFuZGFyZCBwcmFjdGljZSwgYnV0IGl0IGltbWVkaWF0ZWx5IHJhaXNlcyBhIHF1ZXN0aW9uIGluIG15IG1pbmQ6IElzIHRoaXMgYFNBTVBMRVNgIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGFjdHVhbGx5IG5lY2Vzc2FyeT8gV2UndmUgZ290IGEgbW9kdWxhciBidWlsZCBzeXN0ZW0sIHNvIGxldCdzIHRoaW5rIHRocm91Z2ggaWYgdGhhdCBgU0FNUExFU2AgY29uZmlnIGlzIG5lZWRlZCBvciBub3QuIEknbGwgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgbG9naWMgcmVsaWVzIG9uIGBTQU1QTEVTYCBhbmQgaWYgdGhlcmUncyBhIGJldHRlciB3YXkgdG8gaGFuZGxlIHRoZXNlIHNhbXBsZSBjb25maWd1cmF0aW9ucy4gV2UnbGwgbmVlZCB0byBiZSBjbGVhciBhYm91dCBpZiB0aGUgYFNBTVBMRVNgIGNvbmZpZyBpcyB1c2VkIGZvciBjb250cm9sIG9yIHNlbGVjdGlvbi4gSSdsbCBldmFsdWF0ZSB0aGUgYnJvYWRlciBpbXBsaWNhdGlvbnMgZm9yIGJ1aWxkIHRpbWUgYW5kIG92ZXJhbGwgbWFpbnRhaW5hYmlsaXR5LiBJdCBjb3VsZCBiZSByZWR1bmRhbnQgb3IgZXZlbiBjcmVhdGluZyB1bm5lY2Vzc2FyeSBkZXBlbmRlbmNpZXMuIEkgbmVlZCB0byBkaWcgaW50byB0aGUgZGVwZW5kZW5jaWVzIGFuZCB0aGUgY29uZGl0aW9uYWwgbG9naWMgaGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTM5MjUsIk91dHB1dFRva2VucyI6MTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxODoxOToyMS44OTc4NDM5NTRaIiwiU2VxIjo0MiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxMjE5MTYxNDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWVudWNvbmZpZyBTQU1QTEVTXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcInNhbXBsZXMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbnNhbXBsZXMvS2NvbmZpZzoyOm1lbnVjb25maWcgU0FNUExFU1xcbnNhbXBsZXMvS2NvbmZpZy0zLVxcdGJvb2wgXFxcIlNhbXBsZSBrZXJuZWwgY29kZVxcXCJcXG4tLVxcbnNhbXBsZXMvcnVzdC9LY29uZmlnLTItXFxuc2FtcGxlcy9ydXN0L0tjb25maWc6MzptZW51Y29uZmlnIFNBTVBMRVNfUlVTVFxcbnNhbXBsZXMvcnVzdC9LY29uZmlnLTQtXFx0Ym9vbCBcXFwiUnVzdCBzYW1wbGVzXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxODoxOToyNC4wMTk3NjYzNTJaIiwiU2VxIjo0MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODE1MzQ0MDI3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIERBTU9OIFBhdGNoIGZvciBTYWZldHkgYW5kIEZ1bmN0aW9uYWxpdHkqKlxuXG5Pa2F5LCBzbyBJIHNlZSB0aGF0IHRoaXMgcGF0Y2ggaGluZ2VzIG9uIHRoZSBgU0FNUExFU2AgY29tcG9uZW50IOKAkyBpdCdzIGNydWNpYWwgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIG92ZXJhbGwgaW1wYWN0LiBGcm9tIHdoYXQgSSBjYW4gdGVsbCwgaXQgdG91Y2hlcyBib3RoIGBtbS9kYW1vbi9scnVfc29ydC5jYCBhbmQgYHNhbXBsZXMvZGFtb24vbXRpZXIuY2AuIFRoYXQncyBpbnRlcmVzdGluZywgYmVjYXVzZSBvbmUgaXMgY29yZSBrZXJuZWwgY29kZSAobWVtb3J5IG1hbmFnZW1lbnQsIHNwZWNpZmljYWxseSkgYW5kIHRoZSBvdGhlciBpcyBhIHNhbXBsZSBtb2R1bGUuIEJvdGggYXJlICpyZWFjaGFibGUqLCBhbmQgcHJlc3VtYWJseSBmdW5jdGlvbmFsLCB3aGljaCBtZWFucyB3ZSBuZWVkIHRvIHRyZWF0IHRoZW0gYm90aCBhcyBhcmVhcyBvZiBpbnRlcmVzdC4gVGhlIHNhbXBsZSBjb2RlIGJlaW5nIGZ1bmN0aW9uYWwgYWxzbyBtZWFucyBpdCdzIGZ1enphYmxlIGlmIHRoZSBtYWludGFpbmVycyBoYXZlIGVuYWJsZWQgdGhhdCBhcyBhIHRlc3QuXG5cbk15IGltbWVkaWF0ZSBpbXByZXNzaW9uIGlzIHRoYXQgdGhpcyBpcyBhICpmdW5jdGlvbmFsKiBjaGFuZ2UuIFRoZSBwYXRjaCBpcyBhZGRpbmcgdmFsaWRhdGlvbiB0byB0aGUgbW9kdWxlIHBhcmFtZXRlcnMsIHNwZWNpZmljYWxseSBgYWN0aXZlX21lbV9icGAsIGBub2RlMF9tZW1fdXNlZF9icGAsIGFuZCBgbm9kZTBfbWVtX2ZyZWVfYnBgLiBUaGUgaW50ZW50aW9uIHNlZW1zIHRvIGJlIHRvIHByZXZlbnQgcG90ZW50aWFsbHkgZGlzYXN0cm91cyBvdXRjb21lcyDigJMgbGlrZSBkaXZpc2lvbiBieSB6ZXJvIG9yIG1lbW9yeSBjb3JydXB0aW9uIOKAkyBieSBjaGVja2luZyBmb3IgaW52YWxpZCBwYXJhbWV0ZXIgdmFsdWVzIGFuZCByZXR1cm5pbmcgYW4gZXJyb3IgaWYgdGhleSdyZSBkZXRlY3RlZC4gVGhhdOKAmXMgZ29vZCBoeWdpZW5lLCBidXQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHNwZWNpZmljcy5cblxuTm93LCBsZXQncyBkcmlsbCBkb3duLiBJJ2xsIGNoZWNrIGBkYW1vbl9scnVfc29ydF9hZGRfcXVvdGFfZ29hbHNgLiBIYW5nIG9uLCB0aGF0J3MgYSBzdGF0aWMgZnVuY3Rpb24gd2l0aGluIGBtbS9kYW1vbi9scnVfc29ydC5jYC4gT2theSwgc28gaXTigJlzIG5vdCBkaXJlY3RseSBleHBvc2VkIHRvIGV4dGVybmFsIGNhbGxzLiBMZXQgbWUgc2VlIHdoYXQgZnVuY3Rpb25zICpkbyogY2FsbCBpdC4gV2FpdCBhIG1pbnV0ZSwgYWxsIHRoZSBvdGhlciBzdXBwb3J0aW5nIGZ1bmN0aW9ucyBhcmUgKmFsc28qIHN0YXRpYzogYGRhbW9uX2xydV9zb3J0X2FwcGx5X3BhcmFtZXRlcnNgLCBgZGFtb25fbHJ1X3NvcnRfY29tbWl0X2lucHV0c19mbmAsIGBkYW1vbl9scnVfc29ydF90dXJuYCwgYGRhbW9uX2xydV9zb3J0X2VuYWJsZWRfc3RvcmVgLCBhbmQgYGRhbW9uX2xydV9zb3J0X2NvbW1pdF9pbnB1dHNfc3RvcmVgLiBUaGF0IGlzIHVudXN1YWwhIFdoYXQgYXJlIHRoZSBub24tc3RhdGljIGZ1bmN0aW9ucyBpbiB0aGlzIGZpbGU/IEkgbmVlZCB0byBrbm93IHRoZSBlbnRyeSBwb2ludHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0Mjg4LCJPdXRwdXRUb2tlbnMiOjY4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzYxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE4OjE5OjMyLjE3MzIwOTA2NVoiLCJTZXEiOjQ0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODYxNDk1MTUsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5bYS16QS1aX11bYS16QS1aMC05X10qIFthLXpBLVpfXVthLXpBLVowLTlfXSpcXFxcKFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9kYW1vbi9scnVfc29ydC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxODoxOTozMi4yNTkzNjYzNloiLCJTZXEiOjQ1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MjIwMjg2MjY1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgc3VtbWFyeSwgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYXMgaWYgaXQgd2VyZSBteSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqSWRlbnRpZnlpbmcgTm9uLVN0YXRpYyBGdW5jdGlvbnMgaW4gYSBGaWxlKipcblxuQWxyaWdodCwgc28gdGhlIHRhc2sgYXQgaGFuZCBpcyB0byBwaW5wb2ludCB0aGUgbm9uLXN0YXRpYyBmdW5jdGlvbnMgd2l0aGluIGEgZ2l2ZW4gZmlsZS4gTXkgaW1tZWRpYXRlIGFwcHJvYWNoLCBhbmQgSSB0aGluayBpdCdzIHRoZSBtb3N0IHByYWdtYXRpYywgaXMgdG8gc2ltcGx5ICpyZWFkKiB0aGUgZmlsZS4gUGFyc2luZyB0aGUgY29udGVudCB0byBleHRyYWN0IHRoZSByZWxldmFudCBkZWNsYXJhdGlvbnMgaXMgdGhlIG1vc3QgZGlyZWN0IHdheSB0byB0YWNrbGUgdGhpcy4gSSdtIG5vdCBnb2luZyB0byBnZXQgYm9nZ2VkIGRvd24gaW4gYW55IG92ZXJseSBjb21wbGV4IGFuYWx5c2lzIGF0IHRoaXMgc3RhZ2UuIFdlIGRvbid0IG5lZWQgdG8gY29uc2lkZXIgYW55IGZvcm0gb2YgQVNULWJhc2VkIGFuYWx5c2lzIG9yIGhlYXZ5LWR1dHkgY29tcGlsZXIgdG9vbGluZyBhdCB0aGUgc3RhcnQsIHRoYXQgY291bGQgYmUgb3ZlcmtpbGwuIEl0J3MgYmVzdCB0byBwcm9jZWVkIHdpdGggYSBzaW1wbGUgYXBwcm9hY2ggZmlyc3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1MTU5LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTg6MTk6MzcuNDc5NjU0OTc1WiIsIlNlcSI6NDYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MTMzNzQxNCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXmludCBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vZGFtb24vbHJ1X3NvcnQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTg6MTk6MzcuNTcwOTk5Njg5WiIsIlNlcSI6NDcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU5NzM4Mjc5ODgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgSW5pdGlhbGl6YXRpb24gaW4gREFNT04gTFJVIFNvcnRpbmcqKlxuXG5SaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoZSBEQU1PTiBMUlUgc29ydGluZyBtb2R1bGUuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBwaW5wb2ludCB0aGUgbW9kdWxlIGluaXRpYWxpemF0aW9uIHJvdXRpbmVzLiBUaGUga2VybmVsJ3MgaW5pdGlhbGl6YXRpb24gcHJvY2VzcyBvZnRlbiBsZXZlcmFnZXMgbWFjcm9zIGxpa2UgYG1vZHVsZV9pbml0YCBvciBgX19pbml0YCB0byBkZXNpZ25hdGUgd2hpY2ggZnVuY3Rpb25zIGFyZSByZXNwb25zaWJsZSBmb3Igc2V0dGluZyB0aGluZ3MgdXAgd2hlbiB0aGUgbW9kdWxlIGlzIGxvYWRlZCBvciBkdXJpbmcgc3lzdGVtIHN0YXJ0dXAuIEknbGwgc3RhcnQgYnkgc2VhcmNoaW5nIGZvciB0aG9zZSBzeW1ib2xzIHdpdGhpbiBgbW0vZGFtb24vbHJ1X3NvcnQuY2AuIFRoYXQgc2hvdWxkIHF1aWNrbHkgZ2l2ZSBtZSBhIGhhbmRsZSBvbiBob3cgdGhpcyBwYXJ0aWN1bGFyIGFzcGVjdCBvZiBEQU1PTiBpcyBicm91Z2h0IHRvIGxpZmUgYW5kIGludGVncmF0ZWQgaW50byB0aGUgYnJvYWRlciBtZW1vcnkgbWFuYWdlbWVudCBpbmZyYXN0cnVjdHVyZS4gVW5kZXJzdGFuZGluZyB0aGUgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UgaXMgY3J1Y2lhbCB0byBncmFzcCB0aGUgbW9kdWxlJ3MgYmVoYXZpb3IgYW5kIGRlcGVuZGVuY2llcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTUzNzUsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxODoxOTo0My41NDQ4MzA3MDhaIiwiU2VxIjo0OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgyMDM4MTQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl9faW5pdCBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vZGFtb24vbHJ1X3NvcnQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9kYW1vbi9scnVfc29ydC5jPTUzMj1tb2R1bGVfcGFyYW1fY2Ioa2RhbW9uZF9waWQsIFxcdTAwMjZrZGFtb25kX3BpZF9wYXJhbV9vcHMsIE5VTEwsIDA0MDApO1xcbm1tL2RhbW9uL2xydV9zb3J0LmMtNTMzLVxcbm1tL2RhbW9uL2xydV9zb3J0LmM6NTM0OnN0YXRpYyBpbnQgX19pbml0IGRhbW9uX2xydV9zb3J0X2luaXQodm9pZClcXG5tbS9kYW1vbi9scnVfc29ydC5jLTUzNS17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE4OjE5OjQzLjYyNjg3NTUyM1oiLCJTZXEiOjQ5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MDI0MzA3Nzc4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqSW5pdGlhbCBBc3Nlc3NtZW50IG9mIGEgTW9kdWxlIEluaXRpYWxpemF0aW9uIEZ1bmN0aW9uKipcblxuQWxyaWdodCwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBmdW5jdGlvbiwgYGRhbW9uX2xydV9zb3J0X2luaXRgLiBUaGUgbmFtZSBzdHJvbmdseSBzdWdnZXN0cyB0aGlzIGlzIHRoZSBpbml0aWFsaXphdGlvbiByb3V0aW5lIGZvciBhIERhbW9uIExSVSBzb3J0aW5nIGNvbXBvbmVudCwgd2hpY2ggcGlxdWVzIG15IGludGVyZXN0IGltbWVkaWF0ZWx5LiBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBsYW5kc2NhcGUgaGVyZS4gTXkgZmlyc3QgcXVlc3Rpb24gaXMgYWx3YXlzOiB3aGF0J3MgdGhlIGJyb2FkZXIgcGljdHVyZT8gSXMgdGhpcyBhIHNlbGYtY29udGFpbmVkIG1vZHVsZSwgb3IgZG9lcyBpdCBleHBvcnQgYW55IGZ1bmN0aW9uYWxpdHkgZm9yIHVzZSBieSBvdGhlciBwYXJ0cyBvZiB0aGUga2VybmVsPyBBcmUgdGhlcmUgYW55IGV4cG9ydGVkIGZ1bmN0aW9ucyB0aGF0IEkgc2hvdWxkIGtub3cgYWJvdXQ/IEtub3dpbmcgdGhlIGV4cG9ydGVkIHN5bWJvbHMgaXMgdGhlIGNydXggb2YgdW5kZXJzdGFuZGluZyBob3cgdGhpcyBjb21wb25lbnQgaW50ZXJhY3RzIHdpdGggdGhlIHJlc3Qgb2YgdGhlIGtlcm5lbC4gVGhpcyBpcyBteSBzdGFydGluZyBwb2ludCwgYmVmb3JlIEkgZGVsdmUgaW50byBhbnkgb2YgdGhlIGludGVybmFscy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTU3MzIsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxODoxOTo0OC42NTExODYwNzJaIiwiU2VxIjo1MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQxODUxMjY4MywiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiRVhQT1JUX1NZTUJPTFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9kYW1vbi9scnVfc29ydC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxODoxOTo0OS4wNjk3MDY0OTVaIiwiU2VxIjo1MSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjcyNDg4OTM0MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE1vZHVsZSdzIEVudHJ5IFBvaW50cyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgZmlsZSwgYW5kIGl0J3Mgc3RydWN0dXJlZCBhcyBhIG1vZHVsZSB0aGF0IHJlZ2lzdGVycyBzeXNmcyBwYXJhbWV0ZXJzIGFuZCBzcGlucyB1cCBhIGt0aHJlYWQuIFRoZSBpbW1lZGlhdGUgaXNzdWUgdGhhdCBqdW1wcyBvdXQgaXMgdGhlIGFic2VuY2Ugb2YgYW55IG5vbi1zdGF0aWMgZnVuY3Rpb25zLiBUaGF0IHRocm93cyBhIHdyZW5jaCBpbiB0aGUgdHlwaWNhbCBgRm9jdXNTeW1ib2xzYCBhcHByb2FjaC4gSSBoYXZlIHRvIHRoaW5rIGNhcmVmdWxseSBhYm91dCBob3cgdG8gZnVsZmlsbCB0aGUgcHJvbXB0J3MgcmVxdWVzdC5cblxuV2FpdCBhIHNlY29uZCwgc3RhdGljIGZ1bmN0aW9ucyBhcmUgKmFsbG93ZWQqIGluIGBGb2N1c1N5bWJvbHNgLCBqdXN0IHdpdGggYSBjYXZlYXQuIElmIHRoZXkncmUgbm90IGlubGluZWQgYnkgdGhlIGNvbXBpbGVyLCB0aGV5J3JlIHZhbGlkIGVudHJ5cG9pbnRzLiBUaGUgcHJvbXB0IGVtcGhhc2l6ZXMgcHJlZmVycmluZyBub24tc3RhdGljLCBub24taW5saW5lZCBmdW5jdGlvbnMuIFNpbmNlIHRob3NlIGFyZSBhYnNlbnQgaGVyZSwgSSBoYXZlIHRvIGZpbmQgdGhlIGV4Y2VwdGlvbnMgdG8gdGhhdCBydWxlLiBUaGUgYmVzdCB3YXkgdG8gZG8gdGhhdCBpcyB0byBsb29rIGZvciBmdW5jdGlvbnMgdGhhdCwgZXZlbiBpZiBzdGF0aWMsICpjYW4ndCogYmUgaW5saW5lZC4gSSByZW1lbWJlciB0aGUgcHJvbXB0IGdhdmUgYW4gaW1wb3J0YW50IGd1aWRlbGluZSwgZm9jdXNpbmcgb24gc3ltYm9sIGFkZHJlc3Nlcy5cblxuVGhhdCBtZWFucywgSSBuZWVkIHRvIGZvY3VzIG9uIGNhbGxiYWNrcy4gTXkgaW1tZWRpYXRlIHRob3VnaHQgZ29lcyB0byB0aGUgZnVuY3Rpb25zIHVzZWQgYnkgYG1vZHVsZV9wYXJhbV9jYmAuIFRob3NlIGFyZSBkZWZpbml0ZWx5IG5vdCBpbmxpbmVkLiBTcGVjaWZpY2FsbHksIEknbSBiZXR0aW5nIGBkYW1vbl9scnVfc29ydF9lbmFibGVkX3N0b3JlYCBhbmQgYGRhbW9uX2xydV9zb3J0X2NvbW1pdF9pbnB1dHNfc3RvcmVgIGZpdCB0aGUgYmlsbCBiZWNhdXNlIHRoZXkncmUgcmVnaXN0ZXJlZCB3aXRoIGBtb2R1bGVfcGFyYW1fY2JgLiBMZXQncyBjb25maXJtIHRoYXQgYnkgY2hlY2tpbmcgb3V0IGBtb2R1bGVfcGFyYW1fY2JgIGluIGBtbS9kYW1vbi9scnVfc29ydC5jYC4gVGhhdCBzaG91bGQgcHJvdmlkZSB0aGUgbmVlZGVkIGNsYXJpdHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1OTc4LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTk3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE4OjE5OjU1Ljc5NDU5OTYwOFoiLCJTZXEiOjUyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzE2MTEwODYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibW9kdWxlX3BhcmFtX2NiXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL2RhbW9uL2xydV9zb3J0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vZGFtb24vbHJ1X3NvcnQuYz0zODE9c3RhdGljIGNvbnN0IHN0cnVjdCBrZXJuZWxfcGFyYW1fb3BzIGNvbW1pdF9pbnB1dHNfcGFyYW1fb3BzID0ge1xcbi0tXFxubW0vZGFtb24vbHJ1X3NvcnQuYy0zODYtXFxubW0vZGFtb24vbHJ1X3NvcnQuYzozODc6bW9kdWxlX3BhcmFtX2NiKGNvbW1pdF9pbnB1dHMsIFxcdTAwMjZjb21taXRfaW5wdXRzX3BhcmFtX29wcywgXFx1MDAyNmNvbW1pdF9pbnB1dHMsIDA2MDApO1xcbm1tL2RhbW9uL2xydV9zb3J0LmMtMzg4LVxcbi0tXFxubW0vZGFtb24vbHJ1X3NvcnQuYz00NDQ9c3RhdGljIGNvbnN0IHN0cnVjdCBrZXJuZWxfcGFyYW1fb3BzIGFkZHJfdW5pdF9wYXJhbV9vcHMgPSB7XFxuLS1cXG5tbS9kYW1vbi9scnVfc29ydC5jLTQ0OC1cXG5tbS9kYW1vbi9scnVfc29ydC5jOjQ0OTptb2R1bGVfcGFyYW1fY2IoYWRkcl91bml0LCBcXHUwMDI2YWRkcl91bml0X3BhcmFtX29wcywgXFx1MDAyNmFkZHJfdW5pdCwgMDYwMCk7XFxubW0vZGFtb24vbHJ1X3NvcnQuYy00NTAtTU9EVUxFX1BBUk1fREVTQyhhZGRyX3VuaXQsXFxuLS1cXG5tbS9kYW1vbi9scnVfc29ydC5jPTQ4OT1zdGF0aWMgY29uc3Qgc3RydWN0IGtlcm5lbF9wYXJhbV9vcHMgZW5hYmxlZF9wYXJhbV9vcHMgPSB7XFxuLS1cXG5tbS9kYW1vbi9scnVfc29ydC5jLTQ5My1cXG5tbS9kYW1vbi9scnVfc29ydC5jOjQ5NDptb2R1bGVfcGFyYW1fY2IoZW5hYmxlZCwgXFx1MDAyNmVuYWJsZWRfcGFyYW1fb3BzLCBcXHUwMDI2ZW5hYmxlZCwgMDYwMCk7XFxubW0vZGFtb24vbHJ1X3NvcnQuYy00OTUtTU9EVUxFX1BBUk1fREVTQyhlbmFibGVkLFxcbi0tXFxubW0vZGFtb24vbHJ1X3NvcnQuYz01MjE9c3RhdGljIGNvbnN0IHN0cnVjdCBrZXJuZWxfcGFyYW1fb3BzIGtkYW1vbmRfcGlkX3BhcmFtX29wcyA9IHtcXG4tLVxcbm1tL2RhbW9uL2xydV9zb3J0LmMtNTMxLSAqL1xcbm1tL2RhbW9uL2xydV9zb3J0LmM6NTMyOm1vZHVsZV9wYXJhbV9jYihrZGFtb25kX3BpZCwgXFx1MDAyNmtkYW1vbmRfcGlkX3BhcmFtX29wcywgTlVMTCwgMDQwMCk7XFxubW0vZGFtb24vbHJ1X3NvcnQuYy01MzMtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE4OjE5OjU1Ljg2NjIxNTc2M1oiLCJTZXEiOjUzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3OTk5MzcwODIzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcyBvbiB3aGF0IEknbSBhYm91dCB0byBkbzpcblxuKipDaGVja2luZyBgY29tbWl0X2lucHV0c19wYXJhbV9vcHNgKipcblxuQWxyaWdodCwgSSdtIGdvaW5nIHRvIHRha2UgYSBsb29rIGF0IGBjb21taXRfaW5wdXRzX3BhcmFtX29wc2AuIFRoaXMgaXMgcHJvYmFibHkgd2hlcmUgdGhlIGNvcmUgbG9naWMgcmVzaWRlcywgYW5kIEkgbmVlZCB0byB1bmRlcnN0YW5kIGV4YWN0bHkgaG93IGl0IGZ1bmN0aW9ucy4gSSBleHBlY3QgaXQgdG8gaGFuZGxlIHRoZSBjcnVjaWFsIHRhc2sgb2YgY29tbWl0dGluZyBvciBzYXZpbmcgY2VydGFpbiBpbnB1dHMgb3IgcGFyYW1ldGVycyDigJMgbGlrZWx5IHJlbGF0ZWQgdG8gYSBtb2RlbCwgZGF0YXNldCwgb3IgY29uZmlndXJhdGlvbiDigJMgdG8gcGVyc2lzdGVudCBzdG9yYWdlIG9yIGEgcHJvY2Vzc2luZyBwaXBlbGluZS4gSSdtIGdvaW5nIHRvIHNjcnV0aW5pemUgdGhlIGNvZGUgd2l0aGluIHRoaXMgZnVuY3Rpb24gdG8gdW5kZXJzdGFuZCB0aGUgc3BlY2lmaWMgb3BlcmF0aW9ucyBpdCBwZXJmb3JtcywgbG9va2luZyBmb3IgdGhpbmdzIGxpa2UgZGF0YSB2YWxpZGF0aW9uLCB0cmFuc2Zvcm1hdGlvbnMsIGVycm9yIGhhbmRsaW5nLCBhbmQgdGhlIGRlc3RpbmF0aW9uIG9mIHRoZSBjb21taXR0ZWQgZGF0YS4gTXkgZXhwZXJpZW5jZSB0ZWxscyBtZSB0aGF0IHRoaXMgaXMgYSBjcml0aWNhbCBzZWN0aW9uIHRoYXQgbmVlZHMgY2FyZWZ1bCByZXZpZXcsIHNvIEknbGwgYmUgbWV0aG9kaWNhbCBhbmQgYXR0ZW50aXZlIHRvIGRldGFpbC4gSSdtIGdvaW5nIHRvIGxvb2sgZm9yIGFueSBwb3RlbnRpYWwgYm90dGxlbmVja3MsIGluZWZmaWNpZW5jaWVzLCBvciBhcmVhcyB0aGF0IG1pZ2h0IGxlYWQgdG8gdW5leHBlY3RlZCBiZWhhdmlvciBpbiBhIHByb2R1Y3Rpb24gZW52aXJvbm1lbnQuIEknbGwgZm9jdXMgb24gaG93IGl0IGludGVyZmFjZXMgd2l0aCBvdGhlciBjb21wb25lbnRzIG9mIHRoZSBzeXN0ZW0sIHBheWluZyBjbG9zZSBhdHRlbnRpb24gdG8gZGF0YSBkZXBlbmRlbmNpZXMgYW5kIHBvdGVudGlhbCBzaWRlIGVmZmVjdHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3MDI5LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTg6MjA6MDMuODY1NTg5MjQ2WiIsIlNlcSI6NTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MDg2MDk4NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb21taXRfaW5wdXRzX3BhcmFtX29wc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9kYW1vbi9scnVfc29ydC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL2RhbW9uL2xydV9zb3J0LmM9MzQ5PXN0YXRpYyBpbnQgZGFtb25fbHJ1X3NvcnRfY29tbWl0X2lucHV0c19zdG9yZShjb25zdCBjaGFyICp2YWwsXFxuLS1cXG5tbS9kYW1vbi9scnVfc29ydC5jLTM4MC1cXG5tbS9kYW1vbi9scnVfc29ydC5jOjM4MTpzdGF0aWMgY29uc3Qgc3RydWN0IGtlcm5lbF9wYXJhbV9vcHMgY29tbWl0X2lucHV0c19wYXJhbV9vcHMgPSB7XFxubW0vZGFtb24vbHJ1X3NvcnQuYy0zODItXFx0LmZsYWdzID0gS0VSTkVMX1BBUkFNX09QU19GTF9OT0FSRyxcXG4tLVxcbm1tL2RhbW9uL2xydV9zb3J0LmMtMzg2LVxcbm1tL2RhbW9uL2xydV9zb3J0LmM6Mzg3Om1vZHVsZV9wYXJhbV9jYihjb21taXRfaW5wdXRzLCBcXHUwMDI2Y29tbWl0X2lucHV0c19wYXJhbV9vcHMsIFxcdTAwMjZjb21taXRfaW5wdXRzLCAwNjAwKTtcXG5tbS9kYW1vbi9scnVfc29ydC5jLTM4OC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTg6MjA6MDMuOTU2NDU1NzNaIiwiU2VxIjo1NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU1NDg5Nzk2MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkNoZWNraW5nIGBlbmFibGVkX3BhcmFtX29wc2AqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGRpdmUgaW4uIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIkxldCdzIGNoZWNrIGBlbmFibGVkX3BhcmFtX29wc2AuXCIgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbiBvZiB0aGlzIGZlYXR1cmUsIHBhcnRpY3VsYXJseSBpdHMgY3VycmVudCBzZXR0aW5ncy4gVGhpcyBsaWtlbHkgaW5kaWNhdGVzIHRoZSBzcGVjaWZpYyBvcGVyYXRpb25zIG9yIHBhcmFtZXRlciBtb2RpZmljYXRpb25zIHRoYXQgYXJlIGFjdGl2ZWx5IGVuYWJsZWQgd2l0aGluIHRoaXMgcGFydGljdWxhciBzdGFnZSBvZiB0aGUgcHJvY2Vzcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgdGhlcmUgYXJlIGFueSBwYXJhbWV0ZXJzIHRoYXQgYXJlLCBvciBhcmVuJ3QsIGJlaW5nIGFsdGVyZWQuIEkgc2hvdWxkIGJlIGFibGUgdG8gcXVpY2tseSBkZXRlcm1pbmUgaWYgdGhlcmUgYXJlIHNldHRpbmdzIHRoYXQgY291bGQgaW1wYWN0IHBlcmZvcm1hbmNlIG9yIGJlaGF2aW9yLiBUaGUgZ29hbCBpcyBsaWtlbHkgdG8gZW5zdXJlIHRoYXQgdGhpcyBhbGlnbnMgd2l0aCB0aGUgZXhwZWN0ZWQgd29ya2Zsb3cgb3IgdG8gZGlhZ25vc2UgYSBwb3RlbnRpYWwgZGlzY3JlcGFuY3kuIExldCdzIGRpZyBpbiBhbmQgbWFrZSBzdXJlIG5vdGhpbmcgdW51c3VhbCBpcyBoYXBwZW5pbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3NTMyLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTg6MjA6MDcuNTExMzU3NDJaIiwiU2VxIjo1NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYxMzU1NDA2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImVuYWJsZWRfcGFyYW1fb3BzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL2RhbW9uL2xydV9zb3J0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vZGFtb24vbHJ1X3NvcnQuYz00ODM9c3RhdGljIGludCBkYW1vbl9scnVfc29ydF9lbmFibGVkX2xvYWQoY2hhciAqYnVmZmVyLFxcbi0tXFxubW0vZGFtb24vbHJ1X3NvcnQuYy00ODgtXFxubW0vZGFtb24vbHJ1X3NvcnQuYzo0ODk6c3RhdGljIGNvbnN0IHN0cnVjdCBrZXJuZWxfcGFyYW1fb3BzIGVuYWJsZWRfcGFyYW1fb3BzID0ge1xcbm1tL2RhbW9uL2xydV9zb3J0LmMtNDkwLVxcdC5zZXQgPSBkYW1vbl9scnVfc29ydF9lbmFibGVkX3N0b3JlLFxcbi0tXFxubW0vZGFtb24vbHJ1X3NvcnQuYy00OTMtXFxubW0vZGFtb24vbHJ1X3NvcnQuYzo0OTQ6bW9kdWxlX3BhcmFtX2NiKGVuYWJsZWQsIFxcdTAwMjZlbmFibGVkX3BhcmFtX29wcywgXFx1MDAyNmVuYWJsZWQsIDA2MDApO1xcbm1tL2RhbW9uL2xydV9zb3J0LmMtNDk1LU1PRFVMRV9QQVJNX0RFU0MoZW5hYmxlZCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTg6MjA6MDcuNTcyNzIyMTI2WiIsIlNlcSI6NTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEyNjA0NzE0MTk3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBzZWUsIHRoaW5raW5nIHRocm91Z2ggdGhpcy4uLlxuXG4qKkZvY3VzIFN5bWJvbCBDYW5kaWRhdGVzIGZvciBDb25zaWRlcmF0aW9uKipcblxuQWxyaWdodCwgSSdtIHRha2luZyBhIGxvb2sgYXQgcG90ZW50aWFsIGBGb2N1c1N5bWJvbHNgIGhlcmUuIEJhc2VkIG9uIHdoYXQgSSd2ZSBzZWVuLCBgZGFtb25fbHJ1X3NvcnRfY29tbWl0X2lucHV0c19zdG9yZWAgYW5kIGBkYW1vbl9scnVfc29ydF9lbmFibGVkX3N0b3JlYCBzZWVtIGxpa2Ugc3Ryb25nIGNvbnRlbmRlcnMuIFRoZWlyIG5hbWVzIHN1Z2dlc3QgdGhleSdyZSBjZW50cmFsIHRvIHRoZSBMUlUgc29ydGluZyBwcm9jZXNzIHdpdGhpbiBEYW1vbiwgd2hpY2ggaXMgZGVmaW5pdGVseSBhIGtleSBhcmVhIHRvIG1vbml0b3IuIEkgbmVlZCB0byBkaWcgaW50byB0aGVpciBmdW5jdGlvbnMgdG8gY29uZmlybSwgb2YgY291cnNlLCBidXQgdGhlIGluaXRpYWwgaW5kaWNhdGlvbiBpcyBwcm9taXNpbmcuXG5cblRoZW4gSSBnZXQgdGhpbmtpbmcsIHNob3VsZCBJIGNvbnNpZGVyIHRoZSBmaWxlIGBzYW1wbGVzL2RhbW9uL210aWVyLmNgIGluIG15IGFuYWx5c2lzPyBJJ2xsIHByb2JhYmx5IG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGl0IGRvZXMgYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGVzZSBvdGhlciBjb21wb25lbnRzLCBiZWNhdXNlIGl0ICptaWdodCogYmUgcmVsZXZhbnQuIEkgd2lsbCBuZWVkIHRvIGxvb2sgaW50byBpdCB0byBiZSBzdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzk2NSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE4OjIwOjIwLjE3NzQ0MDA1M1oiLCJTZXEiOjU4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzk2MDcyNTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibW9kdWxlX3BhcmFtX2NiXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcInNhbXBsZXMvZGFtb24vbXRpZXIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJzYW1wbGVzL2RhbW9uL210aWVyLmM9NDY9c3RhdGljIGJvb2wgZW5hYmxlZCBfX3JlYWRfbW9zdGx5O1xcbnNhbXBsZXMvZGFtb24vbXRpZXIuYzo0Nzptb2R1bGVfcGFyYW1fY2IoZW5hYmxlZCwgXFx1MDAyNmVuYWJsZWRfcGFyYW1fb3BzLCBcXHUwMDI2ZW5hYmxlZCwgMDYwMCk7XFxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTQ4LU1PRFVMRV9QQVJNX0RFU0MoZW5hYmxlZCwgXFxcIkVuYWJsZSBvciBkaXNhYmxlIERBTU9OX1NBTVBMRV9NVElFUlxcXCIpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxODoyMDoyMC4yNTcwNTQ1OThaIiwiU2VxIjo1OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDM5MTI0OTgxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIHJldmlld2luZyB0aGlzOlxuXG4qKkludmVzdGlnYXRpbmcgYGVuYWJsZWRfcGFyYW1fb3BzYCBpbiBgc2FtcGxlcy9kYW1vbi9tdGllci5jYCoqXG5cbk9rYXksIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgc3lzdGVtIGlzIG1hbmFnaW5nIGl0cyBwYXJhbWV0ZXIgb3BlcmF0aW9ucywgYW5kIHRoZSBgc2FtcGxlcy9kYW1vbi9tdGllci5jYCBmaWxlIHNlZW1zIGxpa2UgYSBnb29kIHBsYWNlIHRvIHN0YXJ0LiBJJ20gZ29pbmcgdG8gY2hlY2sgdGhlIGBlbmFibGVkX3BhcmFtX29wc2AgdmFyaWFibGUgc3BlY2lmaWNhbGx5LiBNeSBleHBlY3RhdGlvbiBpcyB0aGF0IHRoaXMgdmFyaWFibGUgbGlrZWx5IGNvbnRyb2xzIHdoaWNoIHBhcmFtZXRlciBvcGVyYXRpb25zIGFyZSBjdXJyZW50bHkgYWN0aXZlIG9yIGFsbG93ZWQgd2l0aGluIHRoaXMgdGllcmVkIG1lbW9yeSBjb250ZXh0LiBJJ2xsIG5lZWQgdG8gc2VlIGhvdyBpdCdzIGluaXRpYWxpemVkLCBob3cgaXQncyBtb2RpZmllZCwgYW5kIG1vc3QgaW1wb3J0YW50bHksIGhvdyBpdHMgdmFsdWUgaXMgdXNlZCB0byBkZXRlcm1pbmUgdGhlIGJlaGF2aW9yIG9mIHRoZSBEYW1vbiBzYW1wbGluZyBwcm9jZXNzIHdpdGhpbiB0aGlzIG11bHRpLXRpZXJlZCBhcmNoaXRlY3R1cmUuIEkgbmVlZCB0byBiZSBhYmxlIHRvIHF1aWNrbHkgdW5kZXJzdGFuZCB0aGUgY29udHJvbCBmbG93IHJlbGF0ZWQgdG8gdGhpcyB2YXJpYWJsZSwgYXMgaXQncyBsaWtlbHkgYSBjcml0aWNhbCBjb21wb25lbnQgaW4gdW5kZXJzdGFuZGluZyB0aGUgb3ZlcmFsbCBjb25maWd1cmF0aW9uIG9mIHRoZSB0aWVyaW5nIGJlaGF2aW9yLiBJJ20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIHdoZXRoZXIgdGhpcyB2YXJpYWJsZSBpcyByZWFkLCBvciBtb2RpZmllZCwgdXNpbmcgYXRvbWljIG9wZXJhdGlvbnMgb3IgYW55IGtpbmQgb2Ygc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXMsIGFzIHRoZXNlIG9wZXJhdGlvbnMgbWF5IHNpZ25hbCBhIG11bHRpdGhyZWFkZWQgZW52aXJvbm1lbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4MzQ3LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTg6MjA6MjQuNjQ4MzA3ODU1WiIsIlNlcSI6NjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDQwNjI0NTQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZW5hYmxlZF9wYXJhbV9vcHNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwic2FtcGxlcy9kYW1vbi9tdGllci5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcInNhbXBsZXMvZGFtb24vbXRpZXIuYz0zOD1zdGF0aWMgaW50IGRhbW9uX3NhbXBsZV9tdGllcl9lbmFibGVfc3RvcmUoXFxuLS1cXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtNDAtXFxuc2FtcGxlcy9kYW1vbi9tdGllci5jOjQxOnN0YXRpYyBjb25zdCBzdHJ1Y3Qga2VybmVsX3BhcmFtX29wcyBlbmFibGVkX3BhcmFtX29wcyA9IHtcXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtNDItXFx0LnNldCA9IGRhbW9uX3NhbXBsZV9tdGllcl9lbmFibGVfc3RvcmUsXFxuLS1cXG5zYW1wbGVzL2RhbW9uL210aWVyLmM9NDY9c3RhdGljIGJvb2wgZW5hYmxlZCBfX3JlYWRfbW9zdGx5O1xcbnNhbXBsZXMvZGFtb24vbXRpZXIuYzo0Nzptb2R1bGVfcGFyYW1fY2IoZW5hYmxlZCwgXFx1MDAyNmVuYWJsZWRfcGFyYW1fb3BzLCBcXHUwMDI2ZW5hYmxlZCwgMDYwMCk7XFxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTQ4LU1PRFVMRV9QQVJNX0RFU0MoZW5hYmxlZCwgXFxcIkVuYWJsZSBvciBkaXNhYmxlIERBTU9OX1NBTVBMRV9NVElFUlxcXCIpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxODoyMDoyNC43NTIzNzg2NTlaIiwiU2VxIjo2MSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjIyMzA2NDEyMDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQ29uZmlndXJhdGlvbiBcdTAwMjYgU3ltYm9sIERlZXAgRGl2ZSoqXG5cbk9rYXksIHNvIEknbSBob25pbmcgaW4gb24gYGRhbW9uX3NhbXBsZV9tdGllcl9lbmFibGVfc3RvcmVgIGFzIGEga2V5IGZvY3VzLiBNYWtlcyBzZW5zZS4gTGV0J3Mgc2VlIHdoYXQgdGhlIGNvbmZpZ3VyYXRpb24gbmVlZHMgYXJlLCBzbyBJJ20gY2hlY2tpbmcgZm9yIHdoYXQgdG8gZW5hYmxlOiBgQ09ORklHX0RBTU9OX0xSVV9TT1JUYCwgYENPTkZJR19TQU1QTEVfREFNT05fTVRJRVJgLCBgQ09ORklHX0RBTU9OYCwgYENPTkZJR19EQU1PTl9QQUREUmAsIGFuZCBgQ09ORklHX1NBTVBMRVNgLlxuXG5GaXJzdCwgSSBuZWVkIHRvIGNvbmZpcm0gYENPTkZJR19EQU1PTl9MUlVfU09SVGAgZG9lc24ndCByZWx5IG9uIGBDT05GSUdfREFNT05fUkVDTEFJTWAuIEdvb2QsIGl0IHNlZW1zIHRoZXkncmUgaW5kZXBlbmRlbnQuIE5vdywgYENPTkZJR19TQU1QTEVfREFNT05fTVRJRVJgLi4uIE9rYXksIGl0cyBkZXBlbmRlbmNpZXMgYXJlIGBEQU1PTiBcdTAwMjZcdTAwMjYgREFNT05fUEFERFJgLlxuXG5TbywgdGhlIGNvbmZpZ3VyYXRpb25zIEkgKnJlYWxseSogbmVlZCB0byBlbmFibGUgYXJlOiBgREFNT05fTFJVX1NPUlRgLCBgU0FNUExFX0RBTU9OX01USUVSYCwgYERBTU9OYCwgYERBTU9OX1BBRERSYCwgYW5kIGBTQU1QTEVTYC5cblxuQnV0IHdhaXQsIGFyZSBgREFNT05gIGFuZCBgREFNT05fUEFERFJgIGFjdHVhbGx5IHNlbGVjdGVkIG9yIGRlZmF1bHQ/IGBEQU1PTmAgaXMgYSBib29sZWFuLiBgREFNT05fUEFERFJgIGRlcGVuZHMgb24gYERBTU9OIFx1MDAyNlx1MDAyNiBNTVVgLiBTbywgSSdsbCBzdHJlYW1saW5lIHRoaXMgbGlzdDogYERBTU9OYCwgYERBTU9OX1BBRERSYCwgYERBTU9OX0xSVV9TT1JUYCwgYFNBTVBMRVNgLCBhbmQgYFNBTVBMRV9EQU1PTl9NVElFUmAuIFRoaXMgaXMgdGhlIGNvcmUgc2V0LlxuXG5Ob3csIGxldCdzIHZlcmlmeSBgZGFtb25fbHJ1X3NvcnRfYWRkX3F1b3RhX2dvYWxzYCBpbiBgbW0vZGFtb24vbHJ1X3NvcnQuY2AgaXMgaW1wb3J0YW50LiBJdCdzIHN0YXRpYywgd2hpY2ggaXMgYSBrZXkgbm90ZSwgYnV0IGl0J3MgdGhlIGZ1bmN0aW9uIHRoYXQgaGFkIHRoZSBtb2RpZmljYXRpb25zLiBDYW4gSSBhZGQgaXQgdG8gYEZvY3VzU3ltYm9sc2A/IFN1cmUsIEkgY2FuIGFkZCBpdCwgYnV0IGl0J3MgKmxpa2VseSogdG8gYmUgaW5saW5lZC4gSWYgaXQncyBpbmxpbmVkLCBzeXprYWxsZXIgbWlnaHQgbm90IGJlIGFibGUgdG8gdHJhY2UgaXQgZGlyZWN0bHksIGJ1dCBpdCBzaG91bGQgdHJhY2UgdGhlIGNhbGxlciwgc28gdGhhdCdzIG9rYXkuIFRoZSBjYWxsZXIgb2YgdGhhdCBpcyBgZGFtb25fbHJ1X3NvcnRfYXBwbHlfcGFyYW1ldGVyc2AsIHdoaWNoIGlzIGFsc28gc3RhdGljLiBUaGUgY2FsbGVycyBvZiAqdGhhdCogYXJlIGBkYW1vbl9scnVfc29ydF9jb21taXRfaW5wdXRzX3N0b3JlYCBhbmQgYGRhbW9uX2xydV9zb3J0X3R1cm5gLiBTbywgSSdsbCBhZGQgdGhvc2UgdGhyZWUgc3ltYm9scyBhcyB3ZWxsOiBgZGFtb25fbHJ1X3NvcnRfY29tbWl0X2lucHV0c19zdG9yZWAsIGBkYW1vbl9scnVfc29ydF9lbmFibGVkX3N0b3JlYCwgYW5kIGBkYW1vbl9zYW1wbGVfbXRpZXJfZW5hYmxlX3N0b3JlYC5cblxuQWxyaWdodCwganVzdCB0byBtYWtlIHN1cmUgSSdtIHNvbGlkIG9uIHRoaXMuLi4gbGV0J3MgZG91YmxlLWNoZWNrIHRoZSBmdW5jdGlvbiBgZGFtb25fc2FtcGxlX210aWVyX2J1aWxkX2N0eGAgaW4gYHNhbXBsZXMvZGFtb24vbXRpZXIuY2AuIEdvdHRhIGJlIHRob3JvdWdoLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODg0NywiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUyNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxODoyMDo0Ni45ODMwMjM3NDlaIiwiU2VxIjo2MiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc1NDY3OTA1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRhbW9uX3NhbXBsZV9tdGllcl9idWlsZF9jdHhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwic2FtcGxlcy9kYW1vbi9tdGllci5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcInNhbXBsZXMvZGFtb24vbXRpZXIuYz02MD1zdGF0aWMgaW50IG5pZF90b19waHlzKGludCB0YXJnZXRfbm9kZSwgc3RydWN0IHJlZ2lvbl9yYW5nZSAqcmFuZ2UpXFxuLS1cXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtNzItXFxuc2FtcGxlcy9kYW1vbi9tdGllci5jOjczOnN0YXRpYyBzdHJ1Y3QgZGFtb25fY3R4ICpkYW1vbl9zYW1wbGVfbXRpZXJfYnVpbGRfY3R4KGJvb2wgcHJvbW90ZSlcXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtNzQte1xcbi0tXFxuc2FtcGxlcy9kYW1vbi9tdGllci5jPTE4MD1zdGF0aWMgaW50IGRhbW9uX3NhbXBsZV9tdGllcl9zdGFydCh2b2lkKVxcbi0tXFxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTE4NC1cXG5zYW1wbGVzL2RhbW9uL210aWVyLmM6MTg1OlxcdGN0eCA9IGRhbW9uX3NhbXBsZV9tdGllcl9idWlsZF9jdHgodHJ1ZSk7XFxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTE4Ni1cXHRpZiAoIWN0eClcXG4tLVxcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0xODgtXFx0Y3R4c1swXSA9IGN0eDtcXG5zYW1wbGVzL2RhbW9uL210aWVyLmM6MTg5OlxcdGN0eCA9IGRhbW9uX3NhbXBsZV9tdGllcl9idWlsZF9jdHgoZmFsc2UpO1xcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0xOTAtXFx0aWYgKCFjdHgpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTg6MjA6NDcuMDU4NDk2NzY0WiIsIlNlcSI6NjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ4MTIzNzMwNzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSdtIGFuIGV4cGVydCBpbiB0aGlzIGFyZWEgYW5kIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwaWVjZSBvZiBjb2RlOlxuXG4qKlRoaW5raW5nIFRocm91Z2ggdGhlIE11bHRpLVRpZXIgU2FtcGxpbmcgUHJvY2VzcyoqXG5cbkFscmlnaHQsIHNvIGBkYW1vbl9zYW1wbGVfbXRpZXJfc3RhcnRgIGlzIGJlaW5nIGNhbGxlZCBmcm9tIHdpdGhpbiBgZGFtb25fc2FtcGxlX210aWVyX3R1cm5gLiBUaGF0J3MgdGhlIGtleSBzdGFydGluZyBwb2ludC4gVGhpcyB0ZWxscyBtZSB0aGF0IHdlJ3JlIGRlYWxpbmcgd2l0aCBhIG11bHRpLXRpZXJlZCBzYW1wbGluZyBwcm9jZXNzLCBhbmQgYF9zdGFydGAgbXVzdCBpbml0aWFsaXplIG9yIHNldCB1cCBzb21ldGhpbmcsIHByZXN1bWFibHkgYXQgdGhlIGJlZ2lubmluZyBvZiBlYWNoIFwidHVyblwiIG9yIGl0ZXJhdGlvbi4gSXQncyBsaWtlbHkgdGhhdCBgZGFtb25fc2FtcGxlX210aWVyX3R1cm5gIHJlcHJlc2VudHMgYSBzaW5nbGUgc2FtcGxpbmcgKmN5Y2xlKiB3aXRoaW4gdGhlIG11bHRpLXRpZXJlZCBzdHJ1Y3R1cmUuXG5cbkkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgXCJ0aWVyc1wiIHdlJ3JlIHRhbGtpbmcgYWJvdXQgaGVyZS4gQXJlIHdlIHNhbXBsaW5nIGF0IGRpZmZlcmVudCBncmFudWxhcml0aWVzPyBNYXliZSB3ZSBzdGFydCB3aXRoIGEgY29hcnNlLWdyYWluZWQgc2FtcGxlIGFuZCBwcm9ncmVzc2l2ZWx5IHJlZmluZSBpdCB0aHJvdWdoIG11bHRpcGxlIHRpZXJzPyBPciBwZXJoYXBzIGl0J3MgYSBoaWVyYXJjaGljYWwgc3RydWN0dXJlLCB3aGVyZSBlYWNoIHRpZXIgcmVwcmVzZW50cyBhIGRpZmZlcmVudCBhc3BlY3Qgb3IgZGltZW5zaW9uIG9mIHRoZSBkYXRhLiBcblxuV2hhdGV2ZXIgdGhlIHNwZWNpZmljcywgYF9zdGFydGAgcHJvYmFibHkgc2V0cyB1cCB0aGUgbmVjZXNzYXJ5IHN0YXRlIGZvciB0aGUgY3VycmVudCB0aWVyIG9yIHRoZSBzYW1wbGluZyBwcm9jZXNzIG92ZXJhbGwuIFRoaXMgY291bGQgaW52b2x2ZSBpbml0aWFsaXppbmcgYWNjdW11bGF0b3JzLCBzZXR0aW5nIHVwIHJhbmRvbSBudW1iZXIgZ2VuZXJhdG9ycywgcHJlLWNhbGN1bGF0aW5nIHNvbWUgdmFsdWVzLCBvciBtYXliZSBldmVuIGZldGNoaW5nIGRhdGEgbmVjZXNzYXJ5IGZvciB0aGlzIFwidHVybi5cIiBJJ2xsIG5lZWQgdG8gZGlnIGRlZXBlciBpbnRvIHRoZSBjb2RlIG9mIGBkYW1vbl9zYW1wbGVfbXRpZXJfc3RhcnRgIHRvIHVuZGVyc3RhbmQgKnByZWNpc2VseSogd2hhdCBpdCBkb2VzLCBidXQgdGhpcyBpbml0aWFsIGNhbGwgZnJvbSBgX3R1cm5gIGZyYW1lcyB0aGUgY29udGV4dCBhbmQgdGhlIG92ZXJhbGwgZmxvdy4gSXQncyB2ZXJ5IGxpa2VseSB0aGF0IGBfc3RhcnRgIHByZXBhcmVzIGZvciB0aGUgbG9naWMgaW1wbGVtZW50ZWQgaW4gdGhlIGBfdHVybmAgZnVuY3Rpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwMzAzLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTg6MjA6NTEuODcwODcyOTk1WiIsIlNlcSI6NjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzE4MTcwMzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGFtb25fc2FtcGxlX210aWVyX3N0YXJ0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcInNhbXBsZXMvZGFtb24vbXRpZXIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJzYW1wbGVzL2RhbW9uL210aWVyLmM9NzM9c3RhdGljIHN0cnVjdCBkYW1vbl9jdHggKmRhbW9uX3NhbXBsZV9tdGllcl9idWlsZF9jdHgoYm9vbCBwcm9tb3RlKVxcbi0tXFxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTE3OS1cXG5zYW1wbGVzL2RhbW9uL210aWVyLmM6MTgwOnN0YXRpYyBpbnQgZGFtb25fc2FtcGxlX210aWVyX3N0YXJ0KHZvaWQpXFxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTE4MS17XFxuLS1cXG5zYW1wbGVzL2RhbW9uL210aWVyLmM9MjExPXN0YXRpYyBpbnQgZGFtb25fc2FtcGxlX210aWVyX2VuYWJsZV9zdG9yZShcXG4tLVxcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0yMjctXFx0aWYgKGVuYWJsZWQpIHtcXG5zYW1wbGVzL2RhbW9uL210aWVyLmM6MjI4OlxcdFxcdGVyciA9IGRhbW9uX3NhbXBsZV9tdGllcl9zdGFydCgpO1xcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0yMjktXFx0XFx0aWYgKGVycilcXG4tLVxcbnNhbXBsZXMvZGFtb24vbXRpZXIuYz0yMzc9c3RhdGljIGludCBfX2luaXQgZGFtb25fc2FtcGxlX210aWVyX2luaXQodm9pZClcXG4tLVxcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0yNDctXFx0aWYgKGVuYWJsZWQpIHtcXG5zYW1wbGVzL2RhbW9uL210aWVyLmM6MjQ4OlxcdFxcdGVyciA9IGRhbW9uX3NhbXBsZV9tdGllcl9zdGFydCgpO1xcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0yNDktXFx0XFx0aWYgKGVycilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTg6MjA6NTIuMzQyNjk3MDA1WiIsIlNlcSI6NjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjkxNTMwNTA5NTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBEQU1PTiBNVGllciBFbmFibGVtZW50IFBhdGgqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGBkYW1vbl9zYW1wbGVfbXRpZXJfZW5hYmxlX3N0b3JlYCBmdW5jdGlvbjsgdGhhdCdzIHRoZSBzdGFydGluZyBwb2ludCwgdGhlIGVudHJ5IGdhdGUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgTVRpZXIgZW5hYmxlbWVudCBhY3R1YWxseSBmdW5jdGlvbnMuXG5cbk5vdywgbGV0J3MganVzdCBtYWtlIGEgbGlzdCwgYSBtZW50YWwgbWFwIG9mIHRob3NlIGBGb2N1c1N5bWJvbHNgIHRvIHF1aWNrbHkgZ2V0IGEgc2Vuc2Ugb2YgdGhlIHBpZWNlcyBpbnZvbHZlZDogSSBzZWUgYGRhbW9uX2xydV9zb3J0X2NvbW1pdF9pbnB1dHNfc3RvcmVgLCBgZGFtb25fbHJ1X3NvcnRfZW5hYmxlZF9zdG9yZWAsIGFuZCwgb2YgY291cnNlLCB0aGUgbWFpbiBvbmUsIGBkYW1vbl9zYW1wbGVfbXRpZXJfZW5hYmxlX3N0b3JlYC4gVGhlc2UgYXJlIHRoZSBrZXkgdmFyaWFibGVzIHRvIHdhdGNoIGFzIHRoaXMgd2hvbGUgZmxvdyBpcyBleGVjdXRlZC5cblxuVG8gbWFrZSBzdXJlIEkgaGF2ZW4ndCBtaXNzZWQgYW55dGhpbmcgY3J1Y2lhbCwgSSBzaG91bGQgc2NhbiB0aGUgY29kZSwgc3BlY2lmaWNhbGx5IGxvb2tpbmcgYXQgYG1tL2RhbW9uL2xydV9zb3J0LmNgIGFuZCBgc2FtcGxlcy9kYW1vbi9tdGllci5jYC4gSSBuZWVkIHRvIGVuc3VyZSB0aGF0IG5vIGNyaXRpY2FsIGxvZ2ljIGlzIGhpZGRlbiB3aXRoaW4gYSBmdW5jdGlvbiB0aGF0IGlzbid0IGRlZmluZWQgYXMgYHN0YXRpY2AuIEkgYW0ganVzdCBtYWtpbmcgc3VyZSB0aGVyZSBhcmVuJ3QgYW55IHN1cnByaXNlIGNhbGxzIEknbSBub3QgZXhwZWN0aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTAyMywiT3V0cHV0VG9rZW5zIjo2OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxODoyMTowMS40OTU3NTE3NTdaIiwiU2VxIjo2NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc2OTQzMjg1LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJeW2EtekEtWl9dW2EtekEtWjAtOV9dKiBbYS16QS1aX11bYS16QS1aMC05X10qXFxcXChcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vZGFtb24vbHJ1X3NvcnQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTg6MjE6MDEuNTcyNzAxMjcyWiIsIlNlcSI6NjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg0NTYxNjUyODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRm9jdXMgU3ltYm9sIGFuZCBFbmFibGUgQ29uZmlnIElkZW50aWZpY2F0aW9uKipcblxuT2theSwgSSd2ZSBhbHJlYWR5IGNvbmZpcm1lZCB0aGUgaW5pdGlhbCBhc3N1bXB0aW9ucyDigJMgdGhlc2UgZnVuY3Rpb25zIGFyZSwgYXMgZXhwZWN0ZWQsIHN0YXRpYy4gTGV0J3MgbWFrZSBzdXJlIG91ciBiYXNlcyBhcmUgY292ZXJlZC5cblxuRmlyc3QsIEkgY2hlY2tlZCBgZGFtb25fbHJ1X3NvcnRfY29tbWl0X2lucHV0c19zdG9yZWAuIEl0J3Mgc3RhdGljLCB3aGljaCBpcyBnb29kLlxuXG5gYGBjXG5zdGF0aWMgaW50IGRhbW9uX2xydV9zb3J0X2NvbW1pdF9pbnB1dHNfc3RvcmUoY29uc3QgY2hhciAqdmFsLFxuXHRcdGNvbnN0IHN0cnVjdCBrZXJuZWxfcGFyYW0gKmtwKVxuYGBgXG5cbkFuZCBnaXZlbiB0aGF0IGl0J3MgcGFzc2VkIHRvIGBrZXJuZWxfcGFyYW1fb3BzYCBhcyBhIGZ1bmN0aW9uIHBvaW50ZXIsIGlubGluaW5nIGlzbid0IGdvaW5nIHRvIGJlIGFuIGlzc3VlLiBTbywgdGhhdCdzIHNhZmUgdG8gaW5jbHVkZSBhcyBhIGZvY3VzIHN5bWJvbC5cblxuTW92aW5nIG9uLCBJIG5lZWQgdG8gY2hlY2sgYGRhbW9uX2xydV9zb3J0X2VuYWJsZWRfc3RvcmVgLiBZdXAsIHN0YXRpYy5cblxuYGBgY1xuc3RhdGljIGludCBkYW1vbl9scnVfc29ydF9lbmFibGVkX3N0b3JlKGNvbnN0IGNoYXIgKnZhbCxcblx0XHRjb25zdCBzdHJ1Y3Qga2VybmVsX3BhcmFtICprcClcbmBgYFxuXG5BZ2FpbiwgdGhlIGZ1bmN0aW9uIHBvaW50ZXIgY29udGV4dCBjb25maXJtcyBpdHMgc3VpdGFiaWxpdHkuXG5cbkZpbmFsbHksIGxldCdzIGxvb2sgYXQgYGRhbW9uX3NhbXBsZV9tdGllcl9lbmFibGVfc3RvcmVgLiBZZXAsIHN0YXRpYy5cblxuYGBgY1xuc3RhdGljIGludCBkYW1vbl9zYW1wbGVfbXRpZXJfZW5hYmxlX3N0b3JlKGNvbnN0IGNoYXIgKnZhbCxcblx0XHRjb25zdCBzdHJ1Y3Qga2VybmVsX3BhcmFtICprcClcbmBgYFxuXG5TYW1lIHN0b3J5LCBmdW5jdGlvbiBwb2ludGVyLCBhbmQgaXQncyBhbGwgZ29vZC5cblxuVGhlcmVmb3JlLCBvdXIgKipGb2N1c1N5bWJvbHMqKiBhcmU6XG4tICAgYGRhbW9uX2xydV9zb3J0X2NvbW1pdF9pbnB1dHNfc3RvcmVgXG4tICAgYGRhbW9uX2xydV9zb3J0X2VuYWJsZWRfc3RvcmVgXG4tICAgYGRhbW9uX3NhbXBsZV9tdGllcl9lbmFibGVfc3RvcmVgXG5cbk5vdywgbGV0J3MgaWRlbnRpZnkgdGhlICoqRW5hYmxlQ29uZmlncyoqOlxuLSAgIGBEQU1PTmBcbi0gICBgREFNT05fUEFERFJgXG4tICAgYERBTU9OX0xSVV9TT1JUYFxuLSAgIGBTQU1QTEVTYFxuLSAgIGBTQU1QTEVfREFNT05fTVRJRVJgXG5cblRoZSBwYXRjaCBpcyBhYm91dCBpbnB1dCB2YWxpZGF0aW9uIHRvIHByZXZlbnQgaW52YWxpZCBwYXJhbWV0ZXJzLiBUaGVzZSBwYXJhbWV0ZXJzIGFyZSBhdmFpbGFibGUgdmlhIHN5c2ZzIGFuZCBjYW4gYmUgY2hhbmdlZCBhdCBydW50aW1lLiBUaGUgY2hhbmdlcyBhcmUgZnVuY3Rpb25hbCBhbmQgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSB0aGUgc3lzZnMgbW9kdWxlIHBhcmFtZXRlciBzdG9yZXMuIE5vdyBsZXQgbWUgZG91YmxlLWNoZWNrIHRoYXQgYERBTU9OX0xSVV9TT1JUYCBkb2VzIG5vdCBkZXBlbmQgb24gb3RoZXIgY29uZmlncy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE0NjMsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTg6MjE6MTAuMDI4ODcyMTU3WiIsIlNlcSI6NjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NDIzOTUzNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgREFNT05fTFJVX1NPUlRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vZGFtb24vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9kYW1vbi9LY29uZmlnPTg4PWNvbmZpZyBEQU1PTl9SRUNMQUlNXFxuLS1cXG5tbS9kYW1vbi9LY29uZmlnLTk5LVxcbm1tL2RhbW9uL0tjb25maWc6MTAwOmNvbmZpZyBEQU1PTl9MUlVfU09SVFxcbm1tL2RhbW9uL0tjb25maWctMTAxLVxcdGJvb2wgXFxcIkJ1aWxkIERBTU9OLWJhc2VkIExSVS1saXN0cyBzb3J0aW5nIChEQU1PTl9MUlVfU09SVClcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE4OjIxOjEwLjA4MzExODcyNFoiLCJTZXEiOjY5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5OTY5NDE5MDgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBEQU1PTiBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSd2ZSBsb29rZWQgaW50byB0aGlzIGFscmVhZHksIGFuZCBpdCdzIHByZXR0eSBjbGVhciB0aGF0IHRoZSBiZWhhdmlvciBoaW5nZXMgb24gYERBTU9OX1BBRERSYC4gTm93LCBgREFNT05fUEFERFJgIGlzIGl0c2VsZiBjb25kaXRpb25hbCwgYW5kIGl0IHJlcXVpcmVzIGJvdGggYERBTU9OYCAqYW5kKiBgTU1VYCB0byBiZSBlbmFibGVkLiBJIGtub3cgYE1NVWAgaXMgYmFzaWNhbGx5IGEgZ2l2ZW4gb24gc3RhbmRhcmQgYXJjaGl0ZWN0dXJlcywgc28gdGhhdCdzIGxpa2VseSBub3QgdGhlIHN0dW1ibGluZyBibG9jay5cblxuQnV0IGp1c3QgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLCBsZXQncyBqdXN0IG1ha2Ugc3VyZSB0aGVyZSBhcmVuJ3QgYW55IG90aGVyIGRlcGVuZGVuY2llcyBmb3IgYFNBTVBMRV9EQU1PTl9NVElFUmAgdGhhdCBJIGhhdmVuJ3QgYWNjb3VudGVkIGZvciB5ZXQuIEdvdHRhIGJlIHRob3JvdWdoLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjU0NSwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE4OjIxOjIwLjA1MjU0MDY3NVoiLCJTZXEiOjcwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAwNTQ2NTA0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBTQU1QTEVfREFNT05fTVRJRVJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwic2FtcGxlcy9kYW1vbi9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcInNhbXBsZXMvZGFtb24vS2NvbmZpZz0xNz1jb25maWcgU0FNUExFX0RBTU9OX1BSQ0xcXG4tLVxcbnNhbXBsZXMvZGFtb24vS2NvbmZpZy0yOS1cXG5zYW1wbGVzL2RhbW9uL0tjb25maWc6MzA6Y29uZmlnIFNBTVBMRV9EQU1PTl9NVElFUlxcbnNhbXBsZXMvZGFtb24vS2NvbmZpZy0zMS1cXHRib29sIFxcXCJEQU1PTiBzYW1wbGUgbW9kdWxlIGZvciBtZW1vcnkgdGllcmluZ1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTg6MjE6MjAuMTUzMDkyODI5WiIsIlNlcSI6NzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjcwNDY4NzkxMTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqQXNzZXNzbWVudCBvZiBDb25maWd1cmF0aW9uIGFuZCBOZXh0IFN0ZXBzKipcblxuQWxyaWdodCwgSSd2ZSBjb25maXJtZWQgdGhhdCB0aGUgY29uZmlndXJhdGlvbiBoaW5nZXMgb24gYERBTU9OIFx1MDAyNlx1MDAyNiBEQU1PTl9QQUREUmAuIFRoZSBpbml0aWFsIHRyb3VibGVzaG9vdGluZyBzdGVwcyBpbmRpY2F0ZWQgdGhleSB3ZXJlLCBpbiBmYWN0LCBzZXQgY29ycmVjdGx5LCBzbyB0aGF0IHBhdGggc2VlbXMgY2xlYXJlZC4gTm93LCB3aXRoIHRoZSBmb3VuZGF0aW9uYWwgZWxlbWVudHMgaW4gcGxhY2UsIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCB0byBnZXQgdG8gdGhlIHNvbHV0aW9uIGlzIHRvIGNhbGwgdGhlIGBzZXQtcmVzdWx0c2AgZnVuY3Rpb24gdG8gcHJvY2VlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjI4NzQsIk91dHB1dFRva2VucyI6MTg2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTg6MjE6MjcuMTk5OTc1MzEyWiIsIlNlcSI6NzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ0NDE5NDYyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJEQU1PTlwiLFxuICAgIFwiREFNT05fUEFERFJcIixcbiAgICBcIkRBTU9OX0xSVV9TT1JUXCIsXG4gICAgXCJTQU1QTEVTXCIsXG4gICAgXCJTQU1QTEVfREFNT05fTVRJRVJcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkYW1vbl9scnVfc29ydF9jb21taXRfaW5wdXRzX3N0b3JlXCIsXG4gICAgXCJkYW1vbl9scnVfc29ydF9lbmFibGVkX3N0b3JlXCIsXG4gICAgXCJkYW1vbl9zYW1wbGVfbXRpZXJfZW5hYmxlX3N0b3JlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBpbnB1dCB2YWxpZGF0aW9uIGZvciBEQU1PTiBMUlUgc29ydCBhbmQgbWVtb3J5IHRpZXJpbmcgc2FtcGxlIG1vZHVsZSBwYXJhbWV0ZXJzIHRvIHByZXZlbnQgaW52YWxpZCB2YWx1ZXMgKGxpa2UgXFx1MDAzZSAxMDAwMCBvciAwKSB0aGF0IGNvdWxkIGNhdXNlIGRpdmlzaW9uIGJ5IHplcm8gb3Igb3RoZXIgaXNzdWVzLiBUaGVzZSBwYXJhbWV0ZXJzIGFyZSBhY2Nlc3NpYmxlIHZpYSBzeXNmcyBhbmQgY2FuIGJlIG1vZGlmaWVkIGF0IHJ1bnRpbWUuIFRoZSBjaGFuZ2VzIGFyZSBmdW5jdGlvbmFsIGFuZCByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIHN5c2ZzIG1vZHVsZSBwYXJhbWV0ZXIgc3RvcmVzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkRBTU9OXCIsXG4gICAgXCJEQU1PTl9QQUREUlwiLFxuICAgIFwiREFNT05fTFJVX1NPUlRcIixcbiAgICBcIlNBTVBMRVNcIixcbiAgICBcIlNBTVBMRV9EQU1PTl9NVElFUlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRhbW9uX2xydV9zb3J0X2NvbW1pdF9pbnB1dHNfc3RvcmVcIixcbiAgICBcImRhbW9uX2xydV9zb3J0X2VuYWJsZWRfc3RvcmVcIixcbiAgICBcImRhbW9uX3NhbXBsZV9tdGllcl9lbmFibGVfc3RvcmVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGlucHV0IHZhbGlkYXRpb24gZm9yIERBTU9OIExSVSBzb3J0IGFuZCBtZW1vcnkgdGllcmluZyBzYW1wbGUgbW9kdWxlIHBhcmFtZXRlcnMgdG8gcHJldmVudCBpbnZhbGlkIHZhbHVlcyAobGlrZSBcXHUwMDNlIDEwMDAwIG9yIDApIHRoYXQgY291bGQgY2F1c2UgZGl2aXNpb24gYnkgemVybyBvciBvdGhlciBpc3N1ZXMuIFRoZXNlIHBhcmFtZXRlcnMgYXJlIGFjY2Vzc2libGUgdmlhIHN5c2ZzIGFuZCBjYW4gYmUgbW9kaWZpZWQgYXQgcnVudGltZS4gVGhlIGNoYW5nZXMgYXJlIGZ1bmN0aW9uYWwgYW5kIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgc3lzZnMgbW9kdWxlIHBhcmFtZXRlciBzdG9yZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowm7tbs[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-03 17:57:39 +0000 UTC FinishedAt: 2026-08-03 18:21:28 +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": "1dbd7c34bb92dd9c0b0363b75f6ec444299af108", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DAMON", "DAMON_PADDR", "DAMON_LRU_SORT", "SAMPLES", "SAMPLE_DAMON_MTIER" ], "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": "1dbd7c34bb92dd9c0b0363b75f6ec444299af108", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DAMON", "DAMON_PADDR", "DAMON_LRU_SORT", "SAMPLES", "SAMPLE_DAMON_MTIER" ], "series_id": "5062fd5d-c24f-4f8d-8ed1-665d37ad2b3c" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "damon_lru_sort_commit_inputs_store", "damon_lru_sort_enabled_store", "damon_sample_mtier_enable_store" ], "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+CgkJCTx0ZD4yMDI2LzA4LzAzIDE4OjE0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Nm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RBTU9OJiMzNDssCiAgICAmIzM0O0RBTU9OX1BBRERSJiMzNDssCiAgICAmIzM0O0RBTU9OX0xSVV9TT1JUJiMzNDssCiAgICAmIzM0O1NBTVBMRVMmIzM0OywKICAgICYjMzQ7U0FNUExFX0RBTU9OX01USUVSJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZGFtb25fbHJ1X3NvcnRfY29tbWl0X2lucHV0c19zdG9yZSYjMzQ7LAogICAgJiMzNDtkYW1vbl9scnVfc29ydF9lbmFibGVkX3N0b3JlJiMzNDssCiAgICAmIzM0O2RhbW9uX3NhbXBsZV9tdGllcl9lbmFibGVfc3RvcmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBpbnB1dCB2YWxpZGF0aW9uIGZvciBEQU1PTiBMUlUgc29ydCBhbmQgbWVtb3J5IHRpZXJpbmcgc2FtcGxlIG1vZHVsZSBwYXJhbWV0ZXJzIHRvIHByZXZlbnQgaW52YWxpZCB2YWx1ZXMgKGxpa2UgXHUwMDNlIDEwMDAwIG9yIDApIHRoYXQgY291bGQgY2F1c2UgZGl2aXNpb24gYnkgemVybyBvciBvdGhlciBpc3N1ZXMuIFRoZXNlIHBhcmFtZXRlcnMgYXJlIGFjY2Vzc2libGUgdmlhIHN5c2ZzIGFuZCBjYW4gYmUgbW9kaWZpZWQgYXQgcnVudGltZS4gVGhlIGNoYW5nZXMgYXJlIGZ1bmN0aW9uYWwgYW5kIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgc3lzZnMgbW9kdWxlIHBhcmFtZXRlciBzdG9yZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTg6MTQ8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA5ZmMwNzkwMDdhYmI2YWU3ZDk0NjhkNDcxYWY4MmQyY2RiOTRlOWY4XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMyAxODoxNDo0NyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9tbS9kYW1vbi9scnVfc29ydC5jIGIvbW0vZGFtb24vbHJ1X3NvcnQuY1xuaW5kZXggN2UwNzcwODRjYjAzYS4uMzkyMGQ1MDQyZjEwOSAxMDA2NDRcbi0tLSBhL21tL2RhbW9uL2xydV9zb3J0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL21tL2RhbW9uL2xydV9zb3J0LmNcbkBAIC0yMzMsNiAmIzQzOzIzMyw4IEBAIHN0YXRpYyBpbnQgZGFtb25fbHJ1X3NvcnRfYWRkX3F1b3RhX2dvYWxzKHN0cnVjdCBkYW1vcyAqaG90X3NjaGVtZSxcbiBcbiBcdGlmICghYWN0aXZlX21lbV9icClcbiBcdFx0cmV0dXJuIDA7XG4mIzQzO1x0aWYgKDEwMDAwIFx1MDAzYyBhY3RpdmVfbWVtX2JwKVxuJiM0MztcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXHRnb2FsID0gZGFtb3NfbmV3X3F1b3RhX2dvYWwoREFNT1NfUVVPVEFfQUNUSVZFX01FTV9CUCwgYWN0aXZlX21lbV9icCk7XG4gXHRpZiAoIWdvYWwpXG4gXHRcdHJldHVybiAtRU5PTUVNO1xuZGlmZiAtLWdpdCBhL3NhbXBsZXMvZGFtb24vbXRpZXIuYyBiL3NhbXBsZXMvZGFtb24vbXRpZXIuY1xuaW5kZXggYWM5YzI0YjkyZWFkOC4uZDExMjNlYmJmYWI5MCAxMDA2NDRcbi0tLSBhL3NhbXBsZXMvZGFtb24vbXRpZXIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvc2FtcGxlcy9kYW1vbi9tdGllci5jXG5AQCAtMTU2LDYgJiM0MzsxNTYsOSBAQCBzdGF0aWMgc3RydWN0IGRhbW9uX2N0eCAqZGFtb25fc2FtcGxlX210aWVyX2J1aWxkX2N0eChib29sIHByb21vdGUpXG4gXHRpZiAoIXNjaGVtZSlcbiBcdFx0Z290byBmcmVlX291dDtcbiBcdGRhbW9uX3NldF9zY2hlbWVzKGN0eCwgXHUwMDI2c2NoZW1lLCAxKTtcbiYjNDM7XHQvKiB6ZXJvIHRhcmdldCB2YWx1ZSBjYXVzZXMgZGl2aXNpb24gYnkgemVybyBpbiBkYW1vc19xdW90YV9zdG9yZSgpICovXG4mIzQzO1x0aWYgKCFub2RlMF9tZW1fdXNlZF9icCB8fCAhbm9kZTBfbWVtX2ZyZWVfYnApXG4mIzQzO1x0XHRnb3RvIGZyZWVfb3V0O1xuIFx0cXVvdGFfZ29hbCA9IGRhbW9zX25ld19xdW90YV9nb2FsKFxuIFx0XHRcdHByb21vdGUgPyBEQU1PU19RVU9UQV9OT0RFX01FTV9VU0VEX0JQIDpcbiBcdFx0XHREQU1PU19RVU9UQV9OT0RFX01FTV9GUkVFX0JQLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE4OjE0PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjZtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtEQU1PTiYjMzQ7LAogICAgJiMzNDtEQU1PTl9QQUREUiYjMzQ7LAogICAgJiMzNDtEQU1PTl9MUlVfU09SVCYjMzQ7LAogICAgJiMzNDtTQU1QTEVTJiMzNDssCiAgICAmIzM0O1NBTVBMRV9EQU1PTl9NVElFUiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2RhbW9uX2xydV9zb3J0X2NvbW1pdF9pbnB1dHNfc3RvcmUmIzM0OywKICAgICYjMzQ7ZGFtb25fbHJ1X3NvcnRfZW5hYmxlZF9zdG9yZSYjMzQ7LAogICAgJiMzNDtkYW1vbl9zYW1wbGVfbXRpZXJfZW5hYmxlX3N0b3JlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgaW5wdXQgdmFsaWRhdGlvbiBmb3IgREFNT04gTFJVIHNvcnQgYW5kIG1lbW9yeSB0aWVyaW5nIHNhbXBsZSBtb2R1bGUgcGFyYW1ldGVycyB0byBwcmV2ZW50IGludmFsaWQgdmFsdWVzIChsaWtlIFx1MDAzZSAxMDAwMCBvciAwKSB0aGF0IGNvdWxkIGNhdXNlIGRpdmlzaW9uIGJ5IHplcm8gb3Igb3RoZXIgaXNzdWVzLiBUaGVzZSBwYXJhbWV0ZXJzIGFyZSBhY2Nlc3NpYmxlIHZpYSBzeXNmcyBhbmQgY2FuIGJlIG1vZGlmaWVkIGF0IHJ1bnRpbWUuIFRoZSBjaGFuZ2VzIGFyZSBmdW5jdGlvbmFsIGFuZCByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIHN5c2ZzIG1vZHVsZSBwYXJhbWV0ZXIgc3RvcmVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgOWZjMDc5MDA3YWJiNmFlN2Q5NDY4ZDQ3MWFmODJkMmNkYjk0ZTlmOApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gQXVnIDMgMTg6MTQ6NDcgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9tbS9kYW1vbi9scnVfc29ydC5jIGIvbW0vZGFtb24vbHJ1X3NvcnQuYwppbmRleCA3ZTA3NzA4NGNiMDNhLi4zOTIwZDUwNDJmMTA5IDEwMDY0NAotLS0gYS9tbS9kYW1vbi9scnVfc29ydC5jCiYjNDM7JiM0MzsmIzQzOyBiL21tL2RhbW9uL2xydV9zb3J0LmMKQEAgLTIzMyw2ICYjNDM7MjMzLDggQEAgc3RhdGljIGludCBkYW1vbl9scnVfc29ydF9hZGRfcXVvdGFfZ29hbHMoc3RydWN0IGRhbW9zICpob3Rfc2NoZW1lLAogCiAJaWYgKCFhY3RpdmVfbWVtX2JwKQogCQlyZXR1cm4gMDsKJiM0MzsJaWYgKDEwMDAwICZsdDsgYWN0aXZlX21lbV9icCkKJiM0MzsJCXJldHVybiAtRUlOVkFMOwogCWdvYWwgPSBkYW1vc19uZXdfcXVvdGFfZ29hbChEQU1PU19RVU9UQV9BQ1RJVkVfTUVNX0JQLCBhY3RpdmVfbWVtX2JwKTsKIAlpZiAoIWdvYWwpCiAJCXJldHVybiAtRU5PTUVNOwpkaWZmIC0tZ2l0IGEvc2FtcGxlcy9kYW1vbi9tdGllci5jIGIvc2FtcGxlcy9kYW1vbi9tdGllci5jCmluZGV4IGFjOWMyNGI5MmVhZDguLmQxMTIzZWJiZmFiOTAgMTAwNjQ0Ci0tLSBhL3NhbXBsZXMvZGFtb24vbXRpZXIuYwomIzQzOyYjNDM7JiM0MzsgYi9zYW1wbGVzL2RhbW9uL210aWVyLmMKQEAgLTE1Niw2ICYjNDM7MTU2LDkgQEAgc3RhdGljIHN0cnVjdCBkYW1vbl9jdHggKmRhbW9uX3NhbXBsZV9tdGllcl9idWlsZF9jdHgoYm9vbCBwcm9tb3RlKQogCWlmICghc2NoZW1lKQogCQlnb3RvIGZyZWVfb3V0OwogCWRhbW9uX3NldF9zY2hlbWVzKGN0eCwgJmFtcDtzY2hlbWUsIDEpOwomIzQzOwkvKiB6ZXJvIHRhcmdldCB2YWx1ZSBjYXVzZXMgZGl2aXNpb24gYnkgemVybyBpbiBkYW1vc19xdW90YV9zdG9yZSgpICovCiYjNDM7CWlmICghbm9kZTBfbWVtX3VzZWRfYnAgfHwgIW5vZGUwX21lbV9mcmVlX2JwKQomIzQzOwkJZ290byBmcmVlX291dDsKIAlxdW90YV9nb2FsID0gZGFtb3NfbmV3X3F1b3RhX2dvYWwoCiAJCQlwcm9tb3RlID8gREFNT1NfUVVPVEFfTk9ERV9NRU1fVVNFRF9CUCA6CiAJCQlEQU1PU19RVU9UQV9OT0RFX01FTV9GUkVFX0JQLAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxODoxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzI0CgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogNDQ3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBEQU1PTiBMUlUgU29ydCBDaGFuZ2VzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0d28gZmlsZXMgdGhhdCBoYXZlIGJlZW4gbW9kaWZpZWQ6IGBtbS9kYW1vbi9scnVfc29ydC5jYCBhbmQgYHNhbXBsZXMvZGFtb24vbXRpZXIuY2AuIFNlZW1zIGxpa2UgdGhlcmUgaGF2ZSBiZWVuIHNvbWUgYWRqdXN0bWVudHMgdG8gaG93IERBTU9OIGhhbmRsZXMgcXVvdGFzLiBMZXQmIzM5O3MgZGlnIGluLgoKRmlyc3QsIGBtbS9kYW1vbi9scnVfc29ydC5jYCAtIGluIHRoZSBgZGFtb25fbHJ1X3NvcnRfYWRkX3F1b3RhX2dvYWxzYCBmdW5jdGlvbiwgdGhlcmUmIzM5O3MgYSBuZXcgY2hlY2suIEl0JiMzOTtzIGV4cGxpY2l0bHkgdmFsaWRhdGluZyB0aGUgYGFjdGl2ZV9tZW1fYnBgIHZhbHVlLCBtYWtpbmcgc3VyZSBpdCYjMzk7cyBub3QgZ3JlYXRlciB0aGFuIDEwMDAwLiBSZXR1cm5pbmcgYC1FSU5WQUxgIGlmIGl0IGlzLiBUaGF04oCZcyBpbnRlcmVzdGluZy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2h5IHRoaXMgbGltaXQgaXMgYmVpbmcgaW50cm9kdWNlZC4gSXMgdGhlcmUgYW4gaXNzdWUgd2hlcmUgYSBsYXJnZSBgYWN0aXZlX21lbV9icGAgY2F1c2VzIHNvbWUgc29ydCBvZiBvdmVyZmxvdyBvciBpbmNvcnJlY3QgY2FsY3VsYXRpb24gZG93biB0aGUgbGluZT8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIG5ldyBjb25zdHJhaW50IHdpdGhpbiB0aGUgYnJvYWRlciBEQU1PTiBMUlUgc29ydCBpbml0aWFsaXphdGlvbiBmbG93LiBJIG5lZWQgdG8gaW52ZXN0aWdhdGUgd2hlcmUgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYW5kIGhvdyBpdCYjMzk7cyB1c2VkLgoKTm93LCBsZXQmIzM5O3MgbW92ZSBvbnRvIGBzYW1wbGVzL2RhbW9uL210aWVyLmNgLiBIZXJlLCBpbiB0aGUgYGRhbW9uX3NhbXBsZV9tdGllcl9idWlsZF9jdHhgIGZ1bmN0aW9uLCB0aGVyZSYjMzk7cyBhIGNoZWNrIHRoYXQgZW5zdXJlcyBgbm9kZTBfbWVtX3VzZWRfYnBgIGFuZCBgbm9kZTBfbWVtX2ZyZWVfYnBgIGFyZSBub3QgemVyby4gSWYgdGhleSBhcmUsIGl0IGp1bXBzIHRvIGBmcmVlX291dGAuIFNvLCB0aGUgdGFyZ2V0IHZhbHVlcyBmb3IgcXVvdGFzIG5lZWQgdG8gYmUgbm9uLXplcm8gdG8gYXZvaWQgYSBkaXZpc2lvbiBieSB6ZXJvIGVycm9yIGluIGBkYW1vc19xdW90YV9zdG9yZSgpYC4gVGhhdCYjMzk7cyBhIGNsYXNzaWMgYnVnLiBNYWtlcyBzZW5zZSwgYW5kIGl0JiMzOTtzIGEgZ29vZCBkZWZlbnNpdmUgcHJvZ3JhbW1pbmcgbWVhc3VyZS4gTm93IEkgbmVlZCB0byBpbnZlc3RpZ2F0ZSBpZiB0aGlzIGZ1bmN0aW9uIGlzIGFsd2F5cyBjb3JyZWN0bHkgY29uZmlndXJlZCB0byBwcmV2ZW50IGlzc3VlcyBmcm9tIGV2ZXIgb2NjdXJpbmcuCgpPdmVyYWxsLCBpdCBsb29rcyBsaWtlIHRoZXNlIGNoYW5nZXMgYXJlIGFpbWVkIGF0IGltcHJvdmluZyB0aGUgcm9idXN0bmVzcyBvZiBEQU1PTiYjMzk7cyBxdW90YSBtYW5hZ2VtZW50LiBPbmUgY2hhbmdlIGlzIGEgc2ltcGxlIGNoZWNrIHRvIHByZXZlbnQgZGl2aXNpb24gYnkgemVybzsgdGhlIG90aGVyIHJlcXVpcmVzIGFkZGl0aW9uYWwgaW52ZXN0aWdhdGlvbiB0byBkZXRlcm1pbmUgd2h5IGEgcGFydGljdWxhciB1cHBlciBib3VuZCBvbiBhIG1lbW9yeSB2YWx1ZSBpcyByZXF1aXJlZC4gQm90aCBzZWVtIHRvIGJlIGFkZHJlc3NpbmcgcG90ZW50aWFsIG51bWVyaWNhbCBpc3N1ZXMgb3IgY29uZmlndXJhdGlvbi1yZWxhdGVkIHByb2JsZW1zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE4OjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RhbW9uX2xydV9zb3J0X2FkZF9xdW90YV9nb2FscyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9kYW1vbi9scnVfc29ydC5jPTIyMD1zdGF0aWMgc3RydWN0IGRhbW9zICpkYW1vbl9scnVfc29ydF9uZXdfY29sZF9zY2hlbWUodW5zaWduZWQgaW50IGNvbGRfdGhyZXMpXG4tLVxubW0vZGFtb24vbHJ1X3NvcnQuYy0yMjgtXG5tbS9kYW1vbi9scnVfc29ydC5jOjIyOTpzdGF0aWMgaW50IGRhbW9uX2xydV9zb3J0X2FkZF9xdW90YV9nb2FscyhzdHJ1Y3QgZGFtb3MgKmhvdF9zY2hlbWUsXG5tbS9kYW1vbi9scnVfc29ydC5jLTIzMC1cdFx0c3RydWN0IGRhbW9zICpjb2xkX3NjaGVtZSlcbi0tXG5tbS9kYW1vbi9scnVfc29ydC5jPTI3Mz1zdGF0aWMgaW50IGRhbW9uX2xydV9zb3J0X2FwcGx5X3BhcmFtZXRlcnModm9pZClcbi0tXG5tbS9kYW1vbi9scnVfc29ydC5jLTMyMy1cbm1tL2RhbW9uL2xydV9zb3J0LmM6MzI0Olx0ZXJyID0gZGFtb25fbHJ1X3NvcnRfYWRkX3F1b3RhX2dvYWxzKGhvdF9zY2hlbWUsIGNvbGRfc2NoZW1lKTtcbm1tL2RhbW9uL2xydV9zb3J0LmMtMzI1LVx0aWYgKGVycilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxODoxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTAzCgkJCQkJCQlvdXRwdXQ6IDI1CgkJCQkJCQl0aG91Z2h0czogMzYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzczoKCioqRGl2aW5nIGludG8gYGRhbW9uX2xydV9zb3J0X2FwcGx5X3BhcmFtZXRlcnNgKioKCk9rYXksIHNvIEkmIzM5O20gZm9jdXNpbmcgb24gYGRhbW9uX2xydV9zb3J0X2FwcGx5X3BhcmFtZXRlcnNgLiBUaGUgZnVuY3Rpb24gbmFtZSBpdHNlbGYgc3VnZ2VzdHMgaXQmIzM5O3MgaW52b2x2ZWQgaW4gYXBwbHlpbmcgcGFyYW1ldGVycywgc3BlY2lmaWNhbGx5IHJlbGF0ZWQgdG8gdGhlIExSVSBzb3J0aW5nIHdpdGhpbiBEQU1PTi4gTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgY2FsbCBzaXRlcy4gTXkgZ3V0IGZlZWxpbmcgdGVsbHMgbWUgaXQmIzM5O3MgbGlrZWx5IGNhbGxlZCBmcm9tIGBkYW1vbl9scnVfc29ydF90dXJub25gIG9yIHNvbWV0aGluZyBhbmFsb2dvdXMuIFRoYXQgc2VlbXMgbGlrZSB0aGUgbW9zdCBsb2dpY2FsIGVudHJ5IHBvaW50IGZvciBhcHBseWluZyB0aGVzZSBzb3J0IHBhcmFtZXRlcnMsIHJpZ2h0PyBJdCBwcm9iYWJseSBoYXBwZW5zIHdoZW4gdGhlIExSVSBzb3J0aW5nIG1lY2hhbmlzbSBpcyBhY3RpdmF0ZWQuIFNvLCB0aW1lIHRvIHZlcmlmeS4gTGV0JiMzOTtzIGRpZyBpbnRvIHRoZSBjb2RlIGFuZCBjb25maXJtIHRob3NlIHN1c3BpY2lvbnMgYW5kIHRyYWNlIHRoZSBjYWxsIGNoYWluLiBObyBzZW5zZSBpbiBtYWtpbmcgYXNzdW1wdGlvbnMuIExldCYjMzk7cyBnZXQgdGhlIGRldGFpbHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTg6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGFtb25fbHJ1X3NvcnRfYXBwbHlfcGFyYW1ldGVycyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9kYW1vbi9scnVfc29ydC5jPTI1MT1zdGF0aWMgaW50IGRhbW9uX2xydV9zb3J0X2FkZF9maWx0ZXJzKHN0cnVjdCBkYW1vcyAqaG90X3NjaGVtZSxcbi0tXG5tbS9kYW1vbi9scnVfc29ydC5jLTI3Mi1cbm1tL2RhbW9uL2xydV9zb3J0LmM6MjczOnN0YXRpYyBpbnQgZGFtb25fbHJ1X3NvcnRfYXBwbHlfcGFyYW1ldGVycyh2b2lkKVxubW0vZGFtb24vbHJ1X3NvcnQuYy0yNzQte1xuLS1cbm1tL2RhbW9uL2xydV9zb3J0LmM9MzQ0PXN0YXRpYyBpbnQgZGFtb25fbHJ1X3NvcnRfY29tbWl0X2lucHV0c19mbih2b2lkICphcmcpXG5tbS9kYW1vbi9scnVfc29ydC5jLTM0NS17XG5tbS9kYW1vbi9scnVfc29ydC5jOjM0NjpcdHJldHVybiBkYW1vbl9scnVfc29ydF9hcHBseV9wYXJhbWV0ZXJzKCk7XG5tbS9kYW1vbi9scnVfc29ydC5jLTM0Ny19XG4tLVxubW0vZGFtb24vbHJ1X3NvcnQuYz00MTA9c3RhdGljIGludCBkYW1vbl9scnVfc29ydF90dXJuKGJvb2wgb24pXG4tLVxubW0vZGFtb24vbHJ1X3NvcnQuYy00MTgtXG5tbS9kYW1vbi9scnVfc29ydC5jOjQxOTpcdGVyciA9IGRhbW9uX2xydV9zb3J0X2FwcGx5X3BhcmFtZXRlcnMoKTtcbm1tL2RhbW9uL2xydV9zb3J0LmMtNDIwLVx0aWYgKGVycilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxODoxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MDcxCgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBteXNlbGY6CgoqKkludmVzdGlnYXRpbmcgdGhlIENvbmZpZ3VyYXRpb24gZm9yIGBtbS9kYW1vbi9scnVfc29ydC5jYCoqCgpPa2F5LCBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IEtjb25maWcgb3B0aW9ucyBlbmFibGUgdGhlIGNvbXBpbGF0aW9uIG9mIGBtbS9kYW1vbi9scnVfc29ydC5jYC4gVGhpcyBpcyBhIHByZXR0eSBzdHJhaWdodGZvcndhcmQgZGVidWdnaW5nIHN0ZXAsIGJ1dCBuZWNlc3Nhcnkgbm9uZXRoZWxlc3MuIFNpbmNlIHRoaXMgaXMgbGlrZWx5IHJlbGF0ZWQgdG8gdGhlIERBTU9OIChEYXRhIEFjY2VzcyBNT05pdG9yKSBzdWJzeXN0ZW0sIEkmIzM5O2xsIHN0YXJ0IGJ5IHBva2luZyBhcm91bmQgdGhlIHJlbGV2YW50IEtjb25maWcgZmlsZXMuIEkmIzM5O2xsIG5lZWQgdG8gcmVtZW1iZXIgd2hlcmUgREFNT04mIzM5O3MgY29uZmlndXJhdGlvbiBpcyBnZW5lcmFsbHkgbG9jYXRlZCB3aXRoaW4gdGhlIGtlcm5lbCB0cmVlLiBDaGFuY2VzIGFyZSBpdCYjMzk7cyB1bmRlciBgbW1gIG9yIHBlcmhhcHMgYSBzdWJkaXJlY3RvcnkuIEZyb20gdGhlcmUsIEkmIzM5O2xsIGhhdmUgdG8gZWl0aGVyOiAoYSkgZ3JlcCBmb3IgdGhlIGZpbGUgbmFtZSBkaXJlY3RseSB0byBmaW5kIHRoZSBlbmFibGluZyBjb25maWcsIG9yIChiKSB0cmFjZSB0aHJvdWdoIHJlbGF0ZWQgY29uZmlndXJhdGlvbnMsIGxvb2tpbmcgZm9yIGRlcGVuZGVuY2llcyBhbmQgY29uZGl0aW9uYWxzLiBFaXRoZXIgbWV0aG9kIHdpbGwgbGVhZCBtZSB0byB0aGUgYW5zd2VyLCBhc3N1bWluZyB0aGUgbW9kdWxlIGhhcyBwcm9wZXIgS2NvbmZpZyBzdXBwb3J0LiBJIGFsc28gbmVlZCB0byBiZSBtaW5kZnVsIG9mIGFueSBpbnRlcm1lZGlhdGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHRoYXQgbWlnaHQgYmUgaW4gcGxheS4gSSYjMzk7bGwgbWFrZSBzdXJlIHRvIG5vdGUgYWxsIHJlbGV2YW50IG9wdGlvbnMsIGluIGNhc2UgdGhlcmUgYXJlIGZ1cnRoZXIgZGVwZW5kZW5jaWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE4OjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2xydV9zb3J0Lm8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vZGFtb24vTWFrZWZpbGU9Nz1vYmotJChDT05GSUdfREFNT05fUkVDTEFJTSlcdCYjNDM7PSBtb2R1bGVzLWNvbW1vbi5vIHJlY2xhaW0ub1xubW0vZGFtb24vTWFrZWZpbGU6ODpvYmotJChDT05GSUdfREFNT05fTFJVX1NPUlQpXHQmIzQzOz0gbW9kdWxlcy1jb21tb24ubyBscnVfc29ydC5vXG5tbS9kYW1vbi9NYWtlZmlsZS05LW9iai0kKENPTkZJR19EQU1PTl9TVEFUKVx0JiM0Mzs9IG1vZHVsZXMtY29tbW9uLm8gc3RhdC5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTg6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDQ1NQoJCQkJCQkJb3V0cHV0OiAxOAoJCQkJCQkJdGhvdWdodHM6IDMxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246CgoqKkFuYWx5emluZyBEQU1PTiBhbmQgTFJVIFNvcnRpbmcqKgoKUmlnaHQsIHNvIGBDT05GSUdfREFNT05fTFJVX1NPUlRgIGlzIGVzc2VudGlhbCwgdGhhdCBtdWNoIGlzIGNsZWFyIGZyb20gdGhlIGNvbnRleHQuIExldCBtZSBtYWtlIHN1cmUgbXkgdW5kZXJzdGFuZGluZyBvZiB0aGlzIGRlcGVuZGVuY3kgaXMgYWNjdXJhdGUuIFRvIGdldCBhIHByYWN0aWNhbCBmZWVsIGZvciBob3cgaXQmIzM5O3MgdXNlZCwgSSYjMzk7bSBnb2luZyB0byB0YWtlIGEgbG9vayBhdCBgc2FtcGxlcy9kYW1vbi9tdGllci5jYC4gVGhhdCYjMzk7cyB1c3VhbGx5IGEgZ29vZCBwbGFjZSB0byBzdGFydCwgYXMgaXQgZ2l2ZXMgYSB3b3JraW5nIGV4YW1wbGUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgaW1wbGVtZW50YXRpb24gaW4gb3JkZXIgdG8gYXBwbHkgaXQgdG8gYSBuZXcgcHJvamVjdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTg6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXRpZXIubyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtzYW1wbGVzL2RhbW9uL01ha2VmaWxlPTQ9b2JqLSQoQ09ORklHX1NBTVBMRV9EQU1PTl9QUkNMKSAmIzQzOz0gcHJjbC5vXG5zYW1wbGVzL2RhbW9uL01ha2VmaWxlOjU6b2JqLSQoQ09ORklHX1NBTVBMRV9EQU1PTl9NVElFUikgJiM0Mzs9IG10aWVyLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTg6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDcwMgoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDExMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGlzIHRlY2huaWNhbCB0aG91Z2h0IHByb2Nlc3MsIGZyb20gYW4gZXhwZXJ0JiMzOTtzIHBlcnNwZWN0aXZlOgoKKipJbnZlc3RpZ2F0aW5nIERBTU9OJiMzOTtzIFRpZXJpbmcgSW1wbGVtZW50YXRpb24qKgoKQWxyaWdodCwgdGhlIGluaXRpYWwgY2x1ZSBpcyBgQ09ORklHX1NBTVBMRV9EQU1PTl9NVElFUmAuIEl0JiMzOTtzIGEgY29uZmlndXJhdGlvbiBvcHRpb24sIGFuZCBJIGtub3cgZnJvbSBleHBlcmllbmNlIHRoYXQgdGhlc2UgYXJlIGNydWNpYWwuIEhvd2V2ZXIsIHRoZSBzdWJzZXF1ZW50IG1lbnRpb24gb2YgYHNhbXBsZXMvZGFtb24vbXRpZXIuY2AgaW1tZWRpYXRlbHkgY2xhcmlmaWVzIHRoYXQgd2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgYSAqc2FtcGxlKiBtb2R1bGUuIE9rYXksIHRoYXQmIzM5O3MgaW1wb3J0YW50IGNvbnRleHQuIEl0JiMzOTtzIGlsbHVzdHJhdGl2ZSwgYnV0IGxpa2VseSAqbm90KiB0aGUgY29yZSBmdW5jdGlvbmFsaXR5IEkmIzM5O20gYWZ0ZXIuCgpUaGUgcmVhbCBtZWF0IG9mIHRoaXMgc2VlbXMgdG8gYmUgaW4gYG1tL2RhbW9uL2xydV9zb3J0LmNgLiBBaCwgYSBrZXJuZWwgbW9kdWxlLCBsaWtlbHkgYSBjb3JlIGZlYXR1cmUsIHJlbGF0ZWQgdG8gREFNT04mIzM5O3MgTFJVLWJhc2VkIHNvcnRpbmcuIE5vdywgbXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgd2hldGhlciB0aGlzIGZ1bmN0aW9uYWxpdHksIHNwZWNpZmljYWxseSBgZGFtb25fbHJ1X3NvcnRfYXBwbHlfcGFyYW1ldGVyc2AsIGlzIGRpcmVjdGx5IGFjY2Vzc2libGUgZnJvbSB1c2Vyc3BhY2UuIFRoYXQmIzM5O3MgdXN1YWxseSB0aGUgY3J1eCBvZiB0aGVzZSBkZXNpZ25zIOKAkyB0aGUgYWJpbGl0eSB0byBjb250cm9sIGFuZCB0dW5lIGJlaGF2aW9yIGZyb20gYSBoaWdoZXIgbGV2ZWwgaXMga2V5LgoKTXkgZm9jdXMgbmFycm93cyB0byB0aGUgYGRhbW9uX2xydV9zb3J0X3R1cm5gIGZ1bmN0aW9uLCB3aGljaCBpcywgaWYgSSByZWNhbGwsIGlzIHRvZ2dsZWQgdGhyb3VnaCBgZGFtb25fbHJ1X3NvcnRfZW5hYmxlZF9zdG9yZWAgb3Igc29tZXRoaW5nIHNpbWlsYXIuIFRoaXMgcG9pbnRzIHRvIHRoZSBlbmFibGluZyBtZWNoYW5pc20sIGFuZCBsaWtlbHkgdGhlIGNvbnRyb2wgcG9pbnQgaW4gdXNlcnNwYWNlLiBHb29kLiBUaGlzIGlzIHRoZSBwYXRoIHRvIGludmVzdGlnYXRlIHRvIHVuZGVyc3RhbmQgaWYgdGhlcmUmIzM5O3MgYW55IHVzZXIgY29udHJvbCBvbiB0aGlzIExSVSBzb3J0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxODoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkYW1vbl9scnVfc29ydF90dXJuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL2RhbW9uL2xydV9zb3J0LmM9NDA1PXN0YXRpYyBzdHJ1Y3QgZGFtb25fY2FsbF9jb250cm9sIGNhbGxfY29udHJvbCA9IHtcbi0tXG5tbS9kYW1vbi9scnVfc29ydC5jLTQwOS1cbm1tL2RhbW9uL2xydV9zb3J0LmM6NDEwOnN0YXRpYyBpbnQgZGFtb25fbHJ1X3NvcnRfdHVybihib29sIG9uKVxubW0vZGFtb24vbHJ1X3NvcnQuYy00MTEte1xuLS1cbm1tL2RhbW9uL2xydV9zb3J0LmM9NDYwPXN0YXRpYyBpbnQgZGFtb25fbHJ1X3NvcnRfZW5hYmxlZF9zdG9yZShjb25zdCBjaGFyICp2YWwsXG4tLVxubW0vZGFtb24vbHJ1X3NvcnQuYy00NzktXG5tbS9kYW1vbi9scnVfc29ydC5jOjQ4MDpcdHJldHVybiBkYW1vbl9scnVfc29ydF90dXJuKGVuYWJsZWQpO1xubW0vZGFtb24vbHJ1X3NvcnQuYy00ODEtfVxuLS1cbm1tL2RhbW9uL2xydV9zb3J0LmM9NTM0PXN0YXRpYyBpbnQgX19pbml0IGRhbW9uX2xydV9zb3J0X2luaXQodm9pZClcbi0tXG5tbS9kYW1vbi9scnVfc29ydC5jLTU0OS1cdGlmIChlbmFibGVkKVxubW0vZGFtb24vbHJ1X3NvcnQuYzo1NTA6XHRcdGVyciA9IGRhbW9uX2xydV9zb3J0X3R1cm4odHJ1ZSk7XG5tbS9kYW1vbi9scnVfc29ydC5jLTU1MS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTg6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTQ3MQoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDYzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3Npbmc6CgoqKkFuYWx5emluZyBEQU1PTiBMUlUgU29ydCBGdW5jdGlvbmFsaXR5KioKCkFscmlnaHQsIHNvIGBkYW1vbl9scnVfc29ydF9lbmFibGVkX3N0b3JlYCBpcyBkZWZpbml0ZWx5IGEgc3lzZnMgc3RvcmUgZnVuY3Rpb24sIEkgYWxyZWFkeSBrbmV3IHRoYXQuIFRoZSBrZXkgaGVyZSBpcyBmaWd1cmluZyBvdXQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSByZXN0IG9mIHRoZSBEQU1PTiBMUlUgc29ydGluZyBtZWNoYW5pc20uIEkmIzM5O20gbm90aW5nIHRoYXQgYGRhbW9uX2xydV9zb3J0X2NvbW1pdF9pbnB1dHNfZm5gIGlzIGFsc28gZGlyZWN0bHkgcmVhY2hhYmxlIGZyb20gdGhhdCBwb2ludCwgd2hpY2ggaXMgaW1wb3J0YW50LiBOb3csIHRvIHVuZGVyc3RhbmQgdGhlIGZsb3cgYW5kIGltcGFjdCBvZiB0aGlzIGZ1bmN0aW9uYWxpdHksIEkgbmVlZCB0byBmb2N1cyBvbiBob3cgYGRhbW9uX2xydV9zb3J0X2NvbW1pdF9pbnB1dHNfZm5gIG9wZXJhdGVzLiBMZXQmIzM5O3MgZGVsdmUgaW50byB0aGF0IGZ1bmN0aW9uIGFuZCBzZWUgd2hhdCBpdCYjMzk7cyBkb2luZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTg6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGFtb25fbHJ1X3NvcnRfY29tbWl0X2lucHV0c19mbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9kYW1vbi9scnVfc29ydC5jPTI3Mz1zdGF0aWMgaW50IGRhbW9uX2xydV9zb3J0X2FwcGx5X3BhcmFtZXRlcnModm9pZClcbi0tXG5tbS9kYW1vbi9scnVfc29ydC5jLTM0My1cbm1tL2RhbW9uL2xydV9zb3J0LmM6MzQ0OnN0YXRpYyBpbnQgZGFtb25fbHJ1X3NvcnRfY29tbWl0X2lucHV0c19mbih2b2lkICphcmcpXG5tbS9kYW1vbi9scnVfc29ydC5jLTM0NS17XG4tLVxubW0vZGFtb24vbHJ1X3NvcnQuYz0zNDk9c3RhdGljIGludCBkYW1vbl9scnVfc29ydF9jb21taXRfaW5wdXRzX3N0b3JlKGNvbnN0IGNoYXIgKnZhbCxcbi0tXG5tbS9kYW1vbi9scnVfc29ydC5jLTM1NC1cdHN0cnVjdCBkYW1vbl9jYWxsX2NvbnRyb2wgY29udHJvbCA9IHtcbm1tL2RhbW9uL2xydV9zb3J0LmM6MzU1Olx0XHQuZm4gPSBkYW1vbl9scnVfc29ydF9jb21taXRfaW5wdXRzX2ZuLFxubW0vZGFtb24vbHJ1X3NvcnQuYy0zNTYtXHR9O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxODoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1OTY2CgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogOTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBgZGFtb25fbHJ1X3NvcnRfYWRkX3F1b3RhX2dvYWxzYCB3aXRoIFN5c2ZzIGFuZCBJbnB1dCBWYWxpZGF0aW9uKioKCk9rYXksIHNvIEkmIzM5O3ZlIGJlZW4gbG9va2luZyBhdCBob3cgdG8gZnV6eiB0aGUgYGRhbW9uX2xydV9zb3J0X2FkZF9xdW90YV9nb2Fsc2AgZnVuY3Rpb24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB0YXJnZXQgaXQgdGhyb3VnaCBzeXNmcywgd2hpY2ggc2VlbXMgbGlrZSBhIHByb21pc2luZyBlbnRyeSBwb2ludC4gVGhlIGludGVyZXN0aW5nIHBhcnQgaXMgdGhhdCB0aGUgcGF0Y2ggaW50cm9kdWNlcyBhIGNydWNpYWwgaW5wdXQgdmFsaWRhdGlvbiBzdGVwLiBJdCBub3cgY2hlY2tzIHRoZSBgYWN0aXZlX21lbV9icGAgdmFsdWUsIGVuc3VyaW5nIGl0IGRvZXNuJiMzOTt0IGV4Y2VlZCAxMDAwMC4gSWYgaXQgZG9lcywgYSBzdHJhaWdodGZvcndhcmQgYC1FSU5WQUxgIGlzIHJldHVybmVkLgoKTXkgbmV4dCBzdGVwIGlzIHRvIGRpZyBpbnRvIHRoZSBjb2RlIGl0c2VsZiwgc3BlY2lmaWNhbGx5IGBtbS9kYW1vbi9scnVfc29ydC5jYCwgdG8gcGlucG9pbnQgd2hlcmUgdGhpcyBgYWN0aXZlX21lbV9icGAgY2hlY2sgaXMgYWN0dWFsbHkgaW1wbGVtZW50ZWQgYW5kIGhvdyBpdCBpbXBhY3RzIHRoZSBvdmVyYWxsIGZsb3cgb2YgdGhlIGZ1bmN0aW9uLiBVbmRlcnN0YW5kaW5nIHRoZSBwcmVjaXNlIGxvY2F0aW9uIGFuZCBpdHMgY29udGV4dCBpcyBrZXkgdG8gY3JhZnRpbmcgZWZmZWN0aXZlIGZ1enppbmcgaW5wdXRzLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IHZhbHVlcyBjYW4gZ2V0IG1lIHBhc3QgdGhlIHZhbGlkYXRpb24gYW5kIHdoYXQgc3BlY2lmaWMgc2NlbmFyaW9zIG1pZ2h0IGxlYWQgdG8gaW50ZXJlc3RpbmcgYmVoYXZpb3Igd2l0aGluIHRoZSBmdW5jdGlvbiYjMzk7cyBjb3JlIGxvZ2ljLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxODoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthY3RpdmVfbWVtX2JwJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O0RvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvbW0vZGFtb24vbHJ1X3NvcnQucnN0PTg0PXZpb2xhdGUgdGhpcyBydWxlLCB0aGUga2VybmVsIG1heSBleGhpYml0IHVuZGVmaW5lZCBiZWhhdmlvci5cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvbW0vZGFtb24vbHJ1X3NvcnQucnN0LTg1LVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9tbS9kYW1vbi9scnVfc29ydC5yc3Q6ODY6YWN0aXZlX21lbV9icFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9tbS9kYW1vbi9scnVfc29ydC5yc3QtODctLS0tLS0tLS0tLS0tLVxuLS1cbkRvY3VtZW50YXRpb24vbW0vZGFtb24vZGVzaWduLnJzdD02OTE9bWVjaGFuaXNtIHRyaWVzIHRvIG1ha2UgYGBjdXJyZW50X3ZhbHVlYGAgb2YgYGB0YXJnZXRfbWV0cmljYGAgYmUgc2FtZSB0b1xuLS1cbkRvY3VtZW50YXRpb24vbW0vZGFtb24vZGVzaWduLnJzdC03MDktICBzcGVjaWZpYyBOVU1BIG5vZGUsIGluIGJwICgxLzEwLDAwMCkuXG5Eb2N1bWVudGF0aW9uL21tL2RhbW9uL2Rlc2lnbi5yc3Q6NzEwOi0gYGBhY3RpdmVfbWVtX2JwYGA6IEFjdGl2ZSB0byBhY3RpdmUgJiM0MzsgaW5hY3RpdmUgKExSVSkgbWVtb3J5IHNpemUgcmF0aW8gaW4gYnBcbkRvY3VtZW50YXRpb24vbW0vZGFtb24vZGVzaWduLnJzdC03MTEtICAoMS8xMCwwMDApLlxuRG9jdW1lbnRhdGlvbi9tbS9kYW1vbi9kZXNpZ24ucnN0OjcxMjotIGBgaW5hY3RpdmVfbWVtX2JwYGA6IEluYWN0aXZlIHRvIGFjdGl2ZSAmIzQzOyBpbmFjdGl2ZSAoTFJVKSBtZW1vcnkgc2l6ZSByYXRpbyBpblxuRG9jdW1lbnRhdGlvbi9tbS9kYW1vbi9kZXNpZ24ucnN0LTcxMy0gIGJwICgxLzEwLDAwMCkuXG4tLVxubW0vZGFtb24vY29yZS5jPTI5ODU9c3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb3NfZ2V0X25vZGVfZWxpZ2libGVfbWVtX2JwKHN0cnVjdCBkYW1vbl9jdHggKmMsXG4tLVxubW0vZGFtb24vY29yZS5jLTI5OTQtICovXG5tbS9kYW1vbi9jb3JlLmM6Mjk5NTpzdGF0aWMgdW5zaWduZWQgaW50IGRhbW9zX2dldF9pbl9hY3RpdmVfbWVtX2JwKGJvb2wgYWN0aXZlX3JhdGlvKVxubW0vZGFtb24vY29yZS5jLTI5OTYte1xuLS1cbm1tL2RhbW9uL2NvcmUuYz0zMDEwPXN0YXRpYyB2b2lkIGRhbW9zX3NldF9xdW90YV9nb2FsX2N1cnJlbnRfdmFsdWUoc3RydWN0IGRhbW9uX2N0eCAqYyxcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMzAzMy1cdGNhc2UgREFNT1NfUVVPVEFfSU5BQ1RJVkVfTUVNX0JQOlxubW0vZGFtb24vY29yZS5jOjMwMzQ6XHRcdGdvYWwtXHUwMDNlY3VycmVudF92YWx1ZSA9IGRhbW9zX2dldF9pbl9hY3RpdmVfbWVtX2JwKFxubW0vZGFtb24vY29yZS5jLTMwMzUtXHRcdFx0XHRnb2FsLVx1MDAzZW1ldHJpYyA9PSBEQU1PU19RVU9UQV9BQ1RJVkVfTUVNX0JQKTtcbi0tXG5tbS9kYW1vbi9scnVfc29ydC5jPTM5PXN0YXRpYyBib29sIGNvbW1pdF9pbnB1dHMgX19yZWFkX21vc3RseTtcbi0tXG5tbS9kYW1vbi9scnVfc29ydC5jLTUxLSAqL1xubW0vZGFtb24vbHJ1X3NvcnQuYzo1MjpzdGF0aWMgdW5zaWduZWQgbG9uZyBhY3RpdmVfbWVtX2JwIF9fcmVhZF9tb3N0bHk7XG5tbS9kYW1vbi9scnVfc29ydC5jOjUzOm1vZHVsZV9wYXJhbShhY3RpdmVfbWVtX2JwLCB1bG9uZywgMDYwMCk7XG5tbS9kYW1vbi9scnVfc29ydC5jLTU0LVxuLS1cbm1tL2RhbW9uL2xydV9zb3J0LmM9MjI5PXN0YXRpYyBpbnQgZGFtb25fbHJ1X3NvcnRfYWRkX3F1b3RhX2dvYWxzKHN0cnVjdCBkYW1vcyAqaG90X3NjaGVtZSxcbi0tXG5tbS9kYW1vbi9scnVfc29ydC5jLTIzMy1cbm1tL2RhbW9uL2xydV9zb3J0LmM6MjM0Olx0aWYgKCFhY3RpdmVfbWVtX2JwKVxubW0vZGFtb24vbHJ1X3NvcnQuYy0yMzUtXHRcdHJldHVybiAwO1xubW0vZGFtb24vbHJ1X3NvcnQuYzoyMzY6XHRpZiAoMTAwMDAgXHUwMDNjIGFjdGl2ZV9tZW1fYnApXG5tbS9kYW1vbi9scnVfc29ydC5jLTIzNy1cdFx0cmV0dXJuIC1FSU5WQUw7XG5tbS9kYW1vbi9scnVfc29ydC5jOjIzODpcdGdvYWwgPSBkYW1vc19uZXdfcXVvdGFfZ29hbChEQU1PU19RVU9UQV9BQ1RJVkVfTUVNX0JQLCBhY3RpdmVfbWVtX2JwKTtcbm1tL2RhbW9uL2xydV9zb3J0LmMtMjM5LVx0aWYgKCFnb2FsKVxuLS1cbm1tL2RhbW9uL2xydV9zb3J0LmMtMjQzLVx0Z29hbCA9IGRhbW9zX25ld19xdW90YV9nb2FsKERBTU9TX1FVT1RBX0lOQUNUSVZFX01FTV9CUCxcbm1tL2RhbW9uL2xydV9zb3J0LmM6MjQ0Olx0XHRcdDEwMDAwIC0gYWN0aXZlX21lbV9icCAmIzQzOyAyKTtcbm1tL2RhbW9uL2xydV9zb3J0LmMtMjQ1LVx0aWYgKCFnb2FsKVxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0xMjM1PXN0cnVjdCBkYW1vc19zeXNmc19xZ29hbF9tZXRyaWNfbmFtZSBkYW1vc19zeXNmc19xZ29hbF9tZXRyaWNfbmFtZXNbXSA9IHtcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTI2MS1cdFx0Lm1ldHJpYyA9IERBTU9TX1FVT1RBX0FDVElWRV9NRU1fQlAsXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MTI2MjpcdFx0Lm5hbWUgPSBcJiMzNDthY3RpdmVfbWVtX2JwXCYjMzQ7LFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEyNjMtXHR9LFxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMjY1LVx0XHQubWV0cmljID0gREFNT1NfUVVPVEFfSU5BQ1RJVkVfTUVNX0JQLFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEyNjY6XHRcdC5uYW1lID0gXCYjMzQ7aW5hY3RpdmVfbWVtX2JwXCYjMzQ7LFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEyNjctXHR9LFxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RhbW9uL3N5c2ZzLnNoPTE5Nj10ZXN0X2dvYWwoKVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RhbW9uL3N5c2ZzLnNoLTIwOS1cdGVuc3VyZV93cml0ZV9zdWNjIFwmIzM0OyRmcGF0aFwmIzM0OyBcJiMzNDtub2RlX21lbWNnX2ZyZWVfYnBcJiMzNDsgXCYjMzQ7dmFsaWQgaW5wdXRcJiMzNDtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RhbW9uL3N5c2ZzLnNoOjIxMDpcdGVuc3VyZV93cml0ZV9zdWNjIFwmIzM0OyRmcGF0aFwmIzM0OyBcJiMzNDthY3RpdmVfbWVtX2JwXCYjMzQ7IFwmIzM0O3ZhbGlkIGlucHV0XCYjMzQ7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kYW1vbi9zeXNmcy5zaDoyMTE6XHRlbnN1cmVfd3JpdGVfc3VjYyBcJiMzNDskZnBhdGhcJiMzNDsgXCYjMzQ7aW5hY3RpdmVfbWVtX2JwXCYjMzQ7IFwmIzM0O3ZhbGlkIGlucHV0XCYjMzQ7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kYW1vbi9zeXNmcy5zaC0yMTItXHRlbnN1cmVfd3JpdGVfc3VjYyBcJiMzNDskZnBhdGhcJiMzNDsgXCYjMzQ7bm9kZV9lbGlnaWJsZV9tZW1fYnBcJiMzNDsgXCYjMzQ7dmFsaWQgaW5wdXRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTg6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzc1OAoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDIyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIHRoZSBgYWN0aXZlX21lbV9icGAgUGFyYW1ldGVyIGluIERBTU9OJiMzOTtzIExSVSBTb3J0aW5nKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBtbS9kYW1vbi9scnVfc29ydC5jYCBmaWxlLCBhbmQgSSBzZWUgdGhpcyBgYWN0aXZlX21lbV9icGAgcGFyYW1ldGVyIGRlZmluZWQuICBJdCYjMzk7cyBhIGBtb2R1bGVfcGFyYW1gLCB3aGljaCBpcyBncmVhdCwgbWVhbmluZyBpdCYjMzk7cyBjb25maWd1cmFibGUgYXQgcnVudGltZS4gSSBjYW4gc2V0IGl0IHZpYSBzeXNmcywgc3BlY2lmaWNhbGx5IGF0IGAvc3lzL21vZHVsZS9kYW1vbl9scnVfc29ydC9wYXJhbWV0ZXJzL2FjdGl2ZV9tZW1fYnBgLiBUaGF0JiMzOTtzIGltcG9ydGFudDsgSSBjYW4gdHVuZSB0aGlzIHdpdGhvdXQgcmVjb21waWxpbmcgdGhlIGtlcm5lbC4KCk5vdywgSSYjMzk7bSBhbHNvIGdsYW5jaW5nIGF0IGBzYW1wbGVzL2RhbW9uL210aWVyLmNgLiAgSSBzZWUgb3RoZXIgc2ltaWxhciBtb2R1bGUgcGFyYW1ldGVycyB0aGVyZSwgc3BlY2lmaWNhbGx5IGBub2RlMF9tZW1fdXNlZF9icGAgYW5kIGBub2RlMF9tZW1fZnJlZV9icGAuIEkmIzM5O20gY3VyaW91cyBhYm91dCB0aGUgcmVsYXRpb25zaGlwIG9mIHRob3NlLCBzbyBJJiMzOTtsbCBjaGVjayBgbXRpZXIuY2AgYWdhaW4gZm9yIHVzYWdlcyBvZiBgbm9kZTBfbWVtX3VzZWRfYnBgLiAgVGhpcyBtaWdodCBnaXZlIG1lIHNvbWUgY2x1ZXMgYWJvdXQgaG93IGBhY3RpdmVfbWVtX2JwYCBpcyBhY3R1YWxseSAqdXNlZCogYW5kIGludGVyYWN0ZWQgd2l0aCwgcG9zc2libHkgYnkgb3RoZXIgZXhhbXBsZXMgb2YgREFNT04gdXNhZ2UuIEkgd2FudCB0byBzZWUgaG93IHRoZXNlIHBhcmFtZXRlcnMgYXJlIGxldmVyYWdlZCBpbiBhIHByYWN0aWNhbCBzY2VuYXJpbywgdG8gaGF2ZSBhIGNvbXBsZXRlIHBpY3R1cmUgb2YgdGhlaXIgcm9sZSBhbmQgdXRpbGl0eS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTg6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bm9kZTBfbWVtX3VzZWRfYnAmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7c2FtcGxlcy9kYW1vbi9tdGllci5jPTMwPW1vZHVsZV9wYXJhbShub2RlMV9lbmRfYWRkciwgdWxvbmcsIDA2MDApO1xuc2FtcGxlcy9kYW1vbi9tdGllci5jLTMxLVxuc2FtcGxlcy9kYW1vbi9tdGllci5jOjMyOnN0YXRpYyB1bnNpZ25lZCBsb25nIG5vZGUwX21lbV91c2VkX2JwIF9fcmVhZF9tb3N0bHkgPSA5OTcwO1xuc2FtcGxlcy9kYW1vbi9tdGllci5jOjMzOm1vZHVsZV9wYXJhbShub2RlMF9tZW1fdXNlZF9icCwgdWxvbmcsIDA2MDApO1xuc2FtcGxlcy9kYW1vbi9tdGllci5jLTM0LVxuLS1cbnNhbXBsZXMvZGFtb24vbXRpZXIuYz03Mz1zdGF0aWMgc3RydWN0IGRhbW9uX2N0eCAqZGFtb25fc2FtcGxlX210aWVyX2J1aWxkX2N0eChib29sIHByb21vdGUpXG4tLVxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTE1OS1cdC8qIHplcm8gdGFyZ2V0IHZhbHVlIGNhdXNlcyBkaXZpc2lvbiBieSB6ZXJvIGluIGRhbW9zX3F1b3RhX3N0b3JlKCkgKi9cbnNhbXBsZXMvZGFtb24vbXRpZXIuYzoxNjA6XHRpZiAoIW5vZGUwX21lbV91c2VkX2JwIHx8ICFub2RlMF9tZW1fZnJlZV9icClcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0xNjEtXHRcdGdvdG8gZnJlZV9vdXQ7XG4tLVxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTE2NC1cdFx0XHREQU1PU19RVU9UQV9OT0RFX01FTV9GUkVFX0JQLFxuc2FtcGxlcy9kYW1vbi9tdGllci5jOjE2NTpcdFx0XHRwcm9tb3RlID8gbm9kZTBfbWVtX3VzZWRfYnAgOiBub2RlMF9tZW1fZnJlZV9icCk7XG5zYW1wbGVzL2RhbW9uL210aWVyLmMtMTY2LVx0aWYgKCFxdW90YV9nb2FsKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxODoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NjQ0CgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogMTQxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBEQU1PTiBNb2R1bGUgUGFyYW1ldGVycyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYHNhbXBsZXMvZGFtb24vbXRpZXIuY2AgYW5kIHNwZWNpZmljYWxseSBhdCB0aGVzZSBtb2R1bGUgcGFyYW1ldGVycy4gVGhlIHBhdGNoIGluIHF1ZXN0aW9uIGlzIGFkZGluZyB2YWxpZGF0aW9uIGNoZWNrcyB0byBwcmV2ZW50IG9idmlvdXNseSBiYWQgdmFsdWVzLCBsaWtlIGFueXRoaW5nIG92ZXIgMTAwMDAgb3IgemVyby4gUmlnaHQsIG1ha2VzIHNlbnNlOyB5b3Ugd2FudCB0byBhdm9pZCB0aG9zZSBlZGdlIGNhc2VzLiBOb3csIHRoZSBrZXkgdGhpbmcgaXMgdGhhdCB0aGlzIGlzIGEgKnNhbXBsZSogbW9kdWxlLCB3aGljaCBtZWFucyBpdCYjMzk7cyBub3QgdHlwaWNhbGx5IGVuYWJsZWQgaW4gYSBwcm9kdWN0aW9uIGtlcm5lbC4gQnV0LCBpdCAqY291bGQqIGJlIGVuYWJsZWQgaWYgYENPTkZJR19TQU1QTEVfREFNT05fTVRJRVJgIGlzIHNldCwgYW5kIGl0IG1pZ2h0IGJlIHVzZWQgZHVyaW5nIGZ1enppbmcuCgpOb3csIHdoZXJlIGRvZXMgYG1tL2RhbW9uL2xydV9zb3J0LmNgIGZpdCBpbj8gQWgsIGl0JiMzOTtzIGVuYWJsZWQgYnkgYENPTkZJR19EQU1PTl9MUlVfU09SVGAuIEdvb2QuIExldCBtZSBzaGlmdCBteSBmb2N1cy4gSSB0aGluayBJJiMzOTtsbCBxdWlja2x5IGNoZWNrIHRoZSBLY29uZmlnIGVudHJ5IGZvciBgQ09ORklHX0RBTU9OX0xSVV9TT1JUYCB0byB1bmRlcnN0YW5kIGl0cyBkZXBlbmRlbmNpZXMgYW5kIGFueSBwb3RlbnRpYWwgaW1wYWN0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTg6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIERBTU9OX0xSVV9TT1JUJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL2RhbW9uL0tjb25maWc9ODg9Y29uZmlnIERBTU9OX1JFQ0xBSU1cbi0tXG5tbS9kYW1vbi9LY29uZmlnLTk5LVxubW0vZGFtb24vS2NvbmZpZzoxMDA6Y29uZmlnIERBTU9OX0xSVV9TT1JUXG5tbS9kYW1vbi9LY29uZmlnLTEwMS1cdGJvb2wgXCYjMzQ7QnVpbGQgREFNT04tYmFzZWQgTFJVLWxpc3RzIHNvcnRpbmcgKERBTU9OX0xSVV9TT1JUKVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxODoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MTIwCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkFuYWx5emluZyB0aGUgRGVwZW5kZW5jaWVzKioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIGluY29tcGxldGU7IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSB1bmRlcmx5aW5nIHN0cnVjdHVyZS4gTGV0IG1lIHNlZS4uLiBJIG5lZWQgdG8gc3RhcnQgYnkgdHJhY2luZyB0aGUgZGVwZW5kZW5jaWVzLiBJdCYjMzk7cyBjcnVjaWFsIHRvIGlkZW50aWZ5IHRoZSBpbnRlcmNvbm5lY3RlZCBlbGVtZW50cy4gSSYjMzk7bSB0aGlua2luZywgJiMzNDtXaGF0IGFyZSB0aGUgY29yZSBidWlsZGluZyBibG9ja3M/IFdoYXQgcmVsaWVzIG9uIHdoYXQ/JiMzNDsgV2l0aG91dCBmdWxseSBncmFzcGluZyB0aGUgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIHRoZXNlIGVsZW1lbnRzLCBJIGNhbiYjMzk7dCBhY2N1cmF0ZWx5IGFzc2VzcyB0aGUgbGFyZ2VyIHN5c3RlbS4gSSYjMzk7bSBnb2luZyB0byBkaWcgaW50byB0aGUgcmVsYXRpb25zaGlwcywgdW5kZXJzdGFuZCBob3cgYSBjaGFuZ2UgaW4gb25lIGFyZWEgd2lsbCB0cmlja2xlIHRocm91Z2guIFRoaXMgaXMgdGhlIHN0YXJ0aW5nIHBvaW50LCBvZiBjb3Vyc2UsIGJ1dCBpdCBpcyBjcml0aWNhbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTg6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIERBTU9OX0xSVV9TT1JUJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vZGFtb24vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9kYW1vbi9LY29uZmlnPTg4PWNvbmZpZyBEQU1PTl9SRUNMQUlNXG4tLVxubW0vZGFtb24vS2NvbmZpZy05OS1cbm1tL2RhbW9uL0tjb25maWc6MTAwOmNvbmZpZyBEQU1PTl9MUlVfU09SVFxubW0vZGFtb24vS2NvbmZpZy0xMDEtXHRib29sIFwmIzM0O0J1aWxkIERBTU9OLWJhc2VkIExSVS1saXN0cyBzb3J0aW5nIChEQU1PTl9MUlVfU09SVClcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTg6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTQxNwoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gS2NvbmZpZzogTGluZSAxMDAgYW5kIEJleW9uZCoqCgpPa2F5LCBsZXQmIzM5O3MgemVybyBpbiBvbiBgbW0vZGFtb24vS2NvbmZpZ2AuIEkmIzM5O20gc3BlY2lmaWNhbGx5IHRoaW5raW5nIGFyb3VuZCBsaW5lIDEwMCwgd2hpY2ggcHJvYmFibHkgZGVhbHMgd2l0aCBzb21lIERBTU9OIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gTXkgaW5pdGlhbCBodW5jaCBpcyB0aGF0IGl0JiMzOTtzIGxpa2VseSBkZWZpbmluZyBmZWF0dXJlcyBsaWtlIHByb2ZpbGluZywgdGhlIHR5cGUgb2YgcmVnaW9ucyB0byBtb25pdG9yLCBvciBwZXJoYXBzIGNvbnRyb2wgb3ZlciBzYW1wbGluZyBpbnRlcnZhbHMuIEkgZXhwZWN0IHRvIGZpbmQgc29tZSBpbnRyaWNhdGUgZGVwZW5kZW5jaWVzIHRoZXJlIGFzIHdlbGwsIG1heWJlIGNvbmRpdGlvbmFsIG9uIHRoZSBrZXJuZWwgdmVyc2lvbiBvciBvdGhlciBtZW1vcnkgbWFuYWdlbWVudCBmZWF0dXJlcyBiZWluZyBlbmFibGVkLiBJJiMzOTttIGhvcGluZyB0byBnZXQgYSBjbGVhcmVyIHBpY3R1cmUgb24gaG93IHRoZSBzcGVjaWZpYyBmZWF0dXJlIGlzIGNvbnRyb2xsZWQsIGFuZCBwb3RlbnRpYWxseSB3aGV0aGVyIHRoZXJlJiMzOTtzIHNvbWUgaW50ZXJlc3RpbmcgZGVmYXVsdCBjb25maWd1cmF0aW9ucyB0aGVyZS4gSSYjMzk7bGwgbmVlZCB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBzeW50YXggYW5kIHRoZSB1bmRlcmx5aW5nIG1hY3JvcyB1c2VkIHRvIGdldCB0aGUgZnVsbCBtZWFuaW5nIG9mIHRoZSBsaW5lLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxODoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O21tL2RhbW9uL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA5MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDkwOlx0XHRkZXBlbmRzIG9uIERBTU9OX1BBRERSXG4gIDkxOlx0XHRoZWxwXG4gIDkyOlx0XHQgIFRoaXMgYnVpbGRzIHRoZSBEQU1PTi1iYXNlZCByZWNsYW1hdGlvbiBzdWJzeXN0ZW0uICBJdCBmaW5kcyBwYWdlc1xuICA5MzpcdFx0ICB0aGF0IG5vdCBhY2Nlc3NlZCBmb3IgYSBsb25nIHRpbWUgKGNvbGQpIHVzaW5nIERBTU9OIGFuZCByZWNsYWltXG4gIDk0Olx0XHQgIHRob3NlLlxuICA5NTpcdFxuICA5NjpcdFx0ICBUaGlzIGlzIHN1Z2dlc3RlZCB0byBiZSB1c2VkIGFzIGEgcHJvYWN0aXZlIGFuZCBsaWdodHdlaWdodFxuICA5NzpcdFx0ICByZWNsYW1hdGlvbiB1bmRlciBsaWdodCBtZW1vcnkgcHJlc3N1cmUsIHdoaWxlIHRoZSB0cmFkaXRpb25hbCBwYWdlXG4gIDk4Olx0XHQgIHNjYW5uaW5nLWJhc2VkIHJlY2xhbWF0aW9uIGlzIHVzZWQgZm9yIGhlYXZ5IHByZXNzdXJlLlxuICA5OTpcdFxuIDEwMDpcdGNvbmZpZyBEQU1PTl9MUlVfU09SVFxuIDEwMTpcdFx0Ym9vbCBcJiMzNDtCdWlsZCBEQU1PTi1iYXNlZCBMUlUtbGlzdHMgc29ydGluZyAoREFNT05fTFJVX1NPUlQpXCYjMzQ7XG4gMTAyOlx0XHRkZXBlbmRzIG9uIERBTU9OX1BBRERSXG4gMTAzOlx0XHRoZWxwXG4gMTA0Olx0XHQgIFRoaXMgYnVpbGRzIHRoZSBEQU1PTi1iYXNlZCBMUlUtbGlzdHMgc29ydGluZyBzdWJzeXN0ZW0uICBJdCB0cmllcyB0b1xuIDEwNTpcdFx0ICBwcm90ZWN0IGZyZXF1ZW50bHkgYWNjZXNzZWQgKGhvdCkgcGFnZXMgd2hpbGUgcmFyZWx5IGFjY2Vzc2VkIChjb2xkKVxuIDEwNjpcdFx0ICBwYWdlcyByZWNsYWltZWQgZmlyc3QgdW5kZXIgbWVtb3J5IHByZXNzdXJlLlxuIDEwNzpcdFxuIDEwODpcdGNvbmZpZyBEQU1PTl9TVEFUXG4gMTA5Olx0XHRib29sIFwmIzM0O0J1aWxkIGRhdGEgYWNjZXNzIG1vbml0b3Jpbmcgc3RhdCAoREFNT05fU1RBVClcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTg6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTk2OAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDMxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246CgoqKkludmVzdGlnYXRpbmcgdGhlIERlcGVuZGVuY2llcyBvZiBEQU1PTl9MUlVfU09SVCoqCgpSaWdodCwgc28gYERBTU9OX0xSVV9TT1JUYCByZWxpZXMgb24gYERBTU9OX1BBRERSYCwgZG9lc24mIzM5O3QgaXQ/IFNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCwgYSBjb21tb24gcGF0dGVybiBpbiB0aGlzIGtpbmQgb2YgbWVtb3J5IG1hbmFnZW1lbnQgc2V0dXAuIEJlZm9yZSBJIGdvIGFueSBmdXJ0aGVyLCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIGFuZCB3aGV0aGVyIHRoZXJlIGFyZSBhbnkgcG90ZW50aWFsIHBpdGZhbGxzLiBUaGUgZGVwZW5kZW5jeSBpcyBjbGVhciwgYnV0IEkgc2hvdWxkIHByb2JhYmx5IGNvbmZpcm0gaG93LiBGaXJzdCBzdGVwLCBsZXQmIzM5O3MganVzdCBnbyBhaGVhZCBhbmQgZGl2ZSBpbnRvIGBEQU1PTl9QQUREUmAuIE5lZWQgdG8gdW5kZXJzdGFuZCAqaXRzKiBiZWhhdmlvciB0byB0cnVseSB1bmRlcnN0YW5kIGBEQU1PTl9MUlVfU09SVGAuIFRoaXMgaXMgc3RhbmRhcmQgcHJhY3RpY2UgcmVhbGx5LiBHb3R0YSBjaGVjayB0aGUgZm91bmRhdGlvbnMgYmVmb3JlIGJ1aWxkaW5nIGFueXRoaW5nIHN1YnN0YW50aWFsLiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3Mgd2hhdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTg6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIERBTU9OX1BBRERSJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vZGFtb24vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9kYW1vbi9LY29uZmlnPTM4PWNvbmZpZyBEQU1PTl9WQUREUlxuLS1cbm1tL2RhbW9uL0tjb25maWctNDYtXG5tbS9kYW1vbi9LY29uZmlnOjQ3OmNvbmZpZyBEQU1PTl9QQUREUlxubW0vZGFtb24vS2NvbmZpZy00OC1cdGJvb2wgXCYjMzQ7RGF0YSBhY2Nlc3MgbW9uaXRvcmluZyBvcGVyYXRpb25zIGZvciB0aGUgcGh5c2ljYWwgYWRkcmVzcyBzcGFjZVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxODoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDI4OQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6CgoqKkFuYWx5emluZyB0aGUgS2NvbmZpZyBGaWxlIGZvciBNZW1vcnkgTWFuYWdlbWVudCBDb25maWd1cmF0aW9uKioKCk9rYXksIHRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBuaXR0eS1ncml0dHkuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiBob3cgbWVtb3J5IG1hbmFnZW1lbnQgY29uZmlndXJhdGlvbiBpcyBoYW5kbGVkIGluIHRoaXMgY29kZWJhc2UuIEkmIzM5O20gZ29pbmcgdG8gcHVsbCB1cCBgbW0vZGFtb24vS2NvbmZpZ2AgYW5kIHpvb20gaW4gYXJvdW5kIGxpbmUgNDcuIFRoYXQmIzM5O3MgdXN1YWxseSB3aGVyZSB0aGUgY29yZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIGRlZmluZWQgb3Igd2hlcmUgYSBzcGVjaWZpYyBtb2R1bGUmIzM5O3MgY29uZmlndXJhdGlvbiBzdGFydHMuIEkmIzM5O20gaG9waW5nIHRvIHF1aWNrbHkgdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIGRpZmZlcmVudCBzZXR0aW5ncywgcGVyaGFwcyBpZGVudGlmeSBkZXBlbmRlbmNpZXMsIG9yIHVuY292ZXIgYW55IG5ldyBmZWF0dXJlcyBvciBjaGFuZ2VzIHJlbGF0ZWQgdG8gREFNT04mIzM5O3MgKERhdGEgQWNjZXNzIE1PTml0b3IpIGNvbmZpZ3VyYXRpb24uIExldCYjMzk7cyBzZWUgd2hhdCBpbnRlcmVzdGluZyB0aWRiaXRzIGxpbmUgNDcgaG9sZHMuLi4gSSYjMzk7bSBleHBlY3Rpbmcgc29tZSBzdGFuZGFyZCBLY29uZmlnIHN5bnRheCwgYnV0IEkmIzM5O20ga2VlcGluZyBteSBleWVzIG9wZW4gZm9yIGFueXRoaW5nIG91dCBvZiB0aGUgb3JkaW5hcnkuIEl0JiMzOTtzIHRpbWUgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiB3aGF0JiMzOTtzIGJlaW5nIGNvbnRyb2xsZWQgYW5kIGhvdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTg6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDttbS9kYW1vbi9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICA0MDpcdFx0ZGVwZW5kcyBvbiBEQU1PTiBcdTAwMjZcdTAwMjYgTU1VXG4gIDQxOlx0XHRzZWxlY3QgUEFHRV9JRExFX0ZMQUdcbiAgNDI6XHRcdGRlZmF1bHQgREFNT05cbiAgNDM6XHRcdGhlbHBcbiAgNDQ6XHRcdCAgVGhpcyBidWlsZHMgdGhlIGRlZmF1bHQgZGF0YSBhY2Nlc3MgbW9uaXRvcmluZyBvcGVyYXRpb25zIGZvciBEQU1PTlxuICA0NTpcdFx0ICB0aGF0IHdvcmsgZm9yIHZpcnR1YWwgYWRkcmVzcyBzcGFjZXMuXG4gIDQ2Olx0XG4gIDQ3Olx0Y29uZmlnIERBTU9OX1BBRERSXG4gIDQ4Olx0XHRib29sIFwmIzM0O0RhdGEgYWNjZXNzIG1vbml0b3Jpbmcgb3BlcmF0aW9ucyBmb3IgdGhlIHBoeXNpY2FsIGFkZHJlc3Mgc3BhY2VcJiMzNDtcbiAgNDk6XHRcdGRlcGVuZHMgb24gREFNT04gXHUwMDI2XHUwMDI2IE1NVVxuICA1MDpcdFx0c2VsZWN0IFBBR0VfSURMRV9GTEFHXG4gIDUxOlx0XHRkZWZhdWx0IERBTU9OXG4gIDUyOlx0XHRoZWxwXG4gIDUzOlx0XHQgIFRoaXMgYnVpbGRzIHRoZSBkZWZhdWx0IGRhdGEgYWNjZXNzIG1vbml0b3Jpbmcgb3BlcmF0aW9ucyBmb3IgREFNT05cbiAgNTQ6XHRcdCAgdGhhdCB3b3JrcyBmb3IgdGhlIHBoeXNpY2FsIGFkZHJlc3Mgc3BhY2UuXG4gIDU1Olx0XG4gIDU2Olx0Y29uZmlnIERBTU9OX1ZBRERSX0tVTklUX1RFU1RcbiAgNTc6XHRcdGJvb2wgXCYjMzQ7VGVzdCBmb3IgREFNT04gb3BlcmF0aW9uc1wmIzM0OyBpZiAhS1VOSVRfQUxMX1RFU1RTXG4gIDU4Olx0XHRkZXBlbmRzIG9uIERBTU9OX1ZBRERSIFx1MDAyNlx1MDAyNiBLVU5JVD15XG4gIDU5Olx0XHRkZWZhdWx0IEtVTklUX0FMTF9URVNUU1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxODoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDgxMgoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIHRoZSBzdW1tYXJ5LCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEZXBlbmRlbmN5IEFuYWx5c2lzOiBEQU1PTl9QQUREUioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYERBTU9OX1BBRERSYCBhbmQgaW1tZWRpYXRlbHkgaXQgc3RyaWtlcyBtZSB0aGF0IGl0cyBjb25maWd1cmF0aW9uIGhpbmdlcyBvbiB0aGUgcHJlc2VuY2Ugb2YgYm90aCBgREFNT05gIGFuZCBgTU1VYC4gVGhpcyBpc24mIzM5O3Qgc3VycHJpc2luZywgZ2l2ZW4gdGhlIGFkZHJlc3MtYmFzZWQgbmF0dXJlIEkmIzM5O20gYXNzdW1pbmcgZm9yIGl0cyBwdXJwb3NlLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB2ZXJpZnkgdGhhdCB0aGVzZSBkZXBlbmRlbmNpZXMgYXJlIHByb3Blcmx5IGRlZmluZWQsIGFuZCwgZ2l2ZW4gaXRzIGltcG9ydGFuY2UsIEkmIzM5O2xsIHN0YXJ0IGJ5IGNoZWNraW5nIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYW5kIGNvZGUgcmVsYXRlZCB0byBgREFNT05gIGZpcnN0LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGUgY29uZmlndXJhdGlvbiBhbmQgbG9naWMgYXJlIGNvcnJlY3QgYmVmb3JlIEkgZXZlbiBjb25zaWRlciBgTU1VYCwgYnV0IGl0JiMzOTtzIGNsZWFybHkgcmVsZXZhbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE4OjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWVudWNvbmZpZyBEQU1PTiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL2RhbW9uL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxODoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTAzMAoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEkmIzM5O20gZGVlcCBpbiBteSBkb21haW4gb2YgZXhwZXJ0aXNlOgoKKipDaGVja2luZyB0aGUgYGNvbmZpZyBEQU1PTmAgQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgdGFrZSBhIGxvb2sgYXQgdGhlIGBjb25maWcgREFNT05gLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtPa2F5LCB3aGF0JiMzOTtzIHRoZSBzdGF0ZSBvZiB0aGUgRHluYW1pYyBBZGRyZXNzIE1vbml0b3IgKERBTU9OKSBjb25maWd1cmF0aW9uPyYjMzQ7LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgaXQmIzM5O3MgY3VycmVudGx5IHNldCB1cC4gV2hhdCBwYXJhbWV0ZXJzIGFyZSBhY3RpdmU/IEFyZSB0aGUga2V5IG1vbml0b3JpbmcgZmVhdHVyZXMgZW5hYmxlZD8gU3BlY2lmaWNhbGx5LCBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoaW5ncyBsaWtlIHRoZSBzYW1wbGluZyBpbnRlcnZhbCwgdGhlIHRhcmdldCBzZWxlY3Rpb24gY3JpdGVyaWEsIGFueSBmaWx0ZXJzIGluIHBsYWNlLCBhbmQgd2hhdCBhY3Rpb25zIGFyZSBiZWluZyB0cmlnZ2VyZWQgYmFzZWQgb24gdGhlIG1vbml0b3JpbmcgcmVzdWx0cy4gSXMgREFNT04gYmVoYXZpbmcgYXMgZXhwZWN0ZWQgZ2l2ZW4gdGhlIGN1cnJlbnQgd29ya2xvYWQsIG9yIGRvIEkgbmVlZCB0byBtYWtlIHNvbWUgYWRqdXN0bWVudHM/IEkgd2FudCB0byBtYWtlIHN1cmUgREFNT04gaXMgY29udHJpYnV0aW5nIHRvIHRoZSBpbnRlbmRlZCBiZWhhdmlvciBvZiB0aGUgc3lzdGVtLCB3aGV0aGVyIGl0IGJlIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbiwgcmVzb3VyY2UgYWxsb2NhdGlvbiwgcG93ZXIgc2F2aW5ncywgb3IgZXZlbiBzZWN1cml0eS4gVGltZSB0byBkaWcgaW4gYW5kIHZlcmlmeSEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTg6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIERBTU9OJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vZGFtb24vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9kYW1vbi9LY29uZmlnPTM9bWVudSBcJiMzNDtEYXRhIEFjY2VzcyBNb25pdG9yaW5nXCYjMzQ7XG5tbS9kYW1vbi9LY29uZmlnLTQtXG5tbS9kYW1vbi9LY29uZmlnOjU6Y29uZmlnIERBTU9OXG5tbS9kYW1vbi9LY29uZmlnLTYtXHRib29sIFwmIzM0O0RBTU9OOiBEYXRhIEFjY2VzcyBNb25pdG9yaW5nIEZyYW1ld29ya1wmIzM0O1xuLS1cbm1tL2RhbW9uL0tjb25maWctMTQtXG5tbS9kYW1vbi9LY29uZmlnOjE1OmNvbmZpZyBEQU1PTl9ERUJVR19TQU5JVFlcbm1tL2RhbW9uL0tjb25maWctMTYtXHRib29sIFwmIzM0O0NoZWNrIHNhbml0eSBvZiBEQU1PTiBjb2RlXCYjMzQ7XG4tLVxubW0vZGFtb24vS2NvbmZpZy0yNS1cbm1tL2RhbW9uL0tjb25maWc6MjY6Y29uZmlnIERBTU9OX0tVTklUX1RFU1Rcbm1tL2RhbW9uL0tjb25maWctMjctXHRib29sIFwmIzM0O1Rlc3QgZm9yIGRhbW9uXCYjMzQ7IGlmICFLVU5JVF9BTExfVEVTVFNcbi0tXG5tbS9kYW1vbi9LY29uZmlnLTM3LVxubW0vZGFtb24vS2NvbmZpZzozODpjb25maWcgREFNT05fVkFERFJcbm1tL2RhbW9uL0tjb25maWctMzktXHRib29sIFwmIzM0O0RhdGEgYWNjZXNzIG1vbml0b3Jpbmcgb3BlcmF0aW9ucyBmb3IgdmlydHVhbCBhZGRyZXNzIHNwYWNlc1wmIzM0O1xuLS1cbm1tL2RhbW9uL0tjb25maWctNDYtXG5tbS9kYW1vbi9LY29uZmlnOjQ3OmNvbmZpZyBEQU1PTl9QQUREUlxubW0vZGFtb24vS2NvbmZpZy00OC1cdGJvb2wgXCYjMzQ7RGF0YSBhY2Nlc3MgbW9uaXRvcmluZyBvcGVyYXRpb25zIGZvciB0aGUgcGh5c2ljYWwgYWRkcmVzcyBzcGFjZVwmIzM0O1xuLS1cbm1tL2RhbW9uL0tjb25maWctNTUtXG5tbS9kYW1vbi9LY29uZmlnOjU2OmNvbmZpZyBEQU1PTl9WQUREUl9LVU5JVF9URVNUXG5tbS9kYW1vbi9LY29uZmlnLTU3LVx0Ym9vbCBcJiMzNDtUZXN0IGZvciBEQU1PTiBvcGVyYXRpb25zXCYjMzQ7IGlmICFLVU5JVF9BTExfVEVTVFNcbi0tXG5tbS9kYW1vbi9LY29uZmlnLTY3LVxubW0vZGFtb24vS2NvbmZpZzo2ODpjb25maWcgREFNT05fU1lTRlNcbm1tL2RhbW9uL0tjb25maWctNjktXHRib29sIFwmIzM0O0RBTU9OIHN5c2ZzIGludGVyZmFjZVwmIzM0O1xuLS1cbm1tL2RhbW9uL0tjb25maWctNzUtXG5tbS9kYW1vbi9LY29uZmlnOjc2OmNvbmZpZyBEQU1PTl9TWVNGU19LVU5JVF9URVNUXG5tbS9kYW1vbi9LY29uZmlnLTc3LVx0Ym9vbCBcJiMzNDtUZXN0IGZvciBkYW1vbiBzeXNmcyBpbnRlcmZhY2VcJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xuLS1cbm1tL2RhbW9uL0tjb25maWctODctXG5tbS9kYW1vbi9LY29uZmlnOjg4OmNvbmZpZyBEQU1PTl9SRUNMQUlNXG5tbS9kYW1vbi9LY29uZmlnLTg5LVx0Ym9vbCBcJiMzNDtCdWlsZCBEQU1PTi1iYXNlZCByZWNsYWltIChEQU1PTl9SRUNMQUlNKVwmIzM0O1xuLS1cbm1tL2RhbW9uL0tjb25maWctOTktXG5tbS9kYW1vbi9LY29uZmlnOjEwMDpjb25maWcgREFNT05fTFJVX1NPUlRcbm1tL2RhbW9uL0tjb25maWctMTAxLVx0Ym9vbCBcJiMzNDtCdWlsZCBEQU1PTi1iYXNlZCBMUlUtbGlzdHMgc29ydGluZyAoREFNT05fTFJVX1NPUlQpXCYjMzQ7XG4tLVxubW0vZGFtb24vS2NvbmZpZy0xMDctXG5tbS9kYW1vbi9LY29uZmlnOjEwODpjb25maWcgREFNT05fU1RBVFxubW0vZGFtb24vS2NvbmZpZy0xMDktXHRib29sIFwmIzM0O0J1aWxkIGRhdGEgYWNjZXNzIG1vbml0b3Jpbmcgc3RhdCAoREFNT05fU1RBVClcJiMzNDtcbi0tXG5tbS9kYW1vbi9LY29uZmlnLTExNS1cbm1tL2RhbW9uL0tjb25maWc6MTE2OmNvbmZpZyBEQU1PTl9TVEFUX0VOQUJMRURfREVGQVVMVFxubW0vZGFtb24vS2NvbmZpZy0xMTctXHRib29sIFwmIzM0O0VuYWJsZSBEQU1PTl9TVEFUIGJ5IGRlZmF1bHRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTg6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTIwMTEKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgdXNlcjoKCioqRGl2aW5nIGludG8gS2NvbmZpZzogbW0vZGFtb24qKgoKT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkgYW5kIGRpdmUgaW50byB0aGUgYG1tL2RhbW9uL0tjb25maWdgIGZpbGUuIEkmIzM5O20gc3BlY2lmaWNhbGx5IGludGVyZXN0ZWQgaW4gd2hhdCYjMzk7cyBoYXBwZW5pbmcgYXJvdW5kIGxpbmUgNSDigJMgdGhhdCYjMzk7cyBvZnRlbiB3aGVyZSB0aGUgY29yZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIGRlY2xhcmVkLiBJIGV4cGVjdCBpdCYjMzk7bGwgYmUgdGhlIHN0YXJ0aW5nIHBvaW50IGZvciBEQU1PTiYjMzk7cyBmZWF0dXJlIHNldC4gSSYjMzk7bSBhbnRpY2lwYXRpbmcgdG8gc2VlIHRoZSBmdW5kYW1lbnRhbCBzZXR0aW5ncyBmb3IgZW5hYmxpbmcvZGlzYWJsaW5nIERBTU9OIGFuZCBwb3RlbnRpYWxseSBzb21lIGluaXRpYWwgY29udHJvbCBvcHRpb25zLCBwb3NzaWJseSBpbmNsdWRpbmcgaG93IGl0IGludGVyYWN0cyB3aXRoIG90aGVyIG1lbW9yeSBtYW5hZ2VtZW50IHN1YnN5c3RlbXMuIExldCYjMzk7cyBzZWUgaWYgdGhpcyBsaW5lcyB1cCB3aXRoIG15IGV4aXN0aW5nIG1lbnRhbCBtb2RlbCBvZiB0aGUgREFNT04gY29uZmlndXJhdGlvbi4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgdGhpbmdzIGxpa2Ugd2hldGhlciB0aGV5JiMzOTtyZSB1c2luZyBgbWVudWNvbmZpZ2Agb3IgYGNvbmZpZ2AgZGlyZWN0aXZlcywgY29uZGl0aW9uYWwgZGVwZW5kZW5jaWVzLCBhbmQgYW55IGhpbnRzIGFib3V0IGRlZmF1bHQgdmFsdWVzLiBJJiMzOTttIGtlZW4gdG8gc2VlIGlmIHRoaXMgcmVmbGVjdHMgYW55IHJlY2VudCBjaGFuZ2VzIHRvIERBTU9OLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxODoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O21tL2RhbW9uL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRcbiAgIDM6XHRtZW51IFwmIzM0O0RhdGEgQWNjZXNzIE1vbml0b3JpbmdcJiMzNDtcbiAgIDQ6XHRcbiAgIDU6XHRjb25maWcgREFNT05cbiAgIDY6XHRcdGJvb2wgXCYjMzQ7REFNT046IERhdGEgQWNjZXNzIE1vbml0b3JpbmcgRnJhbWV3b3JrXCYjMzQ7XG4gICA3Olx0XHRoZWxwXG4gICA4Olx0XHQgIFRoaXMgYnVpbGRzIGEgZnJhbWV3b3JrIHRoYXQgYWxsb3dzIGtlcm5lbCBzdWJzeXN0ZW1zIHRvIG1vbml0b3JcbiAgIDk6XHRcdCAgYWNjZXNzIGZyZXF1ZW5jeSBvZiBlYWNoIG1lbW9yeSByZWdpb24uIFRoZSBpbmZvcm1hdGlvbiBjYW4gYmUgdXNlZnVsXG4gIDEwOlx0XHQgIGZvciBwZXJmb3JtYW5jZS1jZW50cmljIERSQU0gbGV2ZWwgbWVtb3J5IG1hbmFnZW1lbnQuXG4gIDExOlx0XG4gIDEyOlx0XHQgIFNlZSBodHRwczovL3d3dy5rZXJuZWwub3JnL2RvYy9odG1sL2xhdGVzdC9tbS9kYW1vbi9pbmRleC5odG1sIGZvclxuICAxMzpcdFx0ICBtb3JlIGluZm9ybWF0aW9uLlxuICAxNDpcdFxuICAxNTpcdGNvbmZpZyBEQU1PTl9ERUJVR19TQU5JVFlcbiAgMTY6XHRcdGJvb2wgXCYjMzQ7Q2hlY2sgc2FuaXR5IG9mIERBTU9OIGNvZGVcJiMzNDtcbiAgMTc6XHRcdGRlcGVuZHMgb24gREFNT05cbiAgMTg6XHRcdGhlbHBcbiAgMTk6XHRcdCAgVGhpcyBlbmFibGVzIGFkZGl0aW9uYWwgREFNT04gZGVidWdnaW5nLXB1cnBvc2Ugc2FuaXR5IGNoZWNrcyBpblxuICAyMDpcdFx0ICBEQU1PTiBjb2RlLiAgVGhpcyBjYW4gYmUgdXNlZnVsIGZvciBmaW5kaW5nIGJ1Z3MsIGJ1dCBpbXBvc2VcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTg6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI1MzQKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiA4MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4KCioqQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXM6IEEgTWVudGFsIENoZWNrbGlzdCoqCgpBbHJpZ2h0LCBzbyBgREFNT05gIGlzIHRoZSBmdW5kYW1lbnRhbCBidWlsZGluZyBibG9jaywgdGhlIGNvcmUgY29uZmlndXJhdGlvbi4gRXZlcnl0aGluZyBlbHNlIHNlZW1zIHRvIHN0ZW0gZnJvbSB0aGVyZS4gTm93LCB0aGUgbmV4dCBvbmUgaXMgYERBTU9OX1BBRERSYC4gSXQmIzM5O3MgcHJldHR5IGNsZWFyIHRoYXQgYERBTU9OX1BBRERSYCBpcyBnb2luZyB0byByZWx5IG9uIGJvdGggYERBTU9OYCBiZWluZyBlbmFibGVkIGFuZCB0aGUgcHJlc2VuY2Ugb2YgYW4gTU1VIGluIHRoZSBzeXN0ZW0uIFRoYXQgbWFrZXMgc2Vuc2U7IHBoeXNpY2FsIGFkZHJlc3Npbmcgc2VlbXMgaW5oZXJlbnRseSB0aWVkIHRvIG1lbW9yeSBtYW5hZ2VtZW50IHVuaXRzLgoKTmV4dCB1cCBpcyBgREFNT05fTFJVX1NPUlRgLCBhbmQgaXQgYXBwZWFycyB0aGF0IHRoaXMgb25lJiMzOTtzIGRpcmVjdGx5IGRlcGVuZGVudCBvbiBgREFNT05fUEFERFJgLiBObyBzdXJwcmlzZXMgdGhlcmU7IHNvcnRpbmcgYmFzZWQgb24gTGVhc3QgUmVjZW50bHkgVXNlZCB3b3VsZCBtYWtlIHNlbnNlIGFmdGVyIHRoZSBwaHlzaWNhbCBhZGRyZXNzIG1hcHBpbmcgaXMgZXN0YWJsaXNoZWQuIEkgbmVlZCB0byBiZSBzdXJlLgoKRmluYWxseSwgYFNBTVBMRV9EQU1PTl9NVElFUmAgaGFzIGEgZGVwZW5kZW5jeSDigJMgYnV0IHdoYXQgaXMgaXQ/IEkgbmVlZCB0byBjaGVjayB0aGUgcmVsZXZhbnQgS2NvbmZpZyBmaWxlcyB0byBnZXQgdGhlIGZ1bGwgcGljdHVyZS4gTXkgZ3Vlc3MgaXMgZWl0aGVyIHRoZSBtYWluIGBzYW1wbGVzL2RhbW9uL0tjb25maWdgIGZpbGUgb3IgdGhlIG92ZXJhcmNoaW5nIGBzYW1wbGVzL0tjb25maWdgIGZpbGUgd2l0aGluIHRoZSBrZXJuZWwgc291cmNlIHRyZWUgc2hvdWxkIGhhdmUgdGhlIGFuc3dlci4gSSYjMzk7bGwgdGFrZSBhIGxvb2sgaW4gb25lIG9mIHRoZXNlIGxvY2F0aW9ucywgZm9yIG1vcmUgZGV0YWlscy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTg6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFNBTVBMRV9EQU1PTl9NVElFUiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtzYW1wbGVzL2RhbW9uL0tjb25maWc9MTc9Y29uZmlnIFNBTVBMRV9EQU1PTl9QUkNMXG4tLVxuc2FtcGxlcy9kYW1vbi9LY29uZmlnLTI5LVxuc2FtcGxlcy9kYW1vbi9LY29uZmlnOjMwOmNvbmZpZyBTQU1QTEVfREFNT05fTVRJRVJcbnNhbXBsZXMvZGFtb24vS2NvbmZpZy0zMS1cdGJvb2wgXCYjMzQ7REFNT04gc2FtcGxlIG1vZHVsZSBmb3IgbWVtb3J5IHRpZXJpbmdcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTg6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI5ODMKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSBgc2FtcGxlcy9kYW1vbi9LY29uZmlnYCBmaWxlLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGxpbmUgMzAsIGZyb20gYW4gZXhwZXJ0JiMzOTtzIHBlcnNwZWN0aXZlOgoKKipEaXZpbmcgaW50byB0aGUgREFNT04gS2NvbmZpZyoqCgpPa2F5LCBzbyBJJiMzOTttIHB1bGxpbmcgdXAgdGhlIGBzYW1wbGVzL2RhbW9uL0tjb25maWdgIGZpbGUgYW5kIGhvbmluZyBpbiBvbiBsaW5lIDMwIG9yIHRoZXJlYWJvdXRzLiBJbW1lZGlhdGVseSwgSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgc3RhbmRhcmQgS2NvbmZpZyBzeW50YXguIEkmIzM5O20gZXhwZWN0aW5nIHRvIHNlZSBhIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGRlY2xhcmVkIHRoZXJlLiBJdCYjMzk7cyBsaWtlbHkgcmVsYXRlZCB0byBzb21lIGFzcGVjdCBvZiB0aGUgRGF0YSBBY2Nlc3MgTW9uaXRvciAoREFNT04pIGZ1bmN0aW9uYWxpdHkgd2l0aGluIHRoZSBrZXJuZWwgc2FtcGxlcy4gTGluZSAzMCBpcyBsaWtlbHkgcHJvdmlkaW5nIGEgZGVmYXVsdCBvciBhIGNvbmRpdGlvbmFsIGRlcGVuZGVuY3kgZm9yIGEgZmVhdHVyZSAtIG1heWJlIGVuYWJsaW5nIGEgc3BlY2lmaWMgbW9uaXRvcmluZyBtb2RlLCBhIHBhcnRpY3VsYXIgZGF0YSBjb2xsZWN0aW9uIG1ldGhvZCwgb3IgdGhlIGluY2x1c2lvbiBvZiBjZXJ0YWluIGRlYnVnIGZlYXR1cmVzIGZvciB0aGlzIERBTU9OIGV4YW1wbGUuIEdpdmVuIHRoZSBjb250ZXh0LCBJJiMzOTttIGd1ZXNzaW5nIGl0IG1pZ2h0IGJlIHNvbWV0aGluZyBsaWtlIGVuYWJsaW5nL2Rpc2FibGluZyBhIHNwZWNpZmljIERBTU9OIGNvbmZpZ3VyYXRpb24gc2FtcGxlLCBvciBwb3RlbnRpYWxseSBhIHN1Yi1tb2R1bGUgb2YgdGhlIERBTU9OIGluZnJhc3RydWN0dXJlIGl0c2VsZiwgYmFzZWQgb24gb3RoZXIgbW9yZSBmdW5kYW1lbnRhbCBjb3JlIERBTU9OIHNldHRpbmdzLiBJJiMzOTttIGFsc28gcmVhZHkgdG8gc2VlIHNvbWUgaGVscCB0ZXh0IGNsYXJpZnlpbmcgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIHBhcnRpY3VsYXIgc2V0dGluZywgZXNwZWNpYWxseSBpbiB0aGUgY29udGV4dCBvZiB0aGlzIHNwZWNpZmljIHNhbXBsZSBjb2RlLiBJJiMzOTttIGludGVyZXN0ZWQgdG8gc2VlIHRoZSByZWxhdGlvbnNoaXBzIGJldHdlZW4gdGhpcyBjb25maWcgb3B0aW9uIGFuZCBvdGhlciByZWxhdGVkIG9uZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE4OjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7c2FtcGxlcy9kYW1vbi9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAyMDpcdFx0aGVscFxuICAyMTpcdFx0ICBUaGlzIGJ1aWxkcyBEQU1PTiBzYW1wbGUgbW9kdWxlIGZvciBhY2Nlc3MtYXdhcmUgcHJvYWN0aXZlXG4gIDIyOlx0XHQgIHJlY2xhbWF0aW9uLlxuICAyMzpcdFxuICAyNDpcdFx0ICBUaGUgbW9kdWxlIHJlY2VpdmVzIGEgcGlkLCBtb25pdG9yIGFjY2VzcyB0byB0aGUgdmlydHVhbCBhZGRyZXNzXG4gIDI1Olx0XHQgIHNwYWNlIG9mIHRoZSBwcm9jZXNzLCBmaW5kIG1lbW9yeSByZWdpb25zIHRoYXQgbm90IGFjY2Vzc2VkLCBhbmRcbiAgMjY6XHRcdCAgcHJvYWN0aXZlbHkgcmVjbGFpbSB0aGUgcmVnaW9ucy5cbiAgMjc6XHRcbiAgMjg6XHRcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbiAgMjk6XHRcbiAgMzA6XHRjb25maWcgU0FNUExFX0RBTU9OX01USUVSXG4gIDMxOlx0XHRib29sIFwmIzM0O0RBTU9OIHNhbXBsZSBtb2R1bGUgZm9yIG1lbW9yeSB0aWVyaW5nXCYjMzQ7XG4gIDMyOlx0XHRkZXBlbmRzIG9uIERBTU9OIFx1MDAyNlx1MDAyNiBEQU1PTl9QQUREUlxuICAzMzpcdFx0aGVscFxuICAzNDpcdFx0ICBUaGlzIGJ1aWxkcyBEQU1PTiBzYW1wbGUgbW9kdWxlIGZvciBtZW1vcnkgdGllcmluZy5cbiAgMzU6XHRcbiAgMzY6XHRcdCAgVGhlIG1vZHVsZSBhc3N1bWVzIHRoZSBzeXN0ZW0gaXMgY29uc3RydWN0ZWQgd2l0aCB0d28gTlVNQSBub2RlcyxcbiAgMzc6XHRcdCAgd2hpY2ggc2VlbXMgYXMgbG9jYWwgYW5kIHJlbW90ZSBub2RlcyB0byBhbGwgQ1BVcy4gIEZvciBleGFtcGxlLFxuICAzODpcdFx0ICBub2RlMCBpcyBmb3IgRERSNSBEUkFNcyBjb25uZWN0ZWQgdmlhIERJTU0sIHdoaWxlIG5vZGUxIGlzIGZvciBERFI0XG4gIDM5Olx0XHQgIERSQU1zIGNvbm5lY3RlZCB2aWEgQ1hMLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxODoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzU4OAoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDUzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3Mgc2VlLi4uCgoqKkV4YW1pbmluZyB0aGUgREFNT04gU2FtcGxlIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzKioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBgU0FNUExFX0RBTU9OX01USUVSYCBjb25maWd1cmF0aW9uIG9wdGlvbi4gUmlnaHQsIGl0JiMzOTtzIHByZXR0eSBjbGVhciB0aGF0IGl0cyBmdW5jdGlvbmFsaXR5IGhpbmdlcyBvbiBib3RoIGBEQU1PTmAgYW5kIGBEQU1PTl9QQUREUmAgYmVpbmcgZW5hYmxlZC4gU2VlbXMgc3RyYWlnaHRmb3J3YXJkIGVub3VnaCBmcm9tIGEgZGVwZW5kZW5jeSBzdGFuZHBvaW50LgoKTm93LCB3aGVyZSBhcmUgdGhlc2Ugb3B0aW9ucyBkZWZpbmVkIGluIHJlbGF0aW9uIHRvIHRoZSBzYW1wbGVzPyBBaCwgcmlnaHQuIEl0IGhpdHMgbWU6IGBzYW1wbGVzL0tjb25maWdgICpzaG91bGQqIGluY2x1ZGUgYHNhbXBsZXMvZGFtb24vS2NvbmZpZ2AuIEkmIzM5O2xsIHdhbnQgdG8gdmVyaWZ5IHRoYXQuIE5lZWQgdG8gZGVsdmUgaW50byBgc2FtcGxlcy9LY29uZmlnYCBzcGVjaWZpY2FsbHkgbm93LiBUaGF0JiMzOTtzIHRoZSBrZXkgZmlsZSBJIG5lZWQgdG8gZXhhbWluZSBmb3IgdGhlIGJyb2FkZXIgY29udGV4dCBhbmQgZW5zdXJlIGV2ZXJ5dGhpbmcgaXMgcHJvcGVybHkgaG9va2VkIHVwLiBJIG5lZWQgdG8gY2hlY2sgaG93IGl0IGFjdHVhbGx5IHB1bGxzIGluIHRoZSBuZWNlc3NhcnkgREFNT04gZWxlbWVudHMgZnJvbSB0aGUgc2FtcGxlIGRpcmVjdG9yeSBzdHJ1Y3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE4OjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NvdXJjZSBcJiMzNDtzYW1wbGVzL2RhbW9uL0tjb25maWdcJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7c2FtcGxlcy9LY29uZmlnPTMyNT1zb3VyY2UgXCYjMzQ7c2FtcGxlcy9ydXN0L0tjb25maWdcJiMzNDtcbnNhbXBsZXMvS2NvbmZpZy0zMjYtXG5zYW1wbGVzL0tjb25maWc6MzI3OnNvdXJjZSBcJiMzNDtzYW1wbGVzL2RhbW9uL0tjb25maWdcJiMzNDtcbnNhbXBsZXMvS2NvbmZpZy0zMjgtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE4OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzOTI1CgkJCQkJCQlvdXRwdXQ6IDE4CgkJCQkJCQl0aG91Z2h0czogMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHByZXNlbnRlZCBhcyBhIHN1bW1hcnkgZnJvbSBteSBwZXJzcGVjdGl2ZSwga2VlcGluZyBpbiBtaW5kIG15IGV4cGVydGlzZToKCioqRXhhbWluaW5nIEtjb25maWcgSW5jbHVzaW9uIGFuZCBTQU1QTEVTIERlcGVuZGVuY3kqKgoKQWxyaWdodCwgSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgS2NvbmZpZyBzdHJ1Y3R1cmUsIGFuZCBpdCBzZWVtcyBsaWtlIHRoZSBgc2FtcGxlcy9LY29uZmlnYCBmaWxlIGlzIGJlaW5nIGRpcmVjdGx5IGluY2x1ZGVkIHdpdGhpbiB0aGUgbWFpbiBgS2NvbmZpZ2AuIFRoYXQmIzM5O3Mgc3RhbmRhcmQgcHJhY3RpY2UsIGJ1dCBpdCBpbW1lZGlhdGVseSByYWlzZXMgYSBxdWVzdGlvbiBpbiBteSBtaW5kOiBJcyB0aGlzIGBTQU1QTEVTYCBjb25maWd1cmF0aW9uIG9wdGlvbiBhY3R1YWxseSBuZWNlc3Nhcnk/IFdlJiMzOTt2ZSBnb3QgYSBtb2R1bGFyIGJ1aWxkIHN5c3RlbSwgc28gbGV0JiMzOTtzIHRoaW5rIHRocm91Z2ggaWYgdGhhdCBgU0FNUExFU2AgY29uZmlnIGlzIG5lZWRlZCBvciBub3QuIEkmIzM5O2xsIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGxvZ2ljIHJlbGllcyBvbiBgU0FNUExFU2AgYW5kIGlmIHRoZXJlJiMzOTtzIGEgYmV0dGVyIHdheSB0byBoYW5kbGUgdGhlc2Ugc2FtcGxlIGNvbmZpZ3VyYXRpb25zLiBXZSYjMzk7bGwgbmVlZCB0byBiZSBjbGVhciBhYm91dCBpZiB0aGUgYFNBTVBMRVNgIGNvbmZpZyBpcyB1c2VkIGZvciBjb250cm9sIG9yIHNlbGVjdGlvbi4gSSYjMzk7bGwgZXZhbHVhdGUgdGhlIGJyb2FkZXIgaW1wbGljYXRpb25zIGZvciBidWlsZCB0aW1lIGFuZCBvdmVyYWxsIG1haW50YWluYWJpbGl0eS4gSXQgY291bGQgYmUgcmVkdW5kYW50IG9yIGV2ZW4gY3JlYXRpbmcgdW5uZWNlc3NhcnkgZGVwZW5kZW5jaWVzLiBJIG5lZWQgdG8gZGlnIGludG8gdGhlIGRlcGVuZGVuY2llcyBhbmQgdGhlIGNvbmRpdGlvbmFsIGxvZ2ljIGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE4OjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21lbnVjb25maWcgU0FNUExFUyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtzYW1wbGVzL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbnNhbXBsZXMvS2NvbmZpZzoyOm1lbnVjb25maWcgU0FNUExFU1xuc2FtcGxlcy9LY29uZmlnLTMtXHRib29sIFwmIzM0O1NhbXBsZSBrZXJuZWwgY29kZVwmIzM0O1xuLS1cbnNhbXBsZXMvcnVzdC9LY29uZmlnLTItXG5zYW1wbGVzL3J1c3QvS2NvbmZpZzozOm1lbnVjb25maWcgU0FNUExFU19SVVNUXG5zYW1wbGVzL3J1c3QvS2NvbmZpZy00LVx0Ym9vbCBcJiMzNDtSdXN0IHNhbXBsZXNcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTg6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQyODgKCQkJCQkJCW91dHB1dDogNjgKCQkJCQkJCXRob3VnaHRzOiAzNjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBEQU1PTiBQYXRjaCBmb3IgU2FmZXR5IGFuZCBGdW5jdGlvbmFsaXR5KioKCk9rYXksIHNvIEkgc2VlIHRoYXQgdGhpcyBwYXRjaCBoaW5nZXMgb24gdGhlIGBTQU1QTEVTYCBjb21wb25lbnQg4oCTIGl0JiMzOTtzIGNydWNpYWwgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIG92ZXJhbGwgaW1wYWN0LiBGcm9tIHdoYXQgSSBjYW4gdGVsbCwgaXQgdG91Y2hlcyBib3RoIGBtbS9kYW1vbi9scnVfc29ydC5jYCBhbmQgYHNhbXBsZXMvZGFtb24vbXRpZXIuY2AuIFRoYXQmIzM5O3MgaW50ZXJlc3RpbmcsIGJlY2F1c2Ugb25lIGlzIGNvcmUga2VybmVsIGNvZGUgKG1lbW9yeSBtYW5hZ2VtZW50LCBzcGVjaWZpY2FsbHkpIGFuZCB0aGUgb3RoZXIgaXMgYSBzYW1wbGUgbW9kdWxlLiBCb3RoIGFyZSAqcmVhY2hhYmxlKiwgYW5kIHByZXN1bWFibHkgZnVuY3Rpb25hbCwgd2hpY2ggbWVhbnMgd2UgbmVlZCB0byB0cmVhdCB0aGVtIGJvdGggYXMgYXJlYXMgb2YgaW50ZXJlc3QuIFRoZSBzYW1wbGUgY29kZSBiZWluZyBmdW5jdGlvbmFsIGFsc28gbWVhbnMgaXQmIzM5O3MgZnV6emFibGUgaWYgdGhlIG1haW50YWluZXJzIGhhdmUgZW5hYmxlZCB0aGF0IGFzIGEgdGVzdC4KCk15IGltbWVkaWF0ZSBpbXByZXNzaW9uIGlzIHRoYXQgdGhpcyBpcyBhICpmdW5jdGlvbmFsKiBjaGFuZ2UuIFRoZSBwYXRjaCBpcyBhZGRpbmcgdmFsaWRhdGlvbiB0byB0aGUgbW9kdWxlIHBhcmFtZXRlcnMsIHNwZWNpZmljYWxseSBgYWN0aXZlX21lbV9icGAsIGBub2RlMF9tZW1fdXNlZF9icGAsIGFuZCBgbm9kZTBfbWVtX2ZyZWVfYnBgLiBUaGUgaW50ZW50aW9uIHNlZW1zIHRvIGJlIHRvIHByZXZlbnQgcG90ZW50aWFsbHkgZGlzYXN0cm91cyBvdXRjb21lcyDigJMgbGlrZSBkaXZpc2lvbiBieSB6ZXJvIG9yIG1lbW9yeSBjb3JydXB0aW9uIOKAkyBieSBjaGVja2luZyBmb3IgaW52YWxpZCBwYXJhbWV0ZXIgdmFsdWVzIGFuZCByZXR1cm5pbmcgYW4gZXJyb3IgaWYgdGhleSYjMzk7cmUgZGV0ZWN0ZWQuIFRoYXTigJlzIGdvb2QgaHlnaWVuZSwgYnV0IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBzcGVjaWZpY3MuCgpOb3csIGxldCYjMzk7cyBkcmlsbCBkb3duLiBJJiMzOTtsbCBjaGVjayBgZGFtb25fbHJ1X3NvcnRfYWRkX3F1b3RhX2dvYWxzYC4gSGFuZyBvbiwgdGhhdCYjMzk7cyBhIHN0YXRpYyBmdW5jdGlvbiB3aXRoaW4gYG1tL2RhbW9uL2xydV9zb3J0LmNgLiBPa2F5LCBzbyBpdOKAmXMgbm90IGRpcmVjdGx5IGV4cG9zZWQgdG8gZXh0ZXJuYWwgY2FsbHMuIExldCBtZSBzZWUgd2hhdCBmdW5jdGlvbnMgKmRvKiBjYWxsIGl0LiBXYWl0IGEgbWludXRlLCBhbGwgdGhlIG90aGVyIHN1cHBvcnRpbmcgZnVuY3Rpb25zIGFyZSAqYWxzbyogc3RhdGljOiBgZGFtb25fbHJ1X3NvcnRfYXBwbHlfcGFyYW1ldGVyc2AsIGBkYW1vbl9scnVfc29ydF9jb21taXRfaW5wdXRzX2ZuYCwgYGRhbW9uX2xydV9zb3J0X3R1cm5gLCBgZGFtb25fbHJ1X3NvcnRfZW5hYmxlZF9zdG9yZWAsIGFuZCBgZGFtb25fbHJ1X3NvcnRfY29tbWl0X2lucHV0c19zdG9yZWAuIFRoYXQgaXMgdW51c3VhbCEgV2hhdCBhcmUgdGhlIG5vbi1zdGF0aWMgZnVuY3Rpb25zIGluIHRoaXMgZmlsZT8gSSBuZWVkIHRvIGtub3cgdGhlIGVudHJ5IHBvaW50cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTg6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteW2EtekEtWl9dW2EtekEtWjAtOV9dKiBbYS16QS1aX11bYS16QS1aMC05X10qXFwoJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vZGFtb24vbHJ1X3NvcnQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE4OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1MTU5CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYXMgaWYgaXQgd2VyZSBteSB0aG91Z2h0IHByb2Nlc3M6CgoqKklkZW50aWZ5aW5nIE5vbi1TdGF0aWMgRnVuY3Rpb25zIGluIGEgRmlsZSoqCgpBbHJpZ2h0LCBzbyB0aGUgdGFzayBhdCBoYW5kIGlzIHRvIHBpbnBvaW50IHRoZSBub24tc3RhdGljIGZ1bmN0aW9ucyB3aXRoaW4gYSBnaXZlbiBmaWxlLiBNeSBpbW1lZGlhdGUgYXBwcm9hY2gsIGFuZCBJIHRoaW5rIGl0JiMzOTtzIHRoZSBtb3N0IHByYWdtYXRpYywgaXMgdG8gc2ltcGx5ICpyZWFkKiB0aGUgZmlsZS4gUGFyc2luZyB0aGUgY29udGVudCB0byBleHRyYWN0IHRoZSByZWxldmFudCBkZWNsYXJhdGlvbnMgaXMgdGhlIG1vc3QgZGlyZWN0IHdheSB0byB0YWNrbGUgdGhpcy4gSSYjMzk7bSBub3QgZ29pbmcgdG8gZ2V0IGJvZ2dlZCBkb3duIGluIGFueSBvdmVybHkgY29tcGxleCBhbmFseXNpcyBhdCB0aGlzIHN0YWdlLiBXZSBkb24mIzM5O3QgbmVlZCB0byBjb25zaWRlciBhbnkgZm9ybSBvZiBBU1QtYmFzZWQgYW5hbHlzaXMgb3IgaGVhdnktZHV0eSBjb21waWxlciB0b29saW5nIGF0IHRoZSBzdGFydCwgdGhhdCBjb3VsZCBiZSBvdmVya2lsbC4gSXQmIzM5O3MgYmVzdCB0byBwcm9jZWVkIHdpdGggYSBzaW1wbGUgYXBwcm9hY2ggZmlyc3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE4OjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XmludCAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9kYW1vbi9scnVfc29ydC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTg6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTUzNzUKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqSW52ZXN0aWdhdGluZyBJbml0aWFsaXphdGlvbiBpbiBEQU1PTiBMUlUgU29ydGluZyoqCgpSaWdodCwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGUgREFNT04gTFJVIHNvcnRpbmcgbW9kdWxlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gcGlucG9pbnQgdGhlIG1vZHVsZSBpbml0aWFsaXphdGlvbiByb3V0aW5lcy4gVGhlIGtlcm5lbCYjMzk7cyBpbml0aWFsaXphdGlvbiBwcm9jZXNzIG9mdGVuIGxldmVyYWdlcyBtYWNyb3MgbGlrZSBgbW9kdWxlX2luaXRgIG9yIGBfX2luaXRgIHRvIGRlc2lnbmF0ZSB3aGljaCBmdW5jdGlvbnMgYXJlIHJlc3BvbnNpYmxlIGZvciBzZXR0aW5nIHRoaW5ncyB1cCB3aGVuIHRoZSBtb2R1bGUgaXMgbG9hZGVkIG9yIGR1cmluZyBzeXN0ZW0gc3RhcnR1cC4gSSYjMzk7bGwgc3RhcnQgYnkgc2VhcmNoaW5nIGZvciB0aG9zZSBzeW1ib2xzIHdpdGhpbiBgbW0vZGFtb24vbHJ1X3NvcnQuY2AuIFRoYXQgc2hvdWxkIHF1aWNrbHkgZ2l2ZSBtZSBhIGhhbmRsZSBvbiBob3cgdGhpcyBwYXJ0aWN1bGFyIGFzcGVjdCBvZiBEQU1PTiBpcyBicm91Z2h0IHRvIGxpZmUgYW5kIGludGVncmF0ZWQgaW50byB0aGUgYnJvYWRlciBtZW1vcnkgbWFuYWdlbWVudCBpbmZyYXN0cnVjdHVyZS4gVW5kZXJzdGFuZGluZyB0aGUgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UgaXMgY3J1Y2lhbCB0byBncmFzcCB0aGUgbW9kdWxlJiMzOTtzIGJlaGF2aW9yIGFuZCBkZXBlbmRlbmNpZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE4OjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O19faW5pdCAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9kYW1vbi9scnVfc29ydC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL2RhbW9uL2xydV9zb3J0LmM9NTMyPW1vZHVsZV9wYXJhbV9jYihrZGFtb25kX3BpZCwgXHUwMDI2a2RhbW9uZF9waWRfcGFyYW1fb3BzLCBOVUxMLCAwNDAwKTtcbm1tL2RhbW9uL2xydV9zb3J0LmMtNTMzLVxubW0vZGFtb24vbHJ1X3NvcnQuYzo1MzQ6c3RhdGljIGludCBfX2luaXQgZGFtb25fbHJ1X3NvcnRfaW5pdCh2b2lkKVxubW0vZGFtb24vbHJ1X3NvcnQuYy01MzUte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxODoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTczMgoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipJbml0aWFsIEFzc2Vzc21lbnQgb2YgYSBNb2R1bGUgSW5pdGlhbGl6YXRpb24gRnVuY3Rpb24qKgoKQWxyaWdodCwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgZnVuY3Rpb24sIGBkYW1vbl9scnVfc29ydF9pbml0YC4gVGhlIG5hbWUgc3Ryb25nbHkgc3VnZ2VzdHMgdGhpcyBpcyB0aGUgaW5pdGlhbGl6YXRpb24gcm91dGluZSBmb3IgYSBEYW1vbiBMUlUgc29ydGluZyBjb21wb25lbnQsIHdoaWNoIHBpcXVlcyBteSBpbnRlcmVzdCBpbW1lZGlhdGVseS4gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgbGFuZHNjYXBlIGhlcmUuIE15IGZpcnN0IHF1ZXN0aW9uIGlzIGFsd2F5czogd2hhdCYjMzk7cyB0aGUgYnJvYWRlciBwaWN0dXJlPyBJcyB0aGlzIGEgc2VsZi1jb250YWluZWQgbW9kdWxlLCBvciBkb2VzIGl0IGV4cG9ydCBhbnkgZnVuY3Rpb25hbGl0eSBmb3IgdXNlIGJ5IG90aGVyIHBhcnRzIG9mIHRoZSBrZXJuZWw/IEFyZSB0aGVyZSBhbnkgZXhwb3J0ZWQgZnVuY3Rpb25zIHRoYXQgSSBzaG91bGQga25vdyBhYm91dD8gS25vd2luZyB0aGUgZXhwb3J0ZWQgc3ltYm9scyBpcyB0aGUgY3J1eCBvZiB1bmRlcnN0YW5kaW5nIGhvdyB0aGlzIGNvbXBvbmVudCBpbnRlcmFjdHMgd2l0aCB0aGUgcmVzdCBvZiB0aGUga2VybmVsLiBUaGlzIGlzIG15IHN0YXJ0aW5nIHBvaW50LCBiZWZvcmUgSSBkZWx2ZSBpbnRvIGFueSBvZiB0aGUgaW50ZXJuYWxzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxODoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0VYUE9SVF9TWU1CT0wmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9kYW1vbi9scnVfc29ydC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTg6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU5NzgKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxOTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBNb2R1bGUmIzM5O3MgRW50cnkgUG9pbnRzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGZpbGUsIGFuZCBpdCYjMzk7cyBzdHJ1Y3R1cmVkIGFzIGEgbW9kdWxlIHRoYXQgcmVnaXN0ZXJzIHN5c2ZzIHBhcmFtZXRlcnMgYW5kIHNwaW5zIHVwIGEga3RocmVhZC4gVGhlIGltbWVkaWF0ZSBpc3N1ZSB0aGF0IGp1bXBzIG91dCBpcyB0aGUgYWJzZW5jZSBvZiBhbnkgbm9uLXN0YXRpYyBmdW5jdGlvbnMuIFRoYXQgdGhyb3dzIGEgd3JlbmNoIGluIHRoZSB0eXBpY2FsIGBGb2N1c1N5bWJvbHNgIGFwcHJvYWNoLiBJIGhhdmUgdG8gdGhpbmsgY2FyZWZ1bGx5IGFib3V0IGhvdyB0byBmdWxmaWxsIHRoZSBwcm9tcHQmIzM5O3MgcmVxdWVzdC4KCldhaXQgYSBzZWNvbmQsIHN0YXRpYyBmdW5jdGlvbnMgYXJlICphbGxvd2VkKiBpbiBgRm9jdXNTeW1ib2xzYCwganVzdCB3aXRoIGEgY2F2ZWF0LiBJZiB0aGV5JiMzOTtyZSBub3QgaW5saW5lZCBieSB0aGUgY29tcGlsZXIsIHRoZXkmIzM5O3JlIHZhbGlkIGVudHJ5cG9pbnRzLiBUaGUgcHJvbXB0IGVtcGhhc2l6ZXMgcHJlZmVycmluZyBub24tc3RhdGljLCBub24taW5saW5lZCBmdW5jdGlvbnMuIFNpbmNlIHRob3NlIGFyZSBhYnNlbnQgaGVyZSwgSSBoYXZlIHRvIGZpbmQgdGhlIGV4Y2VwdGlvbnMgdG8gdGhhdCBydWxlLiBUaGUgYmVzdCB3YXkgdG8gZG8gdGhhdCBpcyB0byBsb29rIGZvciBmdW5jdGlvbnMgdGhhdCwgZXZlbiBpZiBzdGF0aWMsICpjYW4mIzM5O3QqIGJlIGlubGluZWQuIEkgcmVtZW1iZXIgdGhlIHByb21wdCBnYXZlIGFuIGltcG9ydGFudCBndWlkZWxpbmUsIGZvY3VzaW5nIG9uIHN5bWJvbCBhZGRyZXNzZXMuCgpUaGF0IG1lYW5zLCBJIG5lZWQgdG8gZm9jdXMgb24gY2FsbGJhY2tzLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBnb2VzIHRvIHRoZSBmdW5jdGlvbnMgdXNlZCBieSBgbW9kdWxlX3BhcmFtX2NiYC4gVGhvc2UgYXJlIGRlZmluaXRlbHkgbm90IGlubGluZWQuIFNwZWNpZmljYWxseSwgSSYjMzk7bSBiZXR0aW5nIGBkYW1vbl9scnVfc29ydF9lbmFibGVkX3N0b3JlYCBhbmQgYGRhbW9uX2xydV9zb3J0X2NvbW1pdF9pbnB1dHNfc3RvcmVgIGZpdCB0aGUgYmlsbCBiZWNhdXNlIHRoZXkmIzM5O3JlIHJlZ2lzdGVyZWQgd2l0aCBgbW9kdWxlX3BhcmFtX2NiYC4gTGV0JiMzOTtzIGNvbmZpcm0gdGhhdCBieSBjaGVja2luZyBvdXQgYG1vZHVsZV9wYXJhbV9jYmAgaW4gYG1tL2RhbW9uL2xydV9zb3J0LmNgLiBUaGF0IHNob3VsZCBwcm92aWRlIHRoZSBuZWVkZWQgY2xhcml0eS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTg6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bW9kdWxlX3BhcmFtX2NiJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vZGFtb24vbHJ1X3NvcnQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9kYW1vbi9scnVfc29ydC5jPTM4MT1zdGF0aWMgY29uc3Qgc3RydWN0IGtlcm5lbF9wYXJhbV9vcHMgY29tbWl0X2lucHV0c19wYXJhbV9vcHMgPSB7XG4tLVxubW0vZGFtb24vbHJ1X3NvcnQuYy0zODYtXG5tbS9kYW1vbi9scnVfc29ydC5jOjM4Nzptb2R1bGVfcGFyYW1fY2IoY29tbWl0X2lucHV0cywgXHUwMDI2Y29tbWl0X2lucHV0c19wYXJhbV9vcHMsIFx1MDAyNmNvbW1pdF9pbnB1dHMsIDA2MDApO1xubW0vZGFtb24vbHJ1X3NvcnQuYy0zODgtXG4tLVxubW0vZGFtb24vbHJ1X3NvcnQuYz00NDQ9c3RhdGljIGNvbnN0IHN0cnVjdCBrZXJuZWxfcGFyYW1fb3BzIGFkZHJfdW5pdF9wYXJhbV9vcHMgPSB7XG4tLVxubW0vZGFtb24vbHJ1X3NvcnQuYy00NDgtXG5tbS9kYW1vbi9scnVfc29ydC5jOjQ0OTptb2R1bGVfcGFyYW1fY2IoYWRkcl91bml0LCBcdTAwMjZhZGRyX3VuaXRfcGFyYW1fb3BzLCBcdTAwMjZhZGRyX3VuaXQsIDA2MDApO1xubW0vZGFtb24vbHJ1X3NvcnQuYy00NTAtTU9EVUxFX1BBUk1fREVTQyhhZGRyX3VuaXQsXG4tLVxubW0vZGFtb24vbHJ1X3NvcnQuYz00ODk9c3RhdGljIGNvbnN0IHN0cnVjdCBrZXJuZWxfcGFyYW1fb3BzIGVuYWJsZWRfcGFyYW1fb3BzID0ge1xuLS1cbm1tL2RhbW9uL2xydV9zb3J0LmMtNDkzLVxubW0vZGFtb24vbHJ1X3NvcnQuYzo0OTQ6bW9kdWxlX3BhcmFtX2NiKGVuYWJsZWQsIFx1MDAyNmVuYWJsZWRfcGFyYW1fb3BzLCBcdTAwMjZlbmFibGVkLCAwNjAwKTtcbm1tL2RhbW9uL2xydV9zb3J0LmMtNDk1LU1PRFVMRV9QQVJNX0RFU0MoZW5hYmxlZCxcbi0tXG5tbS9kYW1vbi9scnVfc29ydC5jPTUyMT1zdGF0aWMgY29uc3Qgc3RydWN0IGtlcm5lbF9wYXJhbV9vcHMga2RhbW9uZF9waWRfcGFyYW1fb3BzID0ge1xuLS1cbm1tL2RhbW9uL2xydV9zb3J0LmMtNTMxLSAqL1xubW0vZGFtb24vbHJ1X3NvcnQuYzo1MzI6bW9kdWxlX3BhcmFtX2NiKGtkYW1vbmRfcGlkLCBcdTAwMjZrZGFtb25kX3BpZF9wYXJhbV9vcHMsIE5VTEwsIDA0MDApO1xubW0vZGFtb24vbHJ1X3NvcnQuYy01MzMtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE4OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3MDI5CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3Mgb24gd2hhdCBJJiMzOTttIGFib3V0IHRvIGRvOgoKKipDaGVja2luZyBgY29tbWl0X2lucHV0c19wYXJhbV9vcHNgKioKCkFscmlnaHQsIEkmIzM5O20gZ29pbmcgdG8gdGFrZSBhIGxvb2sgYXQgYGNvbW1pdF9pbnB1dHNfcGFyYW1fb3BzYC4gVGhpcyBpcyBwcm9iYWJseSB3aGVyZSB0aGUgY29yZSBsb2dpYyByZXNpZGVzLCBhbmQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgZXhhY3RseSBob3cgaXQgZnVuY3Rpb25zLiBJIGV4cGVjdCBpdCB0byBoYW5kbGUgdGhlIGNydWNpYWwgdGFzayBvZiBjb21taXR0aW5nIG9yIHNhdmluZyBjZXJ0YWluIGlucHV0cyBvciBwYXJhbWV0ZXJzIOKAkyBsaWtlbHkgcmVsYXRlZCB0byBhIG1vZGVsLCBkYXRhc2V0LCBvciBjb25maWd1cmF0aW9uIOKAkyB0byBwZXJzaXN0ZW50IHN0b3JhZ2Ugb3IgYSBwcm9jZXNzaW5nIHBpcGVsaW5lLiBJJiMzOTttIGdvaW5nIHRvIHNjcnV0aW5pemUgdGhlIGNvZGUgd2l0aGluIHRoaXMgZnVuY3Rpb24gdG8gdW5kZXJzdGFuZCB0aGUgc3BlY2lmaWMgb3BlcmF0aW9ucyBpdCBwZXJmb3JtcywgbG9va2luZyBmb3IgdGhpbmdzIGxpa2UgZGF0YSB2YWxpZGF0aW9uLCB0cmFuc2Zvcm1hdGlvbnMsIGVycm9yIGhhbmRsaW5nLCBhbmQgdGhlIGRlc3RpbmF0aW9uIG9mIHRoZSBjb21taXR0ZWQgZGF0YS4gTXkgZXhwZXJpZW5jZSB0ZWxscyBtZSB0aGF0IHRoaXMgaXMgYSBjcml0aWNhbCBzZWN0aW9uIHRoYXQgbmVlZHMgY2FyZWZ1bCByZXZpZXcsIHNvIEkmIzM5O2xsIGJlIG1ldGhvZGljYWwgYW5kIGF0dGVudGl2ZSB0byBkZXRhaWwuIEkmIzM5O20gZ29pbmcgdG8gbG9vayBmb3IgYW55IHBvdGVudGlhbCBib3R0bGVuZWNrcywgaW5lZmZpY2llbmNpZXMsIG9yIGFyZWFzIHRoYXQgbWlnaHQgbGVhZCB0byB1bmV4cGVjdGVkIGJlaGF2aW9yIGluIGEgcHJvZHVjdGlvbiBlbnZpcm9ubWVudC4gSSYjMzk7bGwgZm9jdXMgb24gaG93IGl0IGludGVyZmFjZXMgd2l0aCBvdGhlciBjb21wb25lbnRzIG9mIHRoZSBzeXN0ZW0sIHBheWluZyBjbG9zZSBhdHRlbnRpb24gdG8gZGF0YSBkZXBlbmRlbmNpZXMgYW5kIHBvdGVudGlhbCBzaWRlIGVmZmVjdHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE4OjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbW1pdF9pbnB1dHNfcGFyYW1fb3BzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vZGFtb24vbHJ1X3NvcnQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9kYW1vbi9scnVfc29ydC5jPTM0OT1zdGF0aWMgaW50IGRhbW9uX2xydV9zb3J0X2NvbW1pdF9pbnB1dHNfc3RvcmUoY29uc3QgY2hhciAqdmFsLFxuLS1cbm1tL2RhbW9uL2xydV9zb3J0LmMtMzgwLVxubW0vZGFtb24vbHJ1X3NvcnQuYzozODE6c3RhdGljIGNvbnN0IHN0cnVjdCBrZXJuZWxfcGFyYW1fb3BzIGNvbW1pdF9pbnB1dHNfcGFyYW1fb3BzID0ge1xubW0vZGFtb24vbHJ1X3NvcnQuYy0zODItXHQuZmxhZ3MgPSBLRVJORUxfUEFSQU1fT1BTX0ZMX05PQVJHLFxuLS1cbm1tL2RhbW9uL2xydV9zb3J0LmMtMzg2LVxubW0vZGFtb24vbHJ1X3NvcnQuYzozODc6bW9kdWxlX3BhcmFtX2NiKGNvbW1pdF9pbnB1dHMsIFx1MDAyNmNvbW1pdF9pbnB1dHNfcGFyYW1fb3BzLCBcdTAwMjZjb21taXRfaW5wdXRzLCAwNjAwKTtcbm1tL2RhbW9uL2xydV9zb3J0LmMtMzg4LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxODoyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzUzMgoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipDaGVja2luZyBgZW5hYmxlZF9wYXJhbV9vcHNgKioKCkFscmlnaHQsIHRpbWUgdG8gZGl2ZSBpbi4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7TGV0JiMzOTtzIGNoZWNrIGBlbmFibGVkX3BhcmFtX29wc2AuJiMzNDsgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbiBvZiB0aGlzIGZlYXR1cmUsIHBhcnRpY3VsYXJseSBpdHMgY3VycmVudCBzZXR0aW5ncy4gVGhpcyBsaWtlbHkgaW5kaWNhdGVzIHRoZSBzcGVjaWZpYyBvcGVyYXRpb25zIG9yIHBhcmFtZXRlciBtb2RpZmljYXRpb25zIHRoYXQgYXJlIGFjdGl2ZWx5IGVuYWJsZWQgd2l0aGluIHRoaXMgcGFydGljdWxhciBzdGFnZSBvZiB0aGUgcHJvY2Vzcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgdGhlcmUgYXJlIGFueSBwYXJhbWV0ZXJzIHRoYXQgYXJlLCBvciBhcmVuJiMzOTt0LCBiZWluZyBhbHRlcmVkLiBJIHNob3VsZCBiZSBhYmxlIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIGlmIHRoZXJlIGFyZSBzZXR0aW5ncyB0aGF0IGNvdWxkIGltcGFjdCBwZXJmb3JtYW5jZSBvciBiZWhhdmlvci4gVGhlIGdvYWwgaXMgbGlrZWx5IHRvIGVuc3VyZSB0aGF0IHRoaXMgYWxpZ25zIHdpdGggdGhlIGV4cGVjdGVkIHdvcmtmbG93IG9yIHRvIGRpYWdub3NlIGEgcG90ZW50aWFsIGRpc2NyZXBhbmN5LiBMZXQmIzM5O3MgZGlnIGluIGFuZCBtYWtlIHN1cmUgbm90aGluZyB1bnVzdWFsIGlzIGhhcHBlbmluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTg6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZW5hYmxlZF9wYXJhbV9vcHMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9kYW1vbi9scnVfc29ydC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL2RhbW9uL2xydV9zb3J0LmM9NDgzPXN0YXRpYyBpbnQgZGFtb25fbHJ1X3NvcnRfZW5hYmxlZF9sb2FkKGNoYXIgKmJ1ZmZlcixcbi0tXG5tbS9kYW1vbi9scnVfc29ydC5jLTQ4OC1cbm1tL2RhbW9uL2xydV9zb3J0LmM6NDg5OnN0YXRpYyBjb25zdCBzdHJ1Y3Qga2VybmVsX3BhcmFtX29wcyBlbmFibGVkX3BhcmFtX29wcyA9IHtcbm1tL2RhbW9uL2xydV9zb3J0LmMtNDkwLVx0LnNldCA9IGRhbW9uX2xydV9zb3J0X2VuYWJsZWRfc3RvcmUsXG4tLVxubW0vZGFtb24vbHJ1X3NvcnQuYy00OTMtXG5tbS9kYW1vbi9scnVfc29ydC5jOjQ5NDptb2R1bGVfcGFyYW1fY2IoZW5hYmxlZCwgXHUwMDI2ZW5hYmxlZF9wYXJhbV9vcHMsIFx1MDAyNmVuYWJsZWQsIDA2MDApO1xubW0vZGFtb24vbHJ1X3NvcnQuYy00OTUtTU9EVUxFX1BBUk1fREVTQyhlbmFibGVkLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxODoyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzk2NQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDUzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3Mgc2VlLCB0aGlua2luZyB0aHJvdWdoIHRoaXMuLi4KCioqRm9jdXMgU3ltYm9sIENhbmRpZGF0ZXMgZm9yIENvbnNpZGVyYXRpb24qKgoKQWxyaWdodCwgSSYjMzk7bSB0YWtpbmcgYSBsb29rIGF0IHBvdGVudGlhbCBgRm9jdXNTeW1ib2xzYCBoZXJlLiBCYXNlZCBvbiB3aGF0IEkmIzM5O3ZlIHNlZW4sIGBkYW1vbl9scnVfc29ydF9jb21taXRfaW5wdXRzX3N0b3JlYCBhbmQgYGRhbW9uX2xydV9zb3J0X2VuYWJsZWRfc3RvcmVgIHNlZW0gbGlrZSBzdHJvbmcgY29udGVuZGVycy4gVGhlaXIgbmFtZXMgc3VnZ2VzdCB0aGV5JiMzOTtyZSBjZW50cmFsIHRvIHRoZSBMUlUgc29ydGluZyBwcm9jZXNzIHdpdGhpbiBEYW1vbiwgd2hpY2ggaXMgZGVmaW5pdGVseSBhIGtleSBhcmVhIHRvIG1vbml0b3IuIEkgbmVlZCB0byBkaWcgaW50byB0aGVpciBmdW5jdGlvbnMgdG8gY29uZmlybSwgb2YgY291cnNlLCBidXQgdGhlIGluaXRpYWwgaW5kaWNhdGlvbiBpcyBwcm9taXNpbmcuCgpUaGVuIEkgZ2V0IHRoaW5raW5nLCBzaG91bGQgSSBjb25zaWRlciB0aGUgZmlsZSBgc2FtcGxlcy9kYW1vbi9tdGllci5jYCBpbiBteSBhbmFseXNpcz8gSSYjMzk7bGwgcHJvYmFibHkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgaXQgZG9lcyBhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZXNlIG90aGVyIGNvbXBvbmVudHMsIGJlY2F1c2UgaXQgKm1pZ2h0KiBiZSByZWxldmFudC4gSSB3aWxsIG5lZWQgdG8gbG9vayBpbnRvIGl0IHRvIGJlIHN1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE4OjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21vZHVsZV9wYXJhbV9jYiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O3NhbXBsZXMvZGFtb24vbXRpZXIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtzYW1wbGVzL2RhbW9uL210aWVyLmM9NDY9c3RhdGljIGJvb2wgZW5hYmxlZCBfX3JlYWRfbW9zdGx5O1xuc2FtcGxlcy9kYW1vbi9tdGllci5jOjQ3Om1vZHVsZV9wYXJhbV9jYihlbmFibGVkLCBcdTAwMjZlbmFibGVkX3BhcmFtX29wcywgXHUwMDI2ZW5hYmxlZCwgMDYwMCk7XG5zYW1wbGVzL2RhbW9uL210aWVyLmMtNDgtTU9EVUxFX1BBUk1fREVTQyhlbmFibGVkLCBcJiMzNDtFbmFibGUgb3IgZGlzYWJsZSBEQU1PTl9TQU1QTEVfTVRJRVJcJiMzNDspO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxODoyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODM0NwoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIHJldmlld2luZyB0aGlzOgoKKipJbnZlc3RpZ2F0aW5nIGBlbmFibGVkX3BhcmFtX29wc2AgaW4gYHNhbXBsZXMvZGFtb24vbXRpZXIuY2AqKgoKT2theSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBzeXN0ZW0gaXMgbWFuYWdpbmcgaXRzIHBhcmFtZXRlciBvcGVyYXRpb25zLCBhbmQgdGhlIGBzYW1wbGVzL2RhbW9uL210aWVyLmNgIGZpbGUgc2VlbXMgbGlrZSBhIGdvb2QgcGxhY2UgdG8gc3RhcnQuIEkmIzM5O20gZ29pbmcgdG8gY2hlY2sgdGhlIGBlbmFibGVkX3BhcmFtX29wc2AgdmFyaWFibGUgc3BlY2lmaWNhbGx5LiBNeSBleHBlY3RhdGlvbiBpcyB0aGF0IHRoaXMgdmFyaWFibGUgbGlrZWx5IGNvbnRyb2xzIHdoaWNoIHBhcmFtZXRlciBvcGVyYXRpb25zIGFyZSBjdXJyZW50bHkgYWN0aXZlIG9yIGFsbG93ZWQgd2l0aGluIHRoaXMgdGllcmVkIG1lbW9yeSBjb250ZXh0LiBJJiMzOTtsbCBuZWVkIHRvIHNlZSBob3cgaXQmIzM5O3MgaW5pdGlhbGl6ZWQsIGhvdyBpdCYjMzk7cyBtb2RpZmllZCwgYW5kIG1vc3QgaW1wb3J0YW50bHksIGhvdyBpdHMgdmFsdWUgaXMgdXNlZCB0byBkZXRlcm1pbmUgdGhlIGJlaGF2aW9yIG9mIHRoZSBEYW1vbiBzYW1wbGluZyBwcm9jZXNzIHdpdGhpbiB0aGlzIG11bHRpLXRpZXJlZCBhcmNoaXRlY3R1cmUuIEkgbmVlZCB0byBiZSBhYmxlIHRvIHF1aWNrbHkgdW5kZXJzdGFuZCB0aGUgY29udHJvbCBmbG93IHJlbGF0ZWQgdG8gdGhpcyB2YXJpYWJsZSwgYXMgaXQmIzM5O3MgbGlrZWx5IGEgY3JpdGljYWwgY29tcG9uZW50IGluIHVuZGVyc3RhbmRpbmcgdGhlIG92ZXJhbGwgY29uZmlndXJhdGlvbiBvZiB0aGUgdGllcmluZyBiZWhhdmlvci4gSSYjMzk7bSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gd2hldGhlciB0aGlzIHZhcmlhYmxlIGlzIHJlYWQsIG9yIG1vZGlmaWVkLCB1c2luZyBhdG9taWMgb3BlcmF0aW9ucyBvciBhbnkga2luZCBvZiBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlcywgYXMgdGhlc2Ugb3BlcmF0aW9ucyBtYXkgc2lnbmFsIGEgbXVsdGl0aHJlYWRlZCBlbnZpcm9ubWVudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTg6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZW5hYmxlZF9wYXJhbV9vcHMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtzYW1wbGVzL2RhbW9uL210aWVyLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7c2FtcGxlcy9kYW1vbi9tdGllci5jPTM4PXN0YXRpYyBpbnQgZGFtb25fc2FtcGxlX210aWVyX2VuYWJsZV9zdG9yZShcbi0tXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtNDAtXG5zYW1wbGVzL2RhbW9uL210aWVyLmM6NDE6c3RhdGljIGNvbnN0IHN0cnVjdCBrZXJuZWxfcGFyYW1fb3BzIGVuYWJsZWRfcGFyYW1fb3BzID0ge1xuc2FtcGxlcy9kYW1vbi9tdGllci5jLTQyLVx0LnNldCA9IGRhbW9uX3NhbXBsZV9tdGllcl9lbmFibGVfc3RvcmUsXG4tLVxuc2FtcGxlcy9kYW1vbi9tdGllci5jPTQ2PXN0YXRpYyBib29sIGVuYWJsZWQgX19yZWFkX21vc3RseTtcbnNhbXBsZXMvZGFtb24vbXRpZXIuYzo0Nzptb2R1bGVfcGFyYW1fY2IoZW5hYmxlZCwgXHUwMDI2ZW5hYmxlZF9wYXJhbV9vcHMsIFx1MDAyNmVuYWJsZWQsIDA2MDApO1xuc2FtcGxlcy9kYW1vbi9tdGllci5jLTQ4LU1PRFVMRV9QQVJNX0RFU0MoZW5hYmxlZCwgXCYjMzQ7RW5hYmxlIG9yIGRpc2FibGUgREFNT05fU0FNUExFX01USUVSXCYjMzQ7KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTg6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg4NDcKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiA1MjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQ29uZmlndXJhdGlvbiAmYW1wOyBTeW1ib2wgRGVlcCBEaXZlKioKCk9rYXksIHNvIEkmIzM5O20gaG9uaW5nIGluIG9uIGBkYW1vbl9zYW1wbGVfbXRpZXJfZW5hYmxlX3N0b3JlYCBhcyBhIGtleSBmb2N1cy4gTWFrZXMgc2Vuc2UuIExldCYjMzk7cyBzZWUgd2hhdCB0aGUgY29uZmlndXJhdGlvbiBuZWVkcyBhcmUsIHNvIEkmIzM5O20gY2hlY2tpbmcgZm9yIHdoYXQgdG8gZW5hYmxlOiBgQ09ORklHX0RBTU9OX0xSVV9TT1JUYCwgYENPTkZJR19TQU1QTEVfREFNT05fTVRJRVJgLCBgQ09ORklHX0RBTU9OYCwgYENPTkZJR19EQU1PTl9QQUREUmAsIGFuZCBgQ09ORklHX1NBTVBMRVNgLgoKRmlyc3QsIEkgbmVlZCB0byBjb25maXJtIGBDT05GSUdfREFNT05fTFJVX1NPUlRgIGRvZXNuJiMzOTt0IHJlbHkgb24gYENPTkZJR19EQU1PTl9SRUNMQUlNYC4gR29vZCwgaXQgc2VlbXMgdGhleSYjMzk7cmUgaW5kZXBlbmRlbnQuIE5vdywgYENPTkZJR19TQU1QTEVfREFNT05fTVRJRVJgLi4uIE9rYXksIGl0cyBkZXBlbmRlbmNpZXMgYXJlIGBEQU1PTiAmYW1wOyZhbXA7IERBTU9OX1BBRERSYC4KClNvLCB0aGUgY29uZmlndXJhdGlvbnMgSSAqcmVhbGx5KiBuZWVkIHRvIGVuYWJsZSBhcmU6IGBEQU1PTl9MUlVfU09SVGAsIGBTQU1QTEVfREFNT05fTVRJRVJgLCBgREFNT05gLCBgREFNT05fUEFERFJgLCBhbmQgYFNBTVBMRVNgLgoKQnV0IHdhaXQsIGFyZSBgREFNT05gIGFuZCBgREFNT05fUEFERFJgIGFjdHVhbGx5IHNlbGVjdGVkIG9yIGRlZmF1bHQ/IGBEQU1PTmAgaXMgYSBib29sZWFuLiBgREFNT05fUEFERFJgIGRlcGVuZHMgb24gYERBTU9OICZhbXA7JmFtcDsgTU1VYC4gU28sIEkmIzM5O2xsIHN0cmVhbWxpbmUgdGhpcyBsaXN0OiBgREFNT05gLCBgREFNT05fUEFERFJgLCBgREFNT05fTFJVX1NPUlRgLCBgU0FNUExFU2AsIGFuZCBgU0FNUExFX0RBTU9OX01USUVSYC4gVGhpcyBpcyB0aGUgY29yZSBzZXQuCgpOb3csIGxldCYjMzk7cyB2ZXJpZnkgYGRhbW9uX2xydV9zb3J0X2FkZF9xdW90YV9nb2Fsc2AgaW4gYG1tL2RhbW9uL2xydV9zb3J0LmNgIGlzIGltcG9ydGFudC4gSXQmIzM5O3Mgc3RhdGljLCB3aGljaCBpcyBhIGtleSBub3RlLCBidXQgaXQmIzM5O3MgdGhlIGZ1bmN0aW9uIHRoYXQgaGFkIHRoZSBtb2RpZmljYXRpb25zLiBDYW4gSSBhZGQgaXQgdG8gYEZvY3VzU3ltYm9sc2A/IFN1cmUsIEkgY2FuIGFkZCBpdCwgYnV0IGl0JiMzOTtzICpsaWtlbHkqIHRvIGJlIGlubGluZWQuIElmIGl0JiMzOTtzIGlubGluZWQsIHN5emthbGxlciBtaWdodCBub3QgYmUgYWJsZSB0byB0cmFjZSBpdCBkaXJlY3RseSwgYnV0IGl0IHNob3VsZCB0cmFjZSB0aGUgY2FsbGVyLCBzbyB0aGF0JiMzOTtzIG9rYXkuIFRoZSBjYWxsZXIgb2YgdGhhdCBpcyBgZGFtb25fbHJ1X3NvcnRfYXBwbHlfcGFyYW1ldGVyc2AsIHdoaWNoIGlzIGFsc28gc3RhdGljLiBUaGUgY2FsbGVycyBvZiAqdGhhdCogYXJlIGBkYW1vbl9scnVfc29ydF9jb21taXRfaW5wdXRzX3N0b3JlYCBhbmQgYGRhbW9uX2xydV9zb3J0X3R1cm5gLiBTbywgSSYjMzk7bGwgYWRkIHRob3NlIHRocmVlIHN5bWJvbHMgYXMgd2VsbDogYGRhbW9uX2xydV9zb3J0X2NvbW1pdF9pbnB1dHNfc3RvcmVgLCBgZGFtb25fbHJ1X3NvcnRfZW5hYmxlZF9zdG9yZWAsIGFuZCBgZGFtb25fc2FtcGxlX210aWVyX2VuYWJsZV9zdG9yZWAuCgpBbHJpZ2h0LCBqdXN0IHRvIG1ha2Ugc3VyZSBJJiMzOTttIHNvbGlkIG9uIHRoaXMuLi4gbGV0JiMzOTtzIGRvdWJsZS1jaGVjayB0aGUgZnVuY3Rpb24gYGRhbW9uX3NhbXBsZV9tdGllcl9idWlsZF9jdHhgIGluIGBzYW1wbGVzL2RhbW9uL210aWVyLmNgLiBHb3R0YSBiZSB0aG9yb3VnaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTg6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGFtb25fc2FtcGxlX210aWVyX2J1aWxkX2N0eCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O3NhbXBsZXMvZGFtb24vbXRpZXIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtzYW1wbGVzL2RhbW9uL210aWVyLmM9NjA9c3RhdGljIGludCBuaWRfdG9fcGh5cyhpbnQgdGFyZ2V0X25vZGUsIHN0cnVjdCByZWdpb25fcmFuZ2UgKnJhbmdlKVxuLS1cbnNhbXBsZXMvZGFtb24vbXRpZXIuYy03Mi1cbnNhbXBsZXMvZGFtb24vbXRpZXIuYzo3MzpzdGF0aWMgc3RydWN0IGRhbW9uX2N0eCAqZGFtb25fc2FtcGxlX210aWVyX2J1aWxkX2N0eChib29sIHByb21vdGUpXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtNzQte1xuLS1cbnNhbXBsZXMvZGFtb24vbXRpZXIuYz0xODA9c3RhdGljIGludCBkYW1vbl9zYW1wbGVfbXRpZXJfc3RhcnQodm9pZClcbi0tXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtMTg0LVxuc2FtcGxlcy9kYW1vbi9tdGllci5jOjE4NTpcdGN0eCA9IGRhbW9uX3NhbXBsZV9tdGllcl9idWlsZF9jdHgodHJ1ZSk7XG5zYW1wbGVzL2RhbW9uL210aWVyLmMtMTg2LVx0aWYgKCFjdHgpXG4tLVxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTE4OC1cdGN0eHNbMF0gPSBjdHg7XG5zYW1wbGVzL2RhbW9uL210aWVyLmM6MTg5Olx0Y3R4ID0gZGFtb25fc2FtcGxlX210aWVyX2J1aWxkX2N0eChmYWxzZSk7XG5zYW1wbGVzL2RhbW9uL210aWVyLmMtMTkwLVx0aWYgKCFjdHgpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTg6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjAzMDMKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSYjMzk7bSBhbiBleHBlcnQgaW4gdGhpcyBhcmVhIGFuZCB0aGlua2luZyB0aHJvdWdoIHRoaXMgcGllY2Ugb2YgY29kZToKCioqVGhpbmtpbmcgVGhyb3VnaCB0aGUgTXVsdGktVGllciBTYW1wbGluZyBQcm9jZXNzKioKCkFscmlnaHQsIHNvIGBkYW1vbl9zYW1wbGVfbXRpZXJfc3RhcnRgIGlzIGJlaW5nIGNhbGxlZCBmcm9tIHdpdGhpbiBgZGFtb25fc2FtcGxlX210aWVyX3R1cm5gLiBUaGF0JiMzOTtzIHRoZSBrZXkgc3RhcnRpbmcgcG9pbnQuIFRoaXMgdGVsbHMgbWUgdGhhdCB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGEgbXVsdGktdGllcmVkIHNhbXBsaW5nIHByb2Nlc3MsIGFuZCBgX3N0YXJ0YCBtdXN0IGluaXRpYWxpemUgb3Igc2V0IHVwIHNvbWV0aGluZywgcHJlc3VtYWJseSBhdCB0aGUgYmVnaW5uaW5nIG9mIGVhY2ggJiMzNDt0dXJuJiMzNDsgb3IgaXRlcmF0aW9uLiBJdCYjMzk7cyBsaWtlbHkgdGhhdCBgZGFtb25fc2FtcGxlX210aWVyX3R1cm5gIHJlcHJlc2VudHMgYSBzaW5nbGUgc2FtcGxpbmcgKmN5Y2xlKiB3aXRoaW4gdGhlIG11bHRpLXRpZXJlZCBzdHJ1Y3R1cmUuCgpJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0ICYjMzQ7dGllcnMmIzM0OyB3ZSYjMzk7cmUgdGFsa2luZyBhYm91dCBoZXJlLiBBcmUgd2Ugc2FtcGxpbmcgYXQgZGlmZmVyZW50IGdyYW51bGFyaXRpZXM/IE1heWJlIHdlIHN0YXJ0IHdpdGggYSBjb2Fyc2UtZ3JhaW5lZCBzYW1wbGUgYW5kIHByb2dyZXNzaXZlbHkgcmVmaW5lIGl0IHRocm91Z2ggbXVsdGlwbGUgdGllcnM/IE9yIHBlcmhhcHMgaXQmIzM5O3MgYSBoaWVyYXJjaGljYWwgc3RydWN0dXJlLCB3aGVyZSBlYWNoIHRpZXIgcmVwcmVzZW50cyBhIGRpZmZlcmVudCBhc3BlY3Qgb3IgZGltZW5zaW9uIG9mIHRoZSBkYXRhLiAKCldoYXRldmVyIHRoZSBzcGVjaWZpY3MsIGBfc3RhcnRgIHByb2JhYmx5IHNldHMgdXAgdGhlIG5lY2Vzc2FyeSBzdGF0ZSBmb3IgdGhlIGN1cnJlbnQgdGllciBvciB0aGUgc2FtcGxpbmcgcHJvY2VzcyBvdmVyYWxsLiBUaGlzIGNvdWxkIGludm9sdmUgaW5pdGlhbGl6aW5nIGFjY3VtdWxhdG9ycywgc2V0dGluZyB1cCByYW5kb20gbnVtYmVyIGdlbmVyYXRvcnMsIHByZS1jYWxjdWxhdGluZyBzb21lIHZhbHVlcywgb3IgbWF5YmUgZXZlbiBmZXRjaGluZyBkYXRhIG5lY2Vzc2FyeSBmb3IgdGhpcyAmIzM0O3R1cm4uJiMzNDsgSSYjMzk7bGwgbmVlZCB0byBkaWcgZGVlcGVyIGludG8gdGhlIGNvZGUgb2YgYGRhbW9uX3NhbXBsZV9tdGllcl9zdGFydGAgdG8gdW5kZXJzdGFuZCAqcHJlY2lzZWx5KiB3aGF0IGl0IGRvZXMsIGJ1dCB0aGlzIGluaXRpYWwgY2FsbCBmcm9tIGBfdHVybmAgZnJhbWVzIHRoZSBjb250ZXh0IGFuZCB0aGUgb3ZlcmFsbCBmbG93LiBJdCYjMzk7cyB2ZXJ5IGxpa2VseSB0aGF0IGBfc3RhcnRgIHByZXBhcmVzIGZvciB0aGUgbG9naWMgaW1wbGVtZW50ZWQgaW4gdGhlIGBfdHVybmAgZnVuY3Rpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE4OjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RhbW9uX3NhbXBsZV9tdGllcl9zdGFydCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O3NhbXBsZXMvZGFtb24vbXRpZXIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtzYW1wbGVzL2RhbW9uL210aWVyLmM9NzM9c3RhdGljIHN0cnVjdCBkYW1vbl9jdHggKmRhbW9uX3NhbXBsZV9tdGllcl9idWlsZF9jdHgoYm9vbCBwcm9tb3RlKVxuLS1cbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0xNzktXG5zYW1wbGVzL2RhbW9uL210aWVyLmM6MTgwOnN0YXRpYyBpbnQgZGFtb25fc2FtcGxlX210aWVyX3N0YXJ0KHZvaWQpXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtMTgxLXtcbi0tXG5zYW1wbGVzL2RhbW9uL210aWVyLmM9MjExPXN0YXRpYyBpbnQgZGFtb25fc2FtcGxlX210aWVyX2VuYWJsZV9zdG9yZShcbi0tXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtMjI3LVx0aWYgKGVuYWJsZWQpIHtcbnNhbXBsZXMvZGFtb24vbXRpZXIuYzoyMjg6XHRcdGVyciA9IGRhbW9uX3NhbXBsZV9tdGllcl9zdGFydCgpO1xuc2FtcGxlcy9kYW1vbi9tdGllci5jLTIyOS1cdFx0aWYgKGVycilcbi0tXG5zYW1wbGVzL2RhbW9uL210aWVyLmM9MjM3PXN0YXRpYyBpbnQgX19pbml0IGRhbW9uX3NhbXBsZV9tdGllcl9pbml0KHZvaWQpXG4tLVxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTI0Ny1cdGlmIChlbmFibGVkKSB7XG5zYW1wbGVzL2RhbW9uL210aWVyLmM6MjQ4Olx0XHRlcnIgPSBkYW1vbl9zYW1wbGVfbXRpZXJfc3RhcnQoKTtcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0yNDktXHRcdGlmIChlcnIpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE4OjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxMDIzCgkJCQkJCQlvdXRwdXQ6IDY4CgkJCQkJCQl0aG91Z2h0czogMTE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgREFNT04gTVRpZXIgRW5hYmxlbWVudCBQYXRoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBkYW1vbl9zYW1wbGVfbXRpZXJfZW5hYmxlX3N0b3JlYCBmdW5jdGlvbjsgdGhhdCYjMzk7cyB0aGUgc3RhcnRpbmcgcG9pbnQsIHRoZSBlbnRyeSBnYXRlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIE1UaWVyIGVuYWJsZW1lbnQgYWN0dWFsbHkgZnVuY3Rpb25zLgoKTm93LCBsZXQmIzM5O3MganVzdCBtYWtlIGEgbGlzdCwgYSBtZW50YWwgbWFwIG9mIHRob3NlIGBGb2N1c1N5bWJvbHNgIHRvIHF1aWNrbHkgZ2V0IGEgc2Vuc2Ugb2YgdGhlIHBpZWNlcyBpbnZvbHZlZDogSSBzZWUgYGRhbW9uX2xydV9zb3J0X2NvbW1pdF9pbnB1dHNfc3RvcmVgLCBgZGFtb25fbHJ1X3NvcnRfZW5hYmxlZF9zdG9yZWAsIGFuZCwgb2YgY291cnNlLCB0aGUgbWFpbiBvbmUsIGBkYW1vbl9zYW1wbGVfbXRpZXJfZW5hYmxlX3N0b3JlYC4gVGhlc2UgYXJlIHRoZSBrZXkgdmFyaWFibGVzIHRvIHdhdGNoIGFzIHRoaXMgd2hvbGUgZmxvdyBpcyBleGVjdXRlZC4KClRvIG1ha2Ugc3VyZSBJIGhhdmVuJiMzOTt0IG1pc3NlZCBhbnl0aGluZyBjcnVjaWFsLCBJIHNob3VsZCBzY2FuIHRoZSBjb2RlLCBzcGVjaWZpY2FsbHkgbG9va2luZyBhdCBgbW0vZGFtb24vbHJ1X3NvcnQuY2AgYW5kIGBzYW1wbGVzL2RhbW9uL210aWVyLmNgLiBJIG5lZWQgdG8gZW5zdXJlIHRoYXQgbm8gY3JpdGljYWwgbG9naWMgaXMgaGlkZGVuIHdpdGhpbiBhIGZ1bmN0aW9uIHRoYXQgaXNuJiMzOTt0IGRlZmluZWQgYXMgYHN0YXRpY2AuIEkgYW0ganVzdCBtYWtpbmcgc3VyZSB0aGVyZSBhcmVuJiMzOTt0IGFueSBzdXJwcmlzZSBjYWxscyBJJiMzOTttIG5vdCBleHBlY3RpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE4OjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XlthLXpBLVpfXVthLXpBLVowLTlfXSogW2EtekEtWl9dW2EtekEtWjAtOV9dKlxcKCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL2RhbW9uL2xydV9zb3J0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjY3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxODoyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTQ2MwoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDQ2NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGb2N1cyBTeW1ib2wgYW5kIEVuYWJsZSBDb25maWcgSWRlbnRpZmljYXRpb24qKgoKT2theSwgSSYjMzk7dmUgYWxyZWFkeSBjb25maXJtZWQgdGhlIGluaXRpYWwgYXNzdW1wdGlvbnMg4oCTIHRoZXNlIGZ1bmN0aW9ucyBhcmUsIGFzIGV4cGVjdGVkLCBzdGF0aWMuIExldCYjMzk7cyBtYWtlIHN1cmUgb3VyIGJhc2VzIGFyZSBjb3ZlcmVkLgoKRmlyc3QsIEkgY2hlY2tlZCBgZGFtb25fbHJ1X3NvcnRfY29tbWl0X2lucHV0c19zdG9yZWAuIEl0JiMzOTtzIHN0YXRpYywgd2hpY2ggaXMgZ29vZC4KCmBgYGMKc3RhdGljIGludCBkYW1vbl9scnVfc29ydF9jb21taXRfaW5wdXRzX3N0b3JlKGNvbnN0IGNoYXIgKnZhbCwKCQljb25zdCBzdHJ1Y3Qga2VybmVsX3BhcmFtICprcCkKYGBgCgpBbmQgZ2l2ZW4gdGhhdCBpdCYjMzk7cyBwYXNzZWQgdG8gYGtlcm5lbF9wYXJhbV9vcHNgIGFzIGEgZnVuY3Rpb24gcG9pbnRlciwgaW5saW5pbmcgaXNuJiMzOTt0IGdvaW5nIHRvIGJlIGFuIGlzc3VlLiBTbywgdGhhdCYjMzk7cyBzYWZlIHRvIGluY2x1ZGUgYXMgYSBmb2N1cyBzeW1ib2wuCgpNb3Zpbmcgb24sIEkgbmVlZCB0byBjaGVjayBgZGFtb25fbHJ1X3NvcnRfZW5hYmxlZF9zdG9yZWAuIFl1cCwgc3RhdGljLgoKYGBgYwpzdGF0aWMgaW50IGRhbW9uX2xydV9zb3J0X2VuYWJsZWRfc3RvcmUoY29uc3QgY2hhciAqdmFsLAoJCWNvbnN0IHN0cnVjdCBrZXJuZWxfcGFyYW0gKmtwKQpgYGAKCkFnYWluLCB0aGUgZnVuY3Rpb24gcG9pbnRlciBjb250ZXh0IGNvbmZpcm1zIGl0cyBzdWl0YWJpbGl0eS4KCkZpbmFsbHksIGxldCYjMzk7cyBsb29rIGF0IGBkYW1vbl9zYW1wbGVfbXRpZXJfZW5hYmxlX3N0b3JlYC4gWWVwLCBzdGF0aWMuCgpgYGBjCnN0YXRpYyBpbnQgZGFtb25fc2FtcGxlX210aWVyX2VuYWJsZV9zdG9yZShjb25zdCBjaGFyICp2YWwsCgkJY29uc3Qgc3RydWN0IGtlcm5lbF9wYXJhbSAqa3ApCmBgYAoKU2FtZSBzdG9yeSwgZnVuY3Rpb24gcG9pbnRlciwgYW5kIGl0JiMzOTtzIGFsbCBnb29kLgoKVGhlcmVmb3JlLCBvdXIgKipGb2N1c1N5bWJvbHMqKiBhcmU6Ci0gICBgZGFtb25fbHJ1X3NvcnRfY29tbWl0X2lucHV0c19zdG9yZWAKLSAgIGBkYW1vbl9scnVfc29ydF9lbmFibGVkX3N0b3JlYAotICAgYGRhbW9uX3NhbXBsZV9tdGllcl9lbmFibGVfc3RvcmVgCgpOb3csIGxldCYjMzk7cyBpZGVudGlmeSB0aGUgKipFbmFibGVDb25maWdzKio6Ci0gICBgREFNT05gCi0gICBgREFNT05fUEFERFJgCi0gICBgREFNT05fTFJVX1NPUlRgCi0gICBgU0FNUExFU2AKLSAgIGBTQU1QTEVfREFNT05fTVRJRVJgCgpUaGUgcGF0Y2ggaXMgYWJvdXQgaW5wdXQgdmFsaWRhdGlvbiB0byBwcmV2ZW50IGludmFsaWQgcGFyYW1ldGVycy4gVGhlc2UgcGFyYW1ldGVycyBhcmUgYXZhaWxhYmxlIHZpYSBzeXNmcyBhbmQgY2FuIGJlIGNoYW5nZWQgYXQgcnVudGltZS4gVGhlIGNoYW5nZXMgYXJlIGZ1bmN0aW9uYWwgYW5kIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgdGhlIHN5c2ZzIG1vZHVsZSBwYXJhbWV0ZXIgc3RvcmVzLiBOb3cgbGV0IG1lIGRvdWJsZS1jaGVjayB0aGF0IGBEQU1PTl9MUlVfU09SVGAgZG9lcyBub3QgZGVwZW5kIG9uIG90aGVyIGNvbmZpZ3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE4OjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBEQU1PTl9MUlVfU09SVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL2RhbW9uL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vZGFtb24vS2NvbmZpZz04OD1jb25maWcgREFNT05fUkVDTEFJTVxuLS1cbm1tL2RhbW9uL0tjb25maWctOTktXG5tbS9kYW1vbi9LY29uZmlnOjEwMDpjb25maWcgREFNT05fTFJVX1NPUlRcbm1tL2RhbW9uL0tjb25maWctMTAxLVx0Ym9vbCBcJiMzNDtCdWlsZCBEQU1PTi1iYXNlZCBMUlUtbGlzdHMgc29ydGluZyAoREFNT05fTFJVX1NPUlQpXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE4OjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyNTQ1CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIERBTU9OIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSYjMzk7dmUgbG9va2VkIGludG8gdGhpcyBhbHJlYWR5LCBhbmQgaXQmIzM5O3MgcHJldHR5IGNsZWFyIHRoYXQgdGhlIGJlaGF2aW9yIGhpbmdlcyBvbiBgREFNT05fUEFERFJgLiBOb3csIGBEQU1PTl9QQUREUmAgaXMgaXRzZWxmIGNvbmRpdGlvbmFsLCBhbmQgaXQgcmVxdWlyZXMgYm90aCBgREFNT05gICphbmQqIGBNTVVgIHRvIGJlIGVuYWJsZWQuIEkga25vdyBgTU1VYCBpcyBiYXNpY2FsbHkgYSBnaXZlbiBvbiBzdGFuZGFyZCBhcmNoaXRlY3R1cmVzLCBzbyB0aGF0JiMzOTtzIGxpa2VseSBub3QgdGhlIHN0dW1ibGluZyBibG9jay4KCkJ1dCBqdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgbGV0JiMzOTtzIGp1c3QgbWFrZSBzdXJlIHRoZXJlIGFyZW4mIzM5O3QgYW55IG90aGVyIGRlcGVuZGVuY2llcyBmb3IgYFNBTVBMRV9EQU1PTl9NVElFUmAgdGhhdCBJIGhhdmVuJiMzOTt0IGFjY291bnRlZCBmb3IgeWV0LiBHb3R0YSBiZSB0aG9yb3VnaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTg6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFNBTVBMRV9EQU1PTl9NVElFUiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O3NhbXBsZXMvZGFtb24vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtzYW1wbGVzL2RhbW9uL0tjb25maWc9MTc9Y29uZmlnIFNBTVBMRV9EQU1PTl9QUkNMXG4tLVxuc2FtcGxlcy9kYW1vbi9LY29uZmlnLTI5LVxuc2FtcGxlcy9kYW1vbi9LY29uZmlnOjMwOmNvbmZpZyBTQU1QTEVfREFNT05fTVRJRVJcbnNhbXBsZXMvZGFtb24vS2NvbmZpZy0zMS1cdGJvb2wgXCYjMzQ7REFNT04gc2FtcGxlIG1vZHVsZSBmb3IgbWVtb3J5IHRpZXJpbmdcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTg6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjI4NzQKCQkJCQkJCW91dHB1dDogMTg2CgkJCQkJCQl0aG91Z2h0czogMzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipBc3Nlc3NtZW50IG9mIENvbmZpZ3VyYXRpb24gYW5kIE5leHQgU3RlcHMqKgoKQWxyaWdodCwgSSYjMzk7dmUgY29uZmlybWVkIHRoYXQgdGhlIGNvbmZpZ3VyYXRpb24gaGluZ2VzIG9uIGBEQU1PTiAmYW1wOyZhbXA7IERBTU9OX1BBRERSYC4gVGhlIGluaXRpYWwgdHJvdWJsZXNob290aW5nIHN0ZXBzIGluZGljYXRlZCB0aGV5IHdlcmUsIGluIGZhY3QsIHNldCBjb3JyZWN0bHksIHNvIHRoYXQgcGF0aCBzZWVtcyBjbGVhcmVkLiBOb3csIHdpdGggdGhlIGZvdW5kYXRpb25hbCBlbGVtZW50cyBpbiBwbGFjZSwgdGhlIG5leHQgbG9naWNhbCBzdGVwIHRvIGdldCB0byB0aGUgc29sdXRpb24gaXMgdG8gY2FsbCB0aGUgYHNldC1yZXN1bHRzYCBmdW5jdGlvbiB0byBwcm9jZWVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxODoyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7REFNT04mIzM0OywKICAgICYjMzQ7REFNT05fUEFERFImIzM0OywKICAgICYjMzQ7REFNT05fTFJVX1NPUlQmIzM0OywKICAgICYjMzQ7U0FNUExFUyYjMzQ7LAogICAgJiMzNDtTQU1QTEVfREFNT05fTVRJRVImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkYW1vbl9scnVfc29ydF9jb21taXRfaW5wdXRzX3N0b3JlJiMzNDssCiAgICAmIzM0O2RhbW9uX2xydV9zb3J0X2VuYWJsZWRfc3RvcmUmIzM0OywKICAgICYjMzQ7ZGFtb25fc2FtcGxlX210aWVyX2VuYWJsZV9zdG9yZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGlucHV0IHZhbGlkYXRpb24gZm9yIERBTU9OIExSVSBzb3J0IGFuZCBtZW1vcnkgdGllcmluZyBzYW1wbGUgbW9kdWxlIHBhcmFtZXRlcnMgdG8gcHJldmVudCBpbnZhbGlkIHZhbHVlcyAobGlrZSBcdTAwM2UgMTAwMDAgb3IgMCkgdGhhdCBjb3VsZCBjYXVzZSBkaXZpc2lvbiBieSB6ZXJvIG9yIG90aGVyIGlzc3Vlcy4gVGhlc2UgcGFyYW1ldGVycyBhcmUgYWNjZXNzaWJsZSB2aWEgc3lzZnMgYW5kIGNhbiBiZSBtb2RpZmllZCBhdCBydW50aW1lLiBUaGUgY2hhbmdlcyBhcmUgZnVuY3Rpb25hbCBhbmQgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBzeXNmcyBtb2R1bGUgcGFyYW1ldGVyIHN0b3Jlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7REFNT04mIzM0OywKICAgICYjMzQ7REFNT05fUEFERFImIzM0OywKICAgICYjMzQ7REFNT05fTFJVX1NPUlQmIzM0OywKICAgICYjMzQ7U0FNUExFUyYjMzQ7LAogICAgJiMzNDtTQU1QTEVfREFNT05fTVRJRVImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkYW1vbl9scnVfc29ydF9jb21taXRfaW5wdXRzX3N0b3JlJiMzNDssCiAgICAmIzM0O2RhbW9uX2xydV9zb3J0X2VuYWJsZWRfc3RvcmUmIzM0OywKICAgICYjMzQ7ZGFtb25fc2FtcGxlX210aWVyX2VuYWJsZV9zdG9yZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGlucHV0IHZhbGlkYXRpb24gZm9yIERBTU9OIExSVSBzb3J0IGFuZCBtZW1vcnkgdGllcmluZyBzYW1wbGUgbW9kdWxlIHBhcmFtZXRlcnMgdG8gcHJldmVudCBpbnZhbGlkIHZhbHVlcyAobGlrZSBcdTAwM2UgMTAwMDAgb3IgMCkgdGhhdCBjb3VsZCBjYXVzZSBkaXZpc2lvbiBieSB6ZXJvIG9yIG90aGVyIGlzc3Vlcy4gVGhlc2UgcGFyYW1ldGVycyBhcmUgYWNjZXNzaWJsZSB2aWEgc3lzZnMgYW5kIGNhbiBiZSBtb2RpZmllZCBhdCBydW50aW1lLiBUaGUgY2hhbmdlcyBhcmUgZnVuY3Rpb25hbCBhbmQgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBzeXNmcyBtb2R1bGUgcGFyYW1ldGVyIHN0b3Jlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE4OjE0OjQ4LjIyMzI2NDY5OFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM5OTEyMTE1MDQyNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJEQU1PTlwiLFxuICAgIFwiREFNT05fUEFERFJcIixcbiAgICBcIkRBTU9OX0xSVV9TT1JUXCIsXG4gICAgXCJTQU1QTEVTXCIsXG4gICAgXCJTQU1QTEVfREFNT05fTVRJRVJcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkYW1vbl9scnVfc29ydF9jb21taXRfaW5wdXRzX3N0b3JlXCIsXG4gICAgXCJkYW1vbl9scnVfc29ydF9lbmFibGVkX3N0b3JlXCIsXG4gICAgXCJkYW1vbl9zYW1wbGVfbXRpZXJfZW5hYmxlX3N0b3JlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBpbnB1dCB2YWxpZGF0aW9uIGZvciBEQU1PTiBMUlUgc29ydCBhbmQgbWVtb3J5IHRpZXJpbmcgc2FtcGxlIG1vZHVsZSBwYXJhbWV0ZXJzIHRvIHByZXZlbnQgaW52YWxpZCB2YWx1ZXMgKGxpa2UgXFx1MDAzZSAxMDAwMCBvciAwKSB0aGF0IGNvdWxkIGNhdXNlIGRpdmlzaW9uIGJ5IHplcm8gb3Igb3RoZXIgaXNzdWVzLiBUaGVzZSBwYXJhbWV0ZXJzIGFyZSBhY2Nlc3NpYmxlIHZpYSBzeXNmcyBhbmQgY2FuIGJlIG1vZGlmaWVkIGF0IHJ1bnRpbWUuIFRoZSBjaGFuZ2VzIGFyZSBmdW5jdGlvbmFsIGFuZCByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIHN5c2ZzIG1vZHVsZSBwYXJhbWV0ZXIgc3RvcmVzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxODoxNDo0OC4yMjMyNjk2MjhaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQwMTA2MTIzNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDlmYzA3OTAwN2FiYjZhZTdkOTQ2OGQ0NzFhZjgyZDJjZGI5NGU5ZjhcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBBdWcgMyAxODoxNDo0NyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9tbS9kYW1vbi9scnVfc29ydC5jIGIvbW0vZGFtb24vbHJ1X3NvcnQuY1xcbmluZGV4IDdlMDc3MDg0Y2IwM2EuLjM5MjBkNTA0MmYxMDkgMTAwNjQ0XFxuLS0tIGEvbW0vZGFtb24vbHJ1X3NvcnQuY1xcbisrKyBiL21tL2RhbW9uL2xydV9zb3J0LmNcXG5AQCAtMjMzLDYgKzIzMyw4IEBAIHN0YXRpYyBpbnQgZGFtb25fbHJ1X3NvcnRfYWRkX3F1b3RhX2dvYWxzKHN0cnVjdCBkYW1vcyAqaG90X3NjaGVtZSxcXG4gXFxuIFxcdGlmICghYWN0aXZlX21lbV9icClcXG4gXFx0XFx0cmV0dXJuIDA7XFxuK1xcdGlmICgxMDAwMCBcXHUwMDNjIGFjdGl2ZV9tZW1fYnApXFxuK1xcdFxcdHJldHVybiAtRUlOVkFMO1xcbiBcXHRnb2FsID0gZGFtb3NfbmV3X3F1b3RhX2dvYWwoREFNT1NfUVVPVEFfQUNUSVZFX01FTV9CUCwgYWN0aXZlX21lbV9icCk7XFxuIFxcdGlmICghZ29hbClcXG4gXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuZGlmZiAtLWdpdCBhL3NhbXBsZXMvZGFtb24vbXRpZXIuYyBiL3NhbXBsZXMvZGFtb24vbXRpZXIuY1xcbmluZGV4IGFjOWMyNGI5MmVhZDguLmQxMTIzZWJiZmFiOTAgMTAwNjQ0XFxuLS0tIGEvc2FtcGxlcy9kYW1vbi9tdGllci5jXFxuKysrIGIvc2FtcGxlcy9kYW1vbi9tdGllci5jXFxuQEAgLTE1Niw2ICsxNTYsOSBAQCBzdGF0aWMgc3RydWN0IGRhbW9uX2N0eCAqZGFtb25fc2FtcGxlX210aWVyX2J1aWxkX2N0eChib29sIHByb21vdGUpXFxuIFxcdGlmICghc2NoZW1lKVxcbiBcXHRcXHRnb3RvIGZyZWVfb3V0O1xcbiBcXHRkYW1vbl9zZXRfc2NoZW1lcyhjdHgsIFxcdTAwMjZzY2hlbWUsIDEpO1xcbitcXHQvKiB6ZXJvIHRhcmdldCB2YWx1ZSBjYXVzZXMgZGl2aXNpb24gYnkgemVybyBpbiBkYW1vc19xdW90YV9zdG9yZSgpICovXFxuK1xcdGlmICghbm9kZTBfbWVtX3VzZWRfYnAgfHwgIW5vZGUwX21lbV9mcmVlX2JwKVxcbitcXHRcXHRnb3RvIGZyZWVfb3V0O1xcbiBcXHRxdW90YV9nb2FsID0gZGFtb3NfbmV3X3F1b3RhX2dvYWwoXFxuIFxcdFxcdFxcdHByb21vdGUgPyBEQU1PU19RVU9UQV9OT0RFX01FTV9VU0VEX0JQIDpcXG4gXFx0XFx0XFx0REFNT1NfUVVPVEFfTk9ERV9NRU1fRlJFRV9CUCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTg6MTQ6NDguNjI1MTE1ODEzWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6Mzk4NzE5Mjg1NzcwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkRBTU9OXCIsXG4gICAgXCJEQU1PTl9QQUREUlwiLFxuICAgIFwiREFNT05fTFJVX1NPUlRcIixcbiAgICBcIlNBTVBMRVNcIixcbiAgICBcIlNBTVBMRV9EQU1PTl9NVElFUlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRhbW9uX2xydV9zb3J0X2NvbW1pdF9pbnB1dHNfc3RvcmVcIixcbiAgICBcImRhbW9uX2xydV9zb3J0X2VuYWJsZWRfc3RvcmVcIixcbiAgICBcImRhbW9uX3NhbXBsZV9tdGllcl9lbmFibGVfc3RvcmVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGlucHV0IHZhbGlkYXRpb24gZm9yIERBTU9OIExSVSBzb3J0IGFuZCBtZW1vcnkgdGllcmluZyBzYW1wbGUgbW9kdWxlIHBhcmFtZXRlcnMgdG8gcHJldmVudCBpbnZhbGlkIHZhbHVlcyAobGlrZSBcXHUwMDNlIDEwMDAwIG9yIDApIHRoYXQgY291bGQgY2F1c2UgZGl2aXNpb24gYnkgemVybyBvciBvdGhlciBpc3N1ZXMuIFRoZXNlIHBhcmFtZXRlcnMgYXJlIGFjY2Vzc2libGUgdmlhIHN5c2ZzIGFuZCBjYW4gYmUgbW9kaWZpZWQgYXQgcnVudGltZS4gVGhlIGNoYW5nZXMgYXJlIGZ1bmN0aW9uYWwgYW5kIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgc3lzZnMgbW9kdWxlIHBhcmFtZXRlciBzdG9yZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDlmYzA3OTAwN2FiYjZhZTdkOTQ2OGQ0NzFhZjgyZDJjZGI5NGU5ZjhcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAzIDE4OjE0OjQ3IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbW0vZGFtb24vbHJ1X3NvcnQuYyBiL21tL2RhbW9uL2xydV9zb3J0LmNcbmluZGV4IDdlMDc3MDg0Y2IwM2EuLjM5MjBkNTA0MmYxMDkgMTAwNjQ0XG4tLS0gYS9tbS9kYW1vbi9scnVfc29ydC5jXG4rKysgYi9tbS9kYW1vbi9scnVfc29ydC5jXG5AQCAtMjMzLDYgKzIzMyw4IEBAIHN0YXRpYyBpbnQgZGFtb25fbHJ1X3NvcnRfYWRkX3F1b3RhX2dvYWxzKHN0cnVjdCBkYW1vcyAqaG90X3NjaGVtZSxcbiBcbiBcdGlmICghYWN0aXZlX21lbV9icClcbiBcdFx0cmV0dXJuIDA7XG4rXHRpZiAoMTAwMDAgXHUwMDNjIGFjdGl2ZV9tZW1fYnApXG4rXHRcdHJldHVybiAtRUlOVkFMO1xuIFx0Z29hbCA9IGRhbW9zX25ld19xdW90YV9nb2FsKERBTU9TX1FVT1RBX0FDVElWRV9NRU1fQlAsIGFjdGl2ZV9tZW1fYnApO1xuIFx0aWYgKCFnb2FsKVxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbmRpZmYgLS1naXQgYS9zYW1wbGVzL2RhbW9uL210aWVyLmMgYi9zYW1wbGVzL2RhbW9uL210aWVyLmNcbmluZGV4IGFjOWMyNGI5MmVhZDguLmQxMTIzZWJiZmFiOTAgMTAwNjQ0XG4tLS0gYS9zYW1wbGVzL2RhbW9uL210aWVyLmNcbisrKyBiL3NhbXBsZXMvZGFtb24vbXRpZXIuY1xuQEAgLTE1Niw2ICsxNTYsOSBAQCBzdGF0aWMgc3RydWN0IGRhbW9uX2N0eCAqZGFtb25fc2FtcGxlX210aWVyX2J1aWxkX2N0eChib29sIHByb21vdGUpXG4gXHRpZiAoIXNjaGVtZSlcbiBcdFx0Z290byBmcmVlX291dDtcbiBcdGRhbW9uX3NldF9zY2hlbWVzKGN0eCwgXHUwMDI2c2NoZW1lLCAxKTtcbitcdC8qIHplcm8gdGFyZ2V0IHZhbHVlIGNhdXNlcyBkaXZpc2lvbiBieSB6ZXJvIGluIGRhbW9zX3F1b3RhX3N0b3JlKCkgKi9cbitcdGlmICghbm9kZTBfbWVtX3VzZWRfYnAgfHwgIW5vZGUwX21lbV9mcmVlX2JwKVxuK1x0XHRnb3RvIGZyZWVfb3V0O1xuIFx0cXVvdGFfZ29hbCA9IGRhbW9zX25ld19xdW90YV9nb2FsKFxuIFx0XHRcdHByb21vdGUgPyBEQU1PU19RVU9UQV9OT0RFX01FTV9VU0VEX0JQIDpcbiBcdFx0XHREQU1PU19RVU9UQV9OT0RFX01FTV9GUkVFX0JQLFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTg6MTQ6NDguNjI1MTE3NTUzWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTMwMjkzMzEyOTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIERBTU9OIExSVSBTb3J0IENoYW5nZXMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0d28gZmlsZXMgdGhhdCBoYXZlIGJlZW4gbW9kaWZpZWQ6IGBtbS9kYW1vbi9scnVfc29ydC5jYCBhbmQgYHNhbXBsZXMvZGFtb24vbXRpZXIuY2AuIFNlZW1zIGxpa2UgdGhlcmUgaGF2ZSBiZWVuIHNvbWUgYWRqdXN0bWVudHMgdG8gaG93IERBTU9OIGhhbmRsZXMgcXVvdGFzLiBMZXQncyBkaWcgaW4uXG5cbkZpcnN0LCBgbW0vZGFtb24vbHJ1X3NvcnQuY2AgLSBpbiB0aGUgYGRhbW9uX2xydV9zb3J0X2FkZF9xdW90YV9nb2Fsc2AgZnVuY3Rpb24sIHRoZXJlJ3MgYSBuZXcgY2hlY2suIEl0J3MgZXhwbGljaXRseSB2YWxpZGF0aW5nIHRoZSBgYWN0aXZlX21lbV9icGAgdmFsdWUsIG1ha2luZyBzdXJlIGl0J3Mgbm90IGdyZWF0ZXIgdGhhbiAxMDAwMC4gUmV0dXJuaW5nIGAtRUlOVkFMYCBpZiBpdCBpcy4gVGhhdOKAmXMgaW50ZXJlc3RpbmcuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoeSB0aGlzIGxpbWl0IGlzIGJlaW5nIGludHJvZHVjZWQuIElzIHRoZXJlIGFuIGlzc3VlIHdoZXJlIGEgbGFyZ2UgYGFjdGl2ZV9tZW1fYnBgIGNhdXNlcyBzb21lIHNvcnQgb2Ygb3ZlcmZsb3cgb3IgaW5jb3JyZWN0IGNhbGN1bGF0aW9uIGRvd24gdGhlIGxpbmU/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBuZXcgY29uc3RyYWludCB3aXRoaW4gdGhlIGJyb2FkZXIgREFNT04gTFJVIHNvcnQgaW5pdGlhbGl6YXRpb24gZmxvdy4gSSBuZWVkIHRvIGludmVzdGlnYXRlIHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGFuZCBob3cgaXQncyB1c2VkLlxuXG5Ob3csIGxldCdzIG1vdmUgb250byBgc2FtcGxlcy9kYW1vbi9tdGllci5jYC4gSGVyZSwgaW4gdGhlIGBkYW1vbl9zYW1wbGVfbXRpZXJfYnVpbGRfY3R4YCBmdW5jdGlvbiwgdGhlcmUncyBhIGNoZWNrIHRoYXQgZW5zdXJlcyBgbm9kZTBfbWVtX3VzZWRfYnBgIGFuZCBgbm9kZTBfbWVtX2ZyZWVfYnBgIGFyZSBub3QgemVyby4gSWYgdGhleSBhcmUsIGl0IGp1bXBzIHRvIGBmcmVlX291dGAuIFNvLCB0aGUgdGFyZ2V0IHZhbHVlcyBmb3IgcXVvdGFzIG5lZWQgdG8gYmUgbm9uLXplcm8gdG8gYXZvaWQgYSBkaXZpc2lvbiBieSB6ZXJvIGVycm9yIGluIGBkYW1vc19xdW90YV9zdG9yZSgpYC4gVGhhdCdzIGEgY2xhc3NpYyBidWcuIE1ha2VzIHNlbnNlLCBhbmQgaXQncyBhIGdvb2QgZGVmZW5zaXZlIHByb2dyYW1taW5nIG1lYXN1cmUuIE5vdyBJIG5lZWQgdG8gaW52ZXN0aWdhdGUgaWYgdGhpcyBmdW5jdGlvbiBpcyBhbHdheXMgY29ycmVjdGx5IGNvbmZpZ3VyZWQgdG8gcHJldmVudCBpc3N1ZXMgZnJvbSBldmVyIG9jY3VyaW5nLlxuXG5PdmVyYWxsLCBpdCBsb29rcyBsaWtlIHRoZXNlIGNoYW5nZXMgYXJlIGFpbWVkIGF0IGltcHJvdmluZyB0aGUgcm9idXN0bmVzcyBvZiBEQU1PTidzIHF1b3RhIG1hbmFnZW1lbnQuIE9uZSBjaGFuZ2UgaXMgYSBzaW1wbGUgY2hlY2sgdG8gcHJldmVudCBkaXZpc2lvbiBieSB6ZXJvOyB0aGUgb3RoZXIgcmVxdWlyZXMgYWRkaXRpb25hbCBpbnZlc3RpZ2F0aW9uIHRvIGRldGVybWluZSB3aHkgYSBwYXJ0aWN1bGFyIHVwcGVyIGJvdW5kIG9uIGEgbWVtb3J5IHZhbHVlIGlzIHJlcXVpcmVkLiBCb3RoIHNlZW0gdG8gYmUgYWRkcmVzc2luZyBwb3RlbnRpYWwgbnVtZXJpY2FsIGlzc3VlcyBvciBjb25maWd1cmF0aW9uLXJlbGF0ZWQgcHJvYmxlbXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzMjQsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NDcsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxODoxNTowMS42NTQ0NTIwNzJaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc3Nzk5MzU0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkYW1vbl9scnVfc29ydF9hZGRfcXVvdGFfZ29hbHNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vZGFtb24vbHJ1X3NvcnQuYz0yMjA9c3RhdGljIHN0cnVjdCBkYW1vcyAqZGFtb25fbHJ1X3NvcnRfbmV3X2NvbGRfc2NoZW1lKHVuc2lnbmVkIGludCBjb2xkX3RocmVzKVxcbi0tXFxubW0vZGFtb24vbHJ1X3NvcnQuYy0yMjgtXFxubW0vZGFtb24vbHJ1X3NvcnQuYzoyMjk6c3RhdGljIGludCBkYW1vbl9scnVfc29ydF9hZGRfcXVvdGFfZ29hbHMoc3RydWN0IGRhbW9zICpob3Rfc2NoZW1lLFxcbm1tL2RhbW9uL2xydV9zb3J0LmMtMjMwLVxcdFxcdHN0cnVjdCBkYW1vcyAqY29sZF9zY2hlbWUpXFxuLS1cXG5tbS9kYW1vbi9scnVfc29ydC5jPTI3Mz1zdGF0aWMgaW50IGRhbW9uX2xydV9zb3J0X2FwcGx5X3BhcmFtZXRlcnModm9pZClcXG4tLVxcbm1tL2RhbW9uL2xydV9zb3J0LmMtMzIzLVxcbm1tL2RhbW9uL2xydV9zb3J0LmM6MzI0OlxcdGVyciA9IGRhbW9uX2xydV9zb3J0X2FkZF9xdW90YV9nb2Fscyhob3Rfc2NoZW1lLCBjb2xkX3NjaGVtZSk7XFxubW0vZGFtb24vbHJ1X3NvcnQuYy0zMjUtXFx0aWYgKGVycilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTg6MTU6MDMuNDMyNDQ5NzYxWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ4MzY0NzA4MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gYGRhbW9uX2xydV9zb3J0X2FwcGx5X3BhcmFtZXRlcnNgKipcblxuT2theSwgc28gSSdtIGZvY3VzaW5nIG9uIGBkYW1vbl9scnVfc29ydF9hcHBseV9wYXJhbWV0ZXJzYC4gVGhlIGZ1bmN0aW9uIG5hbWUgaXRzZWxmIHN1Z2dlc3RzIGl0J3MgaW52b2x2ZWQgaW4gYXBwbHlpbmcgcGFyYW1ldGVycywgc3BlY2lmaWNhbGx5IHJlbGF0ZWQgdG8gdGhlIExSVSBzb3J0aW5nIHdpdGhpbiBEQU1PTi4gTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgY2FsbCBzaXRlcy4gTXkgZ3V0IGZlZWxpbmcgdGVsbHMgbWUgaXQncyBsaWtlbHkgY2FsbGVkIGZyb20gYGRhbW9uX2xydV9zb3J0X3R1cm5vbmAgb3Igc29tZXRoaW5nIGFuYWxvZ291cy4gVGhhdCBzZWVtcyBsaWtlIHRoZSBtb3N0IGxvZ2ljYWwgZW50cnkgcG9pbnQgZm9yIGFwcGx5aW5nIHRoZXNlIHNvcnQgcGFyYW1ldGVycywgcmlnaHQ/IEl0IHByb2JhYmx5IGhhcHBlbnMgd2hlbiB0aGUgTFJVIHNvcnRpbmcgbWVjaGFuaXNtIGlzIGFjdGl2YXRlZC4gU28sIHRpbWUgdG8gdmVyaWZ5LiBMZXQncyBkaWcgaW50byB0aGUgY29kZSBhbmQgY29uZmlybSB0aG9zZSBzdXNwaWNpb25zIGFuZCB0cmFjZSB0aGUgY2FsbCBjaGFpbi4gTm8gc2Vuc2UgaW4gbWFraW5nIGFzc3VtcHRpb25zLiBMZXQncyBnZXQgdGhlIGRldGFpbHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1MDMsIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxODoxNTowNi45MTYwOTkwMTRaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTcxMTI4ODI2MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkYW1vbl9scnVfc29ydF9hcHBseV9wYXJhbWV0ZXJzXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL2RhbW9uL2xydV9zb3J0LmM9MjUxPXN0YXRpYyBpbnQgZGFtb25fbHJ1X3NvcnRfYWRkX2ZpbHRlcnMoc3RydWN0IGRhbW9zICpob3Rfc2NoZW1lLFxcbi0tXFxubW0vZGFtb24vbHJ1X3NvcnQuYy0yNzItXFxubW0vZGFtb24vbHJ1X3NvcnQuYzoyNzM6c3RhdGljIGludCBkYW1vbl9scnVfc29ydF9hcHBseV9wYXJhbWV0ZXJzKHZvaWQpXFxubW0vZGFtb24vbHJ1X3NvcnQuYy0yNzQte1xcbi0tXFxubW0vZGFtb24vbHJ1X3NvcnQuYz0zNDQ9c3RhdGljIGludCBkYW1vbl9scnVfc29ydF9jb21taXRfaW5wdXRzX2ZuKHZvaWQgKmFyZylcXG5tbS9kYW1vbi9scnVfc29ydC5jLTM0NS17XFxubW0vZGFtb24vbHJ1X3NvcnQuYzozNDY6XFx0cmV0dXJuIGRhbW9uX2xydV9zb3J0X2FwcGx5X3BhcmFtZXRlcnMoKTtcXG5tbS9kYW1vbi9scnVfc29ydC5jLTM0Ny19XFxuLS1cXG5tbS9kYW1vbi9scnVfc29ydC5jPTQxMD1zdGF0aWMgaW50IGRhbW9uX2xydV9zb3J0X3R1cm4oYm9vbCBvbilcXG4tLVxcbm1tL2RhbW9uL2xydV9zb3J0LmMtNDE4LVxcbm1tL2RhbW9uL2xydV9zb3J0LmM6NDE5OlxcdGVyciA9IGRhbW9uX2xydV9zb3J0X2FwcGx5X3BhcmFtZXRlcnMoKTtcXG5tbS9kYW1vbi9scnVfc29ydC5jLTQyMC1cXHRpZiAoZXJyKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxODoxNTowOC42MjczOTMwOTdaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTA3MzEwOTEzOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgbXlzZWxmOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIENvbmZpZ3VyYXRpb24gZm9yIGBtbS9kYW1vbi9scnVfc29ydC5jYCoqXG5cbk9rYXksIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgS2NvbmZpZyBvcHRpb25zIGVuYWJsZSB0aGUgY29tcGlsYXRpb24gb2YgYG1tL2RhbW9uL2xydV9zb3J0LmNgLiBUaGlzIGlzIGEgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCBkZWJ1Z2dpbmcgc3RlcCwgYnV0IG5lY2Vzc2FyeSBub25ldGhlbGVzcy4gU2luY2UgdGhpcyBpcyBsaWtlbHkgcmVsYXRlZCB0byB0aGUgREFNT04gKERhdGEgQWNjZXNzIE1PTml0b3IpIHN1YnN5c3RlbSwgSSdsbCBzdGFydCBieSBwb2tpbmcgYXJvdW5kIHRoZSByZWxldmFudCBLY29uZmlnIGZpbGVzLiBJJ2xsIG5lZWQgdG8gcmVtZW1iZXIgd2hlcmUgREFNT04ncyBjb25maWd1cmF0aW9uIGlzIGdlbmVyYWxseSBsb2NhdGVkIHdpdGhpbiB0aGUga2VybmVsIHRyZWUuIENoYW5jZXMgYXJlIGl0J3MgdW5kZXIgYG1tYCBvciBwZXJoYXBzIGEgc3ViZGlyZWN0b3J5LiBGcm9tIHRoZXJlLCBJJ2xsIGhhdmUgdG8gZWl0aGVyOiAoYSkgZ3JlcCBmb3IgdGhlIGZpbGUgbmFtZSBkaXJlY3RseSB0byBmaW5kIHRoZSBlbmFibGluZyBjb25maWcsIG9yIChiKSB0cmFjZSB0aHJvdWdoIHJlbGF0ZWQgY29uZmlndXJhdGlvbnMsIGxvb2tpbmcgZm9yIGRlcGVuZGVuY2llcyBhbmQgY29uZGl0aW9uYWxzLiBFaXRoZXIgbWV0aG9kIHdpbGwgbGVhZCBtZSB0byB0aGUgYW5zd2VyLCBhc3N1bWluZyB0aGUgbW9kdWxlIGhhcyBwcm9wZXIgS2NvbmZpZyBzdXBwb3J0LiBJIGFsc28gbmVlZCB0byBiZSBtaW5kZnVsIG9mIGFueSBpbnRlcm1lZGlhdGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHRoYXQgbWlnaHQgYmUgaW4gcGxheS4gSSdsbCBtYWtlIHN1cmUgdG8gbm90ZSBhbGwgcmVsZXZhbnQgb3B0aW9ucywgaW4gY2FzZSB0aGVyZSBhcmUgZnVydGhlciBkZXBlbmRlbmNpZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQwNzEsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxODoxNTo0Ny43MDA1MDQ5ODVaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjMzNjQ3OTE0NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJscnVfc29ydC5vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL2RhbW9uL01ha2VmaWxlPTc9b2JqLSQoQ09ORklHX0RBTU9OX1JFQ0xBSU0pXFx0Kz0gbW9kdWxlcy1jb21tb24ubyByZWNsYWltLm9cXG5tbS9kYW1vbi9NYWtlZmlsZTo4Om9iai0kKENPTkZJR19EQU1PTl9MUlVfU09SVClcXHQrPSBtb2R1bGVzLWNvbW1vbi5vIGxydV9zb3J0Lm9cXG5tbS9kYW1vbi9NYWtlZmlsZS05LW9iai0kKENPTkZJR19EQU1PTl9TVEFUKVxcdCs9IG1vZHVsZXMtY29tbW9uLm8gc3RhdC5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE4OjE1OjUwLjAzNjk4ODQ0OVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyMjgzNzc4NDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOlxuXG4qKkFuYWx5emluZyBEQU1PTiBhbmQgTFJVIFNvcnRpbmcqKlxuXG5SaWdodCwgc28gYENPTkZJR19EQU1PTl9MUlVfU09SVGAgaXMgZXNzZW50aWFsLCB0aGF0IG11Y2ggaXMgY2xlYXIgZnJvbSB0aGUgY29udGV4dC4gTGV0IG1lIG1ha2Ugc3VyZSBteSB1bmRlcnN0YW5kaW5nIG9mIHRoaXMgZGVwZW5kZW5jeSBpcyBhY2N1cmF0ZS4gVG8gZ2V0IGEgcHJhY3RpY2FsIGZlZWwgZm9yIGhvdyBpdCdzIHVzZWQsIEknbSBnb2luZyB0byB0YWtlIGEgbG9vayBhdCBgc2FtcGxlcy9kYW1vbi9tdGllci5jYC4gVGhhdCdzIHVzdWFsbHkgYSBnb29kIHBsYWNlIHRvIHN0YXJ0LCBhcyBpdCBnaXZlcyBhIHdvcmtpbmcgZXhhbXBsZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBpbXBsZW1lbnRhdGlvbiBpbiBvcmRlciB0byBhcHBseSBpdCB0byBhIG5ldyBwcm9qZWN0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NDU1LCJPdXRwdXRUb2tlbnMiOjE4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTg6MTU6NTMuMjY1MzY5MTQ4WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTYzMzczNjE1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10aWVyLm9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwic2FtcGxlcy9kYW1vbi9NYWtlZmlsZT00PW9iai0kKENPTkZJR19TQU1QTEVfREFNT05fUFJDTCkgKz0gcHJjbC5vXFxuc2FtcGxlcy9kYW1vbi9NYWtlZmlsZTo1Om9iai0kKENPTkZJR19TQU1QTEVfREFNT05fTVRJRVIpICs9IG10aWVyLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTg6MTU6NTUuNDI4NzQ4MjIzWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU1OTEwNDA5MjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGlzIHRlY2huaWNhbCB0aG91Z2h0IHByb2Nlc3MsIGZyb20gYW4gZXhwZXJ0J3MgcGVyc3BlY3RpdmU6XG5cbioqSW52ZXN0aWdhdGluZyBEQU1PTidzIFRpZXJpbmcgSW1wbGVtZW50YXRpb24qKlxuXG5BbHJpZ2h0LCB0aGUgaW5pdGlhbCBjbHVlIGlzIGBDT05GSUdfU0FNUExFX0RBTU9OX01USUVSYC4gSXQncyBhIGNvbmZpZ3VyYXRpb24gb3B0aW9uLCBhbmQgSSBrbm93IGZyb20gZXhwZXJpZW5jZSB0aGF0IHRoZXNlIGFyZSBjcnVjaWFsLiBIb3dldmVyLCB0aGUgc3Vic2VxdWVudCBtZW50aW9uIG9mIGBzYW1wbGVzL2RhbW9uL210aWVyLmNgIGltbWVkaWF0ZWx5IGNsYXJpZmllcyB0aGF0IHdlJ3JlIHRhbGtpbmcgYWJvdXQgYSAqc2FtcGxlKiBtb2R1bGUuIE9rYXksIHRoYXQncyBpbXBvcnRhbnQgY29udGV4dC4gSXQncyBpbGx1c3RyYXRpdmUsIGJ1dCBsaWtlbHkgKm5vdCogdGhlIGNvcmUgZnVuY3Rpb25hbGl0eSBJJ20gYWZ0ZXIuXG5cblRoZSByZWFsIG1lYXQgb2YgdGhpcyBzZWVtcyB0byBiZSBpbiBgbW0vZGFtb24vbHJ1X3NvcnQuY2AuIEFoLCBhIGtlcm5lbCBtb2R1bGUsIGxpa2VseSBhIGNvcmUgZmVhdHVyZSwgcmVsYXRlZCB0byBEQU1PTidzIExSVS1iYXNlZCBzb3J0aW5nLiBOb3csIG15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHdoZXRoZXIgdGhpcyBmdW5jdGlvbmFsaXR5LCBzcGVjaWZpY2FsbHkgYGRhbW9uX2xydV9zb3J0X2FwcGx5X3BhcmFtZXRlcnNgLCBpcyBkaXJlY3RseSBhY2Nlc3NpYmxlIGZyb20gdXNlcnNwYWNlLiBUaGF0J3MgdXN1YWxseSB0aGUgY3J1eCBvZiB0aGVzZSBkZXNpZ25zIOKAkyB0aGUgYWJpbGl0eSB0byBjb250cm9sIGFuZCB0dW5lIGJlaGF2aW9yIGZyb20gYSBoaWdoZXIgbGV2ZWwgaXMga2V5LlxuXG5NeSBmb2N1cyBuYXJyb3dzIHRvIHRoZSBgZGFtb25fbHJ1X3NvcnRfdHVybmAgZnVuY3Rpb24sIHdoaWNoIGlzLCBpZiBJIHJlY2FsbCwgaXMgdG9nZ2xlZCB0aHJvdWdoIGBkYW1vbl9scnVfc29ydF9lbmFibGVkX3N0b3JlYCBvciBzb21ldGhpbmcgc2ltaWxhci4gVGhpcyBwb2ludHMgdG8gdGhlIGVuYWJsaW5nIG1lY2hhbmlzbSwgYW5kIGxpa2VseSB0aGUgY29udHJvbCBwb2ludCBpbiB1c2Vyc3BhY2UuIEdvb2QuIFRoaXMgaXMgdGhlIHBhdGggdG8gaW52ZXN0aWdhdGUgdG8gdW5kZXJzdGFuZCBpZiB0aGVyZSdzIGFueSB1c2VyIGNvbnRyb2wgb24gdGhpcyBMUlUgc29ydC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDcwMiwiT3V0cHV0VG9rZW5zIjoyMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxODoxNjowMS4wMTk3OTE0OTVaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NDQ0NzA3ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGFtb25fbHJ1X3NvcnRfdHVyblwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9kYW1vbi9scnVfc29ydC5jPTQwNT1zdGF0aWMgc3RydWN0IGRhbW9uX2NhbGxfY29udHJvbCBjYWxsX2NvbnRyb2wgPSB7XFxuLS1cXG5tbS9kYW1vbi9scnVfc29ydC5jLTQwOS1cXG5tbS9kYW1vbi9scnVfc29ydC5jOjQxMDpzdGF0aWMgaW50IGRhbW9uX2xydV9zb3J0X3R1cm4oYm9vbCBvbilcXG5tbS9kYW1vbi9scnVfc29ydC5jLTQxMS17XFxuLS1cXG5tbS9kYW1vbi9scnVfc29ydC5jPTQ2MD1zdGF0aWMgaW50IGRhbW9uX2xydV9zb3J0X2VuYWJsZWRfc3RvcmUoY29uc3QgY2hhciAqdmFsLFxcbi0tXFxubW0vZGFtb24vbHJ1X3NvcnQuYy00NzktXFxubW0vZGFtb24vbHJ1X3NvcnQuYzo0ODA6XFx0cmV0dXJuIGRhbW9uX2xydV9zb3J0X3R1cm4oZW5hYmxlZCk7XFxubW0vZGFtb24vbHJ1X3NvcnQuYy00ODEtfVxcbi0tXFxubW0vZGFtb24vbHJ1X3NvcnQuYz01MzQ9c3RhdGljIGludCBfX2luaXQgZGFtb25fbHJ1X3NvcnRfaW5pdCh2b2lkKVxcbi0tXFxubW0vZGFtb24vbHJ1X3NvcnQuYy01NDktXFx0aWYgKGVuYWJsZWQpXFxubW0vZGFtb24vbHJ1X3NvcnQuYzo1NTA6XFx0XFx0ZXJyID0gZGFtb25fbHJ1X3NvcnRfdHVybih0cnVlKTtcXG5tbS9kYW1vbi9scnVfc29ydC5jLTU1MS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTg6MTY6MDIuNDY0MjcxMTk1WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyODMwODcwMzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzaW5nOlxuXG4qKkFuYWx5emluZyBEQU1PTiBMUlUgU29ydCBGdW5jdGlvbmFsaXR5KipcblxuQWxyaWdodCwgc28gYGRhbW9uX2xydV9zb3J0X2VuYWJsZWRfc3RvcmVgIGlzIGRlZmluaXRlbHkgYSBzeXNmcyBzdG9yZSBmdW5jdGlvbiwgSSBhbHJlYWR5IGtuZXcgdGhhdC4gVGhlIGtleSBoZXJlIGlzIGZpZ3VyaW5nIG91dCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIHJlc3Qgb2YgdGhlIERBTU9OIExSVSBzb3J0aW5nIG1lY2hhbmlzbS4gSSdtIG5vdGluZyB0aGF0IGBkYW1vbl9scnVfc29ydF9jb21taXRfaW5wdXRzX2ZuYCBpcyBhbHNvIGRpcmVjdGx5IHJlYWNoYWJsZSBmcm9tIHRoYXQgcG9pbnQsIHdoaWNoIGlzIGltcG9ydGFudC4gTm93LCB0byB1bmRlcnN0YW5kIHRoZSBmbG93IGFuZCBpbXBhY3Qgb2YgdGhpcyBmdW5jdGlvbmFsaXR5LCBJIG5lZWQgdG8gZm9jdXMgb24gaG93IGBkYW1vbl9scnVfc29ydF9jb21taXRfaW5wdXRzX2ZuYCBvcGVyYXRlcy4gTGV0J3MgZGVsdmUgaW50byB0aGF0IGZ1bmN0aW9uIGFuZCBzZWUgd2hhdCBpdCdzIGRvaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NDcxLCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTg6MTY6MDUuNzQ3MzYwODUxWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTgxMDQ0ODkxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRhbW9uX2xydV9zb3J0X2NvbW1pdF9pbnB1dHNfZm5cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vZGFtb24vbHJ1X3NvcnQuYz0yNzM9c3RhdGljIGludCBkYW1vbl9scnVfc29ydF9hcHBseV9wYXJhbWV0ZXJzKHZvaWQpXFxuLS1cXG5tbS9kYW1vbi9scnVfc29ydC5jLTM0My1cXG5tbS9kYW1vbi9scnVfc29ydC5jOjM0NDpzdGF0aWMgaW50IGRhbW9uX2xydV9zb3J0X2NvbW1pdF9pbnB1dHNfZm4odm9pZCAqYXJnKVxcbm1tL2RhbW9uL2xydV9zb3J0LmMtMzQ1LXtcXG4tLVxcbm1tL2RhbW9uL2xydV9zb3J0LmM9MzQ5PXN0YXRpYyBpbnQgZGFtb25fbHJ1X3NvcnRfY29tbWl0X2lucHV0c19zdG9yZShjb25zdCBjaGFyICp2YWwsXFxuLS1cXG5tbS9kYW1vbi9scnVfc29ydC5jLTM1NC1cXHRzdHJ1Y3QgZGFtb25fY2FsbF9jb250cm9sIGNvbnRyb2wgPSB7XFxubW0vZGFtb24vbHJ1X3NvcnQuYzozNTU6XFx0XFx0LmZuID0gZGFtb25fbHJ1X3NvcnRfY29tbWl0X2lucHV0c19mbixcXG5tbS9kYW1vbi9scnVfc29ydC5jLTM1Ni1cXHR9O1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxODoxNjowNy4zMjg0MTA0MDJaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDA4MTgxNTUyNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIGBkYW1vbl9scnVfc29ydF9hZGRfcXVvdGFfZ29hbHNgIHdpdGggU3lzZnMgYW5kIElucHV0IFZhbGlkYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ3ZlIGJlZW4gbG9va2luZyBhdCBob3cgdG8gZnV6eiB0aGUgYGRhbW9uX2xydV9zb3J0X2FkZF9xdW90YV9nb2Fsc2AgZnVuY3Rpb24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB0YXJnZXQgaXQgdGhyb3VnaCBzeXNmcywgd2hpY2ggc2VlbXMgbGlrZSBhIHByb21pc2luZyBlbnRyeSBwb2ludC4gVGhlIGludGVyZXN0aW5nIHBhcnQgaXMgdGhhdCB0aGUgcGF0Y2ggaW50cm9kdWNlcyBhIGNydWNpYWwgaW5wdXQgdmFsaWRhdGlvbiBzdGVwLiBJdCBub3cgY2hlY2tzIHRoZSBgYWN0aXZlX21lbV9icGAgdmFsdWUsIGVuc3VyaW5nIGl0IGRvZXNuJ3QgZXhjZWVkIDEwMDAwLiBJZiBpdCBkb2VzLCBhIHN0cmFpZ2h0Zm9yd2FyZCBgLUVJTlZBTGAgaXMgcmV0dXJuZWQuXG5cbk15IG5leHQgc3RlcCBpcyB0byBkaWcgaW50byB0aGUgY29kZSBpdHNlbGYsIHNwZWNpZmljYWxseSBgbW0vZGFtb24vbHJ1X3NvcnQuY2AsIHRvIHBpbnBvaW50IHdoZXJlIHRoaXMgYGFjdGl2ZV9tZW1fYnBgIGNoZWNrIGlzIGFjdHVhbGx5IGltcGxlbWVudGVkIGFuZCBob3cgaXQgaW1wYWN0cyB0aGUgb3ZlcmFsbCBmbG93IG9mIHRoZSBmdW5jdGlvbi4gVW5kZXJzdGFuZGluZyB0aGUgcHJlY2lzZSBsb2NhdGlvbiBhbmQgaXRzIGNvbnRleHQgaXMga2V5IHRvIGNyYWZ0aW5nIGVmZmVjdGl2ZSBmdXp6aW5nIGlucHV0cy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCB2YWx1ZXMgY2FuIGdldCBtZSBwYXN0IHRoZSB2YWxpZGF0aW9uIGFuZCB3aGF0IHNwZWNpZmljIHNjZW5hcmlvcyBtaWdodCBsZWFkIHRvIGludGVyZXN0aW5nIGJlaGF2aW9yIHdpdGhpbiB0aGUgZnVuY3Rpb24ncyBjb3JlIGxvZ2ljLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1OTY2LCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTg6MTY6MTEuNDEwMjI4MjA4WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDUyMzQ5MDgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImFjdGl2ZV9tZW1fYnBcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9tbS9kYW1vbi9scnVfc29ydC5yc3Q9ODQ9dmlvbGF0ZSB0aGlzIHJ1bGUsIHRoZSBrZXJuZWwgbWF5IGV4aGliaXQgdW5kZWZpbmVkIGJlaGF2aW9yLlxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvbW0vZGFtb24vbHJ1X3NvcnQucnN0LTg1LVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvbW0vZGFtb24vbHJ1X3NvcnQucnN0Ojg2OmFjdGl2ZV9tZW1fYnBcXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL21tL2RhbW9uL2xydV9zb3J0LnJzdC04Ny0tLS0tLS0tLS0tLS0tXFxuLS1cXG5Eb2N1bWVudGF0aW9uL21tL2RhbW9uL2Rlc2lnbi5yc3Q9NjkxPW1lY2hhbmlzbSB0cmllcyB0byBtYWtlIGBgY3VycmVudF92YWx1ZWBgIG9mIGBgdGFyZ2V0X21ldHJpY2BgIGJlIHNhbWUgdG9cXG4tLVxcbkRvY3VtZW50YXRpb24vbW0vZGFtb24vZGVzaWduLnJzdC03MDktICBzcGVjaWZpYyBOVU1BIG5vZGUsIGluIGJwICgxLzEwLDAwMCkuXFxuRG9jdW1lbnRhdGlvbi9tbS9kYW1vbi9kZXNpZ24ucnN0OjcxMDotIGBgYWN0aXZlX21lbV9icGBgOiBBY3RpdmUgdG8gYWN0aXZlICsgaW5hY3RpdmUgKExSVSkgbWVtb3J5IHNpemUgcmF0aW8gaW4gYnBcXG5Eb2N1bWVudGF0aW9uL21tL2RhbW9uL2Rlc2lnbi5yc3QtNzExLSAgKDEvMTAsMDAwKS5cXG5Eb2N1bWVudGF0aW9uL21tL2RhbW9uL2Rlc2lnbi5yc3Q6NzEyOi0gYGBpbmFjdGl2ZV9tZW1fYnBgYDogSW5hY3RpdmUgdG8gYWN0aXZlICsgaW5hY3RpdmUgKExSVSkgbWVtb3J5IHNpemUgcmF0aW8gaW5cXG5Eb2N1bWVudGF0aW9uL21tL2RhbW9uL2Rlc2lnbi5yc3QtNzEzLSAgYnAgKDEvMTAsMDAwKS5cXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz0yOTg1PXN0YXRpYyB1bnNpZ25lZCBsb25nIGRhbW9zX2dldF9ub2RlX2VsaWdpYmxlX21lbV9icChzdHJ1Y3QgZGFtb25fY3R4ICpjLFxcbi0tXFxubW0vZGFtb24vY29yZS5jLTI5OTQtICovXFxubW0vZGFtb24vY29yZS5jOjI5OTU6c3RhdGljIHVuc2lnbmVkIGludCBkYW1vc19nZXRfaW5fYWN0aXZlX21lbV9icChib29sIGFjdGl2ZV9yYXRpbylcXG5tbS9kYW1vbi9jb3JlLmMtMjk5Ni17XFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9MzAxMD1zdGF0aWMgdm9pZCBkYW1vc19zZXRfcXVvdGFfZ29hbF9jdXJyZW50X3ZhbHVlKHN0cnVjdCBkYW1vbl9jdHggKmMsXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMzAzMy1cXHRjYXNlIERBTU9TX1FVT1RBX0lOQUNUSVZFX01FTV9CUDpcXG5tbS9kYW1vbi9jb3JlLmM6MzAzNDpcXHRcXHRnb2FsLVxcdTAwM2VjdXJyZW50X3ZhbHVlID0gZGFtb3NfZ2V0X2luX2FjdGl2ZV9tZW1fYnAoXFxubW0vZGFtb24vY29yZS5jLTMwMzUtXFx0XFx0XFx0XFx0Z29hbC1cXHUwMDNlbWV0cmljID09IERBTU9TX1FVT1RBX0FDVElWRV9NRU1fQlApO1xcbi0tXFxubW0vZGFtb24vbHJ1X3NvcnQuYz0zOT1zdGF0aWMgYm9vbCBjb21taXRfaW5wdXRzIF9fcmVhZF9tb3N0bHk7XFxuLS1cXG5tbS9kYW1vbi9scnVfc29ydC5jLTUxLSAqL1xcbm1tL2RhbW9uL2xydV9zb3J0LmM6NTI6c3RhdGljIHVuc2lnbmVkIGxvbmcgYWN0aXZlX21lbV9icCBfX3JlYWRfbW9zdGx5O1xcbm1tL2RhbW9uL2xydV9zb3J0LmM6NTM6bW9kdWxlX3BhcmFtKGFjdGl2ZV9tZW1fYnAsIHVsb25nLCAwNjAwKTtcXG5tbS9kYW1vbi9scnVfc29ydC5jLTU0LVxcbi0tXFxubW0vZGFtb24vbHJ1X3NvcnQuYz0yMjk9c3RhdGljIGludCBkYW1vbl9scnVfc29ydF9hZGRfcXVvdGFfZ29hbHMoc3RydWN0IGRhbW9zICpob3Rfc2NoZW1lLFxcbi0tXFxubW0vZGFtb24vbHJ1X3NvcnQuYy0yMzMtXFxubW0vZGFtb24vbHJ1X3NvcnQuYzoyMzQ6XFx0aWYgKCFhY3RpdmVfbWVtX2JwKVxcbm1tL2RhbW9uL2xydV9zb3J0LmMtMjM1LVxcdFxcdHJldHVybiAwO1xcbm1tL2RhbW9uL2xydV9zb3J0LmM6MjM2OlxcdGlmICgxMDAwMCBcXHUwMDNjIGFjdGl2ZV9tZW1fYnApXFxubW0vZGFtb24vbHJ1X3NvcnQuYy0yMzctXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxubW0vZGFtb24vbHJ1X3NvcnQuYzoyMzg6XFx0Z29hbCA9IGRhbW9zX25ld19xdW90YV9nb2FsKERBTU9TX1FVT1RBX0FDVElWRV9NRU1fQlAsIGFjdGl2ZV9tZW1fYnApO1xcbm1tL2RhbW9uL2xydV9zb3J0LmMtMjM5LVxcdGlmICghZ29hbClcXG4tLVxcbm1tL2RhbW9uL2xydV9zb3J0LmMtMjQzLVxcdGdvYWwgPSBkYW1vc19uZXdfcXVvdGFfZ29hbChEQU1PU19RVU9UQV9JTkFDVElWRV9NRU1fQlAsXFxubW0vZGFtb24vbHJ1X3NvcnQuYzoyNDQ6XFx0XFx0XFx0MTAwMDAgLSBhY3RpdmVfbWVtX2JwICsgMik7XFxubW0vZGFtb24vbHJ1X3NvcnQuYy0yNDUtXFx0aWYgKCFnb2FsKVxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTEyMzU9c3RydWN0IGRhbW9zX3N5c2ZzX3Fnb2FsX21ldHJpY19uYW1lIGRhbW9zX3N5c2ZzX3Fnb2FsX21ldHJpY19uYW1lc1tdID0ge1xcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEyNjEtXFx0XFx0Lm1ldHJpYyA9IERBTU9TX1FVT1RBX0FDVElWRV9NRU1fQlAsXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEyNjI6XFx0XFx0Lm5hbWUgPSBcXFwiYWN0aXZlX21lbV9icFxcXCIsXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTEyNjMtXFx0fSxcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0xMjY1LVxcdFxcdC5tZXRyaWMgPSBEQU1PU19RVU9UQV9JTkFDVElWRV9NRU1fQlAsXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjEyNjY6XFx0XFx0Lm5hbWUgPSBcXFwiaW5hY3RpdmVfbWVtX2JwXFxcIixcXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMTI2Ny1cXHR9LFxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZGFtb24vc3lzZnMuc2g9MTk2PXRlc3RfZ29hbCgpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kYW1vbi9zeXNmcy5zaC0yMDktXFx0ZW5zdXJlX3dyaXRlX3N1Y2MgXFxcIiRmcGF0aFxcXCIgXFxcIm5vZGVfbWVtY2dfZnJlZV9icFxcXCIgXFxcInZhbGlkIGlucHV0XFxcIlxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RhbW9uL3N5c2ZzLnNoOjIxMDpcXHRlbnN1cmVfd3JpdGVfc3VjYyBcXFwiJGZwYXRoXFxcIiBcXFwiYWN0aXZlX21lbV9icFxcXCIgXFxcInZhbGlkIGlucHV0XFxcIlxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RhbW9uL3N5c2ZzLnNoOjIxMTpcXHRlbnN1cmVfd3JpdGVfc3VjYyBcXFwiJGZwYXRoXFxcIiBcXFwiaW5hY3RpdmVfbWVtX2JwXFxcIiBcXFwidmFsaWQgaW5wdXRcXFwiXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZGFtb24vc3lzZnMuc2gtMjEyLVxcdGVuc3VyZV93cml0ZV9zdWNjIFxcXCIkZnBhdGhcXFwiIFxcXCJub2RlX2VsaWdpYmxlX21lbV9icFxcXCIgXFxcInZhbGlkIGlucHV0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxODoxNjoxMi44NjI1ODE0MDhaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTMzNDc5MjQ5NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIHRoZSBgYWN0aXZlX21lbV9icGAgUGFyYW1ldGVyIGluIERBTU9OJ3MgTFJVIFNvcnRpbmcqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGBtbS9kYW1vbi9scnVfc29ydC5jYCBmaWxlLCBhbmQgSSBzZWUgdGhpcyBgYWN0aXZlX21lbV9icGAgcGFyYW1ldGVyIGRlZmluZWQuICBJdCdzIGEgYG1vZHVsZV9wYXJhbWAsIHdoaWNoIGlzIGdyZWF0LCBtZWFuaW5nIGl0J3MgY29uZmlndXJhYmxlIGF0IHJ1bnRpbWUuIEkgY2FuIHNldCBpdCB2aWEgc3lzZnMsIHNwZWNpZmljYWxseSBhdCBgL3N5cy9tb2R1bGUvZGFtb25fbHJ1X3NvcnQvcGFyYW1ldGVycy9hY3RpdmVfbWVtX2JwYC4gVGhhdCdzIGltcG9ydGFudDsgSSBjYW4gdHVuZSB0aGlzIHdpdGhvdXQgcmVjb21waWxpbmcgdGhlIGtlcm5lbC5cblxuTm93LCBJJ20gYWxzbyBnbGFuY2luZyBhdCBgc2FtcGxlcy9kYW1vbi9tdGllci5jYC4gIEkgc2VlIG90aGVyIHNpbWlsYXIgbW9kdWxlIHBhcmFtZXRlcnMgdGhlcmUsIHNwZWNpZmljYWxseSBgbm9kZTBfbWVtX3VzZWRfYnBgIGFuZCBgbm9kZTBfbWVtX2ZyZWVfYnBgLiBJJ20gY3VyaW91cyBhYm91dCB0aGUgcmVsYXRpb25zaGlwIG9mIHRob3NlLCBzbyBJJ2xsIGNoZWNrIGBtdGllci5jYCBhZ2FpbiBmb3IgdXNhZ2VzIG9mIGBub2RlMF9tZW1fdXNlZF9icGAuICBUaGlzIG1pZ2h0IGdpdmUgbWUgc29tZSBjbHVlcyBhYm91dCBob3cgYGFjdGl2ZV9tZW1fYnBgIGlzIGFjdHVhbGx5ICp1c2VkKiBhbmQgaW50ZXJhY3RlZCB3aXRoLCBwb3NzaWJseSBieSBvdGhlciBleGFtcGxlcyBvZiBEQU1PTiB1c2FnZS4gSSB3YW50IHRvIHNlZSBob3cgdGhlc2UgcGFyYW1ldGVycyBhcmUgbGV2ZXJhZ2VkIGluIGEgcHJhY3RpY2FsIHNjZW5hcmlvLCB0byBoYXZlIGEgY29tcGxldGUgcGljdHVyZSBvZiB0aGVpciByb2xlIGFuZCB1dGlsaXR5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NzU4LCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjI0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE4OjE2OjE4LjE5NzM3NjMzNVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU1MzY0MDQ5NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJub2RlMF9tZW1fdXNlZF9icFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJzYW1wbGVzL2RhbW9uL210aWVyLmM9MzA9bW9kdWxlX3BhcmFtKG5vZGUxX2VuZF9hZGRyLCB1bG9uZywgMDYwMCk7XFxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTMxLVxcbnNhbXBsZXMvZGFtb24vbXRpZXIuYzozMjpzdGF0aWMgdW5zaWduZWQgbG9uZyBub2RlMF9tZW1fdXNlZF9icCBfX3JlYWRfbW9zdGx5ID0gOTk3MDtcXG5zYW1wbGVzL2RhbW9uL210aWVyLmM6MzM6bW9kdWxlX3BhcmFtKG5vZGUwX21lbV91c2VkX2JwLCB1bG9uZywgMDYwMCk7XFxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTM0LVxcbi0tXFxuc2FtcGxlcy9kYW1vbi9tdGllci5jPTczPXN0YXRpYyBzdHJ1Y3QgZGFtb25fY3R4ICpkYW1vbl9zYW1wbGVfbXRpZXJfYnVpbGRfY3R4KGJvb2wgcHJvbW90ZSlcXG4tLVxcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0xNTktXFx0LyogemVybyB0YXJnZXQgdmFsdWUgY2F1c2VzIGRpdmlzaW9uIGJ5IHplcm8gaW4gZGFtb3NfcXVvdGFfc3RvcmUoKSAqL1xcbnNhbXBsZXMvZGFtb24vbXRpZXIuYzoxNjA6XFx0aWYgKCFub2RlMF9tZW1fdXNlZF9icCB8fCAhbm9kZTBfbWVtX2ZyZWVfYnApXFxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTE2MS1cXHRcXHRnb3RvIGZyZWVfb3V0O1xcbi0tXFxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTE2NC1cXHRcXHRcXHREQU1PU19RVU9UQV9OT0RFX01FTV9GUkVFX0JQLFxcbnNhbXBsZXMvZGFtb24vbXRpZXIuYzoxNjU6XFx0XFx0XFx0cHJvbW90ZSA/IG5vZGUwX21lbV91c2VkX2JwIDogbm9kZTBfbWVtX2ZyZWVfYnApO1xcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0xNjYtXFx0aWYgKCFxdW90YV9nb2FsKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxODoxNjoxOS43NTEwMjgwNzlaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDY2MTM1ODA4OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgREFNT04gTW9kdWxlIFBhcmFtZXRlcnMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBgc2FtcGxlcy9kYW1vbi9tdGllci5jYCBhbmQgc3BlY2lmaWNhbGx5IGF0IHRoZXNlIG1vZHVsZSBwYXJhbWV0ZXJzLiBUaGUgcGF0Y2ggaW4gcXVlc3Rpb24gaXMgYWRkaW5nIHZhbGlkYXRpb24gY2hlY2tzIHRvIHByZXZlbnQgb2J2aW91c2x5IGJhZCB2YWx1ZXMsIGxpa2UgYW55dGhpbmcgb3ZlciAxMDAwMCBvciB6ZXJvLiBSaWdodCwgbWFrZXMgc2Vuc2U7IHlvdSB3YW50IHRvIGF2b2lkIHRob3NlIGVkZ2UgY2FzZXMuIE5vdywgdGhlIGtleSB0aGluZyBpcyB0aGF0IHRoaXMgaXMgYSAqc2FtcGxlKiBtb2R1bGUsIHdoaWNoIG1lYW5zIGl0J3Mgbm90IHR5cGljYWxseSBlbmFibGVkIGluIGEgcHJvZHVjdGlvbiBrZXJuZWwuIEJ1dCwgaXQgKmNvdWxkKiBiZSBlbmFibGVkIGlmIGBDT05GSUdfU0FNUExFX0RBTU9OX01USUVSYCBpcyBzZXQsIGFuZCBpdCBtaWdodCBiZSB1c2VkIGR1cmluZyBmdXp6aW5nLlxuXG5Ob3csIHdoZXJlIGRvZXMgYG1tL2RhbW9uL2xydV9zb3J0LmNgIGZpdCBpbj8gQWgsIGl0J3MgZW5hYmxlZCBieSBgQ09ORklHX0RBTU9OX0xSVV9TT1JUYC4gR29vZC4gTGV0IG1lIHNoaWZ0IG15IGZvY3VzLiBJIHRoaW5rIEknbGwgcXVpY2tseSBjaGVjayB0aGUgS2NvbmZpZyBlbnRyeSBmb3IgYENPTkZJR19EQU1PTl9MUlVfU09SVGAgdG8gdW5kZXJzdGFuZCBpdHMgZGVwZW5kZW5jaWVzIGFuZCBhbnkgcG90ZW50aWFsIGltcGFjdHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg2NDQsIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTg6MTY6MjQuNDEyMzg4MjI4WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTY0NjU0OTQzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBEQU1PTl9MUlVfU09SVFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9kYW1vbi9LY29uZmlnPTg4PWNvbmZpZyBEQU1PTl9SRUNMQUlNXFxuLS1cXG5tbS9kYW1vbi9LY29uZmlnLTk5LVxcbm1tL2RhbW9uL0tjb25maWc6MTAwOmNvbmZpZyBEQU1PTl9MUlVfU09SVFxcbm1tL2RhbW9uL0tjb25maWctMTAxLVxcdGJvb2wgXFxcIkJ1aWxkIERBTU9OLWJhc2VkIExSVS1saXN0cyBzb3J0aW5nIChEQU1PTl9MUlVfU09SVClcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE4OjE2OjI1Ljk3NzA0ODkyMVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTk5NzYzMjM3NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipBbmFseXppbmcgdGhlIERlcGVuZGVuY2llcyoqXG5cbkFscmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgaW5jb21wbGV0ZTsgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHVuZGVybHlpbmcgc3RydWN0dXJlLiBMZXQgbWUgc2VlLi4uIEkgbmVlZCB0byBzdGFydCBieSB0cmFjaW5nIHRoZSBkZXBlbmRlbmNpZXMuIEl0J3MgY3J1Y2lhbCB0byBpZGVudGlmeSB0aGUgaW50ZXJjb25uZWN0ZWQgZWxlbWVudHMuIEknbSB0aGlua2luZywgXCJXaGF0IGFyZSB0aGUgY29yZSBidWlsZGluZyBibG9ja3M/IFdoYXQgcmVsaWVzIG9uIHdoYXQ/XCIgV2l0aG91dCBmdWxseSBncmFzcGluZyB0aGUgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIHRoZXNlIGVsZW1lbnRzLCBJIGNhbid0IGFjY3VyYXRlbHkgYXNzZXNzIHRoZSBsYXJnZXIgc3lzdGVtLiBJJ20gZ29pbmcgdG8gZGlnIGludG8gdGhlIHJlbGF0aW9uc2hpcHMsIHVuZGVyc3RhbmQgaG93IGEgY2hhbmdlIGluIG9uZSBhcmVhIHdpbGwgdHJpY2tsZSB0aHJvdWdoLiBUaGlzIGlzIHRoZSBzdGFydGluZyBwb2ludCwgb2YgY291cnNlLCBidXQgaXQgaXMgY3JpdGljYWwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkxMjAsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE4OjE2OjM3Ljk3NDY4NDE5N1oiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQ0MzgyNTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIERBTU9OX0xSVV9TT1JUXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL2RhbW9uL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vZGFtb24vS2NvbmZpZz04OD1jb25maWcgREFNT05fUkVDTEFJTVxcbi0tXFxubW0vZGFtb24vS2NvbmZpZy05OS1cXG5tbS9kYW1vbi9LY29uZmlnOjEwMDpjb25maWcgREFNT05fTFJVX1NPUlRcXG5tbS9kYW1vbi9LY29uZmlnLTEwMS1cXHRib29sIFxcXCJCdWlsZCBEQU1PTi1iYXNlZCBMUlUtbGlzdHMgc29ydGluZyAoREFNT05fTFJVX1NPUlQpXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxODoxNjozOC4wMTkxMjc2MjRaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzUxMzAyMzczMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byBLY29uZmlnOiBMaW5lIDEwMCBhbmQgQmV5b25kKipcblxuT2theSwgbGV0J3MgemVybyBpbiBvbiBgbW0vZGFtb24vS2NvbmZpZ2AuIEknbSBzcGVjaWZpY2FsbHkgdGhpbmtpbmcgYXJvdW5kIGxpbmUgMTAwLCB3aGljaCBwcm9iYWJseSBkZWFscyB3aXRoIHNvbWUgREFNT04gY29uZmlndXJhdGlvbiBvcHRpb25zLiBNeSBpbml0aWFsIGh1bmNoIGlzIHRoYXQgaXQncyBsaWtlbHkgZGVmaW5pbmcgZmVhdHVyZXMgbGlrZSBwcm9maWxpbmcsIHRoZSB0eXBlIG9mIHJlZ2lvbnMgdG8gbW9uaXRvciwgb3IgcGVyaGFwcyBjb250cm9sIG92ZXIgc2FtcGxpbmcgaW50ZXJ2YWxzLiBJIGV4cGVjdCB0byBmaW5kIHNvbWUgaW50cmljYXRlIGRlcGVuZGVuY2llcyB0aGVyZSBhcyB3ZWxsLCBtYXliZSBjb25kaXRpb25hbCBvbiB0aGUga2VybmVsIHZlcnNpb24gb3Igb3RoZXIgbWVtb3J5IG1hbmFnZW1lbnQgZmVhdHVyZXMgYmVpbmcgZW5hYmxlZC4gSSdtIGhvcGluZyB0byBnZXQgYSBjbGVhcmVyIHBpY3R1cmUgb24gaG93IHRoZSBzcGVjaWZpYyBmZWF0dXJlIGlzIGNvbnRyb2xsZWQsIGFuZCBwb3RlbnRpYWxseSB3aGV0aGVyIHRoZXJlJ3Mgc29tZSBpbnRlcmVzdGluZyBkZWZhdWx0IGNvbmZpZ3VyYXRpb25zIHRoZXJlLiBJJ2xsIG5lZWQgdG8gcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgc3ludGF4IGFuZCB0aGUgdW5kZXJseWluZyBtYWNyb3MgdXNlZCB0byBnZXQgdGhlIGZ1bGwgbWVhbmluZyBvZiB0aGUgbGluZS5cblxuXG4iLCJJbnB1dFRva2VucyI6OTQxNywiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE4OjE2OjQxLjUzMjE1NDI3N1oiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MzY2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJtbS9kYW1vbi9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDkwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDkwOlxcdFxcdGRlcGVuZHMgb24gREFNT05fUEFERFJcXG4gIDkxOlxcdFxcdGhlbHBcXG4gIDkyOlxcdFxcdCAgVGhpcyBidWlsZHMgdGhlIERBTU9OLWJhc2VkIHJlY2xhbWF0aW9uIHN1YnN5c3RlbS4gIEl0IGZpbmRzIHBhZ2VzXFxuICA5MzpcXHRcXHQgIHRoYXQgbm90IGFjY2Vzc2VkIGZvciBhIGxvbmcgdGltZSAoY29sZCkgdXNpbmcgREFNT04gYW5kIHJlY2xhaW1cXG4gIDk0OlxcdFxcdCAgdGhvc2UuXFxuICA5NTpcXHRcXG4gIDk2OlxcdFxcdCAgVGhpcyBpcyBzdWdnZXN0ZWQgdG8gYmUgdXNlZCBhcyBhIHByb2FjdGl2ZSBhbmQgbGlnaHR3ZWlnaHRcXG4gIDk3OlxcdFxcdCAgcmVjbGFtYXRpb24gdW5kZXIgbGlnaHQgbWVtb3J5IHByZXNzdXJlLCB3aGlsZSB0aGUgdHJhZGl0aW9uYWwgcGFnZVxcbiAgOTg6XFx0XFx0ICBzY2FubmluZy1iYXNlZCByZWNsYW1hdGlvbiBpcyB1c2VkIGZvciBoZWF2eSBwcmVzc3VyZS5cXG4gIDk5OlxcdFxcbiAxMDA6XFx0Y29uZmlnIERBTU9OX0xSVV9TT1JUXFxuIDEwMTpcXHRcXHRib29sIFxcXCJCdWlsZCBEQU1PTi1iYXNlZCBMUlUtbGlzdHMgc29ydGluZyAoREFNT05fTFJVX1NPUlQpXFxcIlxcbiAxMDI6XFx0XFx0ZGVwZW5kcyBvbiBEQU1PTl9QQUREUlxcbiAxMDM6XFx0XFx0aGVscFxcbiAxMDQ6XFx0XFx0ICBUaGlzIGJ1aWxkcyB0aGUgREFNT04tYmFzZWQgTFJVLWxpc3RzIHNvcnRpbmcgc3Vic3lzdGVtLiAgSXQgdHJpZXMgdG9cXG4gMTA1OlxcdFxcdCAgcHJvdGVjdCBmcmVxdWVudGx5IGFjY2Vzc2VkIChob3QpIHBhZ2VzIHdoaWxlIHJhcmVseSBhY2Nlc3NlZCAoY29sZClcXG4gMTA2OlxcdFxcdCAgcGFnZXMgcmVjbGFpbWVkIGZpcnN0IHVuZGVyIG1lbW9yeSBwcmVzc3VyZS5cXG4gMTA3OlxcdFxcbiAxMDg6XFx0Y29uZmlnIERBTU9OX1NUQVRcXG4gMTA5OlxcdFxcdGJvb2wgXFxcIkJ1aWxkIGRhdGEgYWNjZXNzIG1vbml0b3Jpbmcgc3RhdCAoREFNT05fU1RBVClcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE4OjE2OjQxLjUzMjIxOTA0N1oiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDIwNzU1NDA3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBEZXBlbmRlbmNpZXMgb2YgREFNT05fTFJVX1NPUlQqKlxuXG5SaWdodCwgc28gYERBTU9OX0xSVV9TT1JUYCByZWxpZXMgb24gYERBTU9OX1BBRERSYCwgZG9lc24ndCBpdD8gU2VlbXMgc3RyYWlnaHRmb3J3YXJkLCBhIGNvbW1vbiBwYXR0ZXJuIGluIHRoaXMga2luZCBvZiBtZW1vcnkgbWFuYWdlbWVudCBzZXR1cC4gQmVmb3JlIEkgZ28gYW55IGZ1cnRoZXIsIEkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSByZWxhdGlvbnNoaXAgYW5kIHdoZXRoZXIgdGhlcmUgYXJlIGFueSBwb3RlbnRpYWwgcGl0ZmFsbHMuIFRoZSBkZXBlbmRlbmN5IGlzIGNsZWFyLCBidXQgSSBzaG91bGQgcHJvYmFibHkgY29uZmlybSBob3cuIEZpcnN0IHN0ZXAsIGxldCdzIGp1c3QgZ28gYWhlYWQgYW5kIGRpdmUgaW50byBgREFNT05fUEFERFJgLiBOZWVkIHRvIHVuZGVyc3RhbmQgKml0cyogYmVoYXZpb3IgdG8gdHJ1bHkgdW5kZXJzdGFuZCBgREFNT05fTFJVX1NPUlRgLiBUaGlzIGlzIHN0YW5kYXJkIHByYWN0aWNlIHJlYWxseS4gR290dGEgY2hlY2sgdGhlIGZvdW5kYXRpb25zIGJlZm9yZSBidWlsZGluZyBhbnl0aGluZyBzdWJzdGFudGlhbC4gTGV0J3Mgc2VlIHdoYXQncyB3aGF0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo5OTY4LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxODoxNjo0NC45NTI5NzczNDRaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUwNzQ4OTY3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBEQU1PTl9QQUREUlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9kYW1vbi9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL2RhbW9uL0tjb25maWc9Mzg9Y29uZmlnIERBTU9OX1ZBRERSXFxuLS1cXG5tbS9kYW1vbi9LY29uZmlnLTQ2LVxcbm1tL2RhbW9uL0tjb25maWc6NDc6Y29uZmlnIERBTU9OX1BBRERSXFxubW0vZGFtb24vS2NvbmZpZy00OC1cXHRib29sIFxcXCJEYXRhIGFjY2VzcyBtb25pdG9yaW5nIG9wZXJhdGlvbnMgZm9yIHRoZSBwaHlzaWNhbCBhZGRyZXNzIHNwYWNlXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxODoxNjo0NS4wMDM3MzE0MTFaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY1MjU4NTQyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6XG5cbioqQW5hbHl6aW5nIHRoZSBLY29uZmlnIEZpbGUgZm9yIE1lbW9yeSBNYW5hZ2VtZW50IENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCB0aW1lIHRvIGRpdmUgaW50byB0aGUgbml0dHktZ3JpdHR5LiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gaG93IG1lbW9yeSBtYW5hZ2VtZW50IGNvbmZpZ3VyYXRpb24gaXMgaGFuZGxlZCBpbiB0aGlzIGNvZGViYXNlLiBJJ20gZ29pbmcgdG8gcHVsbCB1cCBgbW0vZGFtb24vS2NvbmZpZ2AgYW5kIHpvb20gaW4gYXJvdW5kIGxpbmUgNDcuIFRoYXQncyB1c3VhbGx5IHdoZXJlIHRoZSBjb3JlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgZGVmaW5lZCBvciB3aGVyZSBhIHNwZWNpZmljIG1vZHVsZSdzIGNvbmZpZ3VyYXRpb24gc3RhcnRzLiBJJ20gaG9waW5nIHRvIHF1aWNrbHkgdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIGRpZmZlcmVudCBzZXR0aW5ncywgcGVyaGFwcyBpZGVudGlmeSBkZXBlbmRlbmNpZXMsIG9yIHVuY292ZXIgYW55IG5ldyBmZWF0dXJlcyBvciBjaGFuZ2VzIHJlbGF0ZWQgdG8gREFNT04ncyAoRGF0YSBBY2Nlc3MgTU9OaXRvcikgY29uZmlndXJhdGlvbi4gTGV0J3Mgc2VlIHdoYXQgaW50ZXJlc3RpbmcgdGlkYml0cyBsaW5lIDQ3IGhvbGRzLi4uIEknbSBleHBlY3Rpbmcgc29tZSBzdGFuZGFyZCBLY29uZmlnIHN5bnRheCwgYnV0IEknbSBrZWVwaW5nIG15IGV5ZXMgb3BlbiBmb3IgYW55dGhpbmcgb3V0IG9mIHRoZSBvcmRpbmFyeS4gSXQncyB0aW1lIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2Ygd2hhdCdzIGJlaW5nIGNvbnRyb2xsZWQgYW5kIGhvdy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAyODksIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxODoxNjo0OC42NTYzMjAzOTRaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzk2MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibW0vZGFtb24vS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA0MCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA0MDpcXHRcXHRkZXBlbmRzIG9uIERBTU9OIFxcdTAwMjZcXHUwMDI2IE1NVVxcbiAgNDE6XFx0XFx0c2VsZWN0IFBBR0VfSURMRV9GTEFHXFxuICA0MjpcXHRcXHRkZWZhdWx0IERBTU9OXFxuICA0MzpcXHRcXHRoZWxwXFxuICA0NDpcXHRcXHQgIFRoaXMgYnVpbGRzIHRoZSBkZWZhdWx0IGRhdGEgYWNjZXNzIG1vbml0b3Jpbmcgb3BlcmF0aW9ucyBmb3IgREFNT05cXG4gIDQ1OlxcdFxcdCAgdGhhdCB3b3JrIGZvciB2aXJ0dWFsIGFkZHJlc3Mgc3BhY2VzLlxcbiAgNDY6XFx0XFxuICA0NzpcXHRjb25maWcgREFNT05fUEFERFJcXG4gIDQ4OlxcdFxcdGJvb2wgXFxcIkRhdGEgYWNjZXNzIG1vbml0b3Jpbmcgb3BlcmF0aW9ucyBmb3IgdGhlIHBoeXNpY2FsIGFkZHJlc3Mgc3BhY2VcXFwiXFxuICA0OTpcXHRcXHRkZXBlbmRzIG9uIERBTU9OIFxcdTAwMjZcXHUwMDI2IE1NVVxcbiAgNTA6XFx0XFx0c2VsZWN0IFBBR0VfSURMRV9GTEFHXFxuICA1MTpcXHRcXHRkZWZhdWx0IERBTU9OXFxuICA1MjpcXHRcXHRoZWxwXFxuICA1MzpcXHRcXHQgIFRoaXMgYnVpbGRzIHRoZSBkZWZhdWx0IGRhdGEgYWNjZXNzIG1vbml0b3Jpbmcgb3BlcmF0aW9ucyBmb3IgREFNT05cXG4gIDU0OlxcdFxcdCAgdGhhdCB3b3JrcyBmb3IgdGhlIHBoeXNpY2FsIGFkZHJlc3Mgc3BhY2UuXFxuICA1NTpcXHRcXG4gIDU2OlxcdGNvbmZpZyBEQU1PTl9WQUREUl9LVU5JVF9URVNUXFxuICA1NzpcXHRcXHRib29sIFxcXCJUZXN0IGZvciBEQU1PTiBvcGVyYXRpb25zXFxcIiBpZiAhS1VOSVRfQUxMX1RFU1RTXFxuICA1ODpcXHRcXHRkZXBlbmRzIG9uIERBTU9OX1ZBRERSIFxcdTAwMjZcXHUwMDI2IEtVTklUPXlcXG4gIDU5OlxcdFxcdGRlZmF1bHQgS1VOSVRfQUxMX1RFU1RTXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE4OjE2OjQ4LjY1NjQwNjE5NFoiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTgxMDYyNzI5OTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyB0aGUgc3VtbWFyeSwgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEZXBlbmRlbmN5IEFuYWx5c2lzOiBEQU1PTl9QQUREUioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGBEQU1PTl9QQUREUmAgYW5kIGltbWVkaWF0ZWx5IGl0IHN0cmlrZXMgbWUgdGhhdCBpdHMgY29uZmlndXJhdGlvbiBoaW5nZXMgb24gdGhlIHByZXNlbmNlIG9mIGJvdGggYERBTU9OYCBhbmQgYE1NVWAuIFRoaXMgaXNuJ3Qgc3VycHJpc2luZywgZ2l2ZW4gdGhlIGFkZHJlc3MtYmFzZWQgbmF0dXJlIEknbSBhc3N1bWluZyBmb3IgaXRzIHB1cnBvc2UuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIHZlcmlmeSB0aGF0IHRoZXNlIGRlcGVuZGVuY2llcyBhcmUgcHJvcGVybHkgZGVmaW5lZCwgYW5kLCBnaXZlbiBpdHMgaW1wb3J0YW5jZSwgSSdsbCBzdGFydCBieSBjaGVja2luZyB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGFuZCBjb2RlIHJlbGF0ZWQgdG8gYERBTU9OYCBmaXJzdC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgdGhlIGNvbmZpZ3VyYXRpb24gYW5kIGxvZ2ljIGFyZSBjb3JyZWN0IGJlZm9yZSBJIGV2ZW4gY29uc2lkZXIgYE1NVWAsIGJ1dCBpdCdzIGNsZWFybHkgcmVsZXZhbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwODEyLCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxODoxODo0Ni43NjI2ODExNTdaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2NTY4NTA0MSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWVudWNvbmZpZyBEQU1PTlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9kYW1vbi9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxODoxODo0Ny4yMjgzNzcyMzhaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDc2OTA5NTQxNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJ20gZGVlcCBpbiBteSBkb21haW4gb2YgZXhwZXJ0aXNlOlxuXG4qKkNoZWNraW5nIHRoZSBgY29uZmlnIERBTU9OYCBDb25maWd1cmF0aW9uKipcblxuQWxyaWdodCwgbGV0J3MgdGFrZSBhIGxvb2sgYXQgdGhlIGBjb25maWcgREFNT05gLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJPa2F5LCB3aGF0J3MgdGhlIHN0YXRlIG9mIHRoZSBEeW5hbWljIEFkZHJlc3MgTW9uaXRvciAoREFNT04pIGNvbmZpZ3VyYXRpb24/XCIuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBpdCdzIGN1cnJlbnRseSBzZXQgdXAuIFdoYXQgcGFyYW1ldGVycyBhcmUgYWN0aXZlPyBBcmUgdGhlIGtleSBtb25pdG9yaW5nIGZlYXR1cmVzIGVuYWJsZWQ/IFNwZWNpZmljYWxseSwgSSdtIHRoaW5raW5nIGFib3V0IHRoaW5ncyBsaWtlIHRoZSBzYW1wbGluZyBpbnRlcnZhbCwgdGhlIHRhcmdldCBzZWxlY3Rpb24gY3JpdGVyaWEsIGFueSBmaWx0ZXJzIGluIHBsYWNlLCBhbmQgd2hhdCBhY3Rpb25zIGFyZSBiZWluZyB0cmlnZ2VyZWQgYmFzZWQgb24gdGhlIG1vbml0b3JpbmcgcmVzdWx0cy4gSXMgREFNT04gYmVoYXZpbmcgYXMgZXhwZWN0ZWQgZ2l2ZW4gdGhlIGN1cnJlbnQgd29ya2xvYWQsIG9yIGRvIEkgbmVlZCB0byBtYWtlIHNvbWUgYWRqdXN0bWVudHM/IEkgd2FudCB0byBtYWtlIHN1cmUgREFNT04gaXMgY29udHJpYnV0aW5nIHRvIHRoZSBpbnRlbmRlZCBiZWhhdmlvciBvZiB0aGUgc3lzdGVtLCB3aGV0aGVyIGl0IGJlIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbiwgcmVzb3VyY2UgYWxsb2NhdGlvbiwgcG93ZXIgc2F2aW5ncywgb3IgZXZlbiBzZWN1cml0eS4gVGltZSB0byBkaWcgaW4gYW5kIHZlcmlmeSFcblxuXG4iLCJJbnB1dFRva2VucyI6MTEwMzAsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE4OjE4OjUxLjk5NzQ3NjI2MloiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzIzMzM1NDYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIERBTU9OXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL2RhbW9uL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vZGFtb24vS2NvbmZpZz0zPW1lbnUgXFxcIkRhdGEgQWNjZXNzIE1vbml0b3JpbmdcXFwiXFxubW0vZGFtb24vS2NvbmZpZy00LVxcbm1tL2RhbW9uL0tjb25maWc6NTpjb25maWcgREFNT05cXG5tbS9kYW1vbi9LY29uZmlnLTYtXFx0Ym9vbCBcXFwiREFNT046IERhdGEgQWNjZXNzIE1vbml0b3JpbmcgRnJhbWV3b3JrXFxcIlxcbi0tXFxubW0vZGFtb24vS2NvbmZpZy0xNC1cXG5tbS9kYW1vbi9LY29uZmlnOjE1OmNvbmZpZyBEQU1PTl9ERUJVR19TQU5JVFlcXG5tbS9kYW1vbi9LY29uZmlnLTE2LVxcdGJvb2wgXFxcIkNoZWNrIHNhbml0eSBvZiBEQU1PTiBjb2RlXFxcIlxcbi0tXFxubW0vZGFtb24vS2NvbmZpZy0yNS1cXG5tbS9kYW1vbi9LY29uZmlnOjI2OmNvbmZpZyBEQU1PTl9LVU5JVF9URVNUXFxubW0vZGFtb24vS2NvbmZpZy0yNy1cXHRib29sIFxcXCJUZXN0IGZvciBkYW1vblxcXCIgaWYgIUtVTklUX0FMTF9URVNUU1xcbi0tXFxubW0vZGFtb24vS2NvbmZpZy0zNy1cXG5tbS9kYW1vbi9LY29uZmlnOjM4OmNvbmZpZyBEQU1PTl9WQUREUlxcbm1tL2RhbW9uL0tjb25maWctMzktXFx0Ym9vbCBcXFwiRGF0YSBhY2Nlc3MgbW9uaXRvcmluZyBvcGVyYXRpb25zIGZvciB2aXJ0dWFsIGFkZHJlc3Mgc3BhY2VzXFxcIlxcbi0tXFxubW0vZGFtb24vS2NvbmZpZy00Ni1cXG5tbS9kYW1vbi9LY29uZmlnOjQ3OmNvbmZpZyBEQU1PTl9QQUREUlxcbm1tL2RhbW9uL0tjb25maWctNDgtXFx0Ym9vbCBcXFwiRGF0YSBhY2Nlc3MgbW9uaXRvcmluZyBvcGVyYXRpb25zIGZvciB0aGUgcGh5c2ljYWwgYWRkcmVzcyBzcGFjZVxcXCJcXG4tLVxcbm1tL2RhbW9uL0tjb25maWctNTUtXFxubW0vZGFtb24vS2NvbmZpZzo1Njpjb25maWcgREFNT05fVkFERFJfS1VOSVRfVEVTVFxcbm1tL2RhbW9uL0tjb25maWctNTctXFx0Ym9vbCBcXFwiVGVzdCBmb3IgREFNT04gb3BlcmF0aW9uc1xcXCIgaWYgIUtVTklUX0FMTF9URVNUU1xcbi0tXFxubW0vZGFtb24vS2NvbmZpZy02Ny1cXG5tbS9kYW1vbi9LY29uZmlnOjY4OmNvbmZpZyBEQU1PTl9TWVNGU1xcbm1tL2RhbW9uL0tjb25maWctNjktXFx0Ym9vbCBcXFwiREFNT04gc3lzZnMgaW50ZXJmYWNlXFxcIlxcbi0tXFxubW0vZGFtb24vS2NvbmZpZy03NS1cXG5tbS9kYW1vbi9LY29uZmlnOjc2OmNvbmZpZyBEQU1PTl9TWVNGU19LVU5JVF9URVNUXFxubW0vZGFtb24vS2NvbmZpZy03Ny1cXHRib29sIFxcXCJUZXN0IGZvciBkYW1vbiBzeXNmcyBpbnRlcmZhY2VcXFwiIGlmICFLVU5JVF9BTExfVEVTVFNcXG4tLVxcbm1tL2RhbW9uL0tjb25maWctODctXFxubW0vZGFtb24vS2NvbmZpZzo4ODpjb25maWcgREFNT05fUkVDTEFJTVxcbm1tL2RhbW9uL0tjb25maWctODktXFx0Ym9vbCBcXFwiQnVpbGQgREFNT04tYmFzZWQgcmVjbGFpbSAoREFNT05fUkVDTEFJTSlcXFwiXFxuLS1cXG5tbS9kYW1vbi9LY29uZmlnLTk5LVxcbm1tL2RhbW9uL0tjb25maWc6MTAwOmNvbmZpZyBEQU1PTl9MUlVfU09SVFxcbm1tL2RhbW9uL0tjb25maWctMTAxLVxcdGJvb2wgXFxcIkJ1aWxkIERBTU9OLWJhc2VkIExSVS1saXN0cyBzb3J0aW5nIChEQU1PTl9MUlVfU09SVClcXFwiXFxuLS1cXG5tbS9kYW1vbi9LY29uZmlnLTEwNy1cXG5tbS9kYW1vbi9LY29uZmlnOjEwODpjb25maWcgREFNT05fU1RBVFxcbm1tL2RhbW9uL0tjb25maWctMTA5LVxcdGJvb2wgXFxcIkJ1aWxkIGRhdGEgYWNjZXNzIG1vbml0b3Jpbmcgc3RhdCAoREFNT05fU1RBVClcXFwiXFxuLS1cXG5tbS9kYW1vbi9LY29uZmlnLTExNS1cXG5tbS9kYW1vbi9LY29uZmlnOjExNjpjb25maWcgREFNT05fU1RBVF9FTkFCTEVEX0RFRkFVTFRcXG5tbS9kYW1vbi9LY29uZmlnLTExNy1cXHRib29sIFxcXCJFbmFibGUgREFNT05fU1RBVCBieSBkZWZhdWx0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxODoxODo1Mi4wNjk4MTM5NjhaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY1MzY0Njc3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCB1c2VyOlxuXG4qKkRpdmluZyBpbnRvIEtjb25maWc6IG1tL2RhbW9uKipcblxuT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkgYW5kIGRpdmUgaW50byB0aGUgYG1tL2RhbW9uL0tjb25maWdgIGZpbGUuIEknbSBzcGVjaWZpY2FsbHkgaW50ZXJlc3RlZCBpbiB3aGF0J3MgaGFwcGVuaW5nIGFyb3VuZCBsaW5lIDUg4oCTIHRoYXQncyBvZnRlbiB3aGVyZSB0aGUgY29yZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIGRlY2xhcmVkLiBJIGV4cGVjdCBpdCdsbCBiZSB0aGUgc3RhcnRpbmcgcG9pbnQgZm9yIERBTU9OJ3MgZmVhdHVyZSBzZXQuIEknbSBhbnRpY2lwYXRpbmcgdG8gc2VlIHRoZSBmdW5kYW1lbnRhbCBzZXR0aW5ncyBmb3IgZW5hYmxpbmcvZGlzYWJsaW5nIERBTU9OIGFuZCBwb3RlbnRpYWxseSBzb21lIGluaXRpYWwgY29udHJvbCBvcHRpb25zLCBwb3NzaWJseSBpbmNsdWRpbmcgaG93IGl0IGludGVyYWN0cyB3aXRoIG90aGVyIG1lbW9yeSBtYW5hZ2VtZW50IHN1YnN5c3RlbXMuIExldCdzIHNlZSBpZiB0aGlzIGxpbmVzIHVwIHdpdGggbXkgZXhpc3RpbmcgbWVudGFsIG1vZGVsIG9mIHRoZSBEQU1PTiBjb25maWd1cmF0aW9uLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlIHdoZXRoZXIgdGhleSdyZSB1c2luZyBgbWVudWNvbmZpZ2Agb3IgYGNvbmZpZ2AgZGlyZWN0aXZlcywgY29uZGl0aW9uYWwgZGVwZW5kZW5jaWVzLCBhbmQgYW55IGhpbnRzIGFib3V0IGRlZmF1bHQgdmFsdWVzLiBJJ20ga2VlbiB0byBzZWUgaWYgdGhpcyByZWZsZWN0cyBhbnkgcmVjZW50IGNoYW5nZXMgdG8gREFNT04uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyMDExLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTg6MTg6NTUuNzIzNDY0NDUxWiIsIlNlcSI6MzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4MzEzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJtbS9kYW1vbi9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHRcXG4gICAzOlxcdG1lbnUgXFxcIkRhdGEgQWNjZXNzIE1vbml0b3JpbmdcXFwiXFxuICAgNDpcXHRcXG4gICA1OlxcdGNvbmZpZyBEQU1PTlxcbiAgIDY6XFx0XFx0Ym9vbCBcXFwiREFNT046IERhdGEgQWNjZXNzIE1vbml0b3JpbmcgRnJhbWV3b3JrXFxcIlxcbiAgIDc6XFx0XFx0aGVscFxcbiAgIDg6XFx0XFx0ICBUaGlzIGJ1aWxkcyBhIGZyYW1ld29yayB0aGF0IGFsbG93cyBrZXJuZWwgc3Vic3lzdGVtcyB0byBtb25pdG9yXFxuICAgOTpcXHRcXHQgIGFjY2VzcyBmcmVxdWVuY3kgb2YgZWFjaCBtZW1vcnkgcmVnaW9uLiBUaGUgaW5mb3JtYXRpb24gY2FuIGJlIHVzZWZ1bFxcbiAgMTA6XFx0XFx0ICBmb3IgcGVyZm9ybWFuY2UtY2VudHJpYyBEUkFNIGxldmVsIG1lbW9yeSBtYW5hZ2VtZW50LlxcbiAgMTE6XFx0XFxuICAxMjpcXHRcXHQgIFNlZSBodHRwczovL3d3dy5rZXJuZWwub3JnL2RvYy9odG1sL2xhdGVzdC9tbS9kYW1vbi9pbmRleC5odG1sIGZvclxcbiAgMTM6XFx0XFx0ICBtb3JlIGluZm9ybWF0aW9uLlxcbiAgMTQ6XFx0XFxuICAxNTpcXHRjb25maWcgREFNT05fREVCVUdfU0FOSVRZXFxuICAxNjpcXHRcXHRib29sIFxcXCJDaGVjayBzYW5pdHkgb2YgREFNT04gY29kZVxcXCJcXG4gIDE3OlxcdFxcdGRlcGVuZHMgb24gREFNT05cXG4gIDE4OlxcdFxcdGhlbHBcXG4gIDE5OlxcdFxcdCAgVGhpcyBlbmFibGVzIGFkZGl0aW9uYWwgREFNT04gZGVidWdnaW5nLXB1cnBvc2Ugc2FuaXR5IGNoZWNrcyBpblxcbiAgMjA6XFx0XFx0ICBEQU1PTiBjb2RlLiAgVGhpcyBjYW4gYmUgdXNlZnVsIGZvciBmaW5kaW5nIGJ1Z3MsIGJ1dCBpbXBvc2VcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTg6MTg6NTUuNzIzNjUyMTcxWiIsIlNlcSI6MzUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxNTk1NjcyNjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi5cblxuKipDb25maWd1cmF0aW9uIERlcGVuZGVuY2llczogQSBNZW50YWwgQ2hlY2tsaXN0KipcblxuQWxyaWdodCwgc28gYERBTU9OYCBpcyB0aGUgZnVuZGFtZW50YWwgYnVpbGRpbmcgYmxvY2ssIHRoZSBjb3JlIGNvbmZpZ3VyYXRpb24uIEV2ZXJ5dGhpbmcgZWxzZSBzZWVtcyB0byBzdGVtIGZyb20gdGhlcmUuIE5vdywgdGhlIG5leHQgb25lIGlzIGBEQU1PTl9QQUREUmAuIEl0J3MgcHJldHR5IGNsZWFyIHRoYXQgYERBTU9OX1BBRERSYCBpcyBnb2luZyB0byByZWx5IG9uIGJvdGggYERBTU9OYCBiZWluZyBlbmFibGVkIGFuZCB0aGUgcHJlc2VuY2Ugb2YgYW4gTU1VIGluIHRoZSBzeXN0ZW0uIFRoYXQgbWFrZXMgc2Vuc2U7IHBoeXNpY2FsIGFkZHJlc3Npbmcgc2VlbXMgaW5oZXJlbnRseSB0aWVkIHRvIG1lbW9yeSBtYW5hZ2VtZW50IHVuaXRzLlxuXG5OZXh0IHVwIGlzIGBEQU1PTl9MUlVfU09SVGAsIGFuZCBpdCBhcHBlYXJzIHRoYXQgdGhpcyBvbmUncyBkaXJlY3RseSBkZXBlbmRlbnQgb24gYERBTU9OX1BBRERSYC4gTm8gc3VycHJpc2VzIHRoZXJlOyBzb3J0aW5nIGJhc2VkIG9uIExlYXN0IFJlY2VudGx5IFVzZWQgd291bGQgbWFrZSBzZW5zZSBhZnRlciB0aGUgcGh5c2ljYWwgYWRkcmVzcyBtYXBwaW5nIGlzIGVzdGFibGlzaGVkLiBJIG5lZWQgdG8gYmUgc3VyZS5cblxuRmluYWxseSwgYFNBTVBMRV9EQU1PTl9NVElFUmAgaGFzIGEgZGVwZW5kZW5jeSDigJMgYnV0IHdoYXQgaXMgaXQ/IEkgbmVlZCB0byBjaGVjayB0aGUgcmVsZXZhbnQgS2NvbmZpZyBmaWxlcyB0byBnZXQgdGhlIGZ1bGwgcGljdHVyZS4gTXkgZ3Vlc3MgaXMgZWl0aGVyIHRoZSBtYWluIGBzYW1wbGVzL2RhbW9uL0tjb25maWdgIGZpbGUgb3IgdGhlIG92ZXJhcmNoaW5nIGBzYW1wbGVzL0tjb25maWdgIGZpbGUgd2l0aGluIHRoZSBrZXJuZWwgc291cmNlIHRyZWUgc2hvdWxkIGhhdmUgdGhlIGFuc3dlci4gSSdsbCB0YWtlIGEgbG9vayBpbiBvbmUgb2YgdGhlc2UgbG9jYXRpb25zLCBmb3IgbW9yZSBkZXRhaWxzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjUzNCwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTg6MTg6NTkuODgzMjIzMzkyWiIsIlNlcSI6MzYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTk1NDM1NTUzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBTQU1QTEVfREFNT05fTVRJRVJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwic2FtcGxlcy9kYW1vbi9LY29uZmlnPTE3PWNvbmZpZyBTQU1QTEVfREFNT05fUFJDTFxcbi0tXFxuc2FtcGxlcy9kYW1vbi9LY29uZmlnLTI5LVxcbnNhbXBsZXMvZGFtb24vS2NvbmZpZzozMDpjb25maWcgU0FNUExFX0RBTU9OX01USUVSXFxuc2FtcGxlcy9kYW1vbi9LY29uZmlnLTMxLVxcdGJvb2wgXFxcIkRBTU9OIHNhbXBsZSBtb2R1bGUgZm9yIG1lbW9yeSB0aWVyaW5nXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxODoxOTowMi4wNzg2NjM4ODZaIiwiU2VxIjozNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTUwODY5NjExOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIGBzYW1wbGVzL2RhbW9uL0tjb25maWdgIGZpbGUsIHNwZWNpZmljYWxseSBhcm91bmQgbGluZSAzMCwgZnJvbSBhbiBleHBlcnQncyBwZXJzcGVjdGl2ZTpcblxuKipEaXZpbmcgaW50byB0aGUgREFNT04gS2NvbmZpZyoqXG5cbk9rYXksIHNvIEknbSBwdWxsaW5nIHVwIHRoZSBgc2FtcGxlcy9kYW1vbi9LY29uZmlnYCBmaWxlIGFuZCBob25pbmcgaW4gb24gbGluZSAzMCBvciB0aGVyZWFib3V0cy4gSW1tZWRpYXRlbHksIEknbSB0aGlua2luZyBhYm91dCB0aGUgc3RhbmRhcmQgS2NvbmZpZyBzeW50YXguIEknbSBleHBlY3RpbmcgdG8gc2VlIGEgY29uZmlndXJhdGlvbiBvcHRpb24gZGVjbGFyZWQgdGhlcmUuIEl0J3MgbGlrZWx5IHJlbGF0ZWQgdG8gc29tZSBhc3BlY3Qgb2YgdGhlIERhdGEgQWNjZXNzIE1vbml0b3IgKERBTU9OKSBmdW5jdGlvbmFsaXR5IHdpdGhpbiB0aGUga2VybmVsIHNhbXBsZXMuIExpbmUgMzAgaXMgbGlrZWx5IHByb3ZpZGluZyBhIGRlZmF1bHQgb3IgYSBjb25kaXRpb25hbCBkZXBlbmRlbmN5IGZvciBhIGZlYXR1cmUgLSBtYXliZSBlbmFibGluZyBhIHNwZWNpZmljIG1vbml0b3JpbmcgbW9kZSwgYSBwYXJ0aWN1bGFyIGRhdGEgY29sbGVjdGlvbiBtZXRob2QsIG9yIHRoZSBpbmNsdXNpb24gb2YgY2VydGFpbiBkZWJ1ZyBmZWF0dXJlcyBmb3IgdGhpcyBEQU1PTiBleGFtcGxlLiBHaXZlbiB0aGUgY29udGV4dCwgSSdtIGd1ZXNzaW5nIGl0IG1pZ2h0IGJlIHNvbWV0aGluZyBsaWtlIGVuYWJsaW5nL2Rpc2FibGluZyBhIHNwZWNpZmljIERBTU9OIGNvbmZpZ3VyYXRpb24gc2FtcGxlLCBvciBwb3RlbnRpYWxseSBhIHN1Yi1tb2R1bGUgb2YgdGhlIERBTU9OIGluZnJhc3RydWN0dXJlIGl0c2VsZiwgYmFzZWQgb24gb3RoZXIgbW9yZSBmdW5kYW1lbnRhbCBjb3JlIERBTU9OIHNldHRpbmdzLiBJJ20gYWxzbyByZWFkeSB0byBzZWUgc29tZSBoZWxwIHRleHQgY2xhcmlmeWluZyB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgcGFydGljdWxhciBzZXR0aW5nLCBlc3BlY2lhbGx5IGluIHRoZSBjb250ZXh0IG9mIHRoaXMgc3BlY2lmaWMgc2FtcGxlIGNvZGUuIEknbSBpbnRlcmVzdGVkIHRvIHNlZSB0aGUgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIHRoaXMgY29uZmlnIG9wdGlvbiBhbmQgb3RoZXIgcmVsYXRlZCBvbmVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjk4MywiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE4OjE5OjA3LjU4NzM2MzExM1oiLCJTZXEiOjM4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5ODc4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJzYW1wbGVzL2RhbW9uL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMjAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgMjA6XFx0XFx0aGVscFxcbiAgMjE6XFx0XFx0ICBUaGlzIGJ1aWxkcyBEQU1PTiBzYW1wbGUgbW9kdWxlIGZvciBhY2Nlc3MtYXdhcmUgcHJvYWN0aXZlXFxuICAyMjpcXHRcXHQgIHJlY2xhbWF0aW9uLlxcbiAgMjM6XFx0XFxuICAyNDpcXHRcXHQgIFRoZSBtb2R1bGUgcmVjZWl2ZXMgYSBwaWQsIG1vbml0b3IgYWNjZXNzIHRvIHRoZSB2aXJ0dWFsIGFkZHJlc3NcXG4gIDI1OlxcdFxcdCAgc3BhY2Ugb2YgdGhlIHByb2Nlc3MsIGZpbmQgbWVtb3J5IHJlZ2lvbnMgdGhhdCBub3QgYWNjZXNzZWQsIGFuZFxcbiAgMjY6XFx0XFx0ICBwcm9hY3RpdmVseSByZWNsYWltIHRoZSByZWdpb25zLlxcbiAgMjc6XFx0XFxuICAyODpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IE4uXFxuICAyOTpcXHRcXG4gIDMwOlxcdGNvbmZpZyBTQU1QTEVfREFNT05fTVRJRVJcXG4gIDMxOlxcdFxcdGJvb2wgXFxcIkRBTU9OIHNhbXBsZSBtb2R1bGUgZm9yIG1lbW9yeSB0aWVyaW5nXFxcIlxcbiAgMzI6XFx0XFx0ZGVwZW5kcyBvbiBEQU1PTiBcXHUwMDI2XFx1MDAyNiBEQU1PTl9QQUREUlxcbiAgMzM6XFx0XFx0aGVscFxcbiAgMzQ6XFx0XFx0ICBUaGlzIGJ1aWxkcyBEQU1PTiBzYW1wbGUgbW9kdWxlIGZvciBtZW1vcnkgdGllcmluZy5cXG4gIDM1OlxcdFxcbiAgMzY6XFx0XFx0ICBUaGUgbW9kdWxlIGFzc3VtZXMgdGhlIHN5c3RlbSBpcyBjb25zdHJ1Y3RlZCB3aXRoIHR3byBOVU1BIG5vZGVzLFxcbiAgMzc6XFx0XFx0ICB3aGljaCBzZWVtcyBhcyBsb2NhbCBhbmQgcmVtb3RlIG5vZGVzIHRvIGFsbCBDUFVzLiAgRm9yIGV4YW1wbGUsXFxuICAzODpcXHRcXHQgIG5vZGUwIGlzIGZvciBERFI1IERSQU1zIGNvbm5lY3RlZCB2aWEgRElNTSwgd2hpbGUgbm9kZTEgaXMgZm9yIEREUjRcXG4gIDM5OlxcdFxcdCAgRFJBTXMgY29ubmVjdGVkIHZpYSBDWEwuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE4OjE5OjA3LjU4NzQ2NDA4M1oiLCJTZXEiOjM5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4MTQyNjg3NDE0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBzZWUuLi5cblxuKipFeGFtaW5pbmcgdGhlIERBTU9OIFNhbXBsZSBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyoqXG5cbkFscmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIGBTQU1QTEVfREFNT05fTVRJRVJgIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBSaWdodCwgaXQncyBwcmV0dHkgY2xlYXIgdGhhdCBpdHMgZnVuY3Rpb25hbGl0eSBoaW5nZXMgb24gYm90aCBgREFNT05gIGFuZCBgREFNT05fUEFERFJgIGJlaW5nIGVuYWJsZWQuIFNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2ggZnJvbSBhIGRlcGVuZGVuY3kgc3RhbmRwb2ludC5cblxuTm93LCB3aGVyZSBhcmUgdGhlc2Ugb3B0aW9ucyBkZWZpbmVkIGluIHJlbGF0aW9uIHRvIHRoZSBzYW1wbGVzPyBBaCwgcmlnaHQuIEl0IGhpdHMgbWU6IGBzYW1wbGVzL0tjb25maWdgICpzaG91bGQqIGluY2x1ZGUgYHNhbXBsZXMvZGFtb24vS2NvbmZpZ2AuIEknbGwgd2FudCB0byB2ZXJpZnkgdGhhdC4gTmVlZCB0byBkZWx2ZSBpbnRvIGBzYW1wbGVzL0tjb25maWdgIHNwZWNpZmljYWxseSBub3cuIFRoYXQncyB0aGUga2V5IGZpbGUgSSBuZWVkIHRvIGV4YW1pbmUgZm9yIHRoZSBicm9hZGVyIGNvbnRleHQgYW5kIGVuc3VyZSBldmVyeXRoaW5nIGlzIHByb3Blcmx5IGhvb2tlZCB1cC4gSSBuZWVkIHRvIGNoZWNrIGhvdyBpdCBhY3R1YWxseSBwdWxscyBpbiB0aGUgbmVjZXNzYXJ5IERBTU9OIGVsZW1lbnRzIGZyb20gdGhlIHNhbXBsZSBkaXJlY3Rvcnkgc3RydWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzU4OCwiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTg6MTk6MTUuNzMwMTU0MzM4WiIsIlNlcSI6NDAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTM3MzEwMTY3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNvdXJjZSBcXFwic2FtcGxlcy9kYW1vbi9LY29uZmlnXFxcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJzYW1wbGVzL0tjb25maWc9MzI1PXNvdXJjZSBcXFwic2FtcGxlcy9ydXN0L0tjb25maWdcXFwiXFxuc2FtcGxlcy9LY29uZmlnLTMyNi1cXG5zYW1wbGVzL0tjb25maWc6MzI3OnNvdXJjZSBcXFwic2FtcGxlcy9kYW1vbi9LY29uZmlnXFxcIlxcbnNhbXBsZXMvS2NvbmZpZy0zMjgtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE4OjE5OjE3Ljg2NzQ2OTc5NFoiLCJTZXEiOjQxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDMwMzcwODkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHByZXNlbnRlZCBhcyBhIHN1bW1hcnkgZnJvbSBteSBwZXJzcGVjdGl2ZSwga2VlcGluZyBpbiBtaW5kIG15IGV4cGVydGlzZTpcblxuKipFeGFtaW5pbmcgS2NvbmZpZyBJbmNsdXNpb24gYW5kIFNBTVBMRVMgRGVwZW5kZW5jeSoqXG5cbkFscmlnaHQsIEknbSBsb29raW5nIGF0IHRoaXMgS2NvbmZpZyBzdHJ1Y3R1cmUsIGFuZCBpdCBzZWVtcyBsaWtlIHRoZSBgc2FtcGxlcy9LY29uZmlnYCBmaWxlIGlzIGJlaW5nIGRpcmVjdGx5IGluY2x1ZGVkIHdpdGhpbiB0aGUgbWFpbiBgS2NvbmZpZ2AuIFRoYXQncyBzdGFuZGFyZCBwcmFjdGljZSwgYnV0IGl0IGltbWVkaWF0ZWx5IHJhaXNlcyBhIHF1ZXN0aW9uIGluIG15IG1pbmQ6IElzIHRoaXMgYFNBTVBMRVNgIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGFjdHVhbGx5IG5lY2Vzc2FyeT8gV2UndmUgZ290IGEgbW9kdWxhciBidWlsZCBzeXN0ZW0sIHNvIGxldCdzIHRoaW5rIHRocm91Z2ggaWYgdGhhdCBgU0FNUExFU2AgY29uZmlnIGlzIG5lZWRlZCBvciBub3QuIEknbGwgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgbG9naWMgcmVsaWVzIG9uIGBTQU1QTEVTYCBhbmQgaWYgdGhlcmUncyBhIGJldHRlciB3YXkgdG8gaGFuZGxlIHRoZXNlIHNhbXBsZSBjb25maWd1cmF0aW9ucy4gV2UnbGwgbmVlZCB0byBiZSBjbGVhciBhYm91dCBpZiB0aGUgYFNBTVBMRVNgIGNvbmZpZyBpcyB1c2VkIGZvciBjb250cm9sIG9yIHNlbGVjdGlvbi4gSSdsbCBldmFsdWF0ZSB0aGUgYnJvYWRlciBpbXBsaWNhdGlvbnMgZm9yIGJ1aWxkIHRpbWUgYW5kIG92ZXJhbGwgbWFpbnRhaW5hYmlsaXR5LiBJdCBjb3VsZCBiZSByZWR1bmRhbnQgb3IgZXZlbiBjcmVhdGluZyB1bm5lY2Vzc2FyeSBkZXBlbmRlbmNpZXMuIEkgbmVlZCB0byBkaWcgaW50byB0aGUgZGVwZW5kZW5jaWVzIGFuZCB0aGUgY29uZGl0aW9uYWwgbG9naWMgaGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTM5MjUsIk91dHB1dFRva2VucyI6MTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxODoxOToyMS44OTc4NDM5NTRaIiwiU2VxIjo0MiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxMjE5MTYxNDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWVudWNvbmZpZyBTQU1QTEVTXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcInNhbXBsZXMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbnNhbXBsZXMvS2NvbmZpZzoyOm1lbnVjb25maWcgU0FNUExFU1xcbnNhbXBsZXMvS2NvbmZpZy0zLVxcdGJvb2wgXFxcIlNhbXBsZSBrZXJuZWwgY29kZVxcXCJcXG4tLVxcbnNhbXBsZXMvcnVzdC9LY29uZmlnLTItXFxuc2FtcGxlcy9ydXN0L0tjb25maWc6MzptZW51Y29uZmlnIFNBTVBMRVNfUlVTVFxcbnNhbXBsZXMvcnVzdC9LY29uZmlnLTQtXFx0Ym9vbCBcXFwiUnVzdCBzYW1wbGVzXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxODoxOToyNC4wMTk3NjYzNTJaIiwiU2VxIjo0MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODE1MzQ0MDI3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIERBTU9OIFBhdGNoIGZvciBTYWZldHkgYW5kIEZ1bmN0aW9uYWxpdHkqKlxuXG5Pa2F5LCBzbyBJIHNlZSB0aGF0IHRoaXMgcGF0Y2ggaGluZ2VzIG9uIHRoZSBgU0FNUExFU2AgY29tcG9uZW50IOKAkyBpdCdzIGNydWNpYWwgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIG92ZXJhbGwgaW1wYWN0LiBGcm9tIHdoYXQgSSBjYW4gdGVsbCwgaXQgdG91Y2hlcyBib3RoIGBtbS9kYW1vbi9scnVfc29ydC5jYCBhbmQgYHNhbXBsZXMvZGFtb24vbXRpZXIuY2AuIFRoYXQncyBpbnRlcmVzdGluZywgYmVjYXVzZSBvbmUgaXMgY29yZSBrZXJuZWwgY29kZSAobWVtb3J5IG1hbmFnZW1lbnQsIHNwZWNpZmljYWxseSkgYW5kIHRoZSBvdGhlciBpcyBhIHNhbXBsZSBtb2R1bGUuIEJvdGggYXJlICpyZWFjaGFibGUqLCBhbmQgcHJlc3VtYWJseSBmdW5jdGlvbmFsLCB3aGljaCBtZWFucyB3ZSBuZWVkIHRvIHRyZWF0IHRoZW0gYm90aCBhcyBhcmVhcyBvZiBpbnRlcmVzdC4gVGhlIHNhbXBsZSBjb2RlIGJlaW5nIGZ1bmN0aW9uYWwgYWxzbyBtZWFucyBpdCdzIGZ1enphYmxlIGlmIHRoZSBtYWludGFpbmVycyBoYXZlIGVuYWJsZWQgdGhhdCBhcyBhIHRlc3QuXG5cbk15IGltbWVkaWF0ZSBpbXByZXNzaW9uIGlzIHRoYXQgdGhpcyBpcyBhICpmdW5jdGlvbmFsKiBjaGFuZ2UuIFRoZSBwYXRjaCBpcyBhZGRpbmcgdmFsaWRhdGlvbiB0byB0aGUgbW9kdWxlIHBhcmFtZXRlcnMsIHNwZWNpZmljYWxseSBgYWN0aXZlX21lbV9icGAsIGBub2RlMF9tZW1fdXNlZF9icGAsIGFuZCBgbm9kZTBfbWVtX2ZyZWVfYnBgLiBUaGUgaW50ZW50aW9uIHNlZW1zIHRvIGJlIHRvIHByZXZlbnQgcG90ZW50aWFsbHkgZGlzYXN0cm91cyBvdXRjb21lcyDigJMgbGlrZSBkaXZpc2lvbiBieSB6ZXJvIG9yIG1lbW9yeSBjb3JydXB0aW9uIOKAkyBieSBjaGVja2luZyBmb3IgaW52YWxpZCBwYXJhbWV0ZXIgdmFsdWVzIGFuZCByZXR1cm5pbmcgYW4gZXJyb3IgaWYgdGhleSdyZSBkZXRlY3RlZC4gVGhhdOKAmXMgZ29vZCBoeWdpZW5lLCBidXQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHNwZWNpZmljcy5cblxuTm93LCBsZXQncyBkcmlsbCBkb3duLiBJJ2xsIGNoZWNrIGBkYW1vbl9scnVfc29ydF9hZGRfcXVvdGFfZ29hbHNgLiBIYW5nIG9uLCB0aGF0J3MgYSBzdGF0aWMgZnVuY3Rpb24gd2l0aGluIGBtbS9kYW1vbi9scnVfc29ydC5jYC4gT2theSwgc28gaXTigJlzIG5vdCBkaXJlY3RseSBleHBvc2VkIHRvIGV4dGVybmFsIGNhbGxzLiBMZXQgbWUgc2VlIHdoYXQgZnVuY3Rpb25zICpkbyogY2FsbCBpdC4gV2FpdCBhIG1pbnV0ZSwgYWxsIHRoZSBvdGhlciBzdXBwb3J0aW5nIGZ1bmN0aW9ucyBhcmUgKmFsc28qIHN0YXRpYzogYGRhbW9uX2xydV9zb3J0X2FwcGx5X3BhcmFtZXRlcnNgLCBgZGFtb25fbHJ1X3NvcnRfY29tbWl0X2lucHV0c19mbmAsIGBkYW1vbl9scnVfc29ydF90dXJuYCwgYGRhbW9uX2xydV9zb3J0X2VuYWJsZWRfc3RvcmVgLCBhbmQgYGRhbW9uX2xydV9zb3J0X2NvbW1pdF9pbnB1dHNfc3RvcmVgLiBUaGF0IGlzIHVudXN1YWwhIFdoYXQgYXJlIHRoZSBub24tc3RhdGljIGZ1bmN0aW9ucyBpbiB0aGlzIGZpbGU/IEkgbmVlZCB0byBrbm93IHRoZSBlbnRyeSBwb2ludHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0Mjg4LCJPdXRwdXRUb2tlbnMiOjY4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzYxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE4OjE5OjMyLjE3MzIwOTA2NVoiLCJTZXEiOjQ0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODYxNDk1MTUsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5bYS16QS1aX11bYS16QS1aMC05X10qIFthLXpBLVpfXVthLXpBLVowLTlfXSpcXFxcKFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9kYW1vbi9scnVfc29ydC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxODoxOTozMi4yNTkzNjYzNloiLCJTZXEiOjQ1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MjIwMjg2MjY1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgc3VtbWFyeSwgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYXMgaWYgaXQgd2VyZSBteSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqSWRlbnRpZnlpbmcgTm9uLVN0YXRpYyBGdW5jdGlvbnMgaW4gYSBGaWxlKipcblxuQWxyaWdodCwgc28gdGhlIHRhc2sgYXQgaGFuZCBpcyB0byBwaW5wb2ludCB0aGUgbm9uLXN0YXRpYyBmdW5jdGlvbnMgd2l0aGluIGEgZ2l2ZW4gZmlsZS4gTXkgaW1tZWRpYXRlIGFwcHJvYWNoLCBhbmQgSSB0aGluayBpdCdzIHRoZSBtb3N0IHByYWdtYXRpYywgaXMgdG8gc2ltcGx5ICpyZWFkKiB0aGUgZmlsZS4gUGFyc2luZyB0aGUgY29udGVudCB0byBleHRyYWN0IHRoZSByZWxldmFudCBkZWNsYXJhdGlvbnMgaXMgdGhlIG1vc3QgZGlyZWN0IHdheSB0byB0YWNrbGUgdGhpcy4gSSdtIG5vdCBnb2luZyB0byBnZXQgYm9nZ2VkIGRvd24gaW4gYW55IG92ZXJseSBjb21wbGV4IGFuYWx5c2lzIGF0IHRoaXMgc3RhZ2UuIFdlIGRvbid0IG5lZWQgdG8gY29uc2lkZXIgYW55IGZvcm0gb2YgQVNULWJhc2VkIGFuYWx5c2lzIG9yIGhlYXZ5LWR1dHkgY29tcGlsZXIgdG9vbGluZyBhdCB0aGUgc3RhcnQsIHRoYXQgY291bGQgYmUgb3ZlcmtpbGwuIEl0J3MgYmVzdCB0byBwcm9jZWVkIHdpdGggYSBzaW1wbGUgYXBwcm9hY2ggZmlyc3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1MTU5LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTg6MTk6MzcuNDc5NjU0OTc1WiIsIlNlcSI6NDYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MTMzNzQxNCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXmludCBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vZGFtb24vbHJ1X3NvcnQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTg6MTk6MzcuNTcwOTk5Njg5WiIsIlNlcSI6NDcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU5NzM4Mjc5ODgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgSW5pdGlhbGl6YXRpb24gaW4gREFNT04gTFJVIFNvcnRpbmcqKlxuXG5SaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoZSBEQU1PTiBMUlUgc29ydGluZyBtb2R1bGUuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBwaW5wb2ludCB0aGUgbW9kdWxlIGluaXRpYWxpemF0aW9uIHJvdXRpbmVzLiBUaGUga2VybmVsJ3MgaW5pdGlhbGl6YXRpb24gcHJvY2VzcyBvZnRlbiBsZXZlcmFnZXMgbWFjcm9zIGxpa2UgYG1vZHVsZV9pbml0YCBvciBgX19pbml0YCB0byBkZXNpZ25hdGUgd2hpY2ggZnVuY3Rpb25zIGFyZSByZXNwb25zaWJsZSBmb3Igc2V0dGluZyB0aGluZ3MgdXAgd2hlbiB0aGUgbW9kdWxlIGlzIGxvYWRlZCBvciBkdXJpbmcgc3lzdGVtIHN0YXJ0dXAuIEknbGwgc3RhcnQgYnkgc2VhcmNoaW5nIGZvciB0aG9zZSBzeW1ib2xzIHdpdGhpbiBgbW0vZGFtb24vbHJ1X3NvcnQuY2AuIFRoYXQgc2hvdWxkIHF1aWNrbHkgZ2l2ZSBtZSBhIGhhbmRsZSBvbiBob3cgdGhpcyBwYXJ0aWN1bGFyIGFzcGVjdCBvZiBEQU1PTiBpcyBicm91Z2h0IHRvIGxpZmUgYW5kIGludGVncmF0ZWQgaW50byB0aGUgYnJvYWRlciBtZW1vcnkgbWFuYWdlbWVudCBpbmZyYXN0cnVjdHVyZS4gVW5kZXJzdGFuZGluZyB0aGUgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UgaXMgY3J1Y2lhbCB0byBncmFzcCB0aGUgbW9kdWxlJ3MgYmVoYXZpb3IgYW5kIGRlcGVuZGVuY2llcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTUzNzUsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxODoxOTo0My41NDQ4MzA3MDhaIiwiU2VxIjo0OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgyMDM4MTQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl9faW5pdCBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vZGFtb24vbHJ1X3NvcnQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9kYW1vbi9scnVfc29ydC5jPTUzMj1tb2R1bGVfcGFyYW1fY2Ioa2RhbW9uZF9waWQsIFxcdTAwMjZrZGFtb25kX3BpZF9wYXJhbV9vcHMsIE5VTEwsIDA0MDApO1xcbm1tL2RhbW9uL2xydV9zb3J0LmMtNTMzLVxcbm1tL2RhbW9uL2xydV9zb3J0LmM6NTM0OnN0YXRpYyBpbnQgX19pbml0IGRhbW9uX2xydV9zb3J0X2luaXQodm9pZClcXG5tbS9kYW1vbi9scnVfc29ydC5jLTUzNS17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE4OjE5OjQzLjYyNjg3NTUyM1oiLCJTZXEiOjQ5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MDI0MzA3Nzc4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqSW5pdGlhbCBBc3Nlc3NtZW50IG9mIGEgTW9kdWxlIEluaXRpYWxpemF0aW9uIEZ1bmN0aW9uKipcblxuQWxyaWdodCwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBmdW5jdGlvbiwgYGRhbW9uX2xydV9zb3J0X2luaXRgLiBUaGUgbmFtZSBzdHJvbmdseSBzdWdnZXN0cyB0aGlzIGlzIHRoZSBpbml0aWFsaXphdGlvbiByb3V0aW5lIGZvciBhIERhbW9uIExSVSBzb3J0aW5nIGNvbXBvbmVudCwgd2hpY2ggcGlxdWVzIG15IGludGVyZXN0IGltbWVkaWF0ZWx5LiBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBsYW5kc2NhcGUgaGVyZS4gTXkgZmlyc3QgcXVlc3Rpb24gaXMgYWx3YXlzOiB3aGF0J3MgdGhlIGJyb2FkZXIgcGljdHVyZT8gSXMgdGhpcyBhIHNlbGYtY29udGFpbmVkIG1vZHVsZSwgb3IgZG9lcyBpdCBleHBvcnQgYW55IGZ1bmN0aW9uYWxpdHkgZm9yIHVzZSBieSBvdGhlciBwYXJ0cyBvZiB0aGUga2VybmVsPyBBcmUgdGhlcmUgYW55IGV4cG9ydGVkIGZ1bmN0aW9ucyB0aGF0IEkgc2hvdWxkIGtub3cgYWJvdXQ/IEtub3dpbmcgdGhlIGV4cG9ydGVkIHN5bWJvbHMgaXMgdGhlIGNydXggb2YgdW5kZXJzdGFuZGluZyBob3cgdGhpcyBjb21wb25lbnQgaW50ZXJhY3RzIHdpdGggdGhlIHJlc3Qgb2YgdGhlIGtlcm5lbC4gVGhpcyBpcyBteSBzdGFydGluZyBwb2ludCwgYmVmb3JlIEkgZGVsdmUgaW50byBhbnkgb2YgdGhlIGludGVybmFscy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTU3MzIsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxODoxOTo0OC42NTExODYwNzJaIiwiU2VxIjo1MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQxODUxMjY4MywiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiRVhQT1JUX1NZTUJPTFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9kYW1vbi9scnVfc29ydC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxODoxOTo0OS4wNjk3MDY0OTVaIiwiU2VxIjo1MSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjcyNDg4OTM0MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE1vZHVsZSdzIEVudHJ5IFBvaW50cyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgZmlsZSwgYW5kIGl0J3Mgc3RydWN0dXJlZCBhcyBhIG1vZHVsZSB0aGF0IHJlZ2lzdGVycyBzeXNmcyBwYXJhbWV0ZXJzIGFuZCBzcGlucyB1cCBhIGt0aHJlYWQuIFRoZSBpbW1lZGlhdGUgaXNzdWUgdGhhdCBqdW1wcyBvdXQgaXMgdGhlIGFic2VuY2Ugb2YgYW55IG5vbi1zdGF0aWMgZnVuY3Rpb25zLiBUaGF0IHRocm93cyBhIHdyZW5jaCBpbiB0aGUgdHlwaWNhbCBgRm9jdXNTeW1ib2xzYCBhcHByb2FjaC4gSSBoYXZlIHRvIHRoaW5rIGNhcmVmdWxseSBhYm91dCBob3cgdG8gZnVsZmlsbCB0aGUgcHJvbXB0J3MgcmVxdWVzdC5cblxuV2FpdCBhIHNlY29uZCwgc3RhdGljIGZ1bmN0aW9ucyBhcmUgKmFsbG93ZWQqIGluIGBGb2N1c1N5bWJvbHNgLCBqdXN0IHdpdGggYSBjYXZlYXQuIElmIHRoZXkncmUgbm90IGlubGluZWQgYnkgdGhlIGNvbXBpbGVyLCB0aGV5J3JlIHZhbGlkIGVudHJ5cG9pbnRzLiBUaGUgcHJvbXB0IGVtcGhhc2l6ZXMgcHJlZmVycmluZyBub24tc3RhdGljLCBub24taW5saW5lZCBmdW5jdGlvbnMuIFNpbmNlIHRob3NlIGFyZSBhYnNlbnQgaGVyZSwgSSBoYXZlIHRvIGZpbmQgdGhlIGV4Y2VwdGlvbnMgdG8gdGhhdCBydWxlLiBUaGUgYmVzdCB3YXkgdG8gZG8gdGhhdCBpcyB0byBsb29rIGZvciBmdW5jdGlvbnMgdGhhdCwgZXZlbiBpZiBzdGF0aWMsICpjYW4ndCogYmUgaW5saW5lZC4gSSByZW1lbWJlciB0aGUgcHJvbXB0IGdhdmUgYW4gaW1wb3J0YW50IGd1aWRlbGluZSwgZm9jdXNpbmcgb24gc3ltYm9sIGFkZHJlc3Nlcy5cblxuVGhhdCBtZWFucywgSSBuZWVkIHRvIGZvY3VzIG9uIGNhbGxiYWNrcy4gTXkgaW1tZWRpYXRlIHRob3VnaHQgZ29lcyB0byB0aGUgZnVuY3Rpb25zIHVzZWQgYnkgYG1vZHVsZV9wYXJhbV9jYmAuIFRob3NlIGFyZSBkZWZpbml0ZWx5IG5vdCBpbmxpbmVkLiBTcGVjaWZpY2FsbHksIEknbSBiZXR0aW5nIGBkYW1vbl9scnVfc29ydF9lbmFibGVkX3N0b3JlYCBhbmQgYGRhbW9uX2xydV9zb3J0X2NvbW1pdF9pbnB1dHNfc3RvcmVgIGZpdCB0aGUgYmlsbCBiZWNhdXNlIHRoZXkncmUgcmVnaXN0ZXJlZCB3aXRoIGBtb2R1bGVfcGFyYW1fY2JgLiBMZXQncyBjb25maXJtIHRoYXQgYnkgY2hlY2tpbmcgb3V0IGBtb2R1bGVfcGFyYW1fY2JgIGluIGBtbS9kYW1vbi9scnVfc29ydC5jYC4gVGhhdCBzaG91bGQgcHJvdmlkZSB0aGUgbmVlZGVkIGNsYXJpdHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1OTc4LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTk3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE4OjE5OjU1Ljc5NDU5OTYwOFoiLCJTZXEiOjUyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzE2MTEwODYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibW9kdWxlX3BhcmFtX2NiXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL2RhbW9uL2xydV9zb3J0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vZGFtb24vbHJ1X3NvcnQuYz0zODE9c3RhdGljIGNvbnN0IHN0cnVjdCBrZXJuZWxfcGFyYW1fb3BzIGNvbW1pdF9pbnB1dHNfcGFyYW1fb3BzID0ge1xcbi0tXFxubW0vZGFtb24vbHJ1X3NvcnQuYy0zODYtXFxubW0vZGFtb24vbHJ1X3NvcnQuYzozODc6bW9kdWxlX3BhcmFtX2NiKGNvbW1pdF9pbnB1dHMsIFxcdTAwMjZjb21taXRfaW5wdXRzX3BhcmFtX29wcywgXFx1MDAyNmNvbW1pdF9pbnB1dHMsIDA2MDApO1xcbm1tL2RhbW9uL2xydV9zb3J0LmMtMzg4LVxcbi0tXFxubW0vZGFtb24vbHJ1X3NvcnQuYz00NDQ9c3RhdGljIGNvbnN0IHN0cnVjdCBrZXJuZWxfcGFyYW1fb3BzIGFkZHJfdW5pdF9wYXJhbV9vcHMgPSB7XFxuLS1cXG5tbS9kYW1vbi9scnVfc29ydC5jLTQ0OC1cXG5tbS9kYW1vbi9scnVfc29ydC5jOjQ0OTptb2R1bGVfcGFyYW1fY2IoYWRkcl91bml0LCBcXHUwMDI2YWRkcl91bml0X3BhcmFtX29wcywgXFx1MDAyNmFkZHJfdW5pdCwgMDYwMCk7XFxubW0vZGFtb24vbHJ1X3NvcnQuYy00NTAtTU9EVUxFX1BBUk1fREVTQyhhZGRyX3VuaXQsXFxuLS1cXG5tbS9kYW1vbi9scnVfc29ydC5jPTQ4OT1zdGF0aWMgY29uc3Qgc3RydWN0IGtlcm5lbF9wYXJhbV9vcHMgZW5hYmxlZF9wYXJhbV9vcHMgPSB7XFxuLS1cXG5tbS9kYW1vbi9scnVfc29ydC5jLTQ5My1cXG5tbS9kYW1vbi9scnVfc29ydC5jOjQ5NDptb2R1bGVfcGFyYW1fY2IoZW5hYmxlZCwgXFx1MDAyNmVuYWJsZWRfcGFyYW1fb3BzLCBcXHUwMDI2ZW5hYmxlZCwgMDYwMCk7XFxubW0vZGFtb24vbHJ1X3NvcnQuYy00OTUtTU9EVUxFX1BBUk1fREVTQyhlbmFibGVkLFxcbi0tXFxubW0vZGFtb24vbHJ1X3NvcnQuYz01MjE9c3RhdGljIGNvbnN0IHN0cnVjdCBrZXJuZWxfcGFyYW1fb3BzIGtkYW1vbmRfcGlkX3BhcmFtX29wcyA9IHtcXG4tLVxcbm1tL2RhbW9uL2xydV9zb3J0LmMtNTMxLSAqL1xcbm1tL2RhbW9uL2xydV9zb3J0LmM6NTMyOm1vZHVsZV9wYXJhbV9jYihrZGFtb25kX3BpZCwgXFx1MDAyNmtkYW1vbmRfcGlkX3BhcmFtX29wcywgTlVMTCwgMDQwMCk7XFxubW0vZGFtb24vbHJ1X3NvcnQuYy01MzMtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE4OjE5OjU1Ljg2NjIxNTc2M1oiLCJTZXEiOjUzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3OTk5MzcwODIzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcyBvbiB3aGF0IEknbSBhYm91dCB0byBkbzpcblxuKipDaGVja2luZyBgY29tbWl0X2lucHV0c19wYXJhbV9vcHNgKipcblxuQWxyaWdodCwgSSdtIGdvaW5nIHRvIHRha2UgYSBsb29rIGF0IGBjb21taXRfaW5wdXRzX3BhcmFtX29wc2AuIFRoaXMgaXMgcHJvYmFibHkgd2hlcmUgdGhlIGNvcmUgbG9naWMgcmVzaWRlcywgYW5kIEkgbmVlZCB0byB1bmRlcnN0YW5kIGV4YWN0bHkgaG93IGl0IGZ1bmN0aW9ucy4gSSBleHBlY3QgaXQgdG8gaGFuZGxlIHRoZSBjcnVjaWFsIHRhc2sgb2YgY29tbWl0dGluZyBvciBzYXZpbmcgY2VydGFpbiBpbnB1dHMgb3IgcGFyYW1ldGVycyDigJMgbGlrZWx5IHJlbGF0ZWQgdG8gYSBtb2RlbCwgZGF0YXNldCwgb3IgY29uZmlndXJhdGlvbiDigJMgdG8gcGVyc2lzdGVudCBzdG9yYWdlIG9yIGEgcHJvY2Vzc2luZyBwaXBlbGluZS4gSSdtIGdvaW5nIHRvIHNjcnV0aW5pemUgdGhlIGNvZGUgd2l0aGluIHRoaXMgZnVuY3Rpb24gdG8gdW5kZXJzdGFuZCB0aGUgc3BlY2lmaWMgb3BlcmF0aW9ucyBpdCBwZXJmb3JtcywgbG9va2luZyBmb3IgdGhpbmdzIGxpa2UgZGF0YSB2YWxpZGF0aW9uLCB0cmFuc2Zvcm1hdGlvbnMsIGVycm9yIGhhbmRsaW5nLCBhbmQgdGhlIGRlc3RpbmF0aW9uIG9mIHRoZSBjb21taXR0ZWQgZGF0YS4gTXkgZXhwZXJpZW5jZSB0ZWxscyBtZSB0aGF0IHRoaXMgaXMgYSBjcml0aWNhbCBzZWN0aW9uIHRoYXQgbmVlZHMgY2FyZWZ1bCByZXZpZXcsIHNvIEknbGwgYmUgbWV0aG9kaWNhbCBhbmQgYXR0ZW50aXZlIHRvIGRldGFpbC4gSSdtIGdvaW5nIHRvIGxvb2sgZm9yIGFueSBwb3RlbnRpYWwgYm90dGxlbmVja3MsIGluZWZmaWNpZW5jaWVzLCBvciBhcmVhcyB0aGF0IG1pZ2h0IGxlYWQgdG8gdW5leHBlY3RlZCBiZWhhdmlvciBpbiBhIHByb2R1Y3Rpb24gZW52aXJvbm1lbnQuIEknbGwgZm9jdXMgb24gaG93IGl0IGludGVyZmFjZXMgd2l0aCBvdGhlciBjb21wb25lbnRzIG9mIHRoZSBzeXN0ZW0sIHBheWluZyBjbG9zZSBhdHRlbnRpb24gdG8gZGF0YSBkZXBlbmRlbmNpZXMgYW5kIHBvdGVudGlhbCBzaWRlIGVmZmVjdHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3MDI5LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTg6MjA6MDMuODY1NTg5MjQ2WiIsIlNlcSI6NTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MDg2MDk4NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb21taXRfaW5wdXRzX3BhcmFtX29wc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9kYW1vbi9scnVfc29ydC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL2RhbW9uL2xydV9zb3J0LmM9MzQ5PXN0YXRpYyBpbnQgZGFtb25fbHJ1X3NvcnRfY29tbWl0X2lucHV0c19zdG9yZShjb25zdCBjaGFyICp2YWwsXFxuLS1cXG5tbS9kYW1vbi9scnVfc29ydC5jLTM4MC1cXG5tbS9kYW1vbi9scnVfc29ydC5jOjM4MTpzdGF0aWMgY29uc3Qgc3RydWN0IGtlcm5lbF9wYXJhbV9vcHMgY29tbWl0X2lucHV0c19wYXJhbV9vcHMgPSB7XFxubW0vZGFtb24vbHJ1X3NvcnQuYy0zODItXFx0LmZsYWdzID0gS0VSTkVMX1BBUkFNX09QU19GTF9OT0FSRyxcXG4tLVxcbm1tL2RhbW9uL2xydV9zb3J0LmMtMzg2LVxcbm1tL2RhbW9uL2xydV9zb3J0LmM6Mzg3Om1vZHVsZV9wYXJhbV9jYihjb21taXRfaW5wdXRzLCBcXHUwMDI2Y29tbWl0X2lucHV0c19wYXJhbV9vcHMsIFxcdTAwMjZjb21taXRfaW5wdXRzLCAwNjAwKTtcXG5tbS9kYW1vbi9scnVfc29ydC5jLTM4OC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTg6MjA6MDMuOTU2NDU1NzNaIiwiU2VxIjo1NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU1NDg5Nzk2MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkNoZWNraW5nIGBlbmFibGVkX3BhcmFtX29wc2AqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGRpdmUgaW4uIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIkxldCdzIGNoZWNrIGBlbmFibGVkX3BhcmFtX29wc2AuXCIgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbiBvZiB0aGlzIGZlYXR1cmUsIHBhcnRpY3VsYXJseSBpdHMgY3VycmVudCBzZXR0aW5ncy4gVGhpcyBsaWtlbHkgaW5kaWNhdGVzIHRoZSBzcGVjaWZpYyBvcGVyYXRpb25zIG9yIHBhcmFtZXRlciBtb2RpZmljYXRpb25zIHRoYXQgYXJlIGFjdGl2ZWx5IGVuYWJsZWQgd2l0aGluIHRoaXMgcGFydGljdWxhciBzdGFnZSBvZiB0aGUgcHJvY2Vzcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgdGhlcmUgYXJlIGFueSBwYXJhbWV0ZXJzIHRoYXQgYXJlLCBvciBhcmVuJ3QsIGJlaW5nIGFsdGVyZWQuIEkgc2hvdWxkIGJlIGFibGUgdG8gcXVpY2tseSBkZXRlcm1pbmUgaWYgdGhlcmUgYXJlIHNldHRpbmdzIHRoYXQgY291bGQgaW1wYWN0IHBlcmZvcm1hbmNlIG9yIGJlaGF2aW9yLiBUaGUgZ29hbCBpcyBsaWtlbHkgdG8gZW5zdXJlIHRoYXQgdGhpcyBhbGlnbnMgd2l0aCB0aGUgZXhwZWN0ZWQgd29ya2Zsb3cgb3IgdG8gZGlhZ25vc2UgYSBwb3RlbnRpYWwgZGlzY3JlcGFuY3kuIExldCdzIGRpZyBpbiBhbmQgbWFrZSBzdXJlIG5vdGhpbmcgdW51c3VhbCBpcyBoYXBwZW5pbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3NTMyLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTg6MjA6MDcuNTExMzU3NDJaIiwiU2VxIjo1NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYxMzU1NDA2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImVuYWJsZWRfcGFyYW1fb3BzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL2RhbW9uL2xydV9zb3J0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vZGFtb24vbHJ1X3NvcnQuYz00ODM9c3RhdGljIGludCBkYW1vbl9scnVfc29ydF9lbmFibGVkX2xvYWQoY2hhciAqYnVmZmVyLFxcbi0tXFxubW0vZGFtb24vbHJ1X3NvcnQuYy00ODgtXFxubW0vZGFtb24vbHJ1X3NvcnQuYzo0ODk6c3RhdGljIGNvbnN0IHN0cnVjdCBrZXJuZWxfcGFyYW1fb3BzIGVuYWJsZWRfcGFyYW1fb3BzID0ge1xcbm1tL2RhbW9uL2xydV9zb3J0LmMtNDkwLVxcdC5zZXQgPSBkYW1vbl9scnVfc29ydF9lbmFibGVkX3N0b3JlLFxcbi0tXFxubW0vZGFtb24vbHJ1X3NvcnQuYy00OTMtXFxubW0vZGFtb24vbHJ1X3NvcnQuYzo0OTQ6bW9kdWxlX3BhcmFtX2NiKGVuYWJsZWQsIFxcdTAwMjZlbmFibGVkX3BhcmFtX29wcywgXFx1MDAyNmVuYWJsZWQsIDA2MDApO1xcbm1tL2RhbW9uL2xydV9zb3J0LmMtNDk1LU1PRFVMRV9QQVJNX0RFU0MoZW5hYmxlZCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTg6MjA6MDcuNTcyNzIyMTI2WiIsIlNlcSI6NTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEyNjA0NzE0MTk3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBzZWUsIHRoaW5raW5nIHRocm91Z2ggdGhpcy4uLlxuXG4qKkZvY3VzIFN5bWJvbCBDYW5kaWRhdGVzIGZvciBDb25zaWRlcmF0aW9uKipcblxuQWxyaWdodCwgSSdtIHRha2luZyBhIGxvb2sgYXQgcG90ZW50aWFsIGBGb2N1c1N5bWJvbHNgIGhlcmUuIEJhc2VkIG9uIHdoYXQgSSd2ZSBzZWVuLCBgZGFtb25fbHJ1X3NvcnRfY29tbWl0X2lucHV0c19zdG9yZWAgYW5kIGBkYW1vbl9scnVfc29ydF9lbmFibGVkX3N0b3JlYCBzZWVtIGxpa2Ugc3Ryb25nIGNvbnRlbmRlcnMuIFRoZWlyIG5hbWVzIHN1Z2dlc3QgdGhleSdyZSBjZW50cmFsIHRvIHRoZSBMUlUgc29ydGluZyBwcm9jZXNzIHdpdGhpbiBEYW1vbiwgd2hpY2ggaXMgZGVmaW5pdGVseSBhIGtleSBhcmVhIHRvIG1vbml0b3IuIEkgbmVlZCB0byBkaWcgaW50byB0aGVpciBmdW5jdGlvbnMgdG8gY29uZmlybSwgb2YgY291cnNlLCBidXQgdGhlIGluaXRpYWwgaW5kaWNhdGlvbiBpcyBwcm9taXNpbmcuXG5cblRoZW4gSSBnZXQgdGhpbmtpbmcsIHNob3VsZCBJIGNvbnNpZGVyIHRoZSBmaWxlIGBzYW1wbGVzL2RhbW9uL210aWVyLmNgIGluIG15IGFuYWx5c2lzPyBJJ2xsIHByb2JhYmx5IG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGl0IGRvZXMgYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGVzZSBvdGhlciBjb21wb25lbnRzLCBiZWNhdXNlIGl0ICptaWdodCogYmUgcmVsZXZhbnQuIEkgd2lsbCBuZWVkIHRvIGxvb2sgaW50byBpdCB0byBiZSBzdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzk2NSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE4OjIwOjIwLjE3NzQ0MDA1M1oiLCJTZXEiOjU4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzk2MDcyNTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibW9kdWxlX3BhcmFtX2NiXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcInNhbXBsZXMvZGFtb24vbXRpZXIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJzYW1wbGVzL2RhbW9uL210aWVyLmM9NDY9c3RhdGljIGJvb2wgZW5hYmxlZCBfX3JlYWRfbW9zdGx5O1xcbnNhbXBsZXMvZGFtb24vbXRpZXIuYzo0Nzptb2R1bGVfcGFyYW1fY2IoZW5hYmxlZCwgXFx1MDAyNmVuYWJsZWRfcGFyYW1fb3BzLCBcXHUwMDI2ZW5hYmxlZCwgMDYwMCk7XFxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTQ4LU1PRFVMRV9QQVJNX0RFU0MoZW5hYmxlZCwgXFxcIkVuYWJsZSBvciBkaXNhYmxlIERBTU9OX1NBTVBMRV9NVElFUlxcXCIpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxODoyMDoyMC4yNTcwNTQ1OThaIiwiU2VxIjo1OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDM5MTI0OTgxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIHJldmlld2luZyB0aGlzOlxuXG4qKkludmVzdGlnYXRpbmcgYGVuYWJsZWRfcGFyYW1fb3BzYCBpbiBgc2FtcGxlcy9kYW1vbi9tdGllci5jYCoqXG5cbk9rYXksIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgc3lzdGVtIGlzIG1hbmFnaW5nIGl0cyBwYXJhbWV0ZXIgb3BlcmF0aW9ucywgYW5kIHRoZSBgc2FtcGxlcy9kYW1vbi9tdGllci5jYCBmaWxlIHNlZW1zIGxpa2UgYSBnb29kIHBsYWNlIHRvIHN0YXJ0LiBJJ20gZ29pbmcgdG8gY2hlY2sgdGhlIGBlbmFibGVkX3BhcmFtX29wc2AgdmFyaWFibGUgc3BlY2lmaWNhbGx5LiBNeSBleHBlY3RhdGlvbiBpcyB0aGF0IHRoaXMgdmFyaWFibGUgbGlrZWx5IGNvbnRyb2xzIHdoaWNoIHBhcmFtZXRlciBvcGVyYXRpb25zIGFyZSBjdXJyZW50bHkgYWN0aXZlIG9yIGFsbG93ZWQgd2l0aGluIHRoaXMgdGllcmVkIG1lbW9yeSBjb250ZXh0LiBJJ2xsIG5lZWQgdG8gc2VlIGhvdyBpdCdzIGluaXRpYWxpemVkLCBob3cgaXQncyBtb2RpZmllZCwgYW5kIG1vc3QgaW1wb3J0YW50bHksIGhvdyBpdHMgdmFsdWUgaXMgdXNlZCB0byBkZXRlcm1pbmUgdGhlIGJlaGF2aW9yIG9mIHRoZSBEYW1vbiBzYW1wbGluZyBwcm9jZXNzIHdpdGhpbiB0aGlzIG11bHRpLXRpZXJlZCBhcmNoaXRlY3R1cmUuIEkgbmVlZCB0byBiZSBhYmxlIHRvIHF1aWNrbHkgdW5kZXJzdGFuZCB0aGUgY29udHJvbCBmbG93IHJlbGF0ZWQgdG8gdGhpcyB2YXJpYWJsZSwgYXMgaXQncyBsaWtlbHkgYSBjcml0aWNhbCBjb21wb25lbnQgaW4gdW5kZXJzdGFuZGluZyB0aGUgb3ZlcmFsbCBjb25maWd1cmF0aW9uIG9mIHRoZSB0aWVyaW5nIGJlaGF2aW9yLiBJJ20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIHdoZXRoZXIgdGhpcyB2YXJpYWJsZSBpcyByZWFkLCBvciBtb2RpZmllZCwgdXNpbmcgYXRvbWljIG9wZXJhdGlvbnMgb3IgYW55IGtpbmQgb2Ygc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXMsIGFzIHRoZXNlIG9wZXJhdGlvbnMgbWF5IHNpZ25hbCBhIG11bHRpdGhyZWFkZWQgZW52aXJvbm1lbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4MzQ3LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTg6MjA6MjQuNjQ4MzA3ODU1WiIsIlNlcSI6NjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDQwNjI0NTQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZW5hYmxlZF9wYXJhbV9vcHNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwic2FtcGxlcy9kYW1vbi9tdGllci5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcInNhbXBsZXMvZGFtb24vbXRpZXIuYz0zOD1zdGF0aWMgaW50IGRhbW9uX3NhbXBsZV9tdGllcl9lbmFibGVfc3RvcmUoXFxuLS1cXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtNDAtXFxuc2FtcGxlcy9kYW1vbi9tdGllci5jOjQxOnN0YXRpYyBjb25zdCBzdHJ1Y3Qga2VybmVsX3BhcmFtX29wcyBlbmFibGVkX3BhcmFtX29wcyA9IHtcXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtNDItXFx0LnNldCA9IGRhbW9uX3NhbXBsZV9tdGllcl9lbmFibGVfc3RvcmUsXFxuLS1cXG5zYW1wbGVzL2RhbW9uL210aWVyLmM9NDY9c3RhdGljIGJvb2wgZW5hYmxlZCBfX3JlYWRfbW9zdGx5O1xcbnNhbXBsZXMvZGFtb24vbXRpZXIuYzo0Nzptb2R1bGVfcGFyYW1fY2IoZW5hYmxlZCwgXFx1MDAyNmVuYWJsZWRfcGFyYW1fb3BzLCBcXHUwMDI2ZW5hYmxlZCwgMDYwMCk7XFxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTQ4LU1PRFVMRV9QQVJNX0RFU0MoZW5hYmxlZCwgXFxcIkVuYWJsZSBvciBkaXNhYmxlIERBTU9OX1NBTVBMRV9NVElFUlxcXCIpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxODoyMDoyNC43NTIzNzg2NTlaIiwiU2VxIjo2MSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjIyMzA2NDEyMDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQ29uZmlndXJhdGlvbiBcdTAwMjYgU3ltYm9sIERlZXAgRGl2ZSoqXG5cbk9rYXksIHNvIEknbSBob25pbmcgaW4gb24gYGRhbW9uX3NhbXBsZV9tdGllcl9lbmFibGVfc3RvcmVgIGFzIGEga2V5IGZvY3VzLiBNYWtlcyBzZW5zZS4gTGV0J3Mgc2VlIHdoYXQgdGhlIGNvbmZpZ3VyYXRpb24gbmVlZHMgYXJlLCBzbyBJJ20gY2hlY2tpbmcgZm9yIHdoYXQgdG8gZW5hYmxlOiBgQ09ORklHX0RBTU9OX0xSVV9TT1JUYCwgYENPTkZJR19TQU1QTEVfREFNT05fTVRJRVJgLCBgQ09ORklHX0RBTU9OYCwgYENPTkZJR19EQU1PTl9QQUREUmAsIGFuZCBgQ09ORklHX1NBTVBMRVNgLlxuXG5GaXJzdCwgSSBuZWVkIHRvIGNvbmZpcm0gYENPTkZJR19EQU1PTl9MUlVfU09SVGAgZG9lc24ndCByZWx5IG9uIGBDT05GSUdfREFNT05fUkVDTEFJTWAuIEdvb2QsIGl0IHNlZW1zIHRoZXkncmUgaW5kZXBlbmRlbnQuIE5vdywgYENPTkZJR19TQU1QTEVfREFNT05fTVRJRVJgLi4uIE9rYXksIGl0cyBkZXBlbmRlbmNpZXMgYXJlIGBEQU1PTiBcdTAwMjZcdTAwMjYgREFNT05fUEFERFJgLlxuXG5TbywgdGhlIGNvbmZpZ3VyYXRpb25zIEkgKnJlYWxseSogbmVlZCB0byBlbmFibGUgYXJlOiBgREFNT05fTFJVX1NPUlRgLCBgU0FNUExFX0RBTU9OX01USUVSYCwgYERBTU9OYCwgYERBTU9OX1BBRERSYCwgYW5kIGBTQU1QTEVTYC5cblxuQnV0IHdhaXQsIGFyZSBgREFNT05gIGFuZCBgREFNT05fUEFERFJgIGFjdHVhbGx5IHNlbGVjdGVkIG9yIGRlZmF1bHQ/IGBEQU1PTmAgaXMgYSBib29sZWFuLiBgREFNT05fUEFERFJgIGRlcGVuZHMgb24gYERBTU9OIFx1MDAyNlx1MDAyNiBNTVVgLiBTbywgSSdsbCBzdHJlYW1saW5lIHRoaXMgbGlzdDogYERBTU9OYCwgYERBTU9OX1BBRERSYCwgYERBTU9OX0xSVV9TT1JUYCwgYFNBTVBMRVNgLCBhbmQgYFNBTVBMRV9EQU1PTl9NVElFUmAuIFRoaXMgaXMgdGhlIGNvcmUgc2V0LlxuXG5Ob3csIGxldCdzIHZlcmlmeSBgZGFtb25fbHJ1X3NvcnRfYWRkX3F1b3RhX2dvYWxzYCBpbiBgbW0vZGFtb24vbHJ1X3NvcnQuY2AgaXMgaW1wb3J0YW50LiBJdCdzIHN0YXRpYywgd2hpY2ggaXMgYSBrZXkgbm90ZSwgYnV0IGl0J3MgdGhlIGZ1bmN0aW9uIHRoYXQgaGFkIHRoZSBtb2RpZmljYXRpb25zLiBDYW4gSSBhZGQgaXQgdG8gYEZvY3VzU3ltYm9sc2A/IFN1cmUsIEkgY2FuIGFkZCBpdCwgYnV0IGl0J3MgKmxpa2VseSogdG8gYmUgaW5saW5lZC4gSWYgaXQncyBpbmxpbmVkLCBzeXprYWxsZXIgbWlnaHQgbm90IGJlIGFibGUgdG8gdHJhY2UgaXQgZGlyZWN0bHksIGJ1dCBpdCBzaG91bGQgdHJhY2UgdGhlIGNhbGxlciwgc28gdGhhdCdzIG9rYXkuIFRoZSBjYWxsZXIgb2YgdGhhdCBpcyBgZGFtb25fbHJ1X3NvcnRfYXBwbHlfcGFyYW1ldGVyc2AsIHdoaWNoIGlzIGFsc28gc3RhdGljLiBUaGUgY2FsbGVycyBvZiAqdGhhdCogYXJlIGBkYW1vbl9scnVfc29ydF9jb21taXRfaW5wdXRzX3N0b3JlYCBhbmQgYGRhbW9uX2xydV9zb3J0X3R1cm5gLiBTbywgSSdsbCBhZGQgdGhvc2UgdGhyZWUgc3ltYm9scyBhcyB3ZWxsOiBgZGFtb25fbHJ1X3NvcnRfY29tbWl0X2lucHV0c19zdG9yZWAsIGBkYW1vbl9scnVfc29ydF9lbmFibGVkX3N0b3JlYCwgYW5kIGBkYW1vbl9zYW1wbGVfbXRpZXJfZW5hYmxlX3N0b3JlYC5cblxuQWxyaWdodCwganVzdCB0byBtYWtlIHN1cmUgSSdtIHNvbGlkIG9uIHRoaXMuLi4gbGV0J3MgZG91YmxlLWNoZWNrIHRoZSBmdW5jdGlvbiBgZGFtb25fc2FtcGxlX210aWVyX2J1aWxkX2N0eGAgaW4gYHNhbXBsZXMvZGFtb24vbXRpZXIuY2AuIEdvdHRhIGJlIHRob3JvdWdoLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODg0NywiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUyNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxODoyMDo0Ni45ODMwMjM3NDlaIiwiU2VxIjo2MiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc1NDY3OTA1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRhbW9uX3NhbXBsZV9tdGllcl9idWlsZF9jdHhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwic2FtcGxlcy9kYW1vbi9tdGllci5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcInNhbXBsZXMvZGFtb24vbXRpZXIuYz02MD1zdGF0aWMgaW50IG5pZF90b19waHlzKGludCB0YXJnZXRfbm9kZSwgc3RydWN0IHJlZ2lvbl9yYW5nZSAqcmFuZ2UpXFxuLS1cXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtNzItXFxuc2FtcGxlcy9kYW1vbi9tdGllci5jOjczOnN0YXRpYyBzdHJ1Y3QgZGFtb25fY3R4ICpkYW1vbl9zYW1wbGVfbXRpZXJfYnVpbGRfY3R4KGJvb2wgcHJvbW90ZSlcXG5zYW1wbGVzL2RhbW9uL210aWVyLmMtNzQte1xcbi0tXFxuc2FtcGxlcy9kYW1vbi9tdGllci5jPTE4MD1zdGF0aWMgaW50IGRhbW9uX3NhbXBsZV9tdGllcl9zdGFydCh2b2lkKVxcbi0tXFxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTE4NC1cXG5zYW1wbGVzL2RhbW9uL210aWVyLmM6MTg1OlxcdGN0eCA9IGRhbW9uX3NhbXBsZV9tdGllcl9idWlsZF9jdHgodHJ1ZSk7XFxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTE4Ni1cXHRpZiAoIWN0eClcXG4tLVxcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0xODgtXFx0Y3R4c1swXSA9IGN0eDtcXG5zYW1wbGVzL2RhbW9uL210aWVyLmM6MTg5OlxcdGN0eCA9IGRhbW9uX3NhbXBsZV9tdGllcl9idWlsZF9jdHgoZmFsc2UpO1xcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0xOTAtXFx0aWYgKCFjdHgpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTg6MjA6NDcuMDU4NDk2NzY0WiIsIlNlcSI6NjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ4MTIzNzMwNzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSdtIGFuIGV4cGVydCBpbiB0aGlzIGFyZWEgYW5kIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwaWVjZSBvZiBjb2RlOlxuXG4qKlRoaW5raW5nIFRocm91Z2ggdGhlIE11bHRpLVRpZXIgU2FtcGxpbmcgUHJvY2VzcyoqXG5cbkFscmlnaHQsIHNvIGBkYW1vbl9zYW1wbGVfbXRpZXJfc3RhcnRgIGlzIGJlaW5nIGNhbGxlZCBmcm9tIHdpdGhpbiBgZGFtb25fc2FtcGxlX210aWVyX3R1cm5gLiBUaGF0J3MgdGhlIGtleSBzdGFydGluZyBwb2ludC4gVGhpcyB0ZWxscyBtZSB0aGF0IHdlJ3JlIGRlYWxpbmcgd2l0aCBhIG11bHRpLXRpZXJlZCBzYW1wbGluZyBwcm9jZXNzLCBhbmQgYF9zdGFydGAgbXVzdCBpbml0aWFsaXplIG9yIHNldCB1cCBzb21ldGhpbmcsIHByZXN1bWFibHkgYXQgdGhlIGJlZ2lubmluZyBvZiBlYWNoIFwidHVyblwiIG9yIGl0ZXJhdGlvbi4gSXQncyBsaWtlbHkgdGhhdCBgZGFtb25fc2FtcGxlX210aWVyX3R1cm5gIHJlcHJlc2VudHMgYSBzaW5nbGUgc2FtcGxpbmcgKmN5Y2xlKiB3aXRoaW4gdGhlIG11bHRpLXRpZXJlZCBzdHJ1Y3R1cmUuXG5cbkkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgXCJ0aWVyc1wiIHdlJ3JlIHRhbGtpbmcgYWJvdXQgaGVyZS4gQXJlIHdlIHNhbXBsaW5nIGF0IGRpZmZlcmVudCBncmFudWxhcml0aWVzPyBNYXliZSB3ZSBzdGFydCB3aXRoIGEgY29hcnNlLWdyYWluZWQgc2FtcGxlIGFuZCBwcm9ncmVzc2l2ZWx5IHJlZmluZSBpdCB0aHJvdWdoIG11bHRpcGxlIHRpZXJzPyBPciBwZXJoYXBzIGl0J3MgYSBoaWVyYXJjaGljYWwgc3RydWN0dXJlLCB3aGVyZSBlYWNoIHRpZXIgcmVwcmVzZW50cyBhIGRpZmZlcmVudCBhc3BlY3Qgb3IgZGltZW5zaW9uIG9mIHRoZSBkYXRhLiBcblxuV2hhdGV2ZXIgdGhlIHNwZWNpZmljcywgYF9zdGFydGAgcHJvYmFibHkgc2V0cyB1cCB0aGUgbmVjZXNzYXJ5IHN0YXRlIGZvciB0aGUgY3VycmVudCB0aWVyIG9yIHRoZSBzYW1wbGluZyBwcm9jZXNzIG92ZXJhbGwuIFRoaXMgY291bGQgaW52b2x2ZSBpbml0aWFsaXppbmcgYWNjdW11bGF0b3JzLCBzZXR0aW5nIHVwIHJhbmRvbSBudW1iZXIgZ2VuZXJhdG9ycywgcHJlLWNhbGN1bGF0aW5nIHNvbWUgdmFsdWVzLCBvciBtYXliZSBldmVuIGZldGNoaW5nIGRhdGEgbmVjZXNzYXJ5IGZvciB0aGlzIFwidHVybi5cIiBJJ2xsIG5lZWQgdG8gZGlnIGRlZXBlciBpbnRvIHRoZSBjb2RlIG9mIGBkYW1vbl9zYW1wbGVfbXRpZXJfc3RhcnRgIHRvIHVuZGVyc3RhbmQgKnByZWNpc2VseSogd2hhdCBpdCBkb2VzLCBidXQgdGhpcyBpbml0aWFsIGNhbGwgZnJvbSBgX3R1cm5gIGZyYW1lcyB0aGUgY29udGV4dCBhbmQgdGhlIG92ZXJhbGwgZmxvdy4gSXQncyB2ZXJ5IGxpa2VseSB0aGF0IGBfc3RhcnRgIHByZXBhcmVzIGZvciB0aGUgbG9naWMgaW1wbGVtZW50ZWQgaW4gdGhlIGBfdHVybmAgZnVuY3Rpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwMzAzLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTg6MjA6NTEuODcwODcyOTk1WiIsIlNlcSI6NjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzE4MTcwMzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGFtb25fc2FtcGxlX210aWVyX3N0YXJ0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcInNhbXBsZXMvZGFtb24vbXRpZXIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJzYW1wbGVzL2RhbW9uL210aWVyLmM9NzM9c3RhdGljIHN0cnVjdCBkYW1vbl9jdHggKmRhbW9uX3NhbXBsZV9tdGllcl9idWlsZF9jdHgoYm9vbCBwcm9tb3RlKVxcbi0tXFxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTE3OS1cXG5zYW1wbGVzL2RhbW9uL210aWVyLmM6MTgwOnN0YXRpYyBpbnQgZGFtb25fc2FtcGxlX210aWVyX3N0YXJ0KHZvaWQpXFxuc2FtcGxlcy9kYW1vbi9tdGllci5jLTE4MS17XFxuLS1cXG5zYW1wbGVzL2RhbW9uL210aWVyLmM9MjExPXN0YXRpYyBpbnQgZGFtb25fc2FtcGxlX210aWVyX2VuYWJsZV9zdG9yZShcXG4tLVxcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0yMjctXFx0aWYgKGVuYWJsZWQpIHtcXG5zYW1wbGVzL2RhbW9uL210aWVyLmM6MjI4OlxcdFxcdGVyciA9IGRhbW9uX3NhbXBsZV9tdGllcl9zdGFydCgpO1xcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0yMjktXFx0XFx0aWYgKGVycilcXG4tLVxcbnNhbXBsZXMvZGFtb24vbXRpZXIuYz0yMzc9c3RhdGljIGludCBfX2luaXQgZGFtb25fc2FtcGxlX210aWVyX2luaXQodm9pZClcXG4tLVxcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0yNDctXFx0aWYgKGVuYWJsZWQpIHtcXG5zYW1wbGVzL2RhbW9uL210aWVyLmM6MjQ4OlxcdFxcdGVyciA9IGRhbW9uX3NhbXBsZV9tdGllcl9zdGFydCgpO1xcbnNhbXBsZXMvZGFtb24vbXRpZXIuYy0yNDktXFx0XFx0aWYgKGVycilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTg6MjA6NTIuMzQyNjk3MDA1WiIsIlNlcSI6NjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjkxNTMwNTA5NTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBEQU1PTiBNVGllciBFbmFibGVtZW50IFBhdGgqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGBkYW1vbl9zYW1wbGVfbXRpZXJfZW5hYmxlX3N0b3JlYCBmdW5jdGlvbjsgdGhhdCdzIHRoZSBzdGFydGluZyBwb2ludCwgdGhlIGVudHJ5IGdhdGUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgTVRpZXIgZW5hYmxlbWVudCBhY3R1YWxseSBmdW5jdGlvbnMuXG5cbk5vdywgbGV0J3MganVzdCBtYWtlIGEgbGlzdCwgYSBtZW50YWwgbWFwIG9mIHRob3NlIGBGb2N1c1N5bWJvbHNgIHRvIHF1aWNrbHkgZ2V0IGEgc2Vuc2Ugb2YgdGhlIHBpZWNlcyBpbnZvbHZlZDogSSBzZWUgYGRhbW9uX2xydV9zb3J0X2NvbW1pdF9pbnB1dHNfc3RvcmVgLCBgZGFtb25fbHJ1X3NvcnRfZW5hYmxlZF9zdG9yZWAsIGFuZCwgb2YgY291cnNlLCB0aGUgbWFpbiBvbmUsIGBkYW1vbl9zYW1wbGVfbXRpZXJfZW5hYmxlX3N0b3JlYC4gVGhlc2UgYXJlIHRoZSBrZXkgdmFyaWFibGVzIHRvIHdhdGNoIGFzIHRoaXMgd2hvbGUgZmxvdyBpcyBleGVjdXRlZC5cblxuVG8gbWFrZSBzdXJlIEkgaGF2ZW4ndCBtaXNzZWQgYW55dGhpbmcgY3J1Y2lhbCwgSSBzaG91bGQgc2NhbiB0aGUgY29kZSwgc3BlY2lmaWNhbGx5IGxvb2tpbmcgYXQgYG1tL2RhbW9uL2xydV9zb3J0LmNgIGFuZCBgc2FtcGxlcy9kYW1vbi9tdGllci5jYC4gSSBuZWVkIHRvIGVuc3VyZSB0aGF0IG5vIGNyaXRpY2FsIGxvZ2ljIGlzIGhpZGRlbiB3aXRoaW4gYSBmdW5jdGlvbiB0aGF0IGlzbid0IGRlZmluZWQgYXMgYHN0YXRpY2AuIEkgYW0ganVzdCBtYWtpbmcgc3VyZSB0aGVyZSBhcmVuJ3QgYW55IHN1cnByaXNlIGNhbGxzIEknbSBub3QgZXhwZWN0aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTAyMywiT3V0cHV0VG9rZW5zIjo2OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxODoyMTowMS40OTU3NTE3NTdaIiwiU2VxIjo2NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc2OTQzMjg1LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJeW2EtekEtWl9dW2EtekEtWjAtOV9dKiBbYS16QS1aX11bYS16QS1aMC05X10qXFxcXChcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vZGFtb24vbHJ1X3NvcnQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTg6MjE6MDEuNTcyNzAxMjcyWiIsIlNlcSI6NjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg0NTYxNjUyODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRm9jdXMgU3ltYm9sIGFuZCBFbmFibGUgQ29uZmlnIElkZW50aWZpY2F0aW9uKipcblxuT2theSwgSSd2ZSBhbHJlYWR5IGNvbmZpcm1lZCB0aGUgaW5pdGlhbCBhc3N1bXB0aW9ucyDigJMgdGhlc2UgZnVuY3Rpb25zIGFyZSwgYXMgZXhwZWN0ZWQsIHN0YXRpYy4gTGV0J3MgbWFrZSBzdXJlIG91ciBiYXNlcyBhcmUgY292ZXJlZC5cblxuRmlyc3QsIEkgY2hlY2tlZCBgZGFtb25fbHJ1X3NvcnRfY29tbWl0X2lucHV0c19zdG9yZWAuIEl0J3Mgc3RhdGljLCB3aGljaCBpcyBnb29kLlxuXG5gYGBjXG5zdGF0aWMgaW50IGRhbW9uX2xydV9zb3J0X2NvbW1pdF9pbnB1dHNfc3RvcmUoY29uc3QgY2hhciAqdmFsLFxuXHRcdGNvbnN0IHN0cnVjdCBrZXJuZWxfcGFyYW0gKmtwKVxuYGBgXG5cbkFuZCBnaXZlbiB0aGF0IGl0J3MgcGFzc2VkIHRvIGBrZXJuZWxfcGFyYW1fb3BzYCBhcyBhIGZ1bmN0aW9uIHBvaW50ZXIsIGlubGluaW5nIGlzbid0IGdvaW5nIHRvIGJlIGFuIGlzc3VlLiBTbywgdGhhdCdzIHNhZmUgdG8gaW5jbHVkZSBhcyBhIGZvY3VzIHN5bWJvbC5cblxuTW92aW5nIG9uLCBJIG5lZWQgdG8gY2hlY2sgYGRhbW9uX2xydV9zb3J0X2VuYWJsZWRfc3RvcmVgLiBZdXAsIHN0YXRpYy5cblxuYGBgY1xuc3RhdGljIGludCBkYW1vbl9scnVfc29ydF9lbmFibGVkX3N0b3JlKGNvbnN0IGNoYXIgKnZhbCxcblx0XHRjb25zdCBzdHJ1Y3Qga2VybmVsX3BhcmFtICprcClcbmBgYFxuXG5BZ2FpbiwgdGhlIGZ1bmN0aW9uIHBvaW50ZXIgY29udGV4dCBjb25maXJtcyBpdHMgc3VpdGFiaWxpdHkuXG5cbkZpbmFsbHksIGxldCdzIGxvb2sgYXQgYGRhbW9uX3NhbXBsZV9tdGllcl9lbmFibGVfc3RvcmVgLiBZZXAsIHN0YXRpYy5cblxuYGBgY1xuc3RhdGljIGludCBkYW1vbl9zYW1wbGVfbXRpZXJfZW5hYmxlX3N0b3JlKGNvbnN0IGNoYXIgKnZhbCxcblx0XHRjb25zdCBzdHJ1Y3Qga2VybmVsX3BhcmFtICprcClcbmBgYFxuXG5TYW1lIHN0b3J5LCBmdW5jdGlvbiBwb2ludGVyLCBhbmQgaXQncyBhbGwgZ29vZC5cblxuVGhlcmVmb3JlLCBvdXIgKipGb2N1c1N5bWJvbHMqKiBhcmU6XG4tICAgYGRhbW9uX2xydV9zb3J0X2NvbW1pdF9pbnB1dHNfc3RvcmVgXG4tICAgYGRhbW9uX2xydV9zb3J0X2VuYWJsZWRfc3RvcmVgXG4tICAgYGRhbW9uX3NhbXBsZV9tdGllcl9lbmFibGVfc3RvcmVgXG5cbk5vdywgbGV0J3MgaWRlbnRpZnkgdGhlICoqRW5hYmxlQ29uZmlncyoqOlxuLSAgIGBEQU1PTmBcbi0gICBgREFNT05fUEFERFJgXG4tICAgYERBTU9OX0xSVV9TT1JUYFxuLSAgIGBTQU1QTEVTYFxuLSAgIGBTQU1QTEVfREFNT05fTVRJRVJgXG5cblRoZSBwYXRjaCBpcyBhYm91dCBpbnB1dCB2YWxpZGF0aW9uIHRvIHByZXZlbnQgaW52YWxpZCBwYXJhbWV0ZXJzLiBUaGVzZSBwYXJhbWV0ZXJzIGFyZSBhdmFpbGFibGUgdmlhIHN5c2ZzIGFuZCBjYW4gYmUgY2hhbmdlZCBhdCBydW50aW1lLiBUaGUgY2hhbmdlcyBhcmUgZnVuY3Rpb25hbCBhbmQgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSB0aGUgc3lzZnMgbW9kdWxlIHBhcmFtZXRlciBzdG9yZXMuIE5vdyBsZXQgbWUgZG91YmxlLWNoZWNrIHRoYXQgYERBTU9OX0xSVV9TT1JUYCBkb2VzIG5vdCBkZXBlbmQgb24gb3RoZXIgY29uZmlncy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE0NjMsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTg6MjE6MTAuMDI4ODcyMTU3WiIsIlNlcSI6NjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NDIzOTUzNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgREFNT05fTFJVX1NPUlRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vZGFtb24vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9kYW1vbi9LY29uZmlnPTg4PWNvbmZpZyBEQU1PTl9SRUNMQUlNXFxuLS1cXG5tbS9kYW1vbi9LY29uZmlnLTk5LVxcbm1tL2RhbW9uL0tjb25maWc6MTAwOmNvbmZpZyBEQU1PTl9MUlVfU09SVFxcbm1tL2RhbW9uL0tjb25maWctMTAxLVxcdGJvb2wgXFxcIkJ1aWxkIERBTU9OLWJhc2VkIExSVS1saXN0cyBzb3J0aW5nIChEQU1PTl9MUlVfU09SVClcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE4OjIxOjEwLjA4MzExODcyNFoiLCJTZXEiOjY5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5OTY5NDE5MDgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBEQU1PTiBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSd2ZSBsb29rZWQgaW50byB0aGlzIGFscmVhZHksIGFuZCBpdCdzIHByZXR0eSBjbGVhciB0aGF0IHRoZSBiZWhhdmlvciBoaW5nZXMgb24gYERBTU9OX1BBRERSYC4gTm93LCBgREFNT05fUEFERFJgIGlzIGl0c2VsZiBjb25kaXRpb25hbCwgYW5kIGl0IHJlcXVpcmVzIGJvdGggYERBTU9OYCAqYW5kKiBgTU1VYCB0byBiZSBlbmFibGVkLiBJIGtub3cgYE1NVWAgaXMgYmFzaWNhbGx5IGEgZ2l2ZW4gb24gc3RhbmRhcmQgYXJjaGl0ZWN0dXJlcywgc28gdGhhdCdzIGxpa2VseSBub3QgdGhlIHN0dW1ibGluZyBibG9jay5cblxuQnV0IGp1c3QgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLCBsZXQncyBqdXN0IG1ha2Ugc3VyZSB0aGVyZSBhcmVuJ3QgYW55IG90aGVyIGRlcGVuZGVuY2llcyBmb3IgYFNBTVBMRV9EQU1PTl9NVElFUmAgdGhhdCBJIGhhdmVuJ3QgYWNjb3VudGVkIGZvciB5ZXQuIEdvdHRhIGJlIHRob3JvdWdoLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjU0NSwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE4OjIxOjIwLjA1MjU0MDY3NVoiLCJTZXEiOjcwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAwNTQ2NTA0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBTQU1QTEVfREFNT05fTVRJRVJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwic2FtcGxlcy9kYW1vbi9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcInNhbXBsZXMvZGFtb24vS2NvbmZpZz0xNz1jb25maWcgU0FNUExFX0RBTU9OX1BSQ0xcXG4tLVxcbnNhbXBsZXMvZGFtb24vS2NvbmZpZy0yOS1cXG5zYW1wbGVzL2RhbW9uL0tjb25maWc6MzA6Y29uZmlnIFNBTVBMRV9EQU1PTl9NVElFUlxcbnNhbXBsZXMvZGFtb24vS2NvbmZpZy0zMS1cXHRib29sIFxcXCJEQU1PTiBzYW1wbGUgbW9kdWxlIGZvciBtZW1vcnkgdGllcmluZ1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTg6MjE6MjAuMTUzMDkyODI5WiIsIlNlcSI6NzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjcwNDY4NzkxMTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqQXNzZXNzbWVudCBvZiBDb25maWd1cmF0aW9uIGFuZCBOZXh0IFN0ZXBzKipcblxuQWxyaWdodCwgSSd2ZSBjb25maXJtZWQgdGhhdCB0aGUgY29uZmlndXJhdGlvbiBoaW5nZXMgb24gYERBTU9OIFx1MDAyNlx1MDAyNiBEQU1PTl9QQUREUmAuIFRoZSBpbml0aWFsIHRyb3VibGVzaG9vdGluZyBzdGVwcyBpbmRpY2F0ZWQgdGhleSB3ZXJlLCBpbiBmYWN0LCBzZXQgY29ycmVjdGx5LCBzbyB0aGF0IHBhdGggc2VlbXMgY2xlYXJlZC4gTm93LCB3aXRoIHRoZSBmb3VuZGF0aW9uYWwgZWxlbWVudHMgaW4gcGxhY2UsIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCB0byBnZXQgdG8gdGhlIHNvbHV0aW9uIGlzIHRvIGNhbGwgdGhlIGBzZXQtcmVzdWx0c2AgZnVuY3Rpb24gdG8gcHJvY2VlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjI4NzQsIk91dHB1dFRva2VucyI6MTg2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTg6MjE6MjcuMTk5OTc1MzEyWiIsIlNlcSI6NzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ0NDE5NDYyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJEQU1PTlwiLFxuICAgIFwiREFNT05fUEFERFJcIixcbiAgICBcIkRBTU9OX0xSVV9TT1JUXCIsXG4gICAgXCJTQU1QTEVTXCIsXG4gICAgXCJTQU1QTEVfREFNT05fTVRJRVJcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkYW1vbl9scnVfc29ydF9jb21taXRfaW5wdXRzX3N0b3JlXCIsXG4gICAgXCJkYW1vbl9scnVfc29ydF9lbmFibGVkX3N0b3JlXCIsXG4gICAgXCJkYW1vbl9zYW1wbGVfbXRpZXJfZW5hYmxlX3N0b3JlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBpbnB1dCB2YWxpZGF0aW9uIGZvciBEQU1PTiBMUlUgc29ydCBhbmQgbWVtb3J5IHRpZXJpbmcgc2FtcGxlIG1vZHVsZSBwYXJhbWV0ZXJzIHRvIHByZXZlbnQgaW52YWxpZCB2YWx1ZXMgKGxpa2UgXFx1MDAzZSAxMDAwMCBvciAwKSB0aGF0IGNvdWxkIGNhdXNlIGRpdmlzaW9uIGJ5IHplcm8gb3Igb3RoZXIgaXNzdWVzLiBUaGVzZSBwYXJhbWV0ZXJzIGFyZSBhY2Nlc3NpYmxlIHZpYSBzeXNmcyBhbmQgY2FuIGJlIG1vZGlmaWVkIGF0IHJ1bnRpbWUuIFRoZSBjaGFuZ2VzIGFyZSBmdW5jdGlvbmFsIGFuZCByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIHN5c2ZzIG1vZHVsZSBwYXJhbWV0ZXIgc3RvcmVzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkRBTU9OXCIsXG4gICAgXCJEQU1PTl9QQUREUlwiLFxuICAgIFwiREFNT05fTFJVX1NPUlRcIixcbiAgICBcIlNBTVBMRVNcIixcbiAgICBcIlNBTVBMRV9EQU1PTl9NVElFUlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRhbW9uX2xydV9zb3J0X2NvbW1pdF9pbnB1dHNfc3RvcmVcIixcbiAgICBcImRhbW9uX2xydV9zb3J0X2VuYWJsZWRfc3RvcmVcIixcbiAgICBcImRhbW9uX3NhbXBsZV9tdGllcl9lbmFibGVfc3RvcmVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGlucHV0IHZhbGlkYXRpb24gZm9yIERBTU9OIExSVSBzb3J0IGFuZCBtZW1vcnkgdGllcmluZyBzYW1wbGUgbW9kdWxlIHBhcmFtZXRlcnMgdG8gcHJldmVudCBpbnZhbGlkIHZhbHVlcyAobGlrZSBcXHUwMDNlIDEwMDAwIG9yIDApIHRoYXQgY291bGQgY2F1c2UgZGl2aXNpb24gYnkgemVybyBvciBvdGhlciBpc3N1ZXMuIFRoZXNlIHBhcmFtZXRlcnMgYXJlIGFjY2Vzc2libGUgdmlhIHN5c2ZzIGFuZCBjYW4gYmUgbW9kaWZpZWQgYXQgcnVudGltZS4gVGhlIGNoYW5nZXMgYXJlIGZ1bmN0aW9uYWwgYW5kIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgc3lzZnMgbW9kdWxlIHBhcmFtZXRlciBzdG9yZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowm7tbs[1] Phase: Succeeded StartedAt: 2026-08-03 18:21:38 +0000 UTC FinishedAt: 2026-08-03 18:21:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm7tbs[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-03 18:21:38 +0000 UTC FinishedAt: 2026-08-03 18:21:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm7tbs[2] Phase: Succeeded StartedAt: 2026-08-03 18:21:38 +0000 UTC FinishedAt: 2026-08-03 22:01:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm7tbs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_lru_sort_commit_inputs_store","damon_lru_sort_enabled_store","damon_sample_mtier_enable_store"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"series_id":"5062fd5d-c24f-4f8d-8ed1-665d37ad2b3c","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-03 18:21:38 +0000 UTC FinishedAt: 2026-08-03 22:01:25 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_lru_sort_commit_inputs_store","damon_lru_sort_enabled_store","damon_sample_mtier_enable_store"],"skip_cover_check":true},"patched":{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"series_id":"5062fd5d-c24f-4f8d-8ed1-665d37ad2b3c","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-workflowm7tbs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_lru_sort_commit_inputs_store","damon_lru_sort_enabled_store","damon_sample_mtier_enable_store"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"series_id":"5062fd5d-c24f-4f8d-8ed1-665d37ad2b3c","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-03 18:21:38 +0000 UTC FinishedAt: 2026-08-03 18:21:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm7tbs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_lru_sort_commit_inputs_store","damon_lru_sort_enabled_store","damon_sample_mtier_enable_store"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"series_id":"5062fd5d-c24f-4f8d-8ed1-665d37ad2b3c","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-03 18:21:38 +0000 UTC FinishedAt: 2026-08-03 18:21:43 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"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-workflowm7tbs/series-workflowm7tbs-convert-artifact-1219597939/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowm7tbs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_lru_sort_commit_inputs_store","damon_lru_sort_enabled_store","damon_sample_mtier_enable_store"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"series_id":"5062fd5d-c24f-4f8d-8ed1-665d37ad2b3c","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-03 18:21:49 +0000 UTC FinishedAt: 2026-08-03 18:37:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm7tbs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_lru_sort_commit_inputs_store","damon_lru_sort_enabled_store","damon_sample_mtier_enable_store"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"series_id":"5062fd5d-c24f-4f8d-8ed1-665d37ad2b3c","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-03 18:21:49 +0000 UTC FinishedAt: 2026-08-03 18:37:38 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*b264807a-0328-4e46-9c14-26da64b8d7a0,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-workflowm7tbs/series-workflowm7tbs-convert-artifact-1219597939/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": "e3974973-e331-4303-b8ae-442759fa3711", "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-workflowm7tbs/series-workflowm7tbs-build-action-2135685409/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowm7tbs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_lru_sort_commit_inputs_store","damon_lru_sort_enabled_store","damon_sample_mtier_enable_store"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"series_id":"5062fd5d-c24f-4f8d-8ed1-665d37ad2b3c","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-03 18:21:49 +0000 UTC FinishedAt: 2026-08-03 18:37:28 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*b264807a-0328-4e46-9c14-26da64b8d7a0,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-workflowm7tbs/series-workflowm7tbs-convert-artifact-1219597939/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": "e3974973-e331-4303-b8ae-442759fa3711", "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-workflowm7tbs/series-workflowm7tbs-build-action-2135685409/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowm7tbs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_lru_sort_commit_inputs_store","damon_lru_sort_enabled_store","damon_sample_mtier_enable_store"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"series_id":"5062fd5d-c24f-4f8d-8ed1-665d37ad2b3c","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-03 18:37:38 +0000 UTC FinishedAt: 2026-08-03 18:37:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm7tbs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_lru_sort_commit_inputs_store","damon_lru_sort_enabled_store","damon_sample_mtier_enable_store"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"series_id":"5062fd5d-c24f-4f8d-8ed1-665d37ad2b3c","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-03 18:37:38 +0000 UTC FinishedAt: 2026-08-03 18:37:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm7tbs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_lru_sort_commit_inputs_store","damon_lru_sort_enabled_store","damon_sample_mtier_enable_store"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"series_id":"5062fd5d-c24f-4f8d-8ed1-665d37ad2b3c","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-03 18:37:38 +0000 UTC FinishedAt: 2026-08-03 18:37:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm7tbs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_lru_sort_commit_inputs_store","damon_lru_sort_enabled_store","damon_sample_mtier_enable_store"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"series_id":"5062fd5d-c24f-4f8d-8ed1-665d37ad2b3c","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-03 18:37:38 +0000 UTC FinishedAt: 2026-08-03 18:37:43 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"series_id":"5062fd5d-c24f-4f8d-8ed1-665d37ad2b3c","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-workflowm7tbs/series-workflowm7tbs-convert-artifact-3666415978/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowm7tbs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_lru_sort_commit_inputs_store","damon_lru_sort_enabled_store","damon_sample_mtier_enable_store"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"series_id":"5062fd5d-c24f-4f8d-8ed1-665d37ad2b3c","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-03 18:37:49 +0000 UTC FinishedAt: 2026-08-03 18:39:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm7tbs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_lru_sort_commit_inputs_store","damon_lru_sort_enabled_store","damon_sample_mtier_enable_store"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"series_id":"5062fd5d-c24f-4f8d-8ed1-665d37ad2b3c","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-03 18:37:49 +0000 UTC FinishedAt: 2026-08-03 18:39:29 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*e3974973-e331-4303-b8ae-442759fa3711,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-workflowm7tbs/series-workflowm7tbs-build-action-2135685409/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-workflowm7tbs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_lru_sort_commit_inputs_store","damon_lru_sort_enabled_store","damon_sample_mtier_enable_store"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"series_id":"5062fd5d-c24f-4f8d-8ed1-665d37ad2b3c","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-03 18:39:39 +0000 UTC FinishedAt: 2026-08-03 18:39:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm7tbs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_lru_sort_commit_inputs_store","damon_lru_sort_enabled_store","damon_sample_mtier_enable_store"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"series_id":"5062fd5d-c24f-4f8d-8ed1-665d37ad2b3c","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-03 18:39:39 +0000 UTC FinishedAt: 2026-08-03 18:39:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm7tbs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_lru_sort_commit_inputs_store","damon_lru_sort_enabled_store","damon_sample_mtier_enable_store"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"series_id":"5062fd5d-c24f-4f8d-8ed1-665d37ad2b3c","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-03 18:39:39 +0000 UTC FinishedAt: 2026-08-03 18:55:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm7tbs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_lru_sort_commit_inputs_store","damon_lru_sort_enabled_store","damon_sample_mtier_enable_store"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"series_id":"5062fd5d-c24f-4f8d-8ed1-665d37ad2b3c","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-03 18:39:39 +0000 UTC FinishedAt: 2026-08-03 18:55:31 +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:*b264807a-0328-4e46-9c14-26da64b8d7a0,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-workflowm7tbs/series-workflowm7tbs-convert-artifact-3666415978/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": "a167ffd3-c6d8-4864-b722-ef071db0d4a9", "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-workflowm7tbs/series-workflowm7tbs-build-action-1292975502/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowm7tbs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_lru_sort_commit_inputs_store","damon_lru_sort_enabled_store","damon_sample_mtier_enable_store"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"series_id":"5062fd5d-c24f-4f8d-8ed1-665d37ad2b3c","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-03 18:39:39 +0000 UTC FinishedAt: 2026-08-03 18:55:21 +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:*b264807a-0328-4e46-9c14-26da64b8d7a0,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-workflowm7tbs/series-workflowm7tbs-convert-artifact-3666415978/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": "a167ffd3-c6d8-4864-b722-ef071db0d4a9", "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-workflowm7tbs/series-workflowm7tbs-build-action-1292975502/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowm7tbs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_lru_sort_commit_inputs_store","damon_lru_sort_enabled_store","damon_sample_mtier_enable_store"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"series_id":"5062fd5d-c24f-4f8d-8ed1-665d37ad2b3c","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-03 18:55:31 +0000 UTC FinishedAt: 2026-08-03 18:55:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm7tbs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_lru_sort_commit_inputs_store","damon_lru_sort_enabled_store","damon_sample_mtier_enable_store"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"series_id":"5062fd5d-c24f-4f8d-8ed1-665d37ad2b3c","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-03 18:55:31 +0000 UTC FinishedAt: 2026-08-03 18:55:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm7tbs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_lru_sort_commit_inputs_store","damon_lru_sort_enabled_store","damon_sample_mtier_enable_store"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"series_id":"5062fd5d-c24f-4f8d-8ed1-665d37ad2b3c","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-03 18:55:31 +0000 UTC FinishedAt: 2026-08-03 18:57:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm7tbs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_lru_sort_commit_inputs_store","damon_lru_sort_enabled_store","damon_sample_mtier_enable_store"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"series_id":"5062fd5d-c24f-4f8d-8ed1-665d37ad2b3c","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-03 18:55:31 +0000 UTC FinishedAt: 2026-08-03 18:57:11 +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:*a167ffd3-c6d8-4864-b722-ef071db0d4a9,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-workflowm7tbs/series-workflowm7tbs-build-action-1292975502/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-workflowm7tbs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_lru_sort_commit_inputs_store","damon_lru_sort_enabled_store","damon_sample_mtier_enable_store"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"series_id":"5062fd5d-c24f-4f8d-8ed1-665d37ad2b3c","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-03 18:57:21 +0000 UTC FinishedAt: 2026-08-03 22:01:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm7tbs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_lru_sort_commit_inputs_store","damon_lru_sort_enabled_store","damon_sample_mtier_enable_store"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"series_id":"5062fd5d-c24f-4f8d-8ed1-665d37ad2b3c","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-03 18:57:21 +0000 UTC FinishedAt: 2026-08-03 22:01:25 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_lru_sort_commit_inputs_store","damon_lru_sort_enabled_store","damon_sample_mtier_enable_store"],"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:*e3974973-e331-4303-b8ae-442759fa3711,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*a167ffd3-c6d8-4864-b722-ef071db0d4a9,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-workflowm7tbs/series-workflowm7tbs-build-action-2135685409/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-workflowm7tbs/series-workflowm7tbs-build-action-1292975502/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowm7tbs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_lru_sort_commit_inputs_store","damon_lru_sort_enabled_store","damon_sample_mtier_enable_store"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"series_id":"5062fd5d-c24f-4f8d-8ed1-665d37ad2b3c","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-03 18:57:21 +0000 UTC FinishedAt: 2026-08-03 18:57:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm7tbs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_lru_sort_commit_inputs_store","damon_lru_sort_enabled_store","damon_sample_mtier_enable_store"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"series_id":"5062fd5d-c24f-4f8d-8ed1-665d37ad2b3c","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-03 18:57:21 +0000 UTC FinishedAt: 2026-08-03 18:57:25 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_lru_sort_commit_inputs_store","damon_lru_sort_enabled_store","damon_sample_mtier_enable_store"],"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-workflowm7tbs/series-workflowm7tbs-convert-artifact-2197188351/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowm7tbs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_lru_sort_commit_inputs_store","damon_lru_sort_enabled_store","damon_sample_mtier_enable_store"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"series_id":"5062fd5d-c24f-4f8d-8ed1-665d37ad2b3c","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-03 18:57:21 +0000 UTC FinishedAt: 2026-08-03 18:57:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm7tbs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_lru_sort_commit_inputs_store","damon_lru_sort_enabled_store","damon_sample_mtier_enable_store"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"series_id":"5062fd5d-c24f-4f8d-8ed1-665d37ad2b3c","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-03 18:57:21 +0000 UTC FinishedAt: 2026-08-03 18:57:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm7tbs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_lru_sort_commit_inputs_store","damon_lru_sort_enabled_store","damon_sample_mtier_enable_store"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"series_id":"5062fd5d-c24f-4f8d-8ed1-665d37ad2b3c","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-03 18:57:21 +0000 UTC FinishedAt: 2026-08-03 18:57:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm7tbs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_lru_sort_commit_inputs_store","damon_lru_sort_enabled_store","damon_sample_mtier_enable_store"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"series_id":"5062fd5d-c24f-4f8d-8ed1-665d37ad2b3c","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-03 18:57:31 +0000 UTC FinishedAt: 2026-08-03 22:01:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm7tbs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_lru_sort_commit_inputs_store","damon_lru_sort_enabled_store","damon_sample_mtier_enable_store"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1dbd7c34bb92dd9c0b0363b75f6ec444299af108","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_PADDR","DAMON_LRU_SORT","SAMPLES","SAMPLE_DAMON_MTIER"],"series_id":"5062fd5d-c24f-4f8d-8ed1-665d37ad2b3c","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-03 18:57:31 +0000 UTC FinishedAt: 2026-08-03 22:01:15 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*e3974973-e331-4303-b8ae-442759fa3711,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*a167ffd3-c6d8-4864-b722-ef071db0d4a9,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-workflowm7tbs/series-workflowm7tbs-build-action-2135685409/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-workflowm7tbs/series-workflowm7tbs-build-action-1292975502/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-workflowm7tbs/series-workflowm7tbs-convert-artifact-2197188351/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,}