Name: series-workflowq9547 Phase: Succeeded StartedAt: 2026-07-22 07:58:30 +0000 UTC FinishedAt: 2026-07-22 11:43:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq9547[0] Phase: Succeeded StartedAt: 2026-07-22 07:58:30 +0000 UTC FinishedAt: 2026-07-22 08:34:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq9547[0].run-triage Phase: Succeeded StartedAt: 2026-07-22 07:58:30 +0000 UTC FinishedAt: 2026-07-22 08:34:20 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "e1a9d3cc11829c5414a75eb39c704f461936eb24", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MLXSW_CORE", "MLXSW_PCI", "MLXSW_SPECTRUM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "e1a9d3cc11829c5414a75eb39c704f461936eb24", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MLXSW_CORE", "MLXSW_PCI", "MLXSW_SPECTRUM" ], "series_id": "584f3ff7-c185-46ec-a0f8-51ed34cff25d" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "mlxsw_pci_cq_napi_disable", "mlxsw_pci_cq_init", "mlxsw_pci_cq_fini", "mlxsw_pci_aqs_fini", "mlxsw_pci_fini" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDA4OjMxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01MWFNXX0NPUkUmIzM0OywKICAgICYjMzQ7TUxYU1dfUENJJiMzNDssCiAgICAmIzM0O01MWFNXX1NQRUNUUlVNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bWx4c3dfcGNpX2NxX25hcGlfZGlzYWJsZSYjMzQ7LAogICAgJiMzNDttbHhzd19wY2lfY3FfaW5pdCYjMzQ7LAogICAgJiMzNDttbHhzd19wY2lfY3FfZmluaSYjMzQ7LAogICAgJiMzNDttbHhzd19wY2lfYXFzX2ZpbmkmIzM0OywKICAgICYjMzQ7bWx4c3dfcGNpX2ZpbmkmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBkb3VibGUgYG5hcGlfZGlzYWJsZWAgYW5kIGEgbWlzc2luZyBgdGFza2xldF9raWxsYCBkdXJpbmcgdGhlIHRlYXJkb3duIG9mIHRoZSBNZWxsYW5veCBzd2l0Y2ggUENJIGRyaXZlciAoYG1seHN3YCkuIEl0IGFkZHMgYSBgbmFwaV9lbmFibGVkYCBmbGFnIGFuZCBhIG5ldyBmdW5jdGlvbiBgbWx4c3dfcGNpX2NxX25hcGlfZGlzYWJsZWAuIFRoaXMgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUgZHJpdmVyIGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGUgdGVhcmRvd24gcGF0aHMgYXJlIHJvYnVzdC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAwODozMTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDEwNDc2YTM5NDA4MGMzZDNlNjI4MTBjZmViOGVmMGM0N2MwYTE4OGZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAyMiAwODozMTozMiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3BjaS5jXG5pbmRleCAwZGE4NWQzNjY0N2Q5MS4uZmVlYjMyMTM0ZDJhYTYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvcGNpLmNcbkBAIC04Niw2ICYjNDM7ODYsNyBAQCBzdHJ1Y3QgbWx4c3dfcGNpX3F1ZXVlIHtcbiBcdFx0XHRlbnVtIG1seHN3X3BjaV9jcWVfdiB2O1xuIFx0XHRcdHN0cnVjdCBtbHhzd19wY2lfcXVldWUgKmRxO1xuIFx0XHRcdHN0cnVjdCBuYXBpX3N0cnVjdCBuYXBpO1xuJiM0MztcdFx0XHRib29sIG5hcGlfZW5hYmxlZDtcbiBcdFx0XHRzdHJ1Y3QgcGFnZV9wb29sICpwYWdlX3Bvb2w7XG4gXHRcdH0gY3E7XG4gXHRcdHN0cnVjdCB7XG5AQCAtOTg5LDYgJiM0Mzs5OTAsMTUgQEAgc3RhdGljIHZvaWQgbWx4c3dfcGNpX2NxX25hcGlfdGVhcmRvd24oc3RydWN0IG1seHN3X3BjaV9xdWV1ZSAqcSlcbiBcdG5ldGlmX25hcGlfZGVsKFx1MDAyNnEtXHUwMDNldS5jcS5uYXBpKTtcbiB9XG4gXG4mIzQzO3N0YXRpYyB2b2lkIG1seHN3X3BjaV9jcV9uYXBpX2Rpc2FibGUoc3RydWN0IG1seHN3X3BjaV9xdWV1ZSAqcSlcbiYjNDM7e1xuJiM0MztcdGlmICghcS1cdTAwM2V1LmNxLm5hcGlfZW5hYmxlZClcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XG4mIzQzO1x0bmFwaV9kaXNhYmxlKFx1MDAyNnEtXHUwMDNldS5jcS5uYXBpKTtcbiYjNDM7XHRxLVx1MDAzZXUuY3EubmFwaV9lbmFibGVkID0gZmFsc2U7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIGludCBtbHhzd19wY2lfY3FfcGFnZV9wb29sX2luaXQoc3RydWN0IG1seHN3X3BjaV9xdWV1ZSAqcSxcbiBcdFx0XHRcdCAgICAgICBlbnVtIG1seHN3X3BjaV9jcV90eXBlIGNxX3R5cGUpXG4ge1xuQEAgLTEwNjQsNiAmIzQzOzEwNzQsNyBAQCBzdGF0aWMgaW50IG1seHN3X3BjaV9jcV9pbml0KHN0cnVjdCBtbHhzd19wY2kgKm1seHN3X3BjaSwgY2hhciAqbWJveCxcbiBcdFx0Z290byBlcnJfcGFnZV9wb29sX2luaXQ7XG4gXG4gXHRuYXBpX2VuYWJsZShcdTAwMjZxLVx1MDAzZXUuY3EubmFwaSk7XG4mIzQzO1x0cS1cdTAwM2V1LmNxLm5hcGlfZW5hYmxlZCA9IHRydWU7XG4gXHRtbHhzd19wY2lfcXVldWVfZG9vcmJlbGxfY29uc3VtZXJfcmluZyhtbHhzd19wY2ksIHEpO1xuIFx0bWx4c3dfcGNpX3F1ZXVlX2Rvb3JiZWxsX2FybV9jb25zdW1lcl9yaW5nKG1seHN3X3BjaSwgcSk7XG4gXHRyZXR1cm4gMDtcbkBAIC0xMDc4LDcgJiM0MzsxMDg5LDcgQEAgc3RhdGljIHZvaWQgbWx4c3dfcGNpX2NxX2Zpbmkoc3RydWN0IG1seHN3X3BjaSAqbWx4c3dfcGNpLFxuIHtcbiBcdGVudW0gbWx4c3dfcGNpX2NxX3R5cGUgY3FfdHlwZSA9IG1seHN3X3BjaV9jcV90eXBlKG1seHN3X3BjaSwgcSk7XG4gXG4tXHRuYXBpX2Rpc2FibGUoXHUwMDI2cS1cdTAwM2V1LmNxLm5hcGkpO1xuJiM0MztcdG1seHN3X3BjaV9jcV9uYXBpX2Rpc2FibGUocSk7XG4gXHRtbHhzd19wY2lfY3FfcGFnZV9wb29sX2ZpbmkocSwgY3FfdHlwZSk7XG4gXHRtbHhzd19wY2lfY3FfbmFwaV90ZWFyZG93bihxKTtcbiBcdG1seHN3X2NtZF9odzJzd19jcShtbHhzd19wY2ktXHUwMDNlY29yZSwgcS1cdTAwM2VudW0pO1xuQEAgLTE0MzksNiAmIzQzOzE0NTAsMTQgQEAgc3RhdGljIGludCBtbHhzd19wY2lfYXFzX2luaXQoc3RydWN0IG1seHN3X3BjaSAqbWx4c3dfcGNpLCBjaGFyICptYm94KVxuIFxuIHN0YXRpYyB2b2lkIG1seHN3X3BjaV9hcXNfZmluaShzdHJ1Y3QgbWx4c3dfcGNpICptbHhzd19wY2kpXG4ge1xuJiM0MztcdHN0cnVjdCBtbHhzd19wY2lfcXVldWVfdHlwZV9ncm91cCAqcXVldWVfZ3JvdXA7XG4mIzQzO1x0aW50IGk7XG4mIzQzO1xuJiM0MztcdHF1ZXVlX2dyb3VwID0gbWx4c3dfcGNpX3F1ZXVlX3R5cGVfZ3JvdXBfZ2V0KG1seHN3X3BjaSxcbiYjNDM7XHRcdFx0XHRcdFx0ICAgICBNTFhTV19QQ0lfUVVFVUVfVFlQRV9DUSk7XG4mIzQzO1x0Zm9yIChpID0gMDsgaSBcdTAwM2MgcXVldWVfZ3JvdXAtXHUwMDNlY291bnQ7IGkmIzQzOyYjNDM7KVxuJiM0MztcdFx0bWx4c3dfcGNpX2NxX25hcGlfZGlzYWJsZShcdTAwMjZxdWV1ZV9ncm91cC1cdTAwM2VxW2ldKTtcbiYjNDM7XG4gXHRtbHhzd19wY2lfcXVldWVfZ3JvdXBfZmluaShtbHhzd19wY2ksIFx1MDAyNm1seHN3X3BjaV9yZHFfb3BzKTtcbiBcdG1seHN3X3BjaV9xdWV1ZV9ncm91cF9maW5pKG1seHN3X3BjaSwgXHUwMDI2bWx4c3dfcGNpX3NkcV9vcHMpO1xuIFx0bWx4c3dfcGNpX3F1ZXVlX2dyb3VwX2ZpbmkobWx4c3dfcGNpLCBcdTAwMjZtbHhzd19wY2lfY3Ffb3BzKTtcbkBAIC0yMDg5LDYgJiM0MzsyMTA4LDcgQEAgc3RhdGljIHZvaWQgbWx4c3dfcGNpX2Zpbmkodm9pZCAqYnVzX3ByaXYpXG4gXHRzdHJ1Y3QgbWx4c3dfcGNpICptbHhzd19wY2kgPSBidXNfcHJpdjtcbiBcbiBcdGZyZWVfaXJxKHBjaV9pcnFfdmVjdG9yKG1seHN3X3BjaS1cdTAwM2VwZGV2LCAwKSwgbWx4c3dfcGNpKTtcbiYjNDM7XHR0YXNrbGV0X2tpbGwoXHUwMDI2bWx4c3dfcGNpX2VxX2dldChtbHhzd19wY2kpLVx1MDAzZXUuZXEudGFza2xldCk7XG4gXHRtbHhzd19wY2lfYXFzX2ZpbmkobWx4c3dfcGNpKTtcbiBcdG1seHN3X3BjaV9uYXBpX2RldnNfZmluaShtbHhzd19wY2kpO1xuIFx0bWx4c3dfcGNpX2Z3X2FyZWFfZmluaShtbHhzd19wY2kpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDA4OjMxPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjJtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNTFhTV19DT1JFJiMzNDssCiAgICAmIzM0O01MWFNXX1BDSSYjMzQ7LAogICAgJiMzNDtNTFhTV19TUEVDVFJVTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O21seHN3X3BjaV9jcV9uYXBpX2Rpc2FibGUmIzM0OywKICAgICYjMzQ7bWx4c3dfcGNpX2NxX2luaXQmIzM0OywKICAgICYjMzQ7bWx4c3dfcGNpX2NxX2ZpbmkmIzM0OywKICAgICYjMzQ7bWx4c3dfcGNpX2Fxc19maW5pJiMzNDssCiAgICAmIzM0O21seHN3X3BjaV9maW5pJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgZG91YmxlIGBuYXBpX2Rpc2FibGVgIGFuZCBhIG1pc3NpbmcgYHRhc2tsZXRfa2lsbGAgZHVyaW5nIHRoZSB0ZWFyZG93biBvZiB0aGUgTWVsbGFub3ggc3dpdGNoIFBDSSBkcml2ZXIgKGBtbHhzd2ApLiBJdCBhZGRzIGEgYG5hcGlfZW5hYmxlZGAgZmxhZyBhbmQgYSBuZXcgZnVuY3Rpb24gYG1seHN3X3BjaV9jcV9uYXBpX2Rpc2FibGVgLiBUaGlzIG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGRyaXZlciBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgdGhlIHRlYXJkb3duIHBhdGhzIGFyZSByb2J1c3QuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDEwNDc2YTM5NDA4MGMzZDNlNjI4MTBjZmViOGVmMGM0N2MwYTE4OGYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEp1bCAyMiAwODozMTozMiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3BjaS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvcGNpLmMKaW5kZXggMGRhODVkMzY2NDdkOTEuLmZlZWIzMjEzNGQyYWE2IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuYwpAQCAtODYsNiAmIzQzOzg2LDcgQEAgc3RydWN0IG1seHN3X3BjaV9xdWV1ZSB7CiAJCQllbnVtIG1seHN3X3BjaV9jcWVfdiB2OwogCQkJc3RydWN0IG1seHN3X3BjaV9xdWV1ZSAqZHE7CiAJCQlzdHJ1Y3QgbmFwaV9zdHJ1Y3QgbmFwaTsKJiM0MzsJCQlib29sIG5hcGlfZW5hYmxlZDsKIAkJCXN0cnVjdCBwYWdlX3Bvb2wgKnBhZ2VfcG9vbDsKIAkJfSBjcTsKIAkJc3RydWN0IHsKQEAgLTk4OSw2ICYjNDM7OTkwLDE1IEBAIHN0YXRpYyB2b2lkIG1seHN3X3BjaV9jcV9uYXBpX3RlYXJkb3duKHN0cnVjdCBtbHhzd19wY2lfcXVldWUgKnEpCiAJbmV0aWZfbmFwaV9kZWwoJmFtcDtxLSZndDt1LmNxLm5hcGkpOwogfQogCiYjNDM7c3RhdGljIHZvaWQgbWx4c3dfcGNpX2NxX25hcGlfZGlzYWJsZShzdHJ1Y3QgbWx4c3dfcGNpX3F1ZXVlICpxKQomIzQzO3sKJiM0MzsJaWYgKCFxLSZndDt1LmNxLm5hcGlfZW5hYmxlZCkKJiM0MzsJCXJldHVybjsKJiM0MzsKJiM0MzsJbmFwaV9kaXNhYmxlKCZhbXA7cS0mZ3Q7dS5jcS5uYXBpKTsKJiM0MzsJcS0mZ3Q7dS5jcS5uYXBpX2VuYWJsZWQgPSBmYWxzZTsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgaW50IG1seHN3X3BjaV9jcV9wYWdlX3Bvb2xfaW5pdChzdHJ1Y3QgbWx4c3dfcGNpX3F1ZXVlICpxLAogCQkJCSAgICAgICBlbnVtIG1seHN3X3BjaV9jcV90eXBlIGNxX3R5cGUpCiB7CkBAIC0xMDY0LDYgJiM0MzsxMDc0LDcgQEAgc3RhdGljIGludCBtbHhzd19wY2lfY3FfaW5pdChzdHJ1Y3QgbWx4c3dfcGNpICptbHhzd19wY2ksIGNoYXIgKm1ib3gsCiAJCWdvdG8gZXJyX3BhZ2VfcG9vbF9pbml0OwogCiAJbmFwaV9lbmFibGUoJmFtcDtxLSZndDt1LmNxLm5hcGkpOwomIzQzOwlxLSZndDt1LmNxLm5hcGlfZW5hYmxlZCA9IHRydWU7CiAJbWx4c3dfcGNpX3F1ZXVlX2Rvb3JiZWxsX2NvbnN1bWVyX3JpbmcobWx4c3dfcGNpLCBxKTsKIAltbHhzd19wY2lfcXVldWVfZG9vcmJlbGxfYXJtX2NvbnN1bWVyX3JpbmcobWx4c3dfcGNpLCBxKTsKIAlyZXR1cm4gMDsKQEAgLTEwNzgsNyAmIzQzOzEwODksNyBAQCBzdGF0aWMgdm9pZCBtbHhzd19wY2lfY3FfZmluaShzdHJ1Y3QgbWx4c3dfcGNpICptbHhzd19wY2ksCiB7CiAJZW51bSBtbHhzd19wY2lfY3FfdHlwZSBjcV90eXBlID0gbWx4c3dfcGNpX2NxX3R5cGUobWx4c3dfcGNpLCBxKTsKIAotCW5hcGlfZGlzYWJsZSgmYW1wO3EtJmd0O3UuY3EubmFwaSk7CiYjNDM7CW1seHN3X3BjaV9jcV9uYXBpX2Rpc2FibGUocSk7CiAJbWx4c3dfcGNpX2NxX3BhZ2VfcG9vbF9maW5pKHEsIGNxX3R5cGUpOwogCW1seHN3X3BjaV9jcV9uYXBpX3RlYXJkb3duKHEpOwogCW1seHN3X2NtZF9odzJzd19jcShtbHhzd19wY2ktJmd0O2NvcmUsIHEtJmd0O251bSk7CkBAIC0xNDM5LDYgJiM0MzsxNDUwLDE0IEBAIHN0YXRpYyBpbnQgbWx4c3dfcGNpX2Fxc19pbml0KHN0cnVjdCBtbHhzd19wY2kgKm1seHN3X3BjaSwgY2hhciAqbWJveCkKIAogc3RhdGljIHZvaWQgbWx4c3dfcGNpX2Fxc19maW5pKHN0cnVjdCBtbHhzd19wY2kgKm1seHN3X3BjaSkKIHsKJiM0MzsJc3RydWN0IG1seHN3X3BjaV9xdWV1ZV90eXBlX2dyb3VwICpxdWV1ZV9ncm91cDsKJiM0MzsJaW50IGk7CiYjNDM7CiYjNDM7CXF1ZXVlX2dyb3VwID0gbWx4c3dfcGNpX3F1ZXVlX3R5cGVfZ3JvdXBfZ2V0KG1seHN3X3BjaSwKJiM0MzsJCQkJCQkgICAgIE1MWFNXX1BDSV9RVUVVRV9UWVBFX0NRKTsKJiM0MzsJZm9yIChpID0gMDsgaSAmbHQ7IHF1ZXVlX2dyb3VwLSZndDtjb3VudDsgaSYjNDM7JiM0MzspCiYjNDM7CQltbHhzd19wY2lfY3FfbmFwaV9kaXNhYmxlKCZhbXA7cXVldWVfZ3JvdXAtJmd0O3FbaV0pOwomIzQzOwogCW1seHN3X3BjaV9xdWV1ZV9ncm91cF9maW5pKG1seHN3X3BjaSwgJmFtcDttbHhzd19wY2lfcmRxX29wcyk7CiAJbWx4c3dfcGNpX3F1ZXVlX2dyb3VwX2ZpbmkobWx4c3dfcGNpLCAmYW1wO21seHN3X3BjaV9zZHFfb3BzKTsKIAltbHhzd19wY2lfcXVldWVfZ3JvdXBfZmluaShtbHhzd19wY2ksICZhbXA7bWx4c3dfcGNpX2NxX29wcyk7CkBAIC0yMDg5LDYgJiM0MzsyMTA4LDcgQEAgc3RhdGljIHZvaWQgbWx4c3dfcGNpX2Zpbmkodm9pZCAqYnVzX3ByaXYpCiAJc3RydWN0IG1seHN3X3BjaSAqbWx4c3dfcGNpID0gYnVzX3ByaXY7CiAKIAlmcmVlX2lycShwY2lfaXJxX3ZlY3RvcihtbHhzd19wY2ktJmd0O3BkZXYsIDApLCBtbHhzd19wY2kpOwomIzQzOwl0YXNrbGV0X2tpbGwoJmFtcDttbHhzd19wY2lfZXFfZ2V0KG1seHN3X3BjaSktJmd0O3UuZXEudGFza2xldCk7CiAJbWx4c3dfcGNpX2Fxc19maW5pKG1seHN3X3BjaSk7CiAJbWx4c3dfcGNpX25hcGlfZGV2c19maW5pKG1seHN3X3BjaSk7CiAJbWx4c3dfcGNpX2Z3X2FyZWFfZmluaShtbHhzd19wY2kpOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAwODozMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTQ4CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMTYzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIE1lbGxhbm94IFN3aXRjaCBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCB0d2Vha3MgdGhlIE1lbGxhbm94IHN3aXRjaCBkcml2ZXIsIHNwZWNpZmljYWxseSBgbWx4c3cvcGNpLmNgLiBTZWVtcyBsaWtlIHRoZXkmIzM5O3JlIGFkZHJlc3NpbmcgYSBwb3RlbnRpYWwgZG91YmxlIGBuYXBpX2Rpc2FibGVgIGlzc3VlIGJ5IGludHJvZHVjaW5nIGEgYG5hcGlfZW5hYmxlZGAgZmxhZyB3aXRoaW4gdGhlIGBtbHhzd19wY2lfcXVldWVgIHN0cnVjdHVyZS4gU21hcnQgbW92ZSwgdGhhdCBraW5kIG9mIHJhY2UgY29uZGl0aW9uIGNhbiBiZSBhIHBhaW4uIFRoZXkmIzM5O3JlIGFsc28gdGhyb3dpbmcgaW4gYSBgdGFza2xldF9raWxsYCBjYWxsIGR1cmluZyBgbWx4c3dfcGNpX2ZpbmlgLCBwcm9iYWJseSBmb3Igc29tZSBjbGVhbi11cC4gQWxsIHN0YW5kYXJkIHN0dWZmIGZvciBhIGRyaXZlciBsaWtlIHRoaXMuCgpNeSBpbW1lZGlhdGUgdGhvdWdodCwgdGhvdWdoLCBpcyBob3cgdGhpcyBkcml2ZXIgcGxheXMgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gTWVsbGFub3ggc3dpdGNoZXMgYXJlIHR5cGljYWxseSBwaHlzaWNhbCBQQ0kgZGV2aWNlcywgcmlnaHQ/IFRoZXkmIzM5O3JlIGRlc2lnbmVkIGZvciBoaWdoLXBlcmZvcm1hbmNlIG5ldHdvcmtpbmcgb24gZGVkaWNhdGVkIGhhcmR3YXJlLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGVyZSYjMzk7cyBhbnkgUUVNVSBlbXVsYXRpb24gZm9yIGBtbHhzd2AuIElmIHRoaXMgZHJpdmVyIGlzIHB1cmVseSBoYXJkd2FyZS1kZXBlbmRlbnQsIHRoZW4gdGhpcyBwYXRjaCBtaWdodCBoYXZlIGxpbWl0ZWQgaW1wYWN0IGluIGEgdmlydHVhbGl6ZWQgc2V0dXAuIFRoZSBtYWluIHRoaW5nIGlzIHRvIGRldGVybWluZSBpZiB0aGlzIGlzIHJlbGV2YW50IHRvIG15IGN1cnJlbnQgd29yay4KCkkmIzM5O2xsIGp1bXAgaW50byB0aGUga2VybmVsIGNvbmZpZ3MgYW5kIGRvIGEgcXVpY2sgc2VhcmNoIGZvciBgbWx4c3dgIHRvIHNlZSB3aGF0IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgYXZhaWxhYmxlLiBUaGF0IHNob3VsZCBnaXZlIG1lIGEgZ29vZCBoYW5kbGUgb24gaXRzIHVzYWdlIGFuZCBwb3NzaWJsZSB2aXJ0dWFsaXphdGlvbiBzY2VuYXJpb3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMDg6MzE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1MWFNXJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L0tjb25maWctNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L0tjb25maWc6Njpjb25maWcgTUxYU1dfQ09SRVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvS2NvbmZpZy03LVx0dHJpc3RhdGUgXCYjMzQ7TWVsbGFub3ggVGVjaG5vbG9naWVzIFN3aXRjaCBBU0lDcyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvS2NvbmZpZy0xNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L0tjb25maWc6MTc6Y29uZmlnIE1MWFNXX0NPUkVfSFdNT05cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L0tjb25maWctMTgtXHRib29sIFwmIzM0O0hXTU9OIHN1cHBvcnQgZm9yIE1lbGxhbm94IFRlY2hub2xvZ2llcyBTd2l0Y2ggQVNJQ3NcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9LY29uZmlnLTI0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvS2NvbmZpZzoyNTpjb25maWcgTUxYU1dfQ09SRV9USEVSTUFMXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9LY29uZmlnLTI2LVx0Ym9vbCBcJiMzNDtUaGVybWFsIHpvbmUgc3VwcG9ydCBmb3IgTWVsbGFub3ggVGVjaG5vbG9naWVzIFN3aXRjaCBBU0lDc1wmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L0tjb25maWctMzItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9LY29uZmlnOjMzOmNvbmZpZyBNTFhTV19QQ0lcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L0tjb25maWctMzQtXHR0cmlzdGF0ZSBcJiMzNDtQQ0kgYnVzIGltcGxlbWVudGF0aW9uIGZvciBNZWxsYW5veCBUZWNobm9sb2dpZXMgU3dpdGNoIEFTSUNzXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvS2NvbmZpZy00My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L0tjb25maWc6NDQ6Y29uZmlnIE1MWFNXX0kyQ1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvS2NvbmZpZy00NS1cdHRyaXN0YXRlIFwmIzM0O0kyQyBidXMgaW1wbGVtZW50YXRpb24gZm9yIE1lbGxhbm94IFRlY2hub2xvZ2llcyBTd2l0Y2ggQVNJQ3NcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9LY29uZmlnLTUzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvS2NvbmZpZzo1NDpjb25maWcgTUxYU1dfU1BFQ1RSVU1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L0tjb25maWctNTUtXHR0cmlzdGF0ZSBcJiMzNDtNZWxsYW5veCBUZWNobm9sb2dpZXMgU3BlY3RydW0gZmFtaWx5IHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9LY29uZmlnLTc0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvS2NvbmZpZzo3NTpjb25maWcgTUxYU1dfU1BFQ1RSVU1fRENCXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9LY29uZmlnLTc2LVx0Ym9vbCBcJiMzNDtEYXRhIENlbnRlciBCcmlkZ2luZyAoRENCKSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvS2NvbmZpZy04Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L0tjb25maWc6ODM6Y29uZmlnIE1MWFNXX01JTklNQUxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L0tjb25maWctODQtXHR0cmlzdGF0ZSBcJiMzNDtNZWxsYW5veCBUZWNobm9sb2dpZXMgbWluaW1hbCBJMkMgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDA4OjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQxMzcKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiAxMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBNZWxsYW5veCBUZWNobm9sb2dpZXMgU3dpdGNoIEFTSUMgRHJpdmVyKioKCk9rYXksIHNvIHRoaXMgY29kZSBpcyBkZWZpbml0ZWx5IHRoZSBkcml2ZXIgZm9yIHRoZSBNZWxsYW5veCBzd2l0Y2ggQVNJQ3MuIE5vIGFtYmlndWl0eSB0aGVyZS4gR2l2ZW4gbXkgZXhwZXJpZW5jZSwgaXQmIzM5O3MgY2xlYXIgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBoYXJkd2FyZS1zcGVjaWZpYyBjb2RlIGhlcmUuIE15IGZpcnN0IGluc3RpbmN0LCBhcyBhbHdheXMsIGlzIHRvIHRoaW5rIGFib3V0IHRlc3RpbmcuIFRoZSBxdWVzdGlvbiBpczogY2FuIHdlIHNpbXVsYXRlIHRoaXM/IElzIHRoZXJlIGEgc29mdHdhcmUgZW11bGF0aW9uIGxheWVyIGF2YWlsYWJsZT8gTGV0JiMzOTtzIHF1aWNrbHkgc2VlIGlmIHRoZXJlJiMzOTtzIGFueSBgbmV0ZGV2c2ltYCBlcXVpdmFsZW50IGZvciBgbWx4c3dgLiBBaCwgbm8sIGBuZXRkZXZzaW1gIGl0c2VsZiBpcyBhIHN0YW5kYWxvbmUgdGhpbmcsIHNlcGFyYXRlIGZyb20gYG1seHN3YC4gT2theSwgc28gd2UmIzM5O3JlIGxvb2tpbmcgYXQgaW50ZXJhY3Rpbmcgd2l0aCB0aGlzIGRyaXZlci4gVGhlIGZvY3VzIGhlcmUgaXMgdG8gdW5kZXJzdGFuZCBhIGNlcnRhaW4gbG9naWMgZmxvdywgSSBuZWVkIHRvIGtub3cgaWYgd2UgY2FuIHJlYWNoIHNwZWNpZmljIGZ1bmN0aW9ucyBpbiBvdXIgc2l0dWF0aW9uLgoKVGhlIGtleSBoZXJlIGlzIHdoZXRoZXIgd2UgY2FuIHJlYWNoIGEgZnVuY3Rpb24gbGlrZSBgbWx4c3dfcGNpX2ZpbmlgIG9yIHNvbWV0aGluZyByZWxhdGVkIGxpa2UgYG1seHN3X3BjaV9jcV9uYXBpX2Rpc2FibGVgIHdpdGhvdXQgdGhlIGFjdHVhbCBoYXJkd2FyZSBwcmVzZW50LiBQZXJoYXBzIGJ5IGZha2luZyBzcGVjaWZpYyBjb25kaXRpb25zLCB1c2luZyBtb2Nrcywgb3IgZmluZGluZyBhbHRlcm5hdGl2ZSBlbnRyeSBwb2ludHMuIE15IG5leHQgc3RlcCB3aWxsIGJlIHRvIGRpdmUgaW50byBgbWx4c3dfcGNpX3Byb2JlYCBhcyB0aGUgb2J2aW91cyBlbnRyeSBwb2ludC4gSSB3YW50IHRvIHNlZSBob3cgdGhlIHN5c3RlbSBicmluZ3MgdGhlIGhhcmR3YXJlIHVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDA4OjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21seHN3X3BjaV9wcm9iZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3BjaS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3BjaS5jPTI0MjM9c3RhdGljIHZvaWQgbWx4c3dfcGNpX2NtZF9maW5pKHN0cnVjdCBtbHhzd19wY2kgKm1seHN3X3BjaSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuYy0yNDI5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvcGNpLmM6MjQzMDpzdGF0aWMgaW50IG1seHN3X3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvcGNpLmMtMjQzMS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvcGNpLmM9MjU0OD1pbnQgbWx4c3dfcGNpX2RyaXZlcl9yZWdpc3RlcihzdHJ1Y3QgcGNpX2RyaXZlciAqcGNpX2RyaXZlcilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3BjaS5jLTI1NDkte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvcGNpLmM6MjU1MDpcdHBjaV9kcml2ZXItXHUwMDNlcHJvYmUgPSBtbHhzd19wY2lfcHJvYmU7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuYy0yNTUxLVx0cGNpX2RyaXZlci1cdTAwM2VyZW1vdmUgPSBtbHhzd19wY2lfcmVtb3ZlO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDA4OjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ4OTgKCQkJCQkJCW91dHB1dDogMjUKCQkJCQkJCXRob3VnaHRzOiA2MTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIFBDSSBEcml2ZXIgUmVhY2hhYmlsaXR5IGZvciBGdXp6aW5nKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIFBDSSBkcml2ZXIgY29kZS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBpdCYjMzk7cyBwcmV0dHkgc3RhbmRhcmQuIFRoZSBgcHJvYmVgIGZ1bmN0aW9uLCB3aGljaCBpcyBjcnVjaWFsLCB3b24mIzM5O3QgZXZlbiBiZSBjYWxsZWQgdW5sZXNzIHRoZXJlJiMzOTtzIGFuIGFjdHVhbCwgb3IgYXQgbGVhc3QgZW11bGF0ZWQsIFBDSSBkZXZpY2Ugd2l0aCB0aGUgcmlnaHQgdmVuZG9yIGFuZCBkZXZpY2UgSUQgcHJlc2VudC4gVGhhdCYjMzk7cyB0aGUgYmFzZWxpbmUgYXNzdW1wdGlvbi4KClRoZW4gSSBzdGFydGVkIGNvbnNpZGVyaW5nIGVtdWxhdGlvbiBwb3NzaWJpbGl0aWVzLiBJcyB0aGVyZSBhbnkgUUVNVSBzdXBwb3J0IGZvciBNZWxsYW5veCBTd2l0Y2ggQVNJQ3M/IE5vcGUsIFFFTVUgaXMgbG9hZGVkIHVwIHdpdGggYSBzdGFuZGFyZCBzZXQgb2YgZW11bGF0ZWQgTklDcyAoZTEwMDAsIHJ0bDgxMzksIHZpcnRpbywgZXRjLiksIGJ1dCBub3RoaW5nIHJlbGF0ZWQgdG8gdGhpcyBwYXJ0aWN1bGFyIHBpZWNlIG9mIGhhcmR3YXJlLiBUaGVyZWZvcmUsIGluIHRoZSB0cmFkaXRpb25hbCB2aXJ0dWFsaXphdGlvbiBzZXR1cCBvZiBHQ0Ugb3IgZXZlbiBRRU1VLCB0aGlzIGNvZGUmIzM5O3MgdW5yZWFjaGFibGUsIG9yIGF0IGxlYXN0LCBJIHRob3VnaHQgc28uCgpCdXQgdGhlbiwgc3l6Ym90IGZvdW5kIGEgYnVnIGhlcmUuIE5vdyAqdGhhdCogZ290IG15IGF0dGVudGlvbi4gJiMzNDtzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcmIzM0Oy4gV2FpdCwgY291bGQgc3l6Ym90IHNvbWVob3cgYmUgZnV6emluZyBQQ0kgZGV2aWNlcz8gRG9lcyBzeXpib3QgdXNlIGEgbWVjaGFuaXNtIGxpa2UgYHZoY2lgIGZvciBQQ0k/IEl0JiMzOTtzIHRoZSBzdGFuZGFyZCBmb3IgVVNCLCBzbyB0aGF0IHdvdWxkbiYjMzk7dCBzdXJwcmlzZSBtZS4gVGhlIGltbWVkaWF0ZSB0aG91Z2h0IHdhcywgZG9lcyBzeXprYWxsZXIgaGF2ZSBzb21lIGBzeXpfcGNpX2RldmljZWAgcHNldWRvLXN5c2NhbGwgdGhhdCBJIGhhdmVuJiMzOTt0IHNlZW4/CgpTbywgSSBzdGFydGVkIHNlYXJjaGluZyB0byBmaWd1cmUgb3V0IGhvdyBzeXprYWxsZXIgY2FuIHJlYWNoIGl0LiBJIHN0YXJ0ZWQgdGhlIHByb2Nlc3Mgb2YgZWxpbWluYXRpb24uIFN5emthbGxlciBkb2VzbiYjMzk7dCBoYXZlIGEgZ2VuZXJpYyBgc3l6X3BjaV9kZXZpY2VgIHN0eWxlIHN5c2NhbGwuIFdhaXQsIGJ1dCBpdCBoYXMgYHN5el9rdm1fc2V0dXBfY3B1YCB3aGljaCBpcyBhIGNsdWUgdGhhdCBpdCBtYXkgYmUgdXNpbmcgbW9yZSBjb21wbGV4IG1lY2hhbmlzbXMuIEFoLCBpdCBkb2VzIGhhdmUgYSBQQ0kgZnV6emVyIQoKSG93ZXZlciwgSSByZW1pbmRlZCBteXNlbGYgdGhhdCB0aGUgZG9jdW1lbnRhdGlvbiBzdGF0ZXM6ICYjMzQ7SW1wb3J0YW50IG5vdGU6IHRoaXMgdG9vbCBDQU5OT1QgYmUgdXNlZCB0byBzZWFyY2ggc3l6a2FsbGVyIHN5emxhbmcgZGVzY3JpcHRpb25zIChzeXMvKikgb3IgZXhwcmVzc2lvbnMgY29udGFpbmluZyAmIzM5O3N5el8mIzM5OyBzaW5jZSB0aGV5IGFyZSBzeXprYWxsZXIgcHNldWRvLXN5c2NhbGxzLCBhbmQgbm90IHByZXNlbnQgaW4gdGhlIExpbnV4IGtlcm5lbC4mIzM0OyBPaywgc28gaXQmIzM5O3Mgbm90IGRpcmVjdC4KCkFscmlnaHQsIEkgc3dpdGNoZWQgZ2VhcnMgYWdhaW4uIERvZXMgc3l6a2FsbGVyIHNvbWVob3cgdXNlIGB2ZmlvYCBvciBpbmplY3QgUENJIGRldmljZXMgc29tZSBvdGhlciB3YXk/IEkgbmVlZCB0byBjaGVjay4gSXQmIzM5O3MgdXNpbmcgc2ltaWxhciB0ZWNobmlxdWVzIGZvciBvdGhlciBraW5kcyBvZiBkZXZpY2VzLiBUaGUgYW5zd2VyIGlzIG5vdCBzdHJhaWdodGZvcndhcmQuIERvZXMgc3l6a2FsbGVyIGhhdmUgYSBQQ0kgZnV6emVyPyBZZXMsIGFuZCBJIG5lZWQgdG8gZmlndXJlIG91dCBob3chIFNvIGl0JiMzOTtzIG5vdCBgdmZpb2Agb3IgYSBjdXN0b20gUENJIGRldmljZSBpbiBRRU1VLiBOb3BlLCBzeXprYWxsZXIgbXVzdCBoYXZlIHNvbWUgd2F5IHRvIGluamVjdCBQQ0kgZGV2aWNlcy4KClNvIGRvZXMgc3l6a2FsbGVyIGhhdmUgYHN5el9wY2lfZGV2aWNlYD8gSSYjMzk7dmUgZ290IHRvIGNoZWNrLiBNYXliZSB0aGVyZSYjMzk7cyBzb21lIGRvY3VtZW50YXRpb24gb3IgY29kZSBpbiBgRG9jdW1lbnRhdGlvbi9gIG9yIGBkcml2ZXJzL3BjaS9gIHRoYXQmIzM5O3Mgc3l6a2FsbGVyLXNwZWNpZmljIHRoYXQgd2lsbCBnaXZlIG1lIHRoZSBhbnN3ZXIuIEJ1dCwgaW4gZ2VuZXJhbCwgaWYgaXQmIzM5O3MgYSBoYXJkd2FyZSBkcml2ZXIgd2l0aG91dCBzb2Z0d2FyZSBlbXVsYXRpb24sIGl0JiMzOTtzIHVzdWFsbHkgdW5yZWFjaGFibGUsIHNvIEkgbmVlZCB0byBjaGVjayB0aGUga2VybmVsIGZvciBQQ0kgZW11bGF0aW9uIHNwZWNpZmljYWxseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAwODozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N5el9wY2kmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDA4OjMyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYxOTEKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAyNjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgRnV6emluZyBQb3NzaWJpbGl0aWVzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIGluaXRpYWxseSwgSSBkb24mIzM5O3Qgc2VlIGFueXRoaW5nIGltbWVkaWF0ZWx5IGp1bXBpbmcgb3V0IGF0IG1lIGFib3V0IGBzeXpfcGNpYC4gV2FpdCBhIHNlY29uZCwgd2FzbiYjMzk7dCB0aGVyZSBzb21ldGhpbmcgYWJvdXQgYSBQQ0kgZnV6emVyPyBTeXprYWxsZXIgKmRvZXMqIGhhdmUgYSBQQ0kgZnV6emVyLCBidXQgSSB0aGluayBpdCBtaWdodCBiZSBpbXBsZW1lbnRlZCB2aWEgYSBRRU1VIGRldmljZSBvciBzb21ldGhpbmcgc2ltaWxhci4KCk5vdywgaWYgdGhpcyBpcyBhICpoYXJkd2FyZSogZHJpdmVyLCB0aGF0IHJhaXNlcyBhIGtleSBxdWVzdGlvbjogY2FuIHdlIGV2ZW4gZnV6eiBpdCBlZmZlY3RpdmVseT8gUmVhZGluZyB0aGVzZSBpbnN0cnVjdGlvbnMsIHRoZSBrZXkgcG9pbnQganVtcHMgb3V0OiAmIzM0O0NvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSYjMzQ7LiBUaGF0JiMzOTtzIHRoZSBjcnV4IG9mIGl0LiBJZiBpdCYjMzk7cyBzaW1wbHkgdW5yZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBzZXR0aW5nLCBJJiMzOTttIGdvaW5nIHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYC4KClRoZSBiaWcgcXVlc3Rpb24gbm93IGlzOiBpcyBgbWx4c3dgIHJlYWNoYWJsZSB3aXRoaW4gUUVNVT8gTGV0IG1lIG1lbnRhbGx5IHN0YXJ0IHNlYXJjaGluZyBmb3IgYG1seHN3YCBpbiB0aGUgUUVNVSBzb3VyY2UgY29kZS4uLiBPa2F5LCBzbyBRRU1VIGRvZXNuJiMzOTt0IGRpcmVjdGx5IGVtdWxhdGUgTWVsbGFub3ggc3dpdGNoZXMsIHRoYXQmIzM5O3MgY2VydGFpbi4gSXQgKm1pZ2h0KiBlbXVsYXRlIHNvbWUgTWVsbGFub3ggTklDcywgYnV0IGV2ZW4gdGhlbiwgaXQmIzM5O3MgcHJvYmFibHkgdGhyb3VnaCBzb21lIHJlY2VudCBhZGRpdGlvbnMgb3IgZXh0ZXJuYWwgcHJvamVjdHMuIERlZmluaXRlbHkgbm90IG1seHN3LCB0aGUgTWVsbGFub3ggU3dpdGNoIEFTSUNzIGxpa2UgdGhlIFNwZWN0cnVtIGxpbmUuCgpIb2xkIG9uLCBpcyB0aGVyZSBhIGR1bW15IGRyaXZlciBvciBzb21lIGtpbmQgb2Ygd2F5IHRvIGluc3RhbnRpYXRlIGl0IHdpdGhvdXQgdGhlIGFjdHVhbCBoYXJkd2FyZT8gTGV0IG1lIGRvdWJsZS1jaGVjayBpZiBgbWx4c3dgIGhhcyBhIGR1bW15IGJ1cyBvciBzb21ldGhpbmcgc2ltaWxhci4gSSBuZWVkIHRvIGludmVzdGlnYXRlIGlmIHRoZXJlJiMzOTtzIGFueSBtZWNoYW5pc20gZm9yIGFic3RyYWN0aW5nIHRoZSBoYXJkd2FyZSBkZXBlbmRlbmN5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAwODozMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttbHhzd18uKl9wcm9iZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9jb3JlX2xpbmVjYXJkX2Rldi5jPTEyMj1zdGF0aWMgY29uc3Qgc3RydWN0IGRldmxpbmtfb3BzIG1seHN3X2xpbmVjYXJkX2Rldl9kZXZsaW5rX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9jb3JlX2xpbmVjYXJkX2Rldi5jLTEyNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmVfbGluZWNhcmRfZGV2LmM6MTI3OnN0YXRpYyBpbnQgbWx4c3dfbGluZWNhcmRfYmRldl9wcm9iZShzdHJ1Y3QgYXV4aWxpYXJ5X2RldmljZSAqYWRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmVfbGluZWNhcmRfZGV2LmMtMTI4LVx0XHRcdFx0ICAgICBjb25zdCBzdHJ1Y3QgYXV4aWxpYXJ5X2RldmljZV9pZCAqaWQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvY29yZV9saW5lY2FyZF9kZXYuYz0xNzE9c3RhdGljIHN0cnVjdCBhdXhpbGlhcnlfZHJpdmVyIG1seHN3X2xpbmVjYXJkX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmVfbGluZWNhcmRfZGV2LmMtMTcyLVx0Lm5hbWUgPSBNTFhTV19MSU5FQ0FSRF9ERVZfSURfTkFNRSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmVfbGluZWNhcmRfZGV2LmM6MTczOlx0LnByb2JlID0gbWx4c3dfbGluZWNhcmRfYmRldl9wcm9iZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmVfbGluZWNhcmRfZGV2LmMtMTc0LVx0LnJlbW92ZSA9IG1seHN3X2xpbmVjYXJkX2JkZXZfcmVtb3ZlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2kyYy5jPTYyND1zdGF0aWMgY29uc3Qgc3RydWN0IG1seHN3X2J1cyBtbHhzd19pMmNfYnVzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2kyYy5jLTYzMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2kyYy5jOjYzMzpzdGF0aWMgaW50IG1seHN3X2kyY19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvaTJjLmMtNjM0LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9pMmMuYz03NTA9aW50IG1seHN3X2kyY19kcml2ZXJfcmVnaXN0ZXIoc3RydWN0IGkyY19kcml2ZXIgKmkyY19kcml2ZXIpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9pMmMuYy03NTEte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvaTJjLmM6NzUyOlx0aTJjX2RyaXZlci1cdTAwM2Vwcm9iZSA9IG1seHN3X2kyY19wcm9iZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2kyYy5jLTc1My1cdGkyY19kcml2ZXItXHUwMDNlcmVtb3ZlID0gbWx4c3dfaTJjX3JlbW92ZTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuYz0yNDIzPXN0YXRpYyB2b2lkIG1seHN3X3BjaV9jbWRfZmluaShzdHJ1Y3QgbWx4c3dfcGNpICptbHhzd19wY2kpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvcGNpLmMtMjQyOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3BjaS5jOjI0MzA6c3RhdGljIGludCBtbHhzd19wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3BjaS5jLTI0MzEte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3BjaS5jPTI1NDg9aW50IG1seHN3X3BjaV9kcml2ZXJfcmVnaXN0ZXIoc3RydWN0IHBjaV9kcml2ZXIgKnBjaV9kcml2ZXIpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuYy0yNTQ5LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3BjaS5jOjI1NTA6XHRwY2lfZHJpdmVyLVx1MDAzZXByb2JlID0gbWx4c3dfcGNpX3Byb2JlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvcGNpLmMtMjU1MS1cdHBjaV9kcml2ZXItXHUwMDNlcmVtb3ZlID0gbWx4c3dfcGNpX3JlbW92ZTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9yb3V0ZXIuYz0yNjIxPXN0YXRpYyB2b2lkIG1seHN3X3NwX3JvdXRlcl9uZWlnaHNfdXBkYXRlX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX3JvdXRlci5jLTI2MzYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9yb3V0ZXIuYzoyNjM3OnN0YXRpYyB2b2lkIG1seHN3X3NwX3JvdXRlcl9wcm9iZV91bnJlc29sdmVkX25leHRob3BzKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX3JvdXRlci5jLTI2Mzgte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX3JvdXRlci5jLTI2NTYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9yb3V0ZXIuYzoyNjU3Olx0bWx4c3dfY29yZV9zY2hlZHVsZV9kdyhcdTAwMjZyb3V0ZXItXHUwMDNlbmV4dGhvcF9wcm9iZV9kdyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX3JvdXRlci5jLTI2NTgtXHRcdFx0ICAgICAgIE1MWFNXX1NQX1VOUkVTT0xWRURfTkhfUFJPQkVfSU5URVJWQUwpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX3JvdXRlci5jPTI5NDY9c3RhdGljIGludCBtbHhzd19zcF9uZWlnaF9pbml0KHN0cnVjdCBtbHhzd19zcCAqbWx4c3dfc3ApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fcm91dGVyLmMtMjk2Mi1cdFx0XHQgIG1seHN3X3NwX3JvdXRlcl9uZWlnaHNfdXBkYXRlX3dvcmspO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fcm91dGVyLmM6Mjk2MzpcdElOSVRfREVMQVlFRF9XT1JLKFx1MDAyNm1seHN3X3NwLVx1MDAzZXJvdXRlci1cdTAwM2VuZXh0aG9wX3Byb2JlX2R3LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fcm91dGVyLmM6Mjk2NDpcdFx0XHQgIG1seHN3X3NwX3JvdXRlcl9wcm9iZV91bnJlc29sdmVkX25leHRob3BzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX3JvdXRlci5jLTI5NjUtXHRhdG9taWNfc2V0KFx1MDAyNm1seHN3X3NwLVx1MDAzZXJvdXRlci1cdTAwM2VuZWlnaHNfdXBkYXRlLm5laWdoX2NvdW50LCAwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX3JvdXRlci5jLTI5NjYtXHRtbHhzd19jb3JlX3NjaGVkdWxlX2R3KFx1MDAyNm1seHN3X3NwLVx1MDAzZXJvdXRlci1cdTAwM2VuZWlnaHNfdXBkYXRlLmR3LCAwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX3JvdXRlci5jOjI5Njc6XHRtbHhzd19jb3JlX3NjaGVkdWxlX2R3KFx1MDAyNm1seHN3X3NwLVx1MDAzZXJvdXRlci1cdTAwM2VuZXh0aG9wX3Byb2JlX2R3LCAwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX3JvdXRlci5jLTI5NjgtXHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9yb3V0ZXIuYz0yOTcxPXN0YXRpYyB2b2lkIG1seHN3X3NwX25laWdoX2Zpbmkoc3RydWN0IG1seHN3X3NwICptbHhzd19zcClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9yb3V0ZXIuYy0yOTczLVx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFx1MDAyNm1seHN3X3NwLVx1MDAzZXJvdXRlci1cdTAwM2VuZWlnaHNfdXBkYXRlLmR3KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX3JvdXRlci5jOjI5NzQ6XHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXHUwMDI2bWx4c3dfc3AtXHUwMDNlcm91dGVyLVx1MDAzZW5leHRob3BfcHJvYmVfZHcpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fcm91dGVyLmMtMjk3NS1cdHJoYXNodGFibGVfZGVzdHJveShcdTAwMjZtbHhzd19zcC1cdTAwM2Vyb3V0ZXItXHUwMDNlbmVpZ2hfaHQpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAwODozMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NjgyCgkJCQkJCQlvdXRwdXQ6IDI1CgkJCQkJCQl0aG91Z2h0czogNTU4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIFN5emthbGxlciYjMzk7cyBQQ0kgRnV6emluZyBDYXBhYmlsaXRpZXMqKgoKT2theSwgc28gSSYjMzk7bSB0cnlpbmcgdG8gZmlndXJlIG91dCBpZiB0aGlzIGRyaXZlciBpcyByZWFjaGFibGUgdmlhIHN5emthbGxlciBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBUaGUgaW5pdGlhbCB0aG91Z2h0IGlzLCBob3cgaXMgdGhlIGRyaXZlciBwcm9iZWQ/IFBDSSBvciBJMkMsIGxpa2VseS4gTm93LCB0aGUgYmlnIHF1ZXN0aW9uOiBjYW4gc3l6a2FsbGVyIGFjdHVhbGx5ICplbXVsYXRlKiBQQ0kgZGV2aWNlcz8gSSBrbm93IGl0IGRvZXNuJiMzOTt0IGhhdmUgYSBmdWxseSBmbGV4aWJsZSBQQ0kgZW11bGF0b3IsIGVzcGVjaWFsbHkgbm90IG9uZSB0aGF0IGxldHMgeW91IGRlZmluZSBhcmJpdHJhcnkgdmVuZG9yL2RldmljZSBJRHMgZWFzaWx5LiBVbmxlc3MgaXQmIzM5O3MgbGV2ZXJhZ2luZyBgdmZpb2Agd2l0aCBhIHJlYWwsIG9yIGF0IGxlYXN0IGEgKmR1bW15KiwgZGV2aWNlLgoKV2FpdCBhIHNlY29uZCwgc3l6Ym90IHJlcG9ydGVkIGEgYnVnIGluIHRoaXMgY29kZSEgQW5kIHRoZXJlJiMzOTtzIGEgcGF0Y2ggdW5kZXIgcmV2aWV3LCByZWxhdGVkIHRvIHRoaXMgaXNzdWUhIFRoaXMgaXMgcHJvbWlzaW5nLCBzeXpib3QgZm91bmQgc29tZXRoaW5nISBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBjaGVjayBpZiBzeXprYWxsZXIgaGFzIGEgd2F5IHRvIGZ1enogUENJIGRldmljZXMgaW4gZ2VuZXJhbC4gSSByZW1lbWJlciB0aGVyZSAqaXMqIGEgUENJIGZ1enplciwgdXNpbmcgYHN5el9wY2lfZGV2aWNlYCBvciBhIHNpbWlsYXIgY29uc3RydWN0LCByaWdodD8gTm9wZSwgdGhpcyBwcm9tcHQgcmVtaW5kZWQgbWU6IHRob3NlICYjMzQ7c3l6XyYjMzQ7IGNhbGxzIGFyZW4mIzM5O3QgcmVhbCBrZXJuZWwgY2FsbHMsIHNvIHRoYXQmIzM5O3MgYSBkZWFkIGVuZC4KCkkgKnRob3VnaHQqIHRoZXJlIHdhcyByZWNlbnQgUENJIGZ1enppbmcgc3VwcG9ydCB3aXRoIGBzeXpfcGNpX2RldmljZWAsIGxpa2Ugd2l0aCBVU0IgYW5kIGB2aGNpYCwgYnV0IG5vLCBub3QgcXVpdGUuIFRoZSBpbXBsZW1lbnRhdGlvbiBtdXN0IGJlIHNvbWV3aGVyZSBlbHNlLiBCdXQgd2FpdCEgSSByZWNhbGwgc3l6a2FsbGVyICpkb2VzKiBoYXZlIGEgUENJIGZ1enplciBhbmQgSSB0aGluayBpdCYjMzk7cyBkZWZpbmVkIGluIGEgYHN5cy9saW51eC9wY2kudHh0YCBvciBzaW1pbGFyIGZpbGUuIElmIHRoYXQmIzM5O3MgdGhlIGNhc2UsIHRoZW4gbWF5YmUgSSBjYW4gZmlndXJlIG91dCBob3cgdG8gcmVhY2ggYG1seHN3X3BjaV9wcm9iZWAuCgpPa2F5LCBzbyBpZiBzeXprYWxsZXIgKmNhbiogZnV6eiBQQ0kgZGV2aWNlcywgdGhlbiB0aGlzIGNvZGUgKmlzKiByZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gTGV0JiMzOTtzIGFzc3VtZSBzeXprYWxsZXIgY2FuIGRvIHRoaXMuIFRoZSBwcm9tcHQganVzdCBicm91Z2h0IHVwIHRoZSBjaGFsbGVuZ2UgYWdhaW46IHVucmVhY2hhYmxlIGNvZGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBJZiBzeXprYWxsZXIgKmRvZXMqIGhhdmUgYSBQQ0kgZnV6emVyLCBpdCBoYXMgdG8gdXNlIHNvbWUgUUVNVSBmZWF0dXJlIChsaWtlIGB2ZmlvLXVzZXJgLCBgaXZzaG1lbWAsIG9yIGEgY3VzdG9tIFFFTVUgZGV2aWNlKSBvciBrZXJuZWwgZmVhdHVyZSAoYHBjaV9zdHViYCBvciBgdmZpb2ApIHRvIGluamVjdCBQQ0kgZGV2aWNlcy4KCk9rYXksIGlzIGl0IGEgY3VzdG9tIFFFTVUgZGV2aWNlPyBOby4gTWF5YmUgYHZmaW9gPyBUaGF0JiMzOTtzIHR5cGljYWxseSBmb3IgdXNlcnNwYWNlIGRyaXZlcnMsIEkgcmVjYWxsLiBJIHZhZ3VlbHkgcmVtZW1iZXIgc29tZXRoaW5nIGFib3V0IGEgYGVkdWAgZGV2aWNlLCBidXQgdGhhdCYjMzk7cyBub3QgcmlnaHQuIE5vLiBIbW0sIG1heWJlIGB2aXJ0aW9gPyBJZiBzbywgd2hhdCBpcyB0aGUgaW5qZWN0aW9uIG1lY2hhbmlzbSBpbiB0aGUga2VybmVsPyBJIG5lZWQgdG8gY2hlY2sgZm9yIGEga2VybmVsIGluamVjdGlvbiBtZWNoYW5pc20gb2Ygc29ydHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDA4OjMyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGNpX2Z1enomIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAwODozMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5ODMzCgkJCQkJCQlvdXRwdXQ6IDI1CgkJCQkJCQl0aG91Z2h0czogMTgwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFzc2Vzc2luZyB0aGUgRnV6emluZyBQb3RlbnRpYWwgb2YgVGhpcyBQYXRjaCoqCgpPa2F5LCBmaXJzdCB0aGluZ3MgZmlyc3QuIEkgbmVlZCB0byBxdWlja2x5IHJ1bGUgb3V0IHRoZSBvYnZpb3VzOiBpcyB0aGlzIHJlbGF0ZWQgdG8gYSBzdGFuZGFyZCBgc3l6X3BjaWAgaW50ZXJhY3Rpb24/IE5vLCBJJiMzOTt2ZSBhbHJlYWR5IGNvbmZpcm1lZCB0aGF0JiMzOTtzIG5vdCB0aGUgY2FzZS4gUmlnaHQsIGFuZCBJIHJlbWVtYmVyIHN5emthbGxlciBkb2VzbiYjMzk7dCBoYXZlIGEgYnVpbHQtaW4gUENJIGZ1enplciB0aGF0IGNhbiBqdXN0ICpjcmVhdGUqIGFueSBQQ0kgZGV2aWNlLiBTbywgd2hhdCB0cmlnZ2VyZWQgdGhpcyBidWc/IE15IGZpcnN0IHRob3VnaHQgd2FzIG1heWJlIHN5emJvdCBoaXQgdGhpcyBiZWNhdXNlIHNvbWVvbmUgcmFuIHN5emthbGxlciBvbiBhIHBoeXNpY2FsIG1hY2hpbmUgd2l0aCBhIE1lbGxhbm94IHN3aXRjaCwgYnV0IG5vLCBzeXpib3QmIzM5O3MgR0NFIGluc3RhbmNlcyBkb24mIzM5O3QgaGF2ZSB0aGF0IHNvcnQgb2YgaGFyZHdhcmUuIEhtbW0sIHRoZW4gZGlkIGFub3RoZXIgZnV6emVyIGZpbmQgdGhpcz8gT3IgcGVyaGFwcyBpdCB3YXMgYSBtYW51YWxseSB3cml0dGVuIHBhdGNoPyAKCkFoLCBoZXJlJiMzOTtzIGEgY2x1ZS4gSSBzZWUgJiMzNDtzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcmIzM0Oy4gT2theSwgdGhhdCYjMzk7cyBnb29kIGluZm9ybWF0aW9uLiBTbywgc3l6LWNsdXN0ZXIgaXMgdGVzdGluZyB0aGUgcGF0Y2guIFRoZSBjcnVjaWFsIHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhpcyBidWcgY2FuIGJlIHRyaWdnZXJlZCBpbiB0aGUgR0NFIGVudmlyb25tZW50IG9yIFFFTVUuIElmIGl0IGNhbiYjMzk7dCwgaXQmIzM5O3MgYSBkZWFkIGVuZCBhcyBmYXIgYXMgZnV6emluZyBnb2VzLiBJdCB3b3VsZCBiZSBhICYjMzQ7V29ydGhGdXp6aW5nPWZhbHNlJiMzNDsgc2NlbmFyaW8uIExldCBtZSBkb3VibGUtY2hlY2suIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhlcmUmIzM5O3Mgbm8gc29mdHdhcmUgZW11bGF0aW9uIGF2YWlsYWJsZSBmb3IgbWx4c3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDA4OjMyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWx4c3cuKmVtdWwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAwODozMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDMzMwoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHN1bW1hcnksIHByZXNlbnRlZCBhcyBhIHN0cmVhbSBvZiB0aG91Z2h0OgoKKipDaGVja2luZyBtbHhzdyBhbmQgbmV0ZGV2c2ltIEludGVncmF0aW9uKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGluLiBGaXJzdCB0aGluZ3MgZmlyc3QsIEkgbmVlZCB0byBpbnZlc3RpZ2F0ZSBzb21ldGhpbmcgc3BlY2lmaWMuIEkmIzM5O20gY3VyaW91cyBhYm91dCB0aGUgY3VycmVudCBzdGF0ZSBvZiBhZmZhaXJzIHJlZ2FyZGluZyBgbmV0ZGV2c2ltYCBhbmQgaXRzIGNvbXBhdGliaWxpdHkgd2l0aCBtbHhzdy4gSXMgdGhlcmUgYW55IGV4aXN0aW5nIHN1cHBvcnQ/IEFyZSB0aGVyZSBhbnkgZWZmb3J0cyB1bmRlcndheSB0byBpbnRlZ3JhdGUgdGhlIHR3bz8gVGhpcyBpcyBzb21ldGhpbmcgSSYjMzk7dmUgYmVlbiB0aGlua2luZyBhYm91dCBmb3IgYSB3aGlsZSwgYW5kIG5vdyYjMzk7cyB0aGUgdGltZSB0byBwaW4gZG93biB3aGVyZSB0aGluZ3Mgc3RhbmQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIGBuZXRkZXZzaW1gLCBhcyBhIHRvb2wgZm9yIG5ldHdvcmsgZGV2aWNlIHNpbXVsYXRpb24sIGNhbiBlZmZlY3RpdmVseSB3b3JrIHdpdGggdGhlIG1seHN3IHN3aXRjaCBwbGF0Zm9ybS4gSWYgdGhlcmUmIzM5O3Mgc3VwcG9ydCwgd2hhdCBhcmUgdGhlIGtleSBmZWF0dXJlcyBpdCBlbmFibGVzPyBJZiBub3QsIHdoYXQgd291bGQgYmUgdGhlIHJvYWRibG9ja3Mgb3IgbGltaXRhdGlvbnM/IFRoaXMgZXhwbG9yYXRpb24gaXMga2V5IGZvciB1bmRlcnN0YW5kaW5nIGhvdyB3ZSBjYW4gdGVzdCBhbmQgZGV2ZWxvcCBzb2Z0d2FyZSBmb3IgdGhlc2UgZGV2aWNlcyBpbiBhbiBlZmZpY2llbnQgbWFubmVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAwODozMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21seHN3JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbmV0ZGV2c2ltLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDA4OjMyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNTg2CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgcHJlc2VudGVkIGFzIGEgc3RyZWFtIG9mIHRob3VnaHQ6CgoqKkNoZWNraW5nIGZvciBQbGFjZWhvbGRlciBMb2dpYyBpbiBNTFhTVyoqCgpBbHJpZ2h0LCBiZWZvcmUgZGl2aW5nIHRvbyBkZWVwLCBJIG5lZWQgdG8gdGFrZSBhIHF1aWNrIHNhbml0eSBjaGVjay4gSSYjMzk7dmUgZ290IHRvIGVuc3VyZSBJJiMzOTttIG5vdCBvdmVybG9va2luZyBhbnl0aGluZyBvYnZpb3VzLCBvciBmYWxsaW5nIGludG8gYSB0cmFwIG9mIGFzc3VtaW5nIHNvbWV0aGluZyYjMzk7cyBhbHJlYWR5IGhhbmRsZWQuIFRoZSBtb3N0IGVmZmljaWVudCB3YXkgdG8gYXBwcm9hY2ggdGhpcyB3b3VsZCBiZSB0byBjaGVjayBmb3IgYW55IHVzZSBvZiAmIzM0O2R1bW15JiMzNDsgb3IgJiMzNDttb2NrJiMzNDsgY29kZSB3aXRoaW4gdGhlIE1MWFNXIGNvZGViYXNlLiBJIHdhbnQgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgcGxhY2Vob2xkZXIgaW1wbGVtZW50YXRpb25zIG9yIHRlc3Rpbmcgc3R1YnMgdGhhdCBtaWdodCBiZSBwcmVzZW50LiBUaG9zZSBrZXl3b3JkcyBhcmUgdXN1YWxseSBzdHJvbmcgaW5kaWNhdG9ycyB0aGF0IEkgbmVlZCB0byBpbnZlc3RpZ2F0ZSBmdXJ0aGVyLiBJdCYjMzk7cyBhIHF1aWNrIHdpbiB0byBydWxlIG91dCBhbnkgZXhpc3RpbmcsIGJ1aWx0LWluIHNjYWZmb2xkaW5nLiBTYXZlcyBhIHRvbiBvZiBoZWFkYWNoZSBsYXRlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMDg6MzI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZHVtbXkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvY29yZV9hY2xfZmxleF9hY3Rpb25zLmM9NDA1PXN0cnVjdCBtbHhzd19hZmFfYmxvY2sgKm1seHN3X2FmYV9ibG9ja19jcmVhdGUoc3RydWN0IG1seHN3X2FmYSAqbWx4c3dfYWZhKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmVfYWNsX2ZsZXhfYWN0aW9ucy5jLTQxOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmVfYWNsX2ZsZXhfYWN0aW9ucy5jOjQyMDpcdC8qIEluIGNhc2UgdXNlciBpbnN0cnVjdHMgdG8gaGF2ZSBkdW1teSBmaXJzdCBzZXQsIHdlIGxlYXZlIGl0XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9jb3JlX2FjbF9mbGV4X2FjdGlvbnMuYy00MjEtXHQgKiBlbXB0eSBoZXJlIGFuZCBjcmVhdGUgYW5vdGhlciwgcmVhbCwgc2V0IHJpZ2h0IGF3YXkuXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9jb3JlX2FjbF9mbGV4X2FjdGlvbnMuYy00MjItXHQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmVfYWNsX2ZsZXhfYWN0aW9ucy5jOjQyMzpcdGlmIChtbHhzd19hZmEtXHUwMDNlb3BzLVx1MDAzZWR1bW15X2ZpcnN0X3NldCkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvY29yZV9hY2xfZmxleF9hY3Rpb25zLmMtNDI0LVx0XHRibG9jay1cdTAwM2VjdXJfc2V0ID0gbWx4c3dfYWZhX3NldF9jcmVhdGUoZmFsc2UpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmVfYWNsX2ZsZXhfYWN0aW9ucy5oPTE0PXN0cnVjdCBtbHhzd19hZmFfb3BzIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9jb3JlX2FjbF9mbGV4X2FjdGlvbnMuaC0zOC1cdFx0XHQgICAgYm9vbCBpbmdyZXNzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmVfYWNsX2ZsZXhfYWN0aW9ucy5oOjM5Olx0Ym9vbCBkdW1teV9maXJzdF9zZXQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9jb3JlX2FjbF9mbGV4X2FjdGlvbnMuaC00MC19O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3BjaS5jPTE0Mz1zdGF0aWMgaW50IG1seHN3X3BjaV9uYXBpX2RldnNfaW5pdChzdHJ1Y3QgbWx4c3dfcGNpICptbHhzd19wY2kpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvcGNpLmMtMTQ2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvcGNpLmM6MTQ3Olx0bWx4c3dfcGNpLVx1MDAzZW5hcGlfZGV2X3R4ID0gYWxsb2NfbmV0ZGV2X2R1bW15KDApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvcGNpLmMtMTQ4LVx0aWYgKCFtbHhzd19wY2ktXHUwMDNlbmFwaV9kZXZfdHgpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvcGNpLmMtMTUyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvcGNpLmM6MTUzOlx0bWx4c3dfcGNpLVx1MDAzZW5hcGlfZGV2X3J4ID0gYWxsb2NfbmV0ZGV2X2R1bW15KDApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvcGNpLmMtMTU0LVx0aWYgKCFtbHhzd19wY2ktXHUwMDNlbmFwaV9kZXZfcngpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bS5oPTEwNzc9aW50IG1seHN3X3NwX2FjbF9ydWxlX2dldF9zdGF0cyhzdHJ1Y3QgbWx4c3dfc3AgKm1seHN3X3NwLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtLmgtMTA4Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtLmg6MTA4MzpzdHJ1Y3QgbWx4c3dfc3BfZmlkICptbHhzd19zcF9hY2xfZHVtbXlfZmlkKHN0cnVjdCBtbHhzd19zcCAqbWx4c3dfc3ApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW0uaC0xMDg0LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtLmg9MTMwNj1zdHJ1Y3QgbWx4c3dfc3BfZmlkICptbHhzd19zcF9maWRfcmZpZF9nZXQoc3RydWN0IG1seHN3X3NwICptbHhzd19zcCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtLmgtMTMwNy1cdFx0XHRcdFx0ICAgdTE2IHJpZl9pbmRleCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bS5oOjEzMDg6c3RydWN0IG1seHN3X3NwX2ZpZCAqbWx4c3dfc3BfZmlkX2R1bW15X2dldChzdHJ1Y3QgbWx4c3dfc3AgKm1seHN3X3NwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtLmgtMTMwOS12b2lkIG1seHN3X3NwX2ZpZF9wdXQoc3RydWN0IG1seHN3X3NwX2ZpZCAqZmlkKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9hY2wuYz0yND1zdHJ1Y3QgbWx4c3dfc3BfYWNsIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9hY2wuYy0yNi1cdHN0cnVjdCBtbHhzd19hZmsgKmFmaztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2FjbC5jOjI3Olx0c3RydWN0IG1seHN3X3NwX2ZpZCAqZHVtbXlfZmlkO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fYWNsLmMtMjgtXHRzdHJ1Y3Qgcmhhc2h0YWJsZSBydWxlc2V0X2h0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2FjbC5jPTg3PXN0YXRpYyBjb25zdCBzdHJ1Y3Qgcmhhc2h0YWJsZV9wYXJhbXMgbWx4c3dfc3BfYWNsX3J1bGVfaHRfcGFyYW1zID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2FjbC5jLTkzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fYWNsLmM6OTQ6c3RydWN0IG1seHN3X3NwX2ZpZCAqbWx4c3dfc3BfYWNsX2R1bW15X2ZpZChzdHJ1Y3QgbWx4c3dfc3AgKm1seHN3X3NwKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fYWNsLmMtOTUte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fYWNsLmM6OTY6XHRyZXR1cm4gbWx4c3dfc3AtXHUwMDNlYWNsLVx1MDAzZWR1bW15X2ZpZDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2FjbC5jLTk3LX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9hY2wuYz0xMDUyPWludCBtbHhzd19zcF9hY2xfaW5pdChzdHJ1Y3QgbWx4c3dfc3AgKm1seHN3X3NwKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2FjbC5jLTEwNzctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9hY2wuYzoxMDc4Olx0ZmlkID0gbWx4c3dfc3BfZmlkX2R1bW15X2dldChtbHhzd19zcCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9hY2wuYy0xMDc5LVx0aWYgKElTX0VSUihmaWQpKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fYWNsLmMtMTA4Mi1cdH1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2FjbC5jOjEwODM6XHRhY2wtXHUwMDNlZHVtbXlfZmlkID0gZmlkO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fYWNsLmMtMTA4NC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9hY2wuYz0xMTEwPXZvaWQgbWx4c3dfc3BfYWNsX2Zpbmkoc3RydWN0IG1seHN3X3NwICptbHhzd19zcClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9hY2wuYy0xMTE3LVx0V0FSTl9PTighbGlzdF9lbXB0eShcdTAwMjZhY2wtXHUwMDNlcnVsZXMpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2FjbC5jOjExMTg6XHRtbHhzd19zcF9maWRfcHV0KGFjbC1cdTAwM2VkdW1teV9maWQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fYWNsLmMtMTExOS1cdHJoYXNodGFibGVfZGVzdHJveShcdTAwMjZhY2wtXHUwMDNlcnVsZXNldF9odCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fYWNsX2F0Y2FtLmM9NDQ9c3RydWN0IG1seHN3X3NwX2FjbF9hdGNhbV9yZWdpb25fZ2VuZXJpYyB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9hY2xfYXRjYW0uYzo0NTpcdHN0cnVjdCBtbHhzd19zcF9hY2xfYXRjYW1fbGtleV9pZCBkdW1teV9sa2V5X2lkO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fYWNsX2F0Y2FtLmMtNDYtfTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9hY2xfYXRjYW0uYz03Mz1tbHhzd19zcF9hY2xfYXRjYW1fcmVnaW9uX2dlbmVyaWNfaW5pdChzdHJ1Y3QgbWx4c3dfc3BfYWNsX2F0Y2FtX3JlZ2lvbiAqYXJlZ2lvbilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9hY2xfYXRjYW0uYy04MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2FjbF9hdGNhbS5jOjgxOlx0cmVmY291bnRfc2V0KFx1MDAyNnJlZ2lvbl9nZW5lcmljLVx1MDAzZWR1bW15X2xrZXlfaWQucmVmY250LCAxKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2FjbF9hdGNhbS5jLTgyLVx0YXJlZ2lvbi1cdTAwM2Vwcml2ID0gcmVnaW9uX2dlbmVyaWM7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fYWNsX2F0Y2FtLmM9OTQ9bWx4c3dfc3BfYWNsX2F0Y2FtX2dlbmVyaWNfbGtleV9pZF9nZXQoc3RydWN0IG1seHN3X3NwX2FjbF9hdGNhbV9yZWdpb24gKmFyZWdpb24sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fYWNsX2F0Y2FtLmMtOTktXHRyZWdpb25fZ2VuZXJpYyA9IGFyZWdpb24tXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2FjbF9hdGNhbS5jOjEwMDpcdHJldHVybiBcdTAwMjZyZWdpb25fZ2VuZXJpYy1cdTAwM2VkdW1teV9sa2V5X2lkO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fYWNsX2F0Y2FtLmMtMTAxLX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9hY2xfZmxleF9hY3Rpb25zLmM9MjkwPWNvbnN0IHN0cnVjdCBtbHhzd19hZmFfb3BzIG1seHN3X3NwMl9hY3RfYWZhX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9hY2xfZmxleF9hY3Rpb25zLmMtMzAzLVx0LnNhbXBsZXJfZGVsXHRcdD0gbWx4c3dfc3AyX2FjdF9zYW1wbGVyX2RlbCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2FjbF9mbGV4X2FjdGlvbnMuYzozMDQ6XHQuZHVtbXlfZmlyc3Rfc2V0XHQ9IHRydWUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9hY2xfZmxleF9hY3Rpb25zLmMtMzA1LX07XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fYnVmZmVycy5jPTgzNz1zdGF0aWMgY29uc3Qgc3RydWN0IG1seHN3X3NwX3NiX2NtIG1seHN3X3NwMV9zYl9jbXNfaW5ncmVzc1tdID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2J1ZmZlcnMuYy04NDUtXHRNTFhTV19TUF9TQl9DTV9JTkcoMCwgTUxYU1dfUkVHX1NCWFhfRFlOX01BWF9CVUZGX01JTiksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9idWZmZXJzLmM6ODQ2Olx0TUxYU1dfU1BfU0JfQ01fSU5HKDAsIDApLCAvKiBkdW1teSwgdGhpcyBQRyBkb2VzIG5vdCBleGlzdCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fYnVmZmVycy5jLTg0Ny1cdE1MWFNXX1NQX1NCX0NNKDEwMDAwLCA4LCBNTFhTV19TUF9TQl9QT09MX0lOR19DUFUpLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2J1ZmZlcnMuYz04NTA9c3RhdGljIGNvbnN0IHN0cnVjdCBtbHhzd19zcF9zYl9jbSBtbHhzd19zcDJfc2JfY21zX2luZ3Jlc3NbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9idWZmZXJzLmMtODU4LVx0TUxYU1dfU1BfU0JfQ01fSU5HKDAsIE1MWFNXX1JFR19TQlhYX0RZTl9NQVhfQlVGRl9NSU4pLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fYnVmZmVycy5jOjg1OTpcdE1MWFNXX1NQX1NCX0NNX0lORygwLCAwKSwgLyogZHVtbXksIHRoaXMgUEcgZG9lcyBub3QgZXhpc3QgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2J1ZmZlcnMuYy04NjAtXHRNTFhTV19TUF9TQl9DTSgxMDAwMCwgOCwgTUxYU1dfU1BfU0JfUE9PTF9JTkdfQ1BVKSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYz0xNjQyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbWx4c3dfc3BfZmlkX29wcyBtbHhzd19zcF9maWRfcmZpZF9vcHNfY2ZmID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2ZpZC5jLTE2NjEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYzoxNjYyOnN0YXRpYyBpbnQgbWx4c3dfc3BfZmlkX2R1bW15X3NldHVwKHN0cnVjdCBtbHhzd19zcF9maWQgKmZpZCwgY29uc3Qgdm9pZCAqYXJnKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmlkLmMtMTY2My17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmlkLmMtMTY2Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2ZpZC5jOjE2Njg6c3RhdGljIGludCBtbHhzd19zcF9maWRfZHVtbXlfY29uZmlndXJlKHN0cnVjdCBtbHhzd19zcF9maWQgKmZpZClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2ZpZC5jLTE2Njkte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2ZpZC5jLTE2NzItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYzoxNjczOnN0YXRpYyB2b2lkIG1seHN3X3NwX2ZpZF9kdW1teV9kZWNvbmZpZ3VyZShzdHJ1Y3QgbWx4c3dfc3BfZmlkICpmaWQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYy0xNjc0LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYy0xNjc3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmlkLmM6MTY3ODpzdGF0aWMgaW50IG1seHN3X3NwX2ZpZF9kdW1teV9pbmRleF9hbGxvYyhzdHJ1Y3QgbWx4c3dfc3BfZmlkICpmaWQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYy0xNjc5LVx0XHRcdFx0XHQgIGNvbnN0IHZvaWQgKmFyZywgdTE2ICpwX2ZpZF9pbmRleClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYy0xNjg1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmlkLmM6MTY4NjpzdGF0aWMgYm9vbCBtbHhzd19zcF9maWRfZHVtbXlfY29tcGFyZShjb25zdCBzdHJ1Y3QgbWx4c3dfc3BfZmlkICpmaWQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYy0xNjg3LVx0XHRcdFx0ICAgICAgIGNvbnN0IHZvaWQgKmFyZylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYy0xNjkxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmlkLmM6MTY5MjpzdGF0aWMgaW50IG1seHN3X3NwX2ZpZF9kdW1teV92bmlfc2V0KHN0cnVjdCBtbHhzd19zcF9maWQgKmZpZClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2ZpZC5jLTE2OTMte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2ZpZC5jLTE2OTYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYzoxNjk3OnN0YXRpYyB2b2lkIG1seHN3X3NwX2ZpZF9kdW1teV92bmlfY2xlYXIoc3RydWN0IG1seHN3X3NwX2ZpZCAqZmlkKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmlkLmMtMTY5OC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmlkLmMtMTcwMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2ZpZC5jOjE3MDI6c3RhdGljIGludCBtbHhzd19zcF9maWRfZHVtbXlfbnZlX2Zsb29kX2luZGV4X3NldChzdHJ1Y3QgbWx4c3dfc3BfZmlkICpmaWQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYy0xNzAzLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYy0xNzA2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmlkLmM6MTcwNzpzdGF0aWMgdm9pZCBtbHhzd19zcF9maWRfZHVtbXlfbnZlX2Zsb29kX2luZGV4X2NsZWFyKHN0cnVjdCBtbHhzd19zcF9maWQgKmZpZClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2ZpZC5jLTE3MDgte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2ZpZC5jLTE3MTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYzoxNzEyOnN0YXRpYyBjb25zdCBzdHJ1Y3QgbWx4c3dfc3BfZmlkX29wcyBtbHhzd19zcF9maWRfZHVtbXlfb3BzID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmlkLmM6MTcxMzpcdC5zZXR1cFx0XHRcdD0gbWx4c3dfc3BfZmlkX2R1bW15X3NldHVwLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmlkLmM6MTcxNDpcdC5jb25maWd1cmVcdFx0PSBtbHhzd19zcF9maWRfZHVtbXlfY29uZmlndXJlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmlkLmM6MTcxNTpcdC5kZWNvbmZpZ3VyZVx0XHQ9IG1seHN3X3NwX2ZpZF9kdW1teV9kZWNvbmZpZ3VyZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2ZpZC5jOjE3MTY6XHQuaW5kZXhfYWxsb2NcdFx0PSBtbHhzd19zcF9maWRfZHVtbXlfaW5kZXhfYWxsb2MsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYzoxNzE3Olx0LmNvbXBhcmVcdFx0PSBtbHhzd19zcF9maWRfZHVtbXlfY29tcGFyZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2ZpZC5jOjE3MTg6XHQudm5pX3NldCAgICAgICAgICAgICAgICA9IG1seHN3X3NwX2ZpZF9kdW1teV92bmlfc2V0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmlkLmM6MTcxOTpcdC52bmlfY2xlYXJcdFx0PSBtbHhzd19zcF9maWRfZHVtbXlfdm5pX2NsZWFyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmlkLmM6MTcyMDpcdC5udmVfZmxvb2RfaW5kZXhfc2V0XHQ9IG1seHN3X3NwX2ZpZF9kdW1teV9udmVfZmxvb2RfaW5kZXhfc2V0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmlkLmM6MTcyMTpcdC5udmVfZmxvb2RfaW5kZXhfY2xlYXJcdD0gbWx4c3dfc3BfZmlkX2R1bW15X252ZV9mbG9vZF9pbmRleF9jbGVhcixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2ZpZC5jLTE3MjItXHQuZmlkX3BhY2tcdFx0PSBtbHhzd19zcF9maWRfcGFjayxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYz0xODI2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbWx4c3dfc3BfZmlkX29wcyBtbHhzd19zcF9maWRfODAyMXFfb3BzX2NmZiA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYy0xODU0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmlkLmM6MTg1NTovKiBUaGVyZSBpcyBvbmUgZHVtbXkgRklEICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYy0xODU2LSNkZWZpbmUgTUxYU1dfU1BfRklEX0RVTU1ZXHRcdChNTFhTV19TUF9GSURfODAyMURfRU5EICYjNDM7IDEpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmlkLmM9MTg3Nj1zdGF0aWMgY29uc3Qgc3RydWN0IG1seHN3X3NwX2ZpZF9mYW1pbHkgbWx4c3dfc3AxX2ZpZF84MDIxZF9mYW1pbHkgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmlkLmMtMTg4Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2ZpZC5jOjE4ODg6c3RhdGljIGNvbnN0IHN0cnVjdCBtbHhzd19zcF9maWRfZmFtaWx5IG1seHN3X3NwMV9maWRfZHVtbXlfZmFtaWx5ID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmlkLmMtMTg4OS1cdC50eXBlXHRcdFx0PSBNTFhTV19TUF9GSURfVFlQRV9EVU1NWSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYy0xODkyLVx0LmVuZF9pbmRleFx0XHQ9IE1MWFNXX1NQX0ZJRF9EVU1NWSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2ZpZC5jOjE4OTM6XHQub3BzXHRcdFx0PSBcdTAwMjZtbHhzd19zcF9maWRfZHVtbXlfb3BzLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmlkLmMtMTg5NC1cdC5zbXBlX2luZGV4X3ZhbGlkICAgICAgID0gZmFsc2UsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmlkLmM9MTkwOD1zdGF0aWMgY29uc3Qgc3RydWN0IG1seHN3X3NwX2ZpZF9mYW1pbHkgKm1seHN3X3NwMV9maWRfZmFtaWx5X2FycltdID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2ZpZC5jLTE5MTAtXHRbTUxYU1dfU1BfRklEX1RZUEVfODAyMURdXHQ9IFx1MDAyNm1seHN3X3NwMV9maWRfODAyMWRfZmFtaWx5LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmlkLmM6MTkxMTpcdFtNTFhTV19TUF9GSURfVFlQRV9EVU1NWV1cdD0gXHUwMDI2bWx4c3dfc3AxX2ZpZF9kdW1teV9mYW1pbHksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYy0xOTEyLVx0W01MWFNXX1NQX0ZJRF9UWVBFX1JGSURdXHQ9IFx1MDAyNm1seHN3X3NwX2ZpZF9yZmlkX2ZhbWlseV9jdGwsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmlkLmM9MTkyOD1zdGF0aWMgY29uc3Qgc3RydWN0IG1seHN3X3NwX2ZpZF9mYW1pbHkgbWx4c3dfc3AyX2ZpZF84MDIxZF9mYW1pbHlfY3RsID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2ZpZC5jLTE5MzktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYzoxOTQwOnN0YXRpYyBjb25zdCBzdHJ1Y3QgbWx4c3dfc3BfZmlkX2ZhbWlseSBtbHhzd19zcDJfZmlkX2R1bW15X2ZhbWlseSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2ZpZC5jLTE5NDEtXHQudHlwZVx0XHRcdD0gTUxYU1dfU1BfRklEX1RZUEVfRFVNTVksXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmlkLmMtMTk0NC1cdC5lbmRfaW5kZXhcdFx0PSBNTFhTV19TUF9GSURfRFVNTVksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYzoxOTQ1Olx0Lm9wc1x0XHRcdD0gXHUwMDI2bWx4c3dfc3BfZmlkX2R1bW15X29wcyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2ZpZC5jLTE5NDYtXHQuc21wZV9pbmRleF92YWxpZCAgICAgICA9IGZhbHNlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2ZpZC5jPTE5NDk9c3RhdGljIGNvbnN0IHN0cnVjdCBtbHhzd19zcF9maWRfZmFtaWx5ICptbHhzd19zcDJfZmlkX2ZhbWlseV9hcnJfY3RsW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmlkLmMtMTk1MS1cdFtNTFhTV19TUF9GSURfVFlQRV84MDIxRF1cdD0gXHUwMDI2bWx4c3dfc3AyX2ZpZF84MDIxZF9mYW1pbHlfY3RsLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmlkLmM6MTk1MjpcdFtNTFhTV19TUF9GSURfVFlQRV9EVU1NWV1cdD0gXHUwMDI2bWx4c3dfc3AyX2ZpZF9kdW1teV9mYW1pbHksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYy0xOTUzLVx0W01MWFNXX1NQX0ZJRF9UWVBFX1JGSURdXHQ9IFx1MDAyNm1seHN3X3NwX2ZpZF9yZmlkX2ZhbWlseV9jdGwsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmlkLmM9MTk4OT1zdGF0aWMgY29uc3Qgc3RydWN0IG1seHN3X3NwX2ZpZF9mYW1pbHkgKm1seHN3X3NwMl9maWRfZmFtaWx5X2Fycl9jZmZbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYy0xOTkxLVx0W01MWFNXX1NQX0ZJRF9UWVBFXzgwMjFEXVx0PSBcdTAwMjZtbHhzd19zcDJfZmlkXzgwMjFkX2ZhbWlseV9jZmYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYzoxOTkyOlx0W01MWFNXX1NQX0ZJRF9UWVBFX0RVTU1ZXVx0PSBcdTAwMjZtbHhzd19zcDJfZmlkX2R1bW15X2ZhbWlseSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2ZpZC5jLTE5OTMtXHRbTUxYU1dfU1BfRklEX1RZUEVfUkZJRF1cdD0gXHUwMDI2bWx4c3dfc3BfZmlkX3JmaWRfZmFtaWx5X2NmZixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYz0yMTExPXN0cnVjdCBtbHhzd19zcF9maWQgKm1seHN3X3NwX2ZpZF9yZmlkX2dldChzdHJ1Y3QgbWx4c3dfc3AgKm1seHN3X3NwLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2ZpZC5jLTIxMTYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYzoyMTE3OnN0cnVjdCBtbHhzd19zcF9maWQgKm1seHN3X3NwX2ZpZF9kdW1teV9nZXQoc3RydWN0IG1seHN3X3NwICptbHhzd19zcClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2ZpZC5jLTIxMTgte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2Zsb3dlci5jPTU4PXN0YXRpYyBpbnQgbWx4c3dfc3BfZmxvd2VyX3BhcnNlX2FjdGlvbnMoc3RydWN0IG1seHN3X3NwICptbHhzd19zcCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9mbG93ZXIuYy0xNzItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9mbG93ZXIuYzoxNzM6XHRcdFx0ZmlkID0gbWx4c3dfc3BfYWNsX2R1bW15X2ZpZChtbHhzd19zcCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9mbG93ZXIuYy0xNzQtXHRcdFx0ZmlkX2luZGV4ID0gbWx4c3dfc3BfZmlkX2luZGV4KGZpZCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fdHJhcC5jPTEyMzI9c3RhdGljIGludCBtbHhzd19zcF90cmFwX2NwdV9wb2xpY2Vyc19zZXQoc3RydWN0IG1seHN3X3NwICptbHhzd19zcClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV90cmFwLmMtMTIzOC1cdC8qIFRoZSBwdXJwb3NlIG9mIFwmIzM0O3RoaW5cJiMzNDsgcG9saWNlciBpcyB0byBkcm9wIGFzIG1hbnkgcGFja2V0c1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fdHJhcC5jOjEyMzk6XHQgKiBhcyBwb3NzaWJsZS4gVGhlIGR1bW15IGdyb3VwIGlzIHVzaW5nIGl0LlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fdHJhcC5jLTEyNDAtXHQgKi9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV90cmFwLmMtMTI1MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX3RyYXAuYzoxMjUyOnN0YXRpYyBpbnQgbWx4c3dfc3BfdHJhcF9kdW1teV9ncm91cF9pbml0KHN0cnVjdCBtbHhzd19zcCAqbWx4c3dfc3ApXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV90cmFwLmMtMTI1My17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fdHJhcC5jPTE1Mjg9aW50IG1seHN3X3NwX2RldmxpbmtfdHJhcHNfaW5pdChzdHJ1Y3QgbWx4c3dfc3AgKm1seHN3X3NwKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX3RyYXAuYy0xNTM1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fdHJhcC5jOjE1MzY6XHRlcnIgPSBtbHhzd19zcF90cmFwX2R1bW15X2dyb3VwX2luaXQobWx4c3dfc3ApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fdHJhcC5jLTE1MzctXHRpZiAoZXJyKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAwODozMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzY4NgoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDQ4OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIG1seHN3IERyaXZlciBhbmQgU3l6a2FsbGVyJiMzOTtzIFBvdGVudGlhbCBmb3IgRnV6emluZyoqCgpPa2F5LCBzbyB0aGUgYG1seHN3YCBkcml2ZXIgaW5pdGlhbGl6ZXMgZHVtbXkgbmV0IGRldmljZXMgaW50ZXJuYWxseSBmb3IgTkFQSS4gVGhhdCYjMzk7cyBqdXN0IHN0YW5kYXJkIGRyaXZlciBzdHVmZjsgaXQgZG9lc24mIzM5O3QgbWFrZSB0aGUgZHJpdmVyIGl0c2VsZiBhIGR1bW15LiBJdCBzdGlsbCBuZWVkcyBhIFBDSSBkZXZpY2UgdG8gcHJvYmUuIE5vdywgbGV0JiMzOTtzIHRoaW5rIGFib3V0IHN5emthbGxlci4gSG1tLCB3YWl0LCBkb2VzIHN5emthbGxlciBoYXZlIGEgYHN5el9wY2lfZGV2aWNlYCBwc2V1ZG8tc3lzY2FsbD8gTm8sIGFjY29yZGluZyB0byB0aGUgcHJvbXB0LCBpdCBjYW4mIzM5O3QgaGFuZGxlIHRob3NlIHN5emthbGxlciBzcGVjaWZpYyBjYWxscy4gVGhpcyBpbXBsaWVzIGl0IG1pZ2h0IGJlIGFibGUgdG8gZnV6eiBQQ0kgZGV2aWNlcyBpbiBzb21lIGNhcGFjaXR5LgoKQnV0IHRoZW4gdGhlcmUmIzM5O3MgdGhhdCBjYXZlYXQgYWJvdXQgY29kZSBwYXRocyBiZWluZyB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aXRoIGVtdWxhdGVkIGhhcmR3YXJlLiBJZiBzeXprYWxsZXIgKmRvZXMqIGhhdmUgYSBQQ0kgZnV6emVyLCBpdCYjMzk7ZCBwcm9iYWJseSBuZWVkIHNvbWUgUUVNVSBmZWF0dXJlLiBIb3dldmVyLCBRRU1VIGRvZXNuJiMzOTt0IGVtdWxhdGUgTWVsbGFub3ggc3dpdGNoZXMsIGFzIGZhciBhcyBJIGtub3cuIFNvLi4uIGRvZXMgc3l6a2FsbGVyIGFjdHVhbGx5ICpoYXZlKiBhIFBDSSBmdXp6ZXI/IEl0JiMzOTtzIHRpbWUgdG8gaW52ZXN0aWdhdGUuCgpJIHNob3VsZCBjaGVjayBmb3IgdGhpbmdzIGxpa2UgYENPTkZJR19QQ0lfU1RVQmAgb3IgYENPTkZJR19WRklPYCB0aGF0IHN5emthbGxlciBtaWdodCBiZSB1c2luZy4gTGV0JiMzOTtzIHNlZS4uLiBzeXprYWxsZXIgdXNlcyBgc3l6X2t2bV9zZXR1cF9jcHVgIGZvciBLVk0sIGBzeXpfdXNiX2Nvbm5lY3RgIGZvciBVU0IsIGBzeXpfODAyMTFfaW5qZWN0X2ZyYW1lYCBmb3Igd2lmaS4gT2theSwgYnV0IGRvZXMgaXQgaGF2ZSBgc3l6X3BjaV9kZXZpY2VgPyBJJiMzOTttIGJldHRpbmcgbm8uIEkgZG9uJiMzOTt0IHRoaW5rIGl0IGhhcyBhIGdlbmVyaWMgUENJIGZ1enplciB0aGF0IGNhbiBpbnN0YW50aWF0ZSBhcmJpdHJhcnkgUENJIGRldmljZXMuCgpIbW0sIGJ1dCB3YWl0LCBtYXliZSBpdCBkb2VzPyBJJiMzOTttIGdldHRpbmcgYWhlYWQgb2YgbXlzZWxmLCBsZXQmIzM5O3MgcmUtZXZhbHVhdGUuIExldCBtZSBjaGFuZ2UgdHJhY2tzLiBMZXQmIzM5O3MgdHJ5IGZpZ3VyaW5nIG91dCBpZiB0aGVyZSYjMzk7cyBhIHdheSB0byB0cmlnZ2VyIGBtbHhzd19wY2lfcHJvYmVgIGZyb20gdXNlcnNwYWNlLiBDYW4gd2UgdXNlIGBuZXRkZXZzaW1gPyBObywgdGhhdCYjMzk7cyBhIHNlcGFyYXRlIGRyaXZlciwgbm90IGEgd2F5IHRvIGVtdWxhdGUuIENhbiB3ZSB1c2UgYGRldmxpbmtgIHRvIGluc3RhbnRpYXRlIG1seHN3PyBUaGF0IHNlZW1zIGxpa2UgdGhlIG1vc3QgbGlrZWx5IHBhdGguIFRpbWUgdG8gZXhhbWluZSB0aGUgYGRldmxpbmtgIG9wZXJhdGlvbnMgd2l0aGluIGBtbHhzd2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDA4OjMyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2Rldmxpbmtfb3BzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmUuYz0xNzIxPW1seHN3X2RldmxpbmtfdHJhcF9wb2xpY2VyX2NvdW50ZXJfZ2V0KHN0cnVjdCBkZXZsaW5rICpkZXZsaW5rLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmUuYy0xNzMzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvY29yZS5jOjE3MzQ6c3RhdGljIGNvbnN0IHN0cnVjdCBkZXZsaW5rX29wcyBtbHhzd19kZXZsaW5rX29wcyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmUuYy0xNzM1LVx0LnJlbG9hZF9hY3Rpb25zXHRcdD0gQklUKERFVkxJTktfUkVMT0FEX0FDVElPTl9EUklWRVJfUkVJTklUKSB8XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvY29yZS5jPTIwOTU9X19tbHhzd19jb3JlX2J1c19kZXZpY2VfcmVnaXN0ZXIoY29uc3Qgc3RydWN0IG1seHN3X2J1c19pbmZvICptbHhzd19idXNfaW5mbyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9jb3JlLmMtMjExMy1cdFx0YWxsb2Nfc2l6ZSA9IHNpemVvZigqbWx4c3dfY29yZSkgJiM0MzsgbWx4c3dfZHJpdmVyLVx1MDAzZXByaXZfc2l6ZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmUuYzoyMTE0Olx0XHRkZXZsaW5rID0gZGV2bGlua19hbGxvYyhcdTAwMjZtbHhzd19kZXZsaW5rX29wcywgYWxsb2Nfc2l6ZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmUuYy0yMTE1LVx0XHRcdFx0XHRtbHhzd19idXNfaW5mby1cdTAwM2VkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmVfbGluZWNhcmRfZGV2LmM9MTExPW1seHN3X2xpbmVjYXJkX2Rldl9kZXZsaW5rX2ZsYXNoX3VwZGF0ZShzdHJ1Y3QgZGV2bGluayAqZGV2bGluayxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9jb3JlX2xpbmVjYXJkX2Rldi5jLTEyMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmVfbGluZWNhcmRfZGV2LmM6MTIyOnN0YXRpYyBjb25zdCBzdHJ1Y3QgZGV2bGlua19vcHMgbWx4c3dfbGluZWNhcmRfZGV2X2Rldmxpbmtfb3BzID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvY29yZV9saW5lY2FyZF9kZXYuYy0xMjMtXHQuaW5mb19nZXRcdFx0XHQ9IG1seHN3X2xpbmVjYXJkX2Rldl9kZXZsaW5rX2luZm9fZ2V0LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmVfbGluZWNhcmRfZGV2LmM9MTI3PXN0YXRpYyBpbnQgbWx4c3dfbGluZWNhcmRfYmRldl9wcm9iZShzdHJ1Y3QgYXV4aWxpYXJ5X2RldmljZSAqYWRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9jb3JlX2xpbmVjYXJkX2Rldi5jLTEzNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmVfbGluZWNhcmRfZGV2LmM6MTM3Olx0ZGV2bGluayA9IGRldmxpbmtfYWxsb2MoXHUwMDI2bWx4c3dfbGluZWNhcmRfZGV2X2Rldmxpbmtfb3BzLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvY29yZV9saW5lY2FyZF9kZXYuYy0xMzgtXHRcdFx0XHRzaXplb2YoKmxpbmVjYXJkX2RldiksIFx1MDAyNmFkZXYtXHUwMDNlZGV2KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMDg6MzI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTkzOTUKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiAyODkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRGVidWdnaW5nIGEgUG90ZW50aWFsIG1seHN3IERyaXZlciBJc3N1ZSoqCgpPa2F5LCBzbyBEZXZsaW5rIGlzbiYjMzk7dCBhYm91dCBjcmVhdGluZyBuZXcgZGV2aWNlcywgaXQmIzM5O3MgYWJvdXQgbWFuYWdpbmcgZXhpc3Rpbmcgb25lcy4gSG1tLCBidXQgdGhlbi4uLiB3YXMgdGhhdCBhIHN5emJvdCByZXBvcnQgYWJvdXQgYSBidWcgaW4gYG1seHN3X3BjaV9jcV9uYXBpX3RlYXJkb3duYD8gVGhhdCBzb3VuZHMgaW1wb3J0YW50LiBMZXQgbWUgbG9vayBmb3Igc3l6Ym90IHJlcG9ydHMgcmVsYXRlZCB0byBgbWx4c3dgLiBDcmFwLCBubyBpbnRlcm5ldC4gT2theSwgcGxhbiBCOiBJIGNhbiBzZWFyY2ggdGhlIGtlcm5lbCBzb3VyY2UgbG9jYWxseSBmb3IgdGhhdCBmdW5jdGlvbiwgb3IgbWF5YmUgYG1seHN3X3BjaV9jcV9uYXBpX2Rpc2FibGVgLiBXYWl0IGEgc2Vjb25k4oCmIHRoZSBwYXRjaCBJJiMzOTttIGxvb2tpbmcgZm9yIGlzIGFjdHVhbGx5IGFscmVhZHkgYXBwbGllZCBpbiBteSB3b3Jrc3BhY2UuCgpBbHJpZ2h0LCBpZiB0aGUgcGF0Y2ggaXMgYWxyZWFkeSBhcHBsaWVkLCBob3cgZWxzZSBjb3VsZCB0aGF0IGNvZGUgYmUgaGl0PyBJcyB0aGVyZSBhbm90aGVyIHdheSB0byBnZXQgdG8gdGhhdCBjb2RlPyBQZXJoYXBzIGBtbHhzd2AgaXMgYSBwbGF0Zm9ybSBkZXZpY2Ugc29tZXRpbWVzPyBObywgSSYjMzk7bSBwcmV0dHkgc3VyZSBpdCYjMzk7cyBQQ0kgYW5kIEkyQywgZ2VuZXJhbGx5LgoKV2FpdCBhIHNlY29uZCwgc3l6a2FsbGVyIGhhcyBhIFBDSSBmdXp6ZXIsIHJpZ2h0PyBEb2VzIGl0IHVzZSBzb21ldGhpbmcgbGlrZSBgc3l6X3BjaV9kZXZpY2VgPyBObywgd2FpdCwgc3l6a2FsbGVyIHVzZXMgYHZoY2lgIGZvciBVU0IuIEZvciBQQ0ksIEkgdGhvdWdodCBtYXliZSBpdCB1c2VzIGB2ZmlvYD8gTm9wZSwgYHZmaW9gIGxldHMgdXNlcnNwYWNlIGRyaXZlIGEgcmVhbCBQQ0kgZGV2aWNlLCBpdCBkb2VzbiYjMzk7dCByZWFsbHkgbGV0IHlvdSAqaW5qZWN0KiBhIFBDSSBkZXZpY2UgaW50byB0aGUga2VybmVsLiAKCkFoLCB3YWl0ISBJIHJlY2FsbCByZWFkaW5nIHRoYXQgdGhlcmUgd2FzIGEgUENJIGZ1enplciBhZGRlZCB0byBzeXprYWxsZXIgcmVjZW50bHkuIERvZXMgaXQgdXNlIGEgY3VzdG9tIFFFTVUgZGV2aWNlLCBvciBkaWQgaXQgbGV2ZXJhZ2UgdGhlIGBwY2lfZW5kcG9pbnRgIGZyYW1ld29yaz8gT2theSwgdGltZSB0byBzZWUgaWYgdGhlcmUmIzM5O3MgYW55IFBDSSBpbmplY3Rpb24gY29kZSB3aXRoaW4gdGhlIGtlcm5lbCBpdHNlbGYuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDA4OjMyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGNpX2luamVjdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDA4OjMyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwMDc3CgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBteXNlbGY6CgoqKkludmVzdGlnYXRpbmcgUENJIERyaXZlciBJbXBsZW1lbnRhdGlvbnMqKgoKT2theSwgc28gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgUENJIGRyaXZlciBsYW5kc2NhcGUsIHBhcnRpY3VsYXJseSBhbnkgZXhhbXBsZXMgdGhhdCBtaWdodCBiZSB1c2VmdWwgZm9yIHRlc3Rpbmcgb3Igc2VydmUgYXMgZHVtbXkgaW1wbGVtZW50YXRpb25zLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGhlYWQgc3RyYWlnaHQgdG8gdGhlIHNvdXJjZS4gTGV0JiMzOTtzIHNlZS4uLiB0aGUgbG9naWNhbCBwbGFjZSB0byBzdGFydCB3b3VsZCBiZSB3aXRoaW4gdGhlIGtlcm5lbCYjMzk7cyBzb3VyY2UgY29kZS4gSSYjMzk7bGwgbmVlZCB0byBuYXZpZ2F0ZSB0byB0aGUgYGRyaXZlcnMvcGNpL2AgZGlyZWN0b3J5LiBUaGF0IGRpcmVjdG9yeSBpcyB0eXBpY2FsbHkgdGhlIGNlbnRyYWwgcmVwb3NpdG9yeSBmb3IgUENJLXJlbGF0ZWQgZHJpdmVycy4gSXQgc2hvdWxkIGhvdXNlIHRoZSBjb3JlIFBDSSBkcml2ZXIgY29kZSwgYXMgd2VsbCBhcyBhbnkgc3ViLWRyaXZlcnMgdGhhdCBoYW5kbGUgc3BlY2lmaWMgUENJIGRldmljZXMuIE15IHNwZWNpZmljIGdvYWwgaXMgdG8gaWRlbnRpZnkgYW5kIGV4YW1pbmUgYW55IGRyaXZlcnMgaW4gdGhhdCBkaXJlY3Rvcnkgd2hpY2ggbWlnaHQgYmUgaW50ZW50aW9uYWxseSBzaW1wbGUsIGRlc2lnbmVkIGZvciB0ZXN0aW5nIHRoZSBQQ0kgY29yZSBmdW5jdGlvbmFsaXR5LCBvciBzZXJ2aW5nIGFzIGEgdGVtcGxhdGUgdGhhdCBjb3VsZCBhY3QgYXMgYSAmIzM5O2R1bW15JiMzOTsgZHJpdmVyLiBJdCYjMzk7cyBvZnRlbiB1c2VmdWwgdG8gaGF2ZSBhIHNldCBvZiBtaW5pbWFsIGV4YW1wbGVzIHRvIGxlYXJuIHRoZSBrZXkgQVBJIGNhbGxzLCBhbmQgZm9yIHJhcGlkIHByb3RvdHlwaW5nLiBIb3BlZnVsbHksIHRoZXJlIGFyZSBzb21lIHdlbGwtY29tbWVudGVkIHRlc3QgZHJpdmVycyB0aGF0IGNsZWFybHkgaWxsdXN0cmF0ZSBob3cgdG8gaW50ZXJhY3Qgd2l0aCB0aGUgUENJIHN1YnN5c3RlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMDg6MzI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZHVtbXkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3BjaS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvcGNpLWRyYTd4eC5jPTE5MD1zdGF0aWMgaW50IGRyYTd4eF9wY2llX2ludHhfbWFwKHN0cnVjdCBpcnFfZG9tYWluICpkb21haW4sIHVuc2lnbmVkIGludCBpcnEsXG4tLVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvcGNpLWRyYTd4eC5jLTE5Mi17XG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2ktZHJhN3h4LmM6MTkzOlx0aXJxX3NldF9jaGlwX2FuZF9oYW5kbGVyKGlycSwgXHUwMDI2ZHVtbXlfaXJxX2NoaXAsIGhhbmRsZV9zaW1wbGVfaXJxKTtcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL3BjaS1kcmE3eHguYy0xOTQtXHRpcnFfc2V0X2NoaXBfZGF0YShpcnEsIGRvbWFpbi1cdTAwM2Vob3N0X2RhdGEpO1xuLS1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL3BjaS1pbXg2LmM9MTQ4MT1zdGF0aWMgdm9pZCBpbXhfcGNpZV9ob3N0X3Bvc3RfaW5pdChzdHJ1Y3QgZHdfcGNpZV9ycCAqcHApXG4tLVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvcGNpLWlteDYuYy0xNTE1LSAqIHJlZ2lzdGVyIGlzIHJlc2VydmVkLCBzbyB0aGUgZ2VuZXJpYyBEV0MgaW1wbGVtZW50YXRpb24gb2Ygc2VuZGluZyB0aGVcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL3BjaS1pbXg2LmM6MTUxNjogKiBQTUVfVHVybl9PZmYgbWVzc2FnZSB1c2luZyBhIGR1bW15IE1NSU8gd3JpdGUgY2Fubm90IGJlIHVzZWQuXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2ktaW14Ni5jLTE1MTctICovXG4tLVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvcGNpZS1kZXNpZ253YXJlLWhvc3QuYz0xMTg3PXN0YXRpYyBpbnQgZHdfcGNpZV9wbWVfdHVybl9vZmYoc3RydWN0IGR3X3BjaWUgKnBjaSlcbi0tXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2llLWRlc2lnbndhcmUtaG9zdC5jLTEyMTQtXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2llLWRlc2lnbndhcmUtaG9zdC5jOjEyMTU6XHQvKiBBIGR1bW15IHdyaXRlIGlzIGNvbnZlcnRlZCB0byBhIE1zZyBUTFAgKi9cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL3BjaWUtZGVzaWdud2FyZS1ob3N0LmMtMTIxNi1cdHdyaXRlbCgwLCBtZW0pO1xuLS1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvbW9iaXZlaWwvcGNpZS1tb2JpdmVpbC1ob3N0LmM9ODM9c3RhdGljIHZvaWQgbW9iaXZlaWxfcGNpZV9pc3Ioc3RydWN0IGlycV9kZXNjICpkZXNjKVxuLS1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvbW9iaXZlaWwvcGNpZS1tb2JpdmVpbC1ob3N0LmMtMTQ1LVx0XHQgKiBmcm9tIE1TSSBoYXJkd2FyZSBGSUZPLiBTbyBrZWVwaW5nIHRoZXNlIGZvbGxvd2luZ1xuZHJpdmVycy9wY2kvY29udHJvbGxlci9tb2JpdmVpbC9wY2llLW1vYml2ZWlsLWhvc3QuYzoxNDY6XHRcdCAqIHR3byBkdW1teSByZWFkcy5cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvbW9iaXZlaWwvcGNpZS1tb2JpdmVpbC1ob3N0LmMtMTQ3LVx0XHQgKi9cbi0tXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaS1oeXBlcnYuYz0xNzUxPXN0YXRpYyB1MzIgaHZfY29tcG9zZV9tc2lfcmVxX3YxKFxuLS1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpLWh5cGVydi5jLTE3NjEtXHQvKlxuZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2ktaHlwZXJ2LmM6MTc2MjpcdCAqIENyZWF0ZSBNU0kgdy8gZHVtbXkgdkNQVSBzZXQsIG92ZXJ3cml0dGVuIGJ5IHN1YnNlcXVlbnQgcmV0YXJnZXQgaW5cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpLWh5cGVydi5jLTE3NjMtXHQgKiBodl9pcnFfdW5tYXNrKCkuXG4tLVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2ktaHlwZXJ2LmMtMTc3MS0gKiBUaGUgdkNQVSBzZWxlY3RlZCBieSBodl9jb21wb3NlX211bHRpX21zaV9yZXFfZ2V0X2NwdSgpIGFuZFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2ktaHlwZXJ2LmM6MTc3MjogKiBodl9jb21wb3NlX21zaV9yZXFfZ2V0X2NwdSgpIGlzIGEgXCYjMzQ7ZHVtbXlcJiMzNDsgdkNQVSBiZWNhdXNlIHRoZSBmaW5hbCB2Q1BVIHRvIGJlXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaS1oeXBlcnYuYy0xNzczLSAqIGludGVycnVwdGVkIGlzIHNwZWNpZmllZCBsYXRlciBpbiBodl9pcnFfdW5tYXNrKCkgYW5kIGNvbW11bmljYXRlZCB0byBIeXBlci1WXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaS1oeXBlcnYuYzoxNzc0OiAqIHZpYSB0aGUgSFZDQUxMX1JFVEFSR0VUX0lOVEVSUlVQVCBoeXBlcmNhbGwuIEJ1dCB0aGUgY2hvaWNlIG9mIGR1bW15IHZDUFUgaXNcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpLWh5cGVydi5jLTE3NzUtICogbm90IGlycmVsZXZhbnQgYmVjYXVzZSBIeXBlci1WIGNob29zZXMgdGhlIHBoeXNpY2FsIENQVSB0byBoYW5kbGUgdGhlXG4tLVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2ktaHlwZXJ2LmMtMTc3OC0gKiBidXQgYXNzaWduaW5nIHRvbyBtYW55IHZQQ0kgZGV2aWNlIGludGVycnVwdHMgdG8gdGhlIHNhbWUgcENQVSBjYW4gY2F1c2UgYVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2ktaHlwZXJ2LmM6MTc3OTogKiBwZXJmb3JtYW5jZSBib3R0bGVuZWNrLiBTbyB3ZSBzcHJlYWQgb3V0IHRoZSBkdW1teSB2Q1BVcyB0byBpbmZsdWVuY2UgSHlwZXItVlxuZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2ktaHlwZXJ2LmMtMTc4MC0gKiB0byBzcHJlYWQgb3V0IHRoZSBwQ1BVcyB0aGF0IGl0IHNlbGVjdHMuXG4tLVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2ktaHlwZXJ2LmMtMTc4Mi0gKiBGb3IgdGhlIHNpbmdsZS1NU0kgYW5kIE1TSS1YIGNhc2VzLCBpdCYjMzk7cyBPSyBmb3IgaHZfY29tcG9zZV9tc2lfcmVxX2dldF9jcHUoKVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2ktaHlwZXJ2LmM6MTc4MzogKiB0byBhbHdheXMgcmV0dXJuIHRoZSBzYW1lIGR1bW15IHZDUFUsIGJlY2F1c2UgYSBzZWNvbmQgY2FsbCB0b1xuZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2ktaHlwZXJ2LmMtMTc4NC0gKiBodl9jb21wb3NlX21zaV9tc2coKSBjb250YWlucyB0aGUgXCYjMzQ7cmVhbFwmIzM0OyB2Q1BVLCBjYXVzaW5nIEh5cGVyLVYgdG8gY2hvb3NlIGFcbi0tXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaS1oeXBlcnYuYy0xNzg2LSAqIGh2X2NvbXBvc2VfbXNpX21zZygpIGV4aXRzIHdpdGhvdXQgc2VuZGluZyBhIG1lc3NhZ2UgdG8gdGhlIHZQQ0kgVlNQLCBzbyB0aGVcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpLWh5cGVydi5jOjE3ODc6ICogb3JpZ2luYWwgZHVtbXkgdkNQVSBpcyB1c2VkLiBUaGlzIGR1bW15IHZDUFUgbXVzdCBiZSByb3VuZC1yb2JpbiYjMzk7ZWQgc28gdGhhdFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2ktaHlwZXJ2LmMtMTc4OC0gKiB0aGUgcENQVXMgYXJlIHNwcmVhZCBvdXQuIEFsbCBpbnRlcnJ1cHRzIGZvciBhIG11bHRpLU1TSSBkZXZpY2UgZW5kIHVwIHVzaW5nXG4tLVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2ktaHlwZXJ2LmMtMTc5NC0gKiBlbmhhbmNlbWVudCBpcyBwbGFubmVkIGZvciBhIGZ1dHVyZSB2ZXJzaW9uLiBXaXRoIHRoYXQgZW5oYW5jZW1lbnQsIHRoZVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2ktaHlwZXJ2LmM6MTc5NTogKiBkdW1teSB2Q1BVIHNlbGVjdGlvbiB3b24mIzM5O3QgbWF0dGVyLCBhbmQgaW50ZXJydXB0cyBmb3IgdGhlIHNhbWUgbXVsdGktTVNJXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaS1oeXBlcnYuYy0xNzk2LSAqIGRldmljZSB3aWxsIGJlIHNwcmVhZCBhY3Jvc3MgbXVsdGlwbGUgcENQVXMuXG4tLVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2ktaHlwZXJ2LmMtMTc5OS0vKlxuZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2ktaHlwZXJ2LmM6MTgwMDogKiBDcmVhdGUgTVNJIHcvIGR1bW15IHZDUFUgc2V0IHRhcmdldGluZyBqdXN0IG9uZSB2Q1BVLCBvdmVyd3JpdHRlblxuZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2ktaHlwZXJ2LmMtMTgwMS0gKiBieSBzdWJzZXF1ZW50IHJldGFyZ2V0IGluIGh2X2lycV91bm1hc2soKS5cbi0tXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaS1oeXBlcnYuYz0xODAzPXN0YXRpYyBpbnQgaHZfY29tcG9zZV9tc2lfcmVxX2dldF9jcHUoY29uc3Qgc3RydWN0IGNwdW1hc2sgKmFmZmluaXR5KVxuLS1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpLWh5cGVydi5jLTE4MDgtLypcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpLWh5cGVydi5jOjE4MDk6ICogTWFrZSBzdXJlIHRoZSBkdW1teSB2Q1BVIHZhbHVlcyBmb3IgbXVsdGktTVNJIGRvbiYjMzk7dCBhbGwgcG9pbnQgdG8gdkNQVTAuXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaS1oeXBlcnYuYy0xODEwLSAqL1xuLS1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpLWh5cGVydi5jPTE4NzU9c3RhdGljIHZvaWQgaHZfY29tcG9zZV9tc2lfbXNnKHN0cnVjdCBpcnFfZGF0YSAqZGF0YSwgc3RydWN0IG1zaV9tc2cgKm1zZylcbi0tXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaS1oeXBlcnYuYy0xOTU2LVx0XHQvKlxuZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2ktaHlwZXJ2LmM6MTk1NzpcdFx0ICogVGhlIHZlY3RvciB3ZSBzZWxlY3QgaGVyZSBpcyBhIGR1bW15IHZhbHVlLiAgVGhlIGNvcnJlY3RcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpLWh5cGVydi5jLTE5NTgtXHRcdCAqIHZhbHVlIGdldHMgc2VudCB0byB0aGUgaHlwZXJ2aXNvciBpbiB1bm1hc2soKS4gIFRoaXMgbmVlZHNcbi0tXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaWUtYWx0ZXJhLmM9MzY2PXN0YXRpYyB2b2lkIHMxMF90bHBfd3JpdGVfcGFja2V0KHN0cnVjdCBhbHRlcmFfcGNpZSAqcGNpZSwgdTMyICpoZWFkZXJzLFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2llLWFsdGVyYS5jOjM2NzpcdFx0XHRcdCB1MzIgZGF0YSwgYm9vbCBkdW1teSlcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpZS1hbHRlcmEuYy0zNjgte1xuLS1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpZS1hbHRlcmEuYz03ODY9c3RhdGljIGludCBhbHRlcmFfcGNpZV9pbnR4X21hcChzdHJ1Y3QgaXJxX2RvbWFpbiAqZG9tYWluLCB1bnNpZ25lZCBpbnQgaXJxLFxuLS1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpZS1hbHRlcmEuYy03ODgte1xuZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2llLWFsdGVyYS5jOjc4OTpcdGlycV9zZXRfY2hpcF9hbmRfaGFuZGxlcihpcnEsIFx1MDAyNmR1bW15X2lycV9jaGlwLCBoYW5kbGVfc2ltcGxlX2lycSk7XG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaWUtYWx0ZXJhLmMtNzkwLVx0aXJxX3NldF9jaGlwX2RhdGEoaXJxLCBkb21haW4tXHUwMDNlaG9zdF9kYXRhKTtcbi0tXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaWUtbWVkaWF0ZWsuYz01NTQ9c3RhdGljIGludCBtdGtfcGNpZV9pbnR4X21hcChzdHJ1Y3QgaXJxX2RvbWFpbiAqZG9tYWluLCB1bnNpZ25lZCBpbnQgaXJxLFxuLS1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpZS1tZWRpYXRlay5jLTU1Ni17XG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaWUtbWVkaWF0ZWsuYzo1NTc6XHRpcnFfc2V0X2NoaXBfYW5kX2hhbmRsZXIoaXJxLCBcdTAwMjZkdW1teV9pcnFfY2hpcCwgaGFuZGxlX3NpbXBsZV9pcnEpO1xuZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2llLW1lZGlhdGVrLmMtNTU4LVx0aXJxX3NldF9jaGlwX2RhdGEoaXJxLCBkb21haW4tXHUwMDNlaG9zdF9kYXRhKTtcbi0tXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaWUtcm9ja2NoaXAtZXAuYz02NTI9c3RhdGljIGludCByb2NrY2hpcF9wY2llX2VwX3NldHVwX2lycShzdHJ1Y3QgcGNpX2VwYyAqZXBjKVxuLS1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpZS1yb2NrY2hpcC1lcC5jLTY3NC1cdCAqIGlzIGhpZ2ggYW5kIHdpbGwgdHJpZ2dlciB0aGUgcGVyc3RfaXJxIGhhbmRsZXIuIFNvIHRyZWF0IHRoaXMgaW5pdGlhbFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2llLXJvY2tjaGlwLWVwLmM6Njc1Olx0ICogSVJRIGFzIGEgZHVtbXkgb25lIGJ5IGZha2luZyB0aGUgaG9zdCBhc3NlcnRpbmcgUEVSU1QjLlxuZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2llLXJvY2tjaGlwLWVwLmMtNjc2LVx0ICovXG4tLVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2llLXJvY2tjaGlwLWhvc3QuYz02Njk9c3RhdGljIGludCByb2NrY2hpcF9wY2llX2ludHhfbWFwKHN0cnVjdCBpcnFfZG9tYWluICpkb21haW4sIHVuc2lnbmVkIGludCBpcnEsXG4tLVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2llLXJvY2tjaGlwLWhvc3QuYy02NzEte1xuZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2llLXJvY2tjaGlwLWhvc3QuYzo2NzI6XHRpcnFfc2V0X2NoaXBfYW5kX2hhbmRsZXIoaXJxLCBcdTAwMjZkdW1teV9pcnFfY2hpcCwgaGFuZGxlX3NpbXBsZV9pcnEpO1xuZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2llLXJvY2tjaGlwLWhvc3QuYy02NzMtXHRpcnFfc2V0X2NoaXBfZGF0YShpcnEsIGRvbWFpbi1cdTAwM2Vob3N0X2RhdGEpO1xuLS1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpZS14aWxpbnguYz0zMjE9c3RhdGljIGludCB4aWxpbnhfcGNpZV9pbnR4X21hcChzdHJ1Y3QgaXJxX2RvbWFpbiAqZG9tYWluLCB1bnNpZ25lZCBpbnQgaXJxLFxuLS1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpZS14aWxpbnguYy0zMjMte1xuZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2llLXhpbGlueC5jOjMyNDpcdGlycV9zZXRfY2hpcF9hbmRfaGFuZGxlcihpcnEsIFx1MDAyNmR1bW15X2lycV9jaGlwLCBoYW5kbGVfc2ltcGxlX2lycSk7XG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaWUteGlsaW54LmMtMzI1LVx0aXJxX3NldF9jaGlwX2RhdGEoaXJxLCBkb21haW4tXHUwMDNlaG9zdF9kYXRhKTtcbi0tXG5kcml2ZXJzL3BjaS9wY2ktZHJpdmVyLmM9MTM2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqcGNpX21hdGNoX2RldmljZShzdHJ1Y3QgcGNpX2RyaXZlciAqZHJ2LFxuLS1cbmRyaXZlcnMvcGNpL3BjaS1kcml2ZXIuYy0xNzUtXG5kcml2ZXJzL3BjaS9wY2ktZHJpdmVyLmM6MTc2Olx0LyogZHJpdmVyX292ZXJyaWRlIHdpbGwgYWx3YXlzIG1hdGNoLCBzZW5kIGEgZHVtbXkgaWQgKi9cbmRyaXZlcnMvcGNpL3BjaS1kcml2ZXIuYy0xNzctXHRpZiAocmV0IFx1MDAzZSAwKVxuLS1cbmRyaXZlcnMvcGNpL3B3cmN0cmwvcGNpLXB3cmN0cmwtdGM5NTYzLmM9NTMzPXN0YXRpYyBpbnQgdGM5NTYzX3B3cmN0cmxfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL3BjaS9wd3JjdHJsL3BjaS1wd3JjdHJsLXRjOTU2My5jLTU1NS1cbmRyaXZlcnMvcGNpL3B3cmN0cmwvcGNpLXB3cmN0cmwtdGM5NTYzLmM6NTU2Olx0dGM5NTYzLVx1MDAzZWNsaWVudCA9IGkyY19uZXdfZHVtbXlfZGV2aWNlKHRjOTU2My1cdTAwM2VhZGFwdGVyLCBhZGRyKTtcbmRyaXZlcnMvcGNpL3B3cmN0cmwvcGNpLXB3cmN0cmwtdGM5NTYzLmMtNTU3LVx0aWYgKElTX0VSUih0Yzk1NjMtXHUwMDNlY2xpZW50KSkge1xuLS1cbmRyaXZlcnMvcGNpL3NldHVwLWJ1cy5jPTU3Nz1zdGF0aWMgdm9pZCBfX2Fzc2lnbl9yZXNvdXJjZXNfc29ydGVkKHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQsXG4tLVxuZHJpdmVycy9wY2kvc2V0dXAtYnVzLmMtNjA1LVx0TElTVF9IRUFEKGxvY2FsX2ZhaWxfaGVhZCk7XG5kcml2ZXJzL3BjaS9zZXR1cC1idXMuYzo2MDY6XHRMSVNUX0hFQUQoZHVtbXlfaGVhZCk7XG5kcml2ZXJzL3BjaS9zZXR1cC1idXMuYy02MDctXHRzdHJ1Y3QgcGNpX2Rldl9yZXNvdXJjZSAqc2F2ZV9yZXM7XG4tLVxuZHJpdmVycy9wY2kvc2V0dXAtYnVzLmMtNjE0LVx0aWYgKCFyZWFsbG9jX2hlYWQpXG5kcml2ZXJzL3BjaS9zZXR1cC1idXMuYzo2MTU6XHRcdHJlYWxsb2NfaGVhZCA9IFx1MDAyNmR1bW15X2hlYWQ7XG5kcml2ZXJzL3BjaS9zZXR1cC1idXMuYy02MTYtXG4tLVxuZHJpdmVycy9wY2kvdmdhYXJiLmM9MTY3PWludCB2Z2FfcmVtb3ZlX3ZnYWNvbihzdHJ1Y3QgcGNpX2RldiAqcGRldilcbi0tXG5kcml2ZXJzL3BjaS92Z2FhcmIuYy0xNzYtXHRpZiAoY29uX2lzX2JvdW5kKFx1MDAyNnZnYV9jb24pKVxuZHJpdmVycy9wY2kvdmdhYXJiLmM6MTc3Olx0XHRyZXQgPSBkb190YWtlX292ZXJfY29uc29sZShcdTAwMjZkdW1teV9jb24sIDAsXG5kcml2ZXJzL3BjaS92Z2FhcmIuYy0xNzgtXHRcdFx0XHRcdCAgIE1BWF9OUl9DT05TT0xFUyAtIDEsIDEpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAwODozMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzc0MAoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDI5NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE1lbGxhbm94IFN3aXRjaCBCdWcgUmVwb3J0KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBtbHhzd19wY2lfY3FfbmFwaV90ZWFyZG93bmAgYnVnIHJlcG9ydCwgYW5kIHNvbWV0aGluZyBkb2VzbiYjMzk7dCBxdWl0ZSBhZGQgdXAuIEkga25vdyBzeXprYWxsZXIgZG9lc24mIzM5O3QgaGF2ZSBhIGdlbmVyaWMgUENJIGluamVjdGlvbiBtZWNoYW5pc20gaW4gdGhlIGtlcm5lbDsgdGhhdCYjMzk7cyBqdXN0IG5vdCBob3cgaXQgd29ya3MuIEFuZCwgc3l6a2FsbGVyIHVzdWFsbHkgcnVucyBvbiBHQ0UuIEdDRSBkb2VzIGhhdmUgdmlydHVhbCBQQ0kgZGV2aWNlcywgdGhpbmdzIGxpa2UgdmlydGlvLW5ldCBhbmQgdmlydGlvLWJsaywgYnV0ICpkZWZpbml0ZWx5KiBub3QgTWVsbGFub3ggU3dpdGNoIEFTSUNzLiBTbywgaG93IHRoZSBoZWNrIGRpZCBzeXpib3QgZmluZCBhIGJ1ZyBzcGVjaWZpY2FsbHkgaW4gdGhhdCBkcml2ZXI/IFRoaXMgc21lbGxzIGZpc2h5LgoKSGFuZyBvbi4uLiAmIzM0O3N5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldy4mIzM0OyBBaCwgc28gdGhlIHN5ei1jbHVzdGVyIGlzIHRlc3RpbmcgYSBwYXRjaCByZWxhdGVkIHRvIHRoaXMuIE9rYXksIHNvIHBlcmhhcHMgYW5vdGhlciBmdXp6ZXIgZm91bmQgaXQsIGFuZCBpdCYjMzk7cyBiZWluZyB0ZXN0ZWQgd2l0aCBzeXprYWxsZXIgKm5vdyosIG9yIG1heWJlIGl0JiMzOTtzIGEgbWFudWFsIHBhdGNoIGJlaW5nIGV4cGxvcmVkPwoKSWYgdGhpcyBpcyB0cnVseSB1bnJlYWNoYWJsZSBpbiBHQ0Ugb3Igc3RhbmRhcmQgUUVNVSBjb25maWd1cmF0aW9ucywgdGhlbiBJIG5lZWQgdG8gbWFyayB0aGlzIGFzIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBJdCYjMzk7cyBhIHdhc3RlIG9mIHJlc291cmNlcyB0byBmdXp6IHNvbWV0aGluZyB0aGF0IGlzIGNvbXBsZXRlbHkgaW5hY2Nlc3NpYmxlLgoKT2theSwgbGV0JiMzOTtzIHN0ZXAgYmFjayBhbmQgY29uc2lkZXI6IGlzIHRoZXJlICphbnkqIGNoYW5jZSB0aGUgYG1seHN3YCBkcml2ZXIgaXMgcmVhY2hhYmxlIHdpdGhpbiBhIHN0YW5kYXJkIHNldHVwPyBJIGFscmVhZHkgY2hlY2tlZCBgbmV0ZGV2c2ltYCBhbmQgY2FtZSB1cCBlbXB0eS4gTWF5YmUgc29tZXRoaW5nIHNpbWlsYXI/IE5vIGRpY2UuIFJpZ2h0LCB3aGF0IGFib3V0IGBkZXZsaW5rYD8gQ291bGQgYG1seHN3YCBiZSBpbnN0YW50aWF0ZWQgdmlhIGBkZXZsaW5rYCBzb21laG93PyBDaGVja2luZyB0aGUgYGRldmxpbmtfb3BzYCwgYW5kIGl0IGRvZXNuJiMzOTt0IGFwcGVhciB0aGVyZSYjMzk7cyBhIHN0cmFpZ2h0Zm9yd2FyZCB3YXkgdG8gaW5zdGFudGlhdGUgYSBkZXZpY2UuCgpXYWl0LCBsb29raW5nIGRlZXBlciBpbnRvIHRoZSBkcml2ZXImIzM5O3MgY29kZSwgYG1seHN3X2NvcmVfYnVzX2RldmljZV9yZWdpc3RlcmAgaXMgY2FsbGVkIGJ5IGBtbHhzd19wY2lfcHJvYmVgIGFuZCBgbWx4c3dfaTJjX3Byb2JlYC4gSXMgdGhlcmUgKmFub3RoZXIqIGNhbGxlciBvZiB0aGF0IGZ1bmN0aW9uIHRoYXQgY291bGQgdHJpZ2dlciB0aGUgaXNzdWU/IEkgbmVlZCB0byBjaGVjay4gVGhpcyBpcyB0aGUga2V5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAwODozMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttbHhzd19jb3JlX2J1c19kZXZpY2VfcmVnaXN0ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvY29yZS5jPTE1OTM9bWx4c3dfZGV2bGlua19jb3JlX2J1c19kZXZpY2VfcmVsb2FkX3VwKHN0cnVjdCBkZXZsaW5rICpkZXZsaW5rLCBlbnVtIGRldmxpbmtfcmVsb2FkX2FjdGlvbiBhY3Rpb24sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvY29yZS5jLTE2MDEtXHRcdFx0ICAgICBCSVQoREVWTElOS19SRUxPQURfQUNUSU9OX0ZXX0FDVElWQVRFKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmUuYzoxNjAyOlx0ZXJyID0gbWx4c3dfY29yZV9idXNfZGV2aWNlX3JlZ2lzdGVyKG1seHN3X2NvcmUtXHUwMDNlYnVzX2luZm8sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9jb3JlLmMtMTYwMy1cdFx0XHRcdFx0ICAgICBtbHhzd19jb3JlLVx1MDAzZWJ1cyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9jb3JlLmM9MjA5ND1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9jb3JlLmM6MjA5NTpfX21seHN3X2NvcmVfYnVzX2RldmljZV9yZWdpc3Rlcihjb25zdCBzdHJ1Y3QgbWx4c3dfYnVzX2luZm8gKm1seHN3X2J1c19pbmZvLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvY29yZS5jLTIwOTYtXHRcdFx0XHQgY29uc3Qgc3RydWN0IG1seHN3X2J1cyAqbWx4c3dfYnVzLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmUuYy0yMjQ1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvY29yZS5jOjIyNDY6aW50IG1seHN3X2NvcmVfYnVzX2RldmljZV9yZWdpc3Rlcihjb25zdCBzdHJ1Y3QgbWx4c3dfYnVzX2luZm8gKm1seHN3X2J1c19pbmZvLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvY29yZS5jLTIyNDctXHRcdFx0XHQgICBjb25zdCBzdHJ1Y3QgbWx4c3dfYnVzICptbHhzd19idXMsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvY29yZS5jLTIyNTUtYWdhaW46XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9jb3JlLmM6MjI1NjpcdGVyciA9IF9fbWx4c3dfY29yZV9idXNfZGV2aWNlX3JlZ2lzdGVyKG1seHN3X2J1c19pbmZvLCBtbHhzd19idXMsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9jb3JlLmMtMjI1Ny1cdFx0XHRcdFx0ICAgICAgIGJ1c19wcml2LCByZWxvYWQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvY29yZS5jLTIyNTktXHQvKiAtRUFHQUlOIGlzIHJldHVybmVkIGluIGNhc2UgdGhlIEZXIHdhcyB1cGRhdGVkLiBGVyBuZWVkc1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvY29yZS5jOjIyNjA6XHQgKiBhIHJlc2V0LCBzbyBsZXRzIHRyeSB0byBjYWxsIF9fbWx4c3dfY29yZV9idXNfZGV2aWNlX3JlZ2lzdGVyKClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmUuYy0yMjYxLVx0ICogYWdhaW4uXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvY29yZS5jLTIyNjktfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvY29yZS5jOjIyNzA6RVhQT1JUX1NZTUJPTChtbHhzd19jb3JlX2J1c19kZXZpY2VfcmVnaXN0ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvY29yZS5jLTIyNzEtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvY29yZS5oPTU4PWludCBtbHhzd19jb3JlX2Z3X2ZsYXNoKHN0cnVjdCBtbHhzd19jb3JlICptbHhzd19jb3JlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmUuaC02Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmUuaDo2MzppbnQgbWx4c3dfY29yZV9idXNfZGV2aWNlX3JlZ2lzdGVyKGNvbnN0IHN0cnVjdCBtbHhzd19idXNfaW5mbyAqbWx4c3dfYnVzX2luZm8sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9jb3JlLmgtNjQtXHRcdFx0XHQgICBjb25zdCBzdHJ1Y3QgbWx4c3dfYnVzICptbHhzd19idXMsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvaTJjLmM9NjMzPXN0YXRpYyBpbnQgbWx4c3dfaTJjX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvaTJjLmMtNzIxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvaTJjLmM6NzIyOlx0ZXJyID0gbWx4c3dfY29yZV9idXNfZGV2aWNlX3JlZ2lzdGVyKFx1MDAyNm1seHN3X2kyYy1cdTAwM2VidXNfaW5mbyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2kyYy5jLTcyMy1cdFx0XHRcdFx0ICAgICBcdTAwMjZtbHhzd19pMmNfYnVzLCBtbHhzd19pMmMsIGZhbHNlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3BjaS5jPTI0MzA9c3RhdGljIGludCBtbHhzd19wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuYy0yNDg4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvcGNpLmM6MjQ4OTpcdGVyciA9IG1seHN3X2NvcmVfYnVzX2RldmljZV9yZWdpc3RlcihcdTAwMjZtbHhzd19wY2ktXHUwMDNlYnVzX2luZm8sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuYy0yNDkwLVx0XHRcdFx0XHQgICAgIFx1MDAyNm1seHN3X3BjaV9idXMsIG1seHN3X3BjaSwgZmFsc2UsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvcGNpLmM9MjUzMz1zdGF0aWMgdm9pZCBtbHhzd19wY2lfcmVzZXRfZG9uZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuYy0yNTM3LVx0bWx4c3dfcGNpLVx1MDAzZXNraXBfcmVzZXQgPSB0cnVlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvcGNpLmM6MjUzODpcdG1seHN3X2NvcmVfYnVzX2RldmljZV9yZWdpc3RlcihcdTAwMjZtbHhzd19wY2ktXHUwMDNlYnVzX2luZm8sIFx1MDAyNm1seHN3X3BjaV9idXMsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuYy0yNTM5LVx0XHRcdFx0ICAgICAgIG1seHN3X3BjaSwgZmFsc2UsIE5VTEwsIE5VTEwpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAwODozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTk0OQoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDIyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbnZlc3RpZ2F0aW9uIGludG8gRHJpdmVyIEluc3RhbnRpYXRpb24qKgoKT2theSwgc28gdGhpcyBkcml2ZXImIzM5O3MgcHJvYmUgZnVuY3Rpb24gc2VlbXMgdG8gb25seSBiZSBjYWxsZWQgYnkgUENJIGFuZCBJMkMgcHJvYmVzLCB3aGljaCBtZWFucyB3aXRob3V0IGEgcGh5c2ljYWwgUENJIG9yIEkyQyBkZXZpY2UgcHJlc2VudCwgaXQmIzM5O3Mgbm90IGdvaW5nIHRvIGdldCBsb2FkZWQuIE15IGZpcnN0IHRob3VnaHQgaXMgd2hldGhlciBTeXprYWxsZXIgY2FuIGV2ZW4gaGVscCBoZXJlLiBDYW4gaXQgaW5zdGFudGlhdGUgYSBkdW1teSBJMkMgZGV2aWNlPyBEb2VzIFN5emthbGxlciBoYXZlIHNvbWV0aGluZyBsaWtlIGEgYHN5el9pMmNfc2V0dXBgIGNhbGw/IExldCBtZSBxdWlja2x5IGNoZWNrIGlmIFN5emthbGxlciBzdXBwb3J0cyBJMkMgZnV6emluZy4uLiBOb3BlLiBVc3VhbGx5IEkyQyBkZXZpY2VzIGNvbWUgdXAgdGhyb3VnaCBkZXZpY2UgdHJlZXMsIEFDUEkgb3IgYnkgd3JpdGluZyB0byBgL3N5cy9idXMvaTJjL2RldmljZXMvaTJjLSovbmV3X2RldmljZWAuCgpXYWl0IGEgbWludXRlLi4uIHRoYXQgYC9zeXMvYnVzL2kyYy9kZXZpY2VzL2kyYy0qL25ld19kZXZpY2VgIHdyaXRlLi4uIHRoYXQgKmNvdWxkKiBpbnN0YW50aWF0ZSBhbiBJMkMgZGV2aWNlLCBjb3VsZG4mIzM5O3QgaXQ/IE9rYXksIHRoYXQmIzM5O3MgcHJvbWlzaW5nLiBOb3csIHRvIHNlZSBpZiB0aGVyZSYjMzk7cyBhbnkgSTJDIGRyaXZlciBJIGNhbiBsZXZlcmFnZS4gTGV0IG1lIHNlZSBpZiB0aGUgYG1seHN3YCBkcml2ZXJzIGhhdmUgYW4gSTJDIGRyaXZlci4gQWgsIHllcyEgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2kyYy5jYCBleGlzdHMuIEV4Y2VsbGVudC4gQ2FuIFN5emthbGxlciBub3cgdXNlIHRoaXMgdG8gaW5zdGFudGlhdGUgaXQgdGhyb3VnaCB0aGUgYG5ld19kZXZpY2VgIGludGVyZmFjZT8gSSB3aWxsIG5vdyBpbnZlc3RpZ2F0ZSBgbWx4c3dfaTJjX2RyaXZlcmAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDA4OjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21seHN3X2kyY19kcml2ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvaTJjLmM9NzQxPXN0YXRpYyB2b2lkIG1seHN3X2kyY19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9pMmMuYy03NDktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9pMmMuYzo3NTA6aW50IG1seHN3X2kyY19kcml2ZXJfcmVnaXN0ZXIoc3RydWN0IGkyY19kcml2ZXIgKmkyY19kcml2ZXIpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9pMmMuYy03NTEte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2kyYy5jLTc1NS19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9pMmMuYzo3NTY6RVhQT1JUX1NZTUJPTChtbHhzd19pMmNfZHJpdmVyX3JlZ2lzdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2kyYy5jLTc1Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2kyYy5jOjc1ODp2b2lkIG1seHN3X2kyY19kcml2ZXJfdW5yZWdpc3RlcihzdHJ1Y3QgaTJjX2RyaXZlciAqaTJjX2RyaXZlcilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2kyYy5jLTc1OS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvaTJjLmMtNzYxLX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2kyYy5jOjc2MjpFWFBPUlRfU1lNQk9MKG1seHN3X2kyY19kcml2ZXJfdW5yZWdpc3Rlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9pMmMuYy03NjMtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvaTJjLmgtMTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9pMmMuaDoxMTppbnQgbWx4c3dfaTJjX2RyaXZlcl9yZWdpc3RlcihzdHJ1Y3QgaTJjX2RyaXZlciAqaTJjX2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9pMmMuaDoxMjp2b2lkIG1seHN3X2kyY19kcml2ZXJfdW5yZWdpc3RlcihzdHJ1Y3QgaTJjX2RyaXZlciAqaTJjX2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9pMmMuaC0xMy1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9pMmMuaD0xNj1zdGF0aWMgaW5saW5lIGludFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvaTJjLmg6MTc6bWx4c3dfaTJjX2RyaXZlcl9yZWdpc3RlcihzdHJ1Y3QgaTJjX2RyaXZlciAqaTJjX2RyaXZlcilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2kyYy5oLTE4LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9pMmMuaD0yMj1zdGF0aWMgaW5saW5lIHZvaWRcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2kyYy5oOjIzOm1seHN3X2kyY19kcml2ZXJfdW5yZWdpc3RlcihzdHJ1Y3QgaTJjX2RyaXZlciAqaTJjX2RyaXZlcilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2kyYy5oLTI0LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9taW5pbWFsLmM9NzI0PXN0YXRpYyBpbnQgX19pbml0IG1seHN3X21fbW9kdWxlX2luaXQodm9pZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9taW5pbWFsLmMtNzMxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvbWluaW1hbC5jOjczMjpcdGVyciA9IG1seHN3X2kyY19kcml2ZXJfcmVnaXN0ZXIoXHUwMDI2bWx4c3dfbV9pMmNfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L21pbmltYWwuYy03MzMtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L21pbmltYWwuYz03NDQ9c3RhdGljIHZvaWQgX19leGl0IG1seHN3X21fbW9kdWxlX2V4aXQodm9pZClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L21pbmltYWwuYy03NDUte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvbWluaW1hbC5jOjc0NjpcdG1seHN3X2kyY19kcml2ZXJfdW5yZWdpc3RlcihcdTAwMjZtbHhzd19tX2kyY19kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvbWluaW1hbC5jLTc0Ny1cdG1seHN3X2NvcmVfZHJpdmVyX3VucmVnaXN0ZXIoXHUwMDI2bWx4c3dfbV9kcml2ZXIpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAwODozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzU3MwoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDU2OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBhdGNoJiMzOTtzIFJlYWNoYWJpbGl0eSBhbmQgRnV6emluZyBQb3RlbnRpYWwqKgoKT2theSwgc28gdGhlIHBhdGNoIGlzIGRlZmluaXRlbHkgaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3BjaS5jYCwgd2hpY2ggZm9jdXNlcyBteSBhdHRlbnRpb24uIEkgaW1tZWRpYXRlbHkgdGhpbmsgdGhhdCB0aGUgSTJDIGRyaXZlciwgd2hpY2ggdXNlcyBgbWx4c3dfaTJjX2J1c2AsIGlzbiYjMzk7dCBnb2luZyB0byBiZSByZWxldmFudCBoZXJlIGJlY2F1c2UgaXQgZG9lc24mIzM5O3QgZXZlbiBjYWxsIHRoZSBgbWx4c3dfcGNpX2NxX25hcGlfZGlzYWJsZWAgZnVuY3Rpb24gdGhhdCB0aGUgcGF0Y2ggbW9kaWZpZXMuIFRoZSBwYXRjaCBpcyB0b3VjaGluZyBgbWx4c3dfcGNpX2NxX25hcGlfZGlzYWJsZWAgYW5kIGBtbHhzd19wY2lfZmluaWAgd2l0aGluIHRoZSBQQ0kgY29kZSwgc28gaWYgSTJDICpjb3VsZCogYmUgaW5zdGFudGlhdGVkLCBpdCBzdGlsbCB3b3VsZG4mIzM5O3QgaGl0IHRoZSB0YXJnZXQgb2YgdGhlIHBhdGNoLgoKVGhlIG5leHQgcXVlc3Rpb24gaXMsIGNhbiBJIGluc3RhbnRpYXRlIGEgUENJIGRldmljZSBmcm9tIHVzZXJzcGFjZT8gR2VuZXJhbGx5LCBuby4gVW5sZXNzLi4uIHdhaXQsIGRvZXNuJiMzOTt0IHN5emthbGxlciBoYXZlIHNvbWUgdHJpY2tlcnk/IEkgcmVtZW1iZXIgaGVhcmluZyB0aGV5IHVzZSBzb21lIGN1c3RvbSBQQ0kgaW5qZWN0aW9uIG1ldGhvZHMuIE9rYXksIEkgbmVlZCB0byBrbm93LgoKSSYjMzk7bSB0cnlpbmcgdG8gc2VhcmNoIGZvciBzb21ldGhpbmcgbGlrZSBgc3l6X3BjaWAgd2l0aGluIHRoZSBzeXprYWxsZXIgc291cmNlLCBidXQgSSBjYW4mIzM5O3QuIEkgZG9uJiMzOTt0IGhhdmUgdGhlIHNvdXJjZSBoYW5keS4gQnV0IGhleSwgaXQgaGFzIHRoZSBgc3l6X3BjaV9kZXZpY2VgIHBzZXVkby1zeXNjYWxsLCB3aGljaCBtZWFucyBpdCBkZWZpbml0ZWx5IGhhbmRsZXMgUENJIGRldmljZXMuIFRoYXQgcHNldWRvLXN5c2NhbGwgaW1wbGllcyB0aGF0IHN5emthbGxlciAqZG9lcyogaW5kZWVkIGhhdmUgaXRzIG93biBwc2V1ZG8tc3lzY2FsbHMgc3RhcnRpbmcgd2l0aCBgc3l6X2AuIElmIHN5emthbGxlciBoYXMgYSBQQ0kgZnV6emVyLCBpdCBjYW4gaW5qZWN0IFBDSSBkZXZpY2VzLCB0aGVuIEkmIzM5O20gaW4gYnVzaW5lc3MuCgpTbywgaG93IGRvZXMgc3l6a2FsbGVyIGRvIHRoYXQgaW5qZWN0aW9uPyBJcyBpdCB1c2luZyBgdmZpb2AsIGBwY2lfZW5kcG9pbnRgLCBvciBtYXliZSBhIGN1c3RvbSBRRU1VIGRldmljZT8gVGhhdCYjMzk7cyB0aGUga2V5LiBJZiBzeXprYWxsZXIgY2FuIGluamVjdCBQQ0kgZGV2aWNlcywgdGhlbiBgbWx4c3dfcGNpX3Byb2JlYCAqaXMqIHJlYWNoYWJsZSwgYXQgbGVhc3Qgd2l0aGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIExldCYjMzk7cyBhc3N1bWUgdGhhdCBzeXprYWxsZXIgKmNhbiogZnV6eiBQQ0kgZGV2aWNlcy4KCklmIHRoYXQmIzM5O3MgdGhlIGNhc2UsIGFuZCB0aGUgcGF0Y2ggbW9kaWZpZXMgYG1seHN3X3BjaV9jcV9uYXBpX2Rpc2FibGVgIGFuZCBgbWx4c3dfcGNpX2ZpbmlgLCB0aGVuIGZ1enppbmcgdGhpcyBzZWVtcyB3b3J0aHdoaWxlLiBJdCBmaXhlcyBhIGRvdWJsZSBgbmFwaV9kaXNhYmxlYCBhbmQgYSBtaXNzaW5nIGB0YXNrbGV0X2tpbGxgLiBUaGF0JiMzOTtzIGltcG9ydGFudC4KCk5vdywgbGV0JiMzOTtzIGxpc3Qgb3V0IHdoYXQmIzM5O3MgbW9kaWZpZWQgaGVyZSB0byBzZWUgaWYgdGhlcmUgaXMgcG90ZW50aWFsIGZvciBhIG5pY2UgZnV6ei10YXJnZXQ6CiogICBgbWx4c3dfcGNpX2NxX25hcGlfZGlzYWJsZWAKKiAgIGBtbHhzd19wY2lfY3FfaW5pdGAKKiAgIGBtbHhzd19wY2lfY3FfZmluaWAKKiAgIGBtbHhzd19wY2lfYXFzX2ZpbmlgCiogICBgbWx4c3dfcGNpX2ZpbmlgCgpOZXh0LCBJIG5lZWQgdG8gY2hlY2sgdGhlIGNvbmZpZ3MgcmVxdWlyZWQ6CiogICBgQ09ORklHX01MWFNXX1BDSWAKKiAgIGBDT05GSUdfTUxYU1dfQ09SRWAKCkFyZSB0aGVyZSBhbnkgb3RoZXIgaW1wb3J0YW50IGNvbmZpZ3M/CgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDA4OjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNTFhTV19QQ0kmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvS2NvbmZpZz0yNT1jb25maWcgTUxYU1dfQ09SRV9USEVSTUFMXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvS2NvbmZpZy0zMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L0tjb25maWc6MzM6Y29uZmlnIE1MWFNXX1BDSVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvS2NvbmZpZy0zNC1cdHRyaXN0YXRlIFwmIzM0O1BDSSBidXMgaW1wbGVtZW50YXRpb24gZm9yIE1lbGxhbm94IFRlY2hub2xvZ2llcyBTd2l0Y2ggQVNJQ3NcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMDg6MzM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjg5MzgKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiAzMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSYjMzk7bSBhbiBleHBlcnQgaW4gdGhpcyBmaWVsZCwgcHJlc2VudGVkIGFzIGEgZmlyc3QtcGVyc29uIHN1bW1hcnk6CgoqKkRpZ2dpbmcgaW50byB0aGUgTWVsbGFub3ggS2NvbmZpZyoqCgpBbHJpZ2h0LCBzbyB0aGUgdGFzayBhdCBoYW5kIGxpa2VseSBpbnZvbHZlcyBjb25maWd1cmluZyBvciB0cm91Ymxlc2hvb3Rpbmcgc29tZXRoaW5nIHJlbGF0ZWQgdG8gTWVsbGFub3ggbmV0d29yayBkcml2ZXJzLCBzcGVjaWZpY2FsbHkgdGhlIG9uZXMgY29ubmVjdGVkIHZpYSBQQ0kuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGNoZWNrIHRoZSBgS2NvbmZpZ2AgZmlsZSB3aXRoaW4gdGhlIE1lbGxhbm94IGRyaXZlciBkaXJlY3RvcnksIGFuZCB0aGF0IHBhdGggaXMgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L0tjb25maWdgLiBgS2NvbmZpZ2AgZmlsZXMgYXJlIHRoZSBicmVhZCBhbmQgYnV0dGVyIGZvciBrZXJuZWwgY29uZmlndXJhdGlvbiwgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIGFsbCB0aGUgY29tcGlsZS10aW1lIG9wdGlvbnMuIEkgd2FudCB0byBzZWUgaG93IGBNTFhTV19QQ0lgIGlzIGRlZmluZWQsIHdoYXQgZGVwZW5kZW5jaWVzIGl0IGhhcywgYW5kIHBlcmhhcHMgd2hhdCBpdCBlbmFibGVzIG9yIGRpc2FibGVzLiBUaGlzIGlzIHRoZSBsb2dpY2FsIGZpcnN0IHN0ZXA7IHRoaXMgd2lsbCB0ZWxsIG1lIHdoYXQgdGhlIGJ1aWxkIHN5c3RlbSBuZWVkcyB0byBrbm93IGFib3V0IHRoZSBmZWF0dXJlLCBob3cgdG8gZW5hYmxlIGl0IGFuZCB3aGF0IGVsc2UgSSBuZWVkIHRvIHRoaW5rIGFib3V0LiBJdOKAmXMgd2hlcmUgYWxsIHRoZSBmdW5kYW1lbnRhbCBvcHRpb25zIGFuZCBkZXBlbmRlbmNpZXMgZm9yIHRoZXNlIGRyaXZlcnMgYXJlIGxhaWQgb3V0LiBJ4oCZbSB0aGlua2luZyBJIHdpbGwgZmluZCBjbHVlcyBhcyB0byB3aGV0aGVyIHRoZSBjb25maWd1cmF0aW9uIGlzIGVuYWJsZWQsIGlmIHRoZXJlIGlzIGEgY29uZmxpY3QsIG9yIGEgZGVwZW5kZW5jeSBpcyBtaXNzaW5nLiBMZXTigJlzIGdldCB0byBpdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMDg6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAzMDpcdFx0IFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gYXV0b21hdGljYWxseSBjb250cm9sIGZhbnMgc3BlZWQgYWNjb3JkaW5nXG4gIDMxOlx0XHQgYW1iaWVudCB0ZW1wZXJhdHVyZSByZXBvcnRlZCBieSBBU0lDLlxuICAzMjpcdFxuICAzMzpcdGNvbmZpZyBNTFhTV19QQ0lcbiAgMzQ6XHRcdHRyaXN0YXRlIFwmIzM0O1BDSSBidXMgaW1wbGVtZW50YXRpb24gZm9yIE1lbGxhbm94IFRlY2hub2xvZ2llcyBTd2l0Y2ggQVNJQ3NcJiMzNDtcbiAgMzU6XHRcdGRlcGVuZHMgb24gUENJIFx1MDAyNlx1MDAyNiBIQVNfSU9NRU0gXHUwMDI2XHUwMDI2IE1MWFNXX0NPUkVcbiAgMzY6XHRcdHNlbGVjdCBQQUdFX1BPT0xcbiAgMzc6XHRcdGRlZmF1bHQgbVxuICAzODpcdFx0aGVscFxuICAzOTpcdFx0ICBUaGlzIGlzIFBDSSBidXMgaW1wbGVtZW50YXRpb24gZm9yIE1lbGxhbm94IFRlY2hub2xvZ2llcyBTd2l0Y2ggQVNJQ3MuXG4gIDQwOlx0XG4gIDQxOlx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxuICA0MjpcdFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgbWx4c3dfcGNpLlxuICA0MzpcdFxuICA0NDpcdGNvbmZpZyBNTFhTV19JMkNcbiAgNDU6XHRcdHRyaXN0YXRlIFwmIzM0O0kyQyBidXMgaW1wbGVtZW50YXRpb24gZm9yIE1lbGxhbm94IFRlY2hub2xvZ2llcyBTd2l0Y2ggQVNJQ3NcJiMzNDtcbiAgNDY6XHRcdGRlcGVuZHMgb24gSTJDIFx1MDAyNlx1MDAyNiBNTFhTV19DT1JFXG4gIDQ3Olx0XHRkZWZhdWx0IG1cbiAgNDg6XHRcdGhlbHBcbiAgNDk6XHRcdCAgVGhpcyBpcyBJMkMgYnVzIGltcGxlbWVudGF0aW9uIGZvciBNZWxsYW5veCBUZWNobm9sb2dpZXMgU3dpdGNoIEFTSUNzLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAwODozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTU1OAoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDcxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IENvbmZpZ3VyYXRpb24gQ2hlY2sqKgoKT2theSwgc28gSSYjMzk7bSBmb2N1c2luZyBvbiB0aGUgYE1MWFNXYCBkcml2ZXIgaGVyZSwgYW5kIEkgbmVlZCB0byBtYWtlIHN1cmUgSSYjMzk7dmUgZ290IHRoZSBlc3NlbnRpYWxzIGVuYWJsZWQuIFJpZ2h0LCBgTUxYU1dfUENJYCBhbmQgYE1MWFNXX0NPUkVgIGFyZSB0aGUga2V5IGNvbXBvbmVudHMuIEkgbmVlZCB0byBtYWtlIHN1cmUgYm90aCBhcmUgc2V0IHRvIGVuYWJsZWQuIFdhaXQgYSBzZWNvbmQsIHF1aWNrIG1lbnRhbCBjaGVjay4uLiBgTUxYU1dfUENJYCBpbmhlcmVudGx5IGRlcGVuZHMgb24gYE1MWFNXX0NPUkVgLCBzbyB0aGF0JiMzOTtzIGdvb2QuIE5vdywgYmVmb3JlIEkgbW92ZSBvbiwgSSBzaG91bGQgcXVpY2tseSB2ZXJpZnkgaWYgdGhlcmUgYXJlIGFueSBkcml2ZXItc3BlY2lmaWMgY29uZmlncyB0byBjb25zaWRlci4gRm9yIGV4YW1wbGUsIGlzIHRoZXJlIGEgYE1MWFNXX1NQRUNUUlVNYCBvcHRpb24gSSBuZWVkIHRvIGJlIGF3YXJlIG9mPyBCZXN0IHRvIGJlIHRob3JvdWdoLCBlc3BlY2lhbGx5IHdoZW4gZGVhbGluZyB3aXRoIHRoaXMgbGV2ZWwgb2YgaGFyZHdhcmUgaW50ZXJhY3Rpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDA4OjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDUwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgNTA6XHRcbiAgNTE6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlXG4gIDUyOlx0XHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBtbHhzd19pMmMuXG4gIDUzOlx0XG4gIDU0Olx0Y29uZmlnIE1MWFNXX1NQRUNUUlVNXG4gIDU1Olx0XHR0cmlzdGF0ZSBcJiMzNDtNZWxsYW5veCBUZWNobm9sb2dpZXMgU3BlY3RydW0gZmFtaWx5IHN1cHBvcnRcJiMzNDtcbiAgNTY6XHRcdGRlcGVuZHMgb24gTUxYU1dfQ09SRSBcdTAwMjZcdTAwMjYgTUxYU1dfUENJIFx1MDAyNlx1MDAyNiBORVRfU1dJVENIREVWIFx1MDAyNlx1MDAyNiBWTEFOXzgwMjFRXG4gIDU3Olx0XHRkZXBlbmRzIG9uIFBTQU1QTEUgfHwgUFNBTVBMRT1uXG4gIDU4Olx0XHRkZXBlbmRzIG9uIEJSSURHRSB8fCBCUklER0U9blxuICA1OTpcdFx0ZGVwZW5kcyBvbiBORVRfSVBHUkUgfHwgTkVUX0lQR1JFPW5cbiAgNjA6XHRcdGRlcGVuZHMgb24gSVBWNl9HUkUgfHwgSVBWNl9HUkU9blxuICA2MTpcdFx0ZGVwZW5kcyBvbiBWWExBTiB8fCBWWExBTj1uXG4gIDYyOlx0XHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXG4gIDYzOlx0XHRzZWxlY3QgR0VORVJJQ19BTExPQ0FUT1JcbiAgNjQ6XHRcdHNlbGVjdCBQQVJNQU5cbiAgNjU6XHRcdHNlbGVjdCBPQkpBR0dcbiAgNjY6XHRcdHNlbGVjdCBORVRfUFRQX0NMQVNTSUZZIGlmIFBUUF8xNTg4X0NMT0NLXG4gIDY3Olx0XHRkZWZhdWx0IG1cbiAgNjg6XHRcdGhlbHBcbiAgNjk6XHRcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgTWVsbGFub3ggVGVjaG5vbG9naWVzXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDA4OjMzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwMTQ4CgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogODQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyB0aGUgRGVwZW5kZW5jeSBTdHJ1Y3R1cmUgb2YgTUxYU1cgRHJpdmVycyoqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGUga2VybmVsIGJ1aWxkIGNvbmZpZ3VyYXRpb24sIHNwZWNpZmljYWxseSB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gYE1MWFNXX1NQRUNUUlVNYCBhbmQgYE1MWFNXX1BDSWAuIE15IHVuZGVyc3RhbmRpbmcgaXMgdGhhdCBgTUxYU1dfU1BFQ1RSVU1gICpkZXBlbmRzKiBvbiBgTUxYU1dfUENJYC4gVGhhdCBtYWtlcyBzZW5zZTsgU3BlY3RydW0gZGV2aWNlcyBsaWtlbHkgcmVseSBvbiBQQ0kgZm9yIHRoZWlyIGNvbW11bmljYXRpb24uCgpOb3csIGhlcmUmIzM5O3MgdGhlIHF1ZXN0aW9uIHRoYXQmIzM5O3MgbmFnZ2luZyBhdCBtZTogSWYgSSBzaW1wbHkgZW5hYmxlIGBNTFhTV19QQ0lgLCBJICprbm93KiBpdCBidWlsZHMgYG1seHN3X3BjaS5rb2AuIEJ1dCB3aGF0IGV4YWN0bHkgZG9lcyB0aGF0IG1vZHVsZSAqZG8qIGluIHRoZSBhYnNlbmNlIG9mIGEgbW9yZSBzcGVjaWZpYyBkcml2ZXIsIGxpa2UgYE1MWFNXX1NQRUNUUlVNYCwgdGhhdCBsZXZlcmFnZXMgaXRzIGZ1bmN0aW9uYWxpdHk/IElzIGl0IGp1c3QgYSBwbGFjZWhvbGRlciwgb3IgZG9lcyBpdCBwZXJmb3JtIHNvbWUgZXNzZW50aWFsIGluaXRpYWxpemF0aW9uIG9yIHByb2Jpbmcgb24gaXRzIG93bj8gSXQgc2VlbXMgbGlrZSBpdCBtdXN0IGRvICpzb21ldGhpbmcqIHNpbmNlIGl0IGV4aXN0cy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgaXQmIzM5O3MgcGFzc2l2ZSB3aXRob3V0IGBNTFhTV19TUEVDVFJVTWAsIG9yIGFjdGl2ZS4KClRoZSBtb3N0IGxvZ2ljYWwgbmV4dCBzdGVwIGlzIHRvIGV4YW1pbmUgdGhlIGBtbHhzd19wY2lfcHJvYmVgIGZ1bmN0aW9uLiBJIHNob3VsZCBiZSBhYmxlIHRvIGRldGVybWluZSBpdHMgYmVoYXZpb3Igd2l0aCBvciB3aXRob3V0IHRoZSBTcGVjdHJ1bSBkcml2ZXIgYmVpbmcgYWN0aXZhdGVkLiBUaGF0IHdpbGwgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIHdoYXQgYWN0dWFsbHkgaGFwcGVucyB3aGVuIG9ubHkgYE1MWFNXX1BDSWAgaXMgZW5hYmxlZC4gVGltZSB0byBkaXZlIGludG8gdGhlIGNvZGUuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMDg6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWx4c3dfcGNpX3Byb2JlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvcGNpLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvcGNpLmM9MjQyMz1zdGF0aWMgdm9pZCBtbHhzd19wY2lfY21kX2Zpbmkoc3RydWN0IG1seHN3X3BjaSAqbWx4c3dfcGNpKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3BjaS5jLTI0MjktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuYzoyNDMwOnN0YXRpYyBpbnQgbWx4c3dfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuYy0yNDMxLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuYz0yNTQ4PWludCBtbHhzd19wY2lfZHJpdmVyX3JlZ2lzdGVyKHN0cnVjdCBwY2lfZHJpdmVyICpwY2lfZHJpdmVyKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvcGNpLmMtMjU0OS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuYzoyNTUwOlx0cGNpX2RyaXZlci1cdTAwM2Vwcm9iZSA9IG1seHN3X3BjaV9wcm9iZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3BjaS5jLTI1NTEtXHRwY2lfZHJpdmVyLVx1MDAzZXJlbW92ZSA9IG1seHN3X3BjaV9yZW1vdmU7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDA4OjMzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwODkwCgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6CgoqKkRlYnVnZ2luZyBNTFhTVyBEcml2ZXIgUmVnaXN0cmF0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQmIzM5O3MgcmVzcG9uc2libGUgZm9yIGNhbGxpbmcgYG1seHN3X3BjaV9kcml2ZXJfcmVnaXN0ZXJgLiBJJiMzOTttIHN0YXJ0aW5nIGF0IHRoZSByZWdpc3RyYXRpb24gcG9pbnQgYmVjYXVzZSB0aGF0JiMzOTtzIHRoZSBvYnZpb3VzIGVudHJ5IHBvaW50IHRvIHRyYWNlIGJhY2sgZnJvbS4gVGhpcyBpcyBhIGNvbW1vbiBkZWJ1Z2dpbmcgdGVjaG5pcXVlIC0gdW5kZXJzdGFuZCB0aGUgZW5kIGdvYWwsIHRoZW4gd29yayBiYWNrd2FyZCB0byBkZXRlcm1pbmUgdGhlIHVwc3RyZWFtIG9yaWdpbi4gSSYjMzk7bGwgbmVlZCB0byBnbyB0aHJvdWdoIHRoZSBjb2RlLCBwcm9iYWJseSB1c2luZyBhIHRvb2wgbGlrZSBgZ2l0IGdyZXBgIG9yIGEgc2ltaWxhciBjb2RlIHNlYXJjaCwgYW5kIGZpbmQgYWxsIGluc3RhbmNlcyBvZiB0aGUgZnVuY3Rpb24gY2FsbC4gSSYjMzk7bSBleHBlY3RpbmcgdGhpcyB3aWxsIGVpdGhlciBiZSB3aXRoaW4gdGhlIFBDSSBzdWJzeXN0ZW0gaW5pdGlhbGl6YXRpb24gb3IgcGVyaGFwcyBzb21lIHNvcnQgb2YgbW9kdWxlIGxvYWRpbmcgbWVjaGFuaXNtIHNwZWNpZmljIHRvIE1MWFNXIGRldmljZXMuIEl0IGNvdWxkIGV2ZW4gYmUgdHJpZ2dlcmVkIGJ5IGEgaG90cGx1ZyBldmVudC4gSSYjMzk7bSByZWFkeSB0byBkaWcgaW50byB0aGUga2VybmVsIHNvdXJjZSBhbmQgaWRlbnRpZnkgdGhlIGNhbGxpbmcgY29udGV4dCwgd2hpY2ggd2lsbCBnaXZlIG1lIGNyaXRpY2FsIGluZm9ybWF0aW9uIGFib3V0IHRoZSBkcml2ZXImIzM5O3MgaW5zdGFudGlhdGlvbiBwcm9jZXNzLiBUaGUgZ29hbCBpcyB0byBkZXRlcm1pbmUgdGhlIHNlcXVlbmNlIG9mIGV2ZW50cyBsZWFkaW5nIHVwIHRvIGRyaXZlciByZWdpc3RyYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDA4OjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21seHN3X3BjaV9kcml2ZXJfcmVnaXN0ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvcGNpLmM9MjU0Mz1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9lcnJvcl9oYW5kbGVycyBtbHhzd19wY2lfZXJyX2hhbmRsZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvcGNpLmMtMjU0Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3BjaS5jOjI1NDg6aW50IG1seHN3X3BjaV9kcml2ZXJfcmVnaXN0ZXIoc3RydWN0IHBjaV9kcml2ZXIgKnBjaV9kcml2ZXIpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuYy0yNTQ5LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuYy0yNTU1LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3BjaS5jOjI1NTY6RVhQT1JUX1NZTUJPTChtbHhzd19wY2lfZHJpdmVyX3JlZ2lzdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3BjaS5jLTI1NTctXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvcGNpLmgtMTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuaDoxNjppbnQgbWx4c3dfcGNpX2RyaXZlcl9yZWdpc3RlcihzdHJ1Y3QgcGNpX2RyaXZlciAqcGNpX2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuaC0xNy12b2lkIG1seHN3X3BjaV9kcml2ZXJfdW5yZWdpc3RlcihzdHJ1Y3QgcGNpX2RyaXZlciAqcGNpX2RyaXZlcik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvcGNpLmg9MjE9c3RhdGljIGlubGluZSBpbnRcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3BjaS5oOjIyOm1seHN3X3BjaV9kcml2ZXJfcmVnaXN0ZXIoc3RydWN0IHBjaV9kcml2ZXIgKnBjaV9kcml2ZXIpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuaC0yMy17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW0uYz01MzE5PXN0YXRpYyBpbnQgX19pbml0IG1seHN3X3NwX21vZHVsZV9pbml0KHZvaWQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW0uYy01MzM4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW0uYzo1MzM5Olx0ZXJyID0gbWx4c3dfcGNpX2RyaXZlcl9yZWdpc3RlcihcdTAwMjZtbHhzd19zcDFfcGNpX2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bS5jLTUzNDAtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtLmMtNTM0Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtLmM6NTM0MzpcdGVyciA9IG1seHN3X3BjaV9kcml2ZXJfcmVnaXN0ZXIoXHUwMDI2bWx4c3dfc3AyX3BjaV9kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW0uYy01MzQ0LVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bS5jLTUzNDYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bS5jOjUzNDc6XHRlcnIgPSBtbHhzd19wY2lfZHJpdmVyX3JlZ2lzdGVyKFx1MDAyNm1seHN3X3NwM19wY2lfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtLmMtNTM0OC1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW0uYy01MzUwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW0uYzo1MzUxOlx0ZXJyID0gbWx4c3dfcGNpX2RyaXZlcl9yZWdpc3RlcihcdTAwMjZtbHhzd19zcDRfcGNpX2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bS5jLTUzNTItXHRpZiAoZXJyKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAwODozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMjA3NwoJCQkJCQkJb3V0cHV0OiA1MAoJCQkJCQkJdGhvdWdodHM6IDcyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIFJlYWNoYWJpbGl0eSBhbmQgRnVuY3Rpb24gUHJpb3JpdGl6YXRpb24gZm9yIE1MWFNXX1NQRUNUUlVNKioKCk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoaXMgYE1MWFNXX1NQRUNUUlVNYCBkcml2ZXIgaXMgcmVhY2hhYmxlIGZvciBmdXp6aW5nLiBJdCYjMzk7cyB0aGUga2V5IHRvIHJlZ2lzdGVyaW5nIHRoZSBQQ0kgZHJpdmVycywgYnV0IHdhaXQsIHRoZXJlJiMzOTtzIGFsc28gYE1MWFNXX01JTklNQUxgPyBOb3BlLCB0aGF0JiMzOTtzIGp1c3QgZm9yIEkyQywgc28gbm90IHJlbGV2YW50IGhlcmUuIExldCYjMzk7cyBjaGVjayB0aGUgY29uZmlncyBmb3IgYE1MWFNXX1NQRUNUUlVNYC4gSXQgZGVwZW5kcyBvbiBgTUxYU1dfQ09SRWAsIGBNTFhTV19QQ0lgLCBgTkVUX1NXSVRDSERFVmAsIGFuZCBgVkxBTl84MDIxUWAg4oCTIHNvIGVuYWJsaW5nIGBNTFhTV19TUEVDVFJVTWAgc2hvdWxkIGJlIHRoZSB3YXkgdG8gZ28uCgpUaGUgYmlnIHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhpcyBjb2RlIGlzIGFjY2Vzc2libGUgaW4gYSB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50LiBJZiBzeXprYWxsZXIgaGFzIGEgUENJIGZ1enplciwgd2UmIzM5O3JlIGluIGJ1c2luZXNzLiBBbmQgeWVzLCBpdCBkb2VzISBJIHJlbWVtYmVyIHRoYXQgcmVjZW50bHkgYWRkZWQgUENJIGZ1enplciwgSSB0aGluayBpdCB1c2VzIGB2ZmlvYCBvciBhIGN1c3RvbSBRRU1VIGRldmljZS4gV2FpdCwgaXQgdXNlcyB0aGUgYHBjaV9lbmRwb2ludGAgZnJhbWV3b3JrPyBObywgd2FpdCEgSSBuZWVkIHRvIGJlIGNhcmVmdWwgd2l0aCBhbnkgcHNldWRvLXN5c2NhbGxzIGxpa2UgYHN5el9wY2lfZGV2aWNlYC4gQWgsIHRoaXMgaXMgYSBnb29kIHJlbWluZGVyLiBJIGNhbiYjMzk7dCBzZWFyY2ggZm9yIHN5emthbGxlciBwc2V1ZG8tc3lzY2FsbHMgZGlyZWN0bHkgaW4gdGhlIGtlcm5lbCBjb2RlLCBzbyBJIG5lZWQgdG8gdGhpbmsgY2FyZWZ1bGx5IGFib3V0IGhvdyBzeXprYWxsZXIgb3BlcmF0ZXMuCgpTaW5jZSBzeXprYWxsZXIgKmNhbiogZnV6eiBQQ0kgZGV2aWNlcywgdGhhdCBtZWFucyBgbWx4c3dfcGNpX3Byb2JlYCBzaG91bGQgYmUgcmVhY2hhYmxlLiBJJiMzOTttIGdvaW5nIHRvIGFzc3VtZSBpdCBpcyBhbmQgcmV0dXJuIGBXb3J0aEZ1enppbmc9dHJ1ZWAuCgpOb3csIGxldCYjMzk7cyBsb29rIGF0IHRoZSBmdW5jdGlvbnMgdGhlbXNlbHZlcy4gSSBuZWVkIHRvIHByaW9yaXRpemUgZnVuY3Rpb25zIHRvIGZvY3VzIGZ1enppbmcgZWZmb3J0cy4gVGhlIHBhdGNoIHNlZW1zIHRvIG1vZGlmeSB0aGVzZSBmdW5jdGlvbnM6CgoqICAgYG1seHN3X3BjaV9jcV9uYXBpX2Rpc2FibGVgCiogICBgbWx4c3dfcGNpX2NxX2luaXRgCiogICBgbWx4c3dfcGNpX2NxX2ZpbmlgCiogICBgbWx4c3dfcGNpX2Fxc19maW5pYAoqICAgYG1seHN3X3BjaV9maW5pYAoKYG1seHN3X3BjaV9jcV9uYXBpX2Rpc2FibGVgIGlzIG5ldy4gTGV0JiMzOTtzIGRpZyBkZWVwZXIgYW5kIHNlZSBpZiBpdCYjMzk7cyBhIGhvdCBwYXRoLiBOb3BlLCBpdCYjMzk7cyBjYWxsZWQgZHVyaW5nIHRlYXJkb3duIG9yIGBmaW5pYCwgbm90IGEgaG90IHBhdGguIGBtbHhzd19wY2lfY3FfaW5pdGAgaXMgY2FsbGVkIGR1cmluZyBpbml0LiBgbWx4c3dfcGNpX2NxX2ZpbmlgLCBgbWx4c3dfcGNpX2Fxc19maW5pYCwgYW5kIGBtbHhzd19wY2lfZmluaWAgYXJlIGNhbGxlZCBkdXJpbmcgYGZpbmlgLgoKTG9va3MgbGlrZSB0aGUgcGF0Y2ggYWxzbyB0b3VjaGVzIGBtbHhzd19wY2lfY3FfbmFwaV90ZWFyZG93bmAsIHdoaWNoLCB3aGlsZSBub3QgbW9kaWZpZWQsIGlzIHN0aWxsIGNhbGxlZC4gVGhlIHBhdGNoIG1vZGlmaWVzOiBgbWx4c3dfcGNpX2NxX25hcGlfZGlzYWJsZWAgKG5ldyksIGBtbHhzd19wY2lfY3FfaW5pdGAsIGBtbHhzd19wY2lfY3FfZmluaWAsIGBtbHhzd19wY2lfYXFzX2ZpbmlgLCBhbmQgYG1seHN3X3BjaV9maW5pYC4gT2theSwgbGV0JiMzOTtzIHN0YXJ0IHdpdGggYSBjbG9zZSBsb29rIGF0IGBtbHhzd19wY2lfY3FfbmFwaV9kaXNhYmxlYCBpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvcGNpLmNgLiBJIGhhdmUgYSBnb29kIGlkZWEgb2Ygd2hlcmUgdG8gYmVnaW4gbXkgZnV6emluZyBjYW1wYWlnbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMDg6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWx4c3dfcGNpX2NxX25hcGlfZGlzYWJsZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3BjaS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3BjaS5jPTk4OD1zdGF0aWMgdm9pZCBtbHhzd19wY2lfY3FfbmFwaV90ZWFyZG93bihzdHJ1Y3QgbWx4c3dfcGNpX3F1ZXVlICpxKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3BjaS5jLTk5Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3BjaS5jOjk5MzpzdGF0aWMgdm9pZCBtbHhzd19wY2lfY3FfbmFwaV9kaXNhYmxlKHN0cnVjdCBtbHhzd19wY2lfcXVldWUgKnEpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuYy05OTQte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3BjaS5jPTEwODc9c3RhdGljIHZvaWQgbWx4c3dfcGNpX2NxX2Zpbmkoc3RydWN0IG1seHN3X3BjaSAqbWx4c3dfcGNpLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3BjaS5jLTEwOTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuYzoxMDkyOlx0bWx4c3dfcGNpX2NxX25hcGlfZGlzYWJsZShxKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3BjaS5jLTEwOTMtXHRtbHhzd19wY2lfY3FfcGFnZV9wb29sX2ZpbmkocSwgY3FfdHlwZSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvcGNpLmM9MTQ1MT1zdGF0aWMgdm9pZCBtbHhzd19wY2lfYXFzX2Zpbmkoc3RydWN0IG1seHN3X3BjaSAqbWx4c3dfcGNpKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3BjaS5jLTE0NTgtXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBxdWV1ZV9ncm91cC1cdTAwM2Vjb3VudDsgaSYjNDM7JiM0MzspXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuYzoxNDU5Olx0XHRtbHhzd19wY2lfY3FfbmFwaV9kaXNhYmxlKFx1MDAyNnF1ZXVlX2dyb3VwLVx1MDAzZXFbaV0pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvcGNpLmMtMTQ2MC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMDg6MzM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzQwNzIKCQkJCQkJCW91dHB1dDogMjAxCgkJCQkJCQl0aG91Z2h0czogODc0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5c2lzIG9mIE1lbGxhbm94IFN3aXRjaCBQQ0kgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGJlZW4gdGFza2VkIHdpdGggYXNzZXNzaW5nIHRoaXMgTWVsbGFub3ggc3dpdGNoIFBDSSBkcml2ZXIgcGF0Y2guIE15IGluaXRpYWwgZm9jdXMgaGFzIGxhbmRlZCBvbiBpZGVudGlmeWluZyB0aGUga2V5IGZ1bmN0aW9ucyBhbmQgY29uZmlndXJhdGlvbnMgaW1wYWN0ZWQuIFNwZWNpZmljYWxseSwgdGhlIGZ1bmN0aW9ucyBJIG5lZWQgdG8ga2VlcCBpbiBtaW5kIGFyZSBgbWx4c3dfcGNpX2NxX25hcGlfZGlzYWJsZWAsIGBtbHhzd19wY2lfY3FfaW5pdGAsIGBtbHhzd19wY2lfY3FfZmluaWAsIGBtbHhzd19wY2lfYXFzX2ZpbmlgLCBhbmQgYG1seHN3X3BjaV9maW5pYC4KClJlZ2FyZGluZyBjb25maWd1cmF0aW9ucywgaXQgbG9va3MgbGlrZSBgTUxYU1dfQ09SRWAsIGBNTFhTV19QQ0lgLCBhbmQgYE1MWFNXX1NQRUNUUlVNYCBhcmUgdGhlIGNyaXRpY2FsIG9uZXMuIEhvbGQgb24gdGhvdWdoLCBzaW5jZSBgTUxYU1dfU1BFQ1RSVU1gIGRlcGVuZHMgb24gYE5FVF9TV0lUQ0hERVZgIGFuZCBgVkxBTl84MDIxUWAsIEkmIzM5O2xsIGp1c3Qgc3RpY2sgdG8gbGlzdGluZyBgTUxYU1dfU1BFQ1RSVU1gLCBgTUxYU1dfUENJYCwgYW5kIGBNTFhTV19DT1JFYCBhcyB0aGUgY29yZSByZXF1aXJlZCBjb25maWd1cmF0aW9ucy4gSXQgc2VlbXMgYE1MWFNXX01JTklNQUxgIGlzIHJlbGV2YW50LCBidXQgaXQmIzM5O3Mgc3BlY2lmaWNhbGx5IGZvciBJMkMtb25seSBjb25maWd1cmF0aW9ucywgc28gdGhhdCYjMzk7cyBub3Qgc29tZXRoaW5nIEkmIzM5O2xsIG5lZWQgdG8gd29ycnkgYWJvdXQuCgpOb3csIGxldCYjMzk7cyB2ZXJpZnkgaWYgYG1seHN3X3BjaV9jcV9uYXBpX2Rpc2FibGVgIGlzIHRoZSBvbmx5IGZ1bmN0aW9uIHRoYXQmIzM5O3MgYmVpbmcgaW50cm9kdWNlZCBieSB0aGlzIHBhdGNoLiBJbmRlZWQsIGl0IGFwcGVhcnMgdG8gYmUgdGhlIG9ubHkgb25lLiBFeGFtaW5pbmcgdGhlIHBhdGNoIGl0c2VsZiwgaXQmIzM5O3MgY2xlYXIgdGhhdCB0aGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UuIEl0IGFkZHMgYSBgbmFwaV9lbmFibGVkYCBib29sZWFuIGZsYWcgdG8gcHJldmVudCBhIHBvdGVudGlhbCBkb3VibGUgYG5hcGlfZGlzYWJsZWAgY2FsbCBhbmQgYSBgdGFza2xldF9raWxsYCB0byBtaXRpZ2F0ZSBwb3NzaWJsZSB1c2UtYWZ0ZXItZnJlZSBvciBzaW1pbGFyIGlzc3VlcyBkdXJpbmcgdGVhcmRvd24uCgpUaGUgYmlnIHF1ZXN0aW9uIG5vdyBpcyB3aGV0aGVyIHN5emthbGxlciBjYW4gcmVhY2ggYW5kIGZ1enogdGhpcyBjb2RlLiBTaW5jZSB0aGlzIGlzIGEgUENJIGRyaXZlciwgYW5kIHN5emthbGxlciBkb2VzIHN1cHBvcnQgUENJIGZ1enppbmcsIHJlZ2FyZGxlc3Mgb2YgdGhlIGV4YWN0IGltcGxlbWVudGF0aW9uIGRldGFpbHMgKHdoZXRoZXIgaXQgdXNlcyBgdmZpb2Agb3IgYSBjdXN0b20gUUVNVSBkZXZpY2UpLCB0aGlzIGNvZGUgcGF0aCBpcyBkZWZpbml0ZWx5IHJlYWNoYWJsZS4gVGhlcmVmb3JlLCBJIGNhbiBjb25maWRlbnRseSBzdGF0ZSB0aGF0IHRoaXMgaXMgd29ydGggZnV6emluZy4KCk15IHJlYXNvbmluZyBib2lscyBkb3duIHRvIHRoaXM6IHRoZSBwYXRjaCBhZGRyZXNzZXMgY3JpdGljYWwgaXNzdWVzIHJlbGF0ZWQgdG8gdGhlIHRlYXJkb3duIHByb2Nlc3Mgb2YgdGhlIE1lbGxhbm94IHN3aXRjaCBQQ0kgZHJpdmVyLCBpbmNsdWRpbmcgcHJldmVudGluZyBhIGRvdWJsZSBgbmFwaV9kaXNhYmxlYCBhbmQgZW5zdXJpbmcgcHJvcGVyIGNsZWFudXAgd2l0aCBgdGFza2xldF9raWxsYC4gU2luY2UgdGhpcyBpbnZvbHZlcyBjb2RlIHBhdGhzIHRoYXQgYXJlIG5vcm1hbGx5IHVzZWQgYW5kIGNhbiBiZSByZWFjaGVkIChhc3N1bWluZyBQQ0kgZnV6emluZyBpcyBhdmFpbGFibGUpLCBpdCByZXF1aXJlcyBmdXp6ZXIgc2NydXRpbnkgdG8gZW5zdXJlIHJvYnVzdCB0ZWFyZG93biBoYW5kbGluZy4gSSB0aGluayBgTUxYU1dfU1BFQ1RSVU1gLCBgTUxYU1dfUENJYCwgYW5kIGBNTFhTV19DT1JFYCBzaG91bGQgYmUgc3VmZmljaWVudCBjb25maWd1cmF0aW9ucyB0byB0ZXN0IHRoaXMuCgpBbHJpZ2h0LCB0aW1lIHRvIHdyYXAgdGhpcyB1cCBhbmQgbW92ZSBvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMDg6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01MWFNXX0NPUkUmIzM0OywKICAgICYjMzQ7TUxYU1dfUENJJiMzNDssCiAgICAmIzM0O01MWFNXX1NQRUNUUlVNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bWx4c3dfcGNpX2NxX25hcGlfZGlzYWJsZSYjMzQ7LAogICAgJiMzNDttbHhzd19wY2lfY3FfaW5pdCYjMzQ7LAogICAgJiMzNDttbHhzd19wY2lfY3FfZmluaSYjMzQ7LAogICAgJiMzNDttbHhzd19wY2lfYXFzX2ZpbmkmIzM0OywKICAgICYjMzQ7bWx4c3dfcGNpX2ZpbmkmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBkb3VibGUgYG5hcGlfZGlzYWJsZWAgYW5kIGEgbWlzc2luZyBgdGFza2xldF9raWxsYCBkdXJpbmcgdGhlIHRlYXJkb3duIG9mIHRoZSBNZWxsYW5veCBzd2l0Y2ggUENJIGRyaXZlciAoYG1seHN3YCkuIEl0IGFkZHMgYSBgbmFwaV9lbmFibGVkYCBmbGFnIGFuZCBhIG5ldyBmdW5jdGlvbiBgbWx4c3dfcGNpX2NxX25hcGlfZGlzYWJsZWAuIFRoaXMgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUgZHJpdmVyIGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGUgdGVhcmRvd24gcGF0aHMgYXJlIHJvYnVzdC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TUxYU1dfQ09SRSYjMzQ7LAogICAgJiMzNDtNTFhTV19QQ0kmIzM0OywKICAgICYjMzQ7TUxYU1dfU1BFQ1RSVU0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttbHhzd19wY2lfY3FfbmFwaV9kaXNhYmxlJiMzNDssCiAgICAmIzM0O21seHN3X3BjaV9jcV9pbml0JiMzNDssCiAgICAmIzM0O21seHN3X3BjaV9jcV9maW5pJiMzNDssCiAgICAmIzM0O21seHN3X3BjaV9hcXNfZmluaSYjMzQ7LAogICAgJiMzNDttbHhzd19wY2lfZmluaSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGRvdWJsZSBgbmFwaV9kaXNhYmxlYCBhbmQgYSBtaXNzaW5nIGB0YXNrbGV0X2tpbGxgIGR1cmluZyB0aGUgdGVhcmRvd24gb2YgdGhlIE1lbGxhbm94IHN3aXRjaCBQQ0kgZHJpdmVyIChgbWx4c3dgKS4gSXQgYWRkcyBhIGBuYXBpX2VuYWJsZWRgIGZsYWcgYW5kIGEgbmV3IGZ1bmN0aW9uIGBtbHhzd19wY2lfY3FfbmFwaV9kaXNhYmxlYC4gVGhpcyBtb2RpZmllcyByZWFjaGFibGUgY29yZSBkcml2ZXIgbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIHRoZSB0ZWFyZG93biBwYXRocyBhcmUgcm9idXN0LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMjJUMDg6MzE6MzMuNDM3ODYzMDA2WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU1ODU1NTE3MjM2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1MWFNXX0NPUkVcIixcbiAgICBcIk1MWFNXX1BDSVwiLFxuICAgIFwiTUxYU1dfU1BFQ1RSVU1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtbHhzd19wY2lfY3FfbmFwaV9kaXNhYmxlXCIsXG4gICAgXCJtbHhzd19wY2lfY3FfaW5pdFwiLFxuICAgIFwibWx4c3dfcGNpX2NxX2ZpbmlcIixcbiAgICBcIm1seHN3X3BjaV9hcXNfZmluaVwiLFxuICAgIFwibWx4c3dfcGNpX2ZpbmlcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGRvdWJsZSBgbmFwaV9kaXNhYmxlYCBhbmQgYSBtaXNzaW5nIGB0YXNrbGV0X2tpbGxgIGR1cmluZyB0aGUgdGVhcmRvd24gb2YgdGhlIE1lbGxhbm94IHN3aXRjaCBQQ0kgZHJpdmVyIChgbWx4c3dgKS4gSXQgYWRkcyBhIGBuYXBpX2VuYWJsZWRgIGZsYWcgYW5kIGEgbmV3IGZ1bmN0aW9uIGBtbHhzd19wY2lfY3FfbmFwaV9kaXNhYmxlYC4gVGhpcyBtb2RpZmllcyByZWFjaGFibGUgY29yZSBkcml2ZXIgbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIHRoZSB0ZWFyZG93biBwYXRocyBhcmUgcm9idXN0LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQwODozMTozMy40Mzc4Njk4MzVaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0NDg2MTcxNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDEwNDc2YTM5NDA4MGMzZDNlNjI4MTBjZmViOGVmMGM0N2MwYTE4OGZcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBKdWwgMjIgMDg6MzE6MzIgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvcGNpLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuY1xcbmluZGV4IDBkYTg1ZDM2NjQ3ZDkxLi5mZWViMzIxMzRkMmFhNiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3BjaS5jXFxuQEAgLTg2LDYgKzg2LDcgQEAgc3RydWN0IG1seHN3X3BjaV9xdWV1ZSB7XFxuIFxcdFxcdFxcdGVudW0gbWx4c3dfcGNpX2NxZV92IHY7XFxuIFxcdFxcdFxcdHN0cnVjdCBtbHhzd19wY2lfcXVldWUgKmRxO1xcbiBcXHRcXHRcXHRzdHJ1Y3QgbmFwaV9zdHJ1Y3QgbmFwaTtcXG4rXFx0XFx0XFx0Ym9vbCBuYXBpX2VuYWJsZWQ7XFxuIFxcdFxcdFxcdHN0cnVjdCBwYWdlX3Bvb2wgKnBhZ2VfcG9vbDtcXG4gXFx0XFx0fSBjcTtcXG4gXFx0XFx0c3RydWN0IHtcXG5AQCAtOTg5LDYgKzk5MCwxNSBAQCBzdGF0aWMgdm9pZCBtbHhzd19wY2lfY3FfbmFwaV90ZWFyZG93bihzdHJ1Y3QgbWx4c3dfcGNpX3F1ZXVlICpxKVxcbiBcXHRuZXRpZl9uYXBpX2RlbChcXHUwMDI2cS1cXHUwMDNldS5jcS5uYXBpKTtcXG4gfVxcbiBcXG4rc3RhdGljIHZvaWQgbWx4c3dfcGNpX2NxX25hcGlfZGlzYWJsZShzdHJ1Y3QgbWx4c3dfcGNpX3F1ZXVlICpxKVxcbit7XFxuK1xcdGlmICghcS1cXHUwMDNldS5jcS5uYXBpX2VuYWJsZWQpXFxuK1xcdFxcdHJldHVybjtcXG4rXFxuK1xcdG5hcGlfZGlzYWJsZShcXHUwMDI2cS1cXHUwMDNldS5jcS5uYXBpKTtcXG4rXFx0cS1cXHUwMDNldS5jcS5uYXBpX2VuYWJsZWQgPSBmYWxzZTtcXG4rfVxcbitcXG4gc3RhdGljIGludCBtbHhzd19wY2lfY3FfcGFnZV9wb29sX2luaXQoc3RydWN0IG1seHN3X3BjaV9xdWV1ZSAqcSxcXG4gXFx0XFx0XFx0XFx0ICAgICAgIGVudW0gbWx4c3dfcGNpX2NxX3R5cGUgY3FfdHlwZSlcXG4ge1xcbkBAIC0xMDY0LDYgKzEwNzQsNyBAQCBzdGF0aWMgaW50IG1seHN3X3BjaV9jcV9pbml0KHN0cnVjdCBtbHhzd19wY2kgKm1seHN3X3BjaSwgY2hhciAqbWJveCxcXG4gXFx0XFx0Z290byBlcnJfcGFnZV9wb29sX2luaXQ7XFxuIFxcbiBcXHRuYXBpX2VuYWJsZShcXHUwMDI2cS1cXHUwMDNldS5jcS5uYXBpKTtcXG4rXFx0cS1cXHUwMDNldS5jcS5uYXBpX2VuYWJsZWQgPSB0cnVlO1xcbiBcXHRtbHhzd19wY2lfcXVldWVfZG9vcmJlbGxfY29uc3VtZXJfcmluZyhtbHhzd19wY2ksIHEpO1xcbiBcXHRtbHhzd19wY2lfcXVldWVfZG9vcmJlbGxfYXJtX2NvbnN1bWVyX3JpbmcobWx4c3dfcGNpLCBxKTtcXG4gXFx0cmV0dXJuIDA7XFxuQEAgLTEwNzgsNyArMTA4OSw3IEBAIHN0YXRpYyB2b2lkIG1seHN3X3BjaV9jcV9maW5pKHN0cnVjdCBtbHhzd19wY2kgKm1seHN3X3BjaSxcXG4ge1xcbiBcXHRlbnVtIG1seHN3X3BjaV9jcV90eXBlIGNxX3R5cGUgPSBtbHhzd19wY2lfY3FfdHlwZShtbHhzd19wY2ksIHEpO1xcbiBcXG4tXFx0bmFwaV9kaXNhYmxlKFxcdTAwMjZxLVxcdTAwM2V1LmNxLm5hcGkpO1xcbitcXHRtbHhzd19wY2lfY3FfbmFwaV9kaXNhYmxlKHEpO1xcbiBcXHRtbHhzd19wY2lfY3FfcGFnZV9wb29sX2ZpbmkocSwgY3FfdHlwZSk7XFxuIFxcdG1seHN3X3BjaV9jcV9uYXBpX3RlYXJkb3duKHEpO1xcbiBcXHRtbHhzd19jbWRfaHcyc3dfY3EobWx4c3dfcGNpLVxcdTAwM2Vjb3JlLCBxLVxcdTAwM2VudW0pO1xcbkBAIC0xNDM5LDYgKzE0NTAsMTQgQEAgc3RhdGljIGludCBtbHhzd19wY2lfYXFzX2luaXQoc3RydWN0IG1seHN3X3BjaSAqbWx4c3dfcGNpLCBjaGFyICptYm94KVxcbiBcXG4gc3RhdGljIHZvaWQgbWx4c3dfcGNpX2Fxc19maW5pKHN0cnVjdCBtbHhzd19wY2kgKm1seHN3X3BjaSlcXG4ge1xcbitcXHRzdHJ1Y3QgbWx4c3dfcGNpX3F1ZXVlX3R5cGVfZ3JvdXAgKnF1ZXVlX2dyb3VwO1xcbitcXHRpbnQgaTtcXG4rXFxuK1xcdHF1ZXVlX2dyb3VwID0gbWx4c3dfcGNpX3F1ZXVlX3R5cGVfZ3JvdXBfZ2V0KG1seHN3X3BjaSxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0ICAgICBNTFhTV19QQ0lfUVVFVUVfVFlQRV9DUSk7XFxuK1xcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBxdWV1ZV9ncm91cC1cXHUwMDNlY291bnQ7IGkrKylcXG4rXFx0XFx0bWx4c3dfcGNpX2NxX25hcGlfZGlzYWJsZShcXHUwMDI2cXVldWVfZ3JvdXAtXFx1MDAzZXFbaV0pO1xcbitcXG4gXFx0bWx4c3dfcGNpX3F1ZXVlX2dyb3VwX2ZpbmkobWx4c3dfcGNpLCBcXHUwMDI2bWx4c3dfcGNpX3JkcV9vcHMpO1xcbiBcXHRtbHhzd19wY2lfcXVldWVfZ3JvdXBfZmluaShtbHhzd19wY2ksIFxcdTAwMjZtbHhzd19wY2lfc2RxX29wcyk7XFxuIFxcdG1seHN3X3BjaV9xdWV1ZV9ncm91cF9maW5pKG1seHN3X3BjaSwgXFx1MDAyNm1seHN3X3BjaV9jcV9vcHMpO1xcbkBAIC0yMDg5LDYgKzIxMDgsNyBAQCBzdGF0aWMgdm9pZCBtbHhzd19wY2lfZmluaSh2b2lkICpidXNfcHJpdilcXG4gXFx0c3RydWN0IG1seHN3X3BjaSAqbWx4c3dfcGNpID0gYnVzX3ByaXY7XFxuIFxcbiBcXHRmcmVlX2lycShwY2lfaXJxX3ZlY3RvcihtbHhzd19wY2ktXFx1MDAzZXBkZXYsIDApLCBtbHhzd19wY2kpO1xcbitcXHR0YXNrbGV0X2tpbGwoXFx1MDAyNm1seHN3X3BjaV9lcV9nZXQobWx4c3dfcGNpKS1cXHUwMDNldS5lcS50YXNrbGV0KTtcXG4gXFx0bWx4c3dfcGNpX2Fxc19maW5pKG1seHN3X3BjaSk7XFxuIFxcdG1seHN3X3BjaV9uYXBpX2RldnNfZmluaShtbHhzd19wY2kpO1xcbiBcXHRtbHhzd19wY2lfZndfYXJlYV9maW5pKG1seHN3X3BjaSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDA4OjMxOjMzLjg4MzQyOTE0WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTU1NDA5OTM2ODIxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1MWFNXX0NPUkVcIixcbiAgICBcIk1MWFNXX1BDSVwiLFxuICAgIFwiTUxYU1dfU1BFQ1RSVU1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtbHhzd19wY2lfY3FfbmFwaV9kaXNhYmxlXCIsXG4gICAgXCJtbHhzd19wY2lfY3FfaW5pdFwiLFxuICAgIFwibWx4c3dfcGNpX2NxX2ZpbmlcIixcbiAgICBcIm1seHN3X3BjaV9hcXNfZmluaVwiLFxuICAgIFwibWx4c3dfcGNpX2ZpbmlcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGRvdWJsZSBgbmFwaV9kaXNhYmxlYCBhbmQgYSBtaXNzaW5nIGB0YXNrbGV0X2tpbGxgIGR1cmluZyB0aGUgdGVhcmRvd24gb2YgdGhlIE1lbGxhbm94IHN3aXRjaCBQQ0kgZHJpdmVyIChgbWx4c3dgKS4gSXQgYWRkcyBhIGBuYXBpX2VuYWJsZWRgIGZsYWcgYW5kIGEgbmV3IGZ1bmN0aW9uIGBtbHhzd19wY2lfY3FfbmFwaV9kaXNhYmxlYC4gVGhpcyBtb2RpZmllcyByZWFjaGFibGUgY29yZSBkcml2ZXIgbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIHRoZSB0ZWFyZG93biBwYXRocyBhcmUgcm9idXN0LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDEwNDc2YTM5NDA4MGMzZDNlNjI4MTBjZmViOGVmMGM0N2MwYTE4OGZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAyMiAwODozMTozMiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3BjaS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvcGNpLmNcbmluZGV4IDBkYTg1ZDM2NjQ3ZDkxLi5mZWViMzIxMzRkMmFhNiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3BjaS5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuY1xuQEAgLTg2LDYgKzg2LDcgQEAgc3RydWN0IG1seHN3X3BjaV9xdWV1ZSB7XG4gXHRcdFx0ZW51bSBtbHhzd19wY2lfY3FlX3YgdjtcbiBcdFx0XHRzdHJ1Y3QgbWx4c3dfcGNpX3F1ZXVlICpkcTtcbiBcdFx0XHRzdHJ1Y3QgbmFwaV9zdHJ1Y3QgbmFwaTtcbitcdFx0XHRib29sIG5hcGlfZW5hYmxlZDtcbiBcdFx0XHRzdHJ1Y3QgcGFnZV9wb29sICpwYWdlX3Bvb2w7XG4gXHRcdH0gY3E7XG4gXHRcdHN0cnVjdCB7XG5AQCAtOTg5LDYgKzk5MCwxNSBAQCBzdGF0aWMgdm9pZCBtbHhzd19wY2lfY3FfbmFwaV90ZWFyZG93bihzdHJ1Y3QgbWx4c3dfcGNpX3F1ZXVlICpxKVxuIFx0bmV0aWZfbmFwaV9kZWwoXHUwMDI2cS1cdTAwM2V1LmNxLm5hcGkpO1xuIH1cbiBcbitzdGF0aWMgdm9pZCBtbHhzd19wY2lfY3FfbmFwaV9kaXNhYmxlKHN0cnVjdCBtbHhzd19wY2lfcXVldWUgKnEpXG4re1xuK1x0aWYgKCFxLVx1MDAzZXUuY3EubmFwaV9lbmFibGVkKVxuK1x0XHRyZXR1cm47XG4rXG4rXHRuYXBpX2Rpc2FibGUoXHUwMDI2cS1cdTAwM2V1LmNxLm5hcGkpO1xuK1x0cS1cdTAwM2V1LmNxLm5hcGlfZW5hYmxlZCA9IGZhbHNlO1xuK31cbitcbiBzdGF0aWMgaW50IG1seHN3X3BjaV9jcV9wYWdlX3Bvb2xfaW5pdChzdHJ1Y3QgbWx4c3dfcGNpX3F1ZXVlICpxLFxuIFx0XHRcdFx0ICAgICAgIGVudW0gbWx4c3dfcGNpX2NxX3R5cGUgY3FfdHlwZSlcbiB7XG5AQCAtMTA2NCw2ICsxMDc0LDcgQEAgc3RhdGljIGludCBtbHhzd19wY2lfY3FfaW5pdChzdHJ1Y3QgbWx4c3dfcGNpICptbHhzd19wY2ksIGNoYXIgKm1ib3gsXG4gXHRcdGdvdG8gZXJyX3BhZ2VfcG9vbF9pbml0O1xuIFxuIFx0bmFwaV9lbmFibGUoXHUwMDI2cS1cdTAwM2V1LmNxLm5hcGkpO1xuK1x0cS1cdTAwM2V1LmNxLm5hcGlfZW5hYmxlZCA9IHRydWU7XG4gXHRtbHhzd19wY2lfcXVldWVfZG9vcmJlbGxfY29uc3VtZXJfcmluZyhtbHhzd19wY2ksIHEpO1xuIFx0bWx4c3dfcGNpX3F1ZXVlX2Rvb3JiZWxsX2FybV9jb25zdW1lcl9yaW5nKG1seHN3X3BjaSwgcSk7XG4gXHRyZXR1cm4gMDtcbkBAIC0xMDc4LDcgKzEwODksNyBAQCBzdGF0aWMgdm9pZCBtbHhzd19wY2lfY3FfZmluaShzdHJ1Y3QgbWx4c3dfcGNpICptbHhzd19wY2ksXG4ge1xuIFx0ZW51bSBtbHhzd19wY2lfY3FfdHlwZSBjcV90eXBlID0gbWx4c3dfcGNpX2NxX3R5cGUobWx4c3dfcGNpLCBxKTtcbiBcbi1cdG5hcGlfZGlzYWJsZShcdTAwMjZxLVx1MDAzZXUuY3EubmFwaSk7XG4rXHRtbHhzd19wY2lfY3FfbmFwaV9kaXNhYmxlKHEpO1xuIFx0bWx4c3dfcGNpX2NxX3BhZ2VfcG9vbF9maW5pKHEsIGNxX3R5cGUpO1xuIFx0bWx4c3dfcGNpX2NxX25hcGlfdGVhcmRvd24ocSk7XG4gXHRtbHhzd19jbWRfaHcyc3dfY3EobWx4c3dfcGNpLVx1MDAzZWNvcmUsIHEtXHUwMDNlbnVtKTtcbkBAIC0xNDM5LDYgKzE0NTAsMTQgQEAgc3RhdGljIGludCBtbHhzd19wY2lfYXFzX2luaXQoc3RydWN0IG1seHN3X3BjaSAqbWx4c3dfcGNpLCBjaGFyICptYm94KVxuIFxuIHN0YXRpYyB2b2lkIG1seHN3X3BjaV9hcXNfZmluaShzdHJ1Y3QgbWx4c3dfcGNpICptbHhzd19wY2kpXG4ge1xuK1x0c3RydWN0IG1seHN3X3BjaV9xdWV1ZV90eXBlX2dyb3VwICpxdWV1ZV9ncm91cDtcbitcdGludCBpO1xuK1xuK1x0cXVldWVfZ3JvdXAgPSBtbHhzd19wY2lfcXVldWVfdHlwZV9ncm91cF9nZXQobWx4c3dfcGNpLFxuK1x0XHRcdFx0XHRcdCAgICAgTUxYU1dfUENJX1FVRVVFX1RZUEVfQ1EpO1xuK1x0Zm9yIChpID0gMDsgaSBcdTAwM2MgcXVldWVfZ3JvdXAtXHUwMDNlY291bnQ7IGkrKylcbitcdFx0bWx4c3dfcGNpX2NxX25hcGlfZGlzYWJsZShcdTAwMjZxdWV1ZV9ncm91cC1cdTAwM2VxW2ldKTtcbitcbiBcdG1seHN3X3BjaV9xdWV1ZV9ncm91cF9maW5pKG1seHN3X3BjaSwgXHUwMDI2bWx4c3dfcGNpX3JkcV9vcHMpO1xuIFx0bWx4c3dfcGNpX3F1ZXVlX2dyb3VwX2ZpbmkobWx4c3dfcGNpLCBcdTAwMjZtbHhzd19wY2lfc2RxX29wcyk7XG4gXHRtbHhzd19wY2lfcXVldWVfZ3JvdXBfZmluaShtbHhzd19wY2ksIFx1MDAyNm1seHN3X3BjaV9jcV9vcHMpO1xuQEAgLTIwODksNiArMjEwOCw3IEBAIHN0YXRpYyB2b2lkIG1seHN3X3BjaV9maW5pKHZvaWQgKmJ1c19wcml2KVxuIFx0c3RydWN0IG1seHN3X3BjaSAqbWx4c3dfcGNpID0gYnVzX3ByaXY7XG4gXG4gXHRmcmVlX2lycShwY2lfaXJxX3ZlY3RvcihtbHhzd19wY2ktXHUwMDNlcGRldiwgMCksIG1seHN3X3BjaSk7XG4rXHR0YXNrbGV0X2tpbGwoXHUwMDI2bWx4c3dfcGNpX2VxX2dldChtbHhzd19wY2kpLVx1MDAzZXUuZXEudGFza2xldCk7XG4gXHRtbHhzd19wY2lfYXFzX2ZpbmkobWx4c3dfcGNpKTtcbiBcdG1seHN3X3BjaV9uYXBpX2RldnNfZmluaShtbHhzd19wY2kpO1xuIFx0bWx4c3dfcGNpX2Z3X2FyZWFfZmluaShtbHhzd19wY2kpO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMDg6MzE6MzMuODgzNDMwODlaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3NjQ0MTA5MDA0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIE1lbGxhbm94IFN3aXRjaCBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgdHdlYWtzIHRoZSBNZWxsYW5veCBzd2l0Y2ggZHJpdmVyLCBzcGVjaWZpY2FsbHkgYG1seHN3L3BjaS5jYC4gU2VlbXMgbGlrZSB0aGV5J3JlIGFkZHJlc3NpbmcgYSBwb3RlbnRpYWwgZG91YmxlIGBuYXBpX2Rpc2FibGVgIGlzc3VlIGJ5IGludHJvZHVjaW5nIGEgYG5hcGlfZW5hYmxlZGAgZmxhZyB3aXRoaW4gdGhlIGBtbHhzd19wY2lfcXVldWVgIHN0cnVjdHVyZS4gU21hcnQgbW92ZSwgdGhhdCBraW5kIG9mIHJhY2UgY29uZGl0aW9uIGNhbiBiZSBhIHBhaW4uIFRoZXkncmUgYWxzbyB0aHJvd2luZyBpbiBhIGB0YXNrbGV0X2tpbGxgIGNhbGwgZHVyaW5nIGBtbHhzd19wY2lfZmluaWAsIHByb2JhYmx5IGZvciBzb21lIGNsZWFuLXVwLiBBbGwgc3RhbmRhcmQgc3R1ZmYgZm9yIGEgZHJpdmVyIGxpa2UgdGhpcy5cblxuTXkgaW1tZWRpYXRlIHRob3VnaHQsIHRob3VnaCwgaXMgaG93IHRoaXMgZHJpdmVyIHBsYXlzIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIE1lbGxhbm94IHN3aXRjaGVzIGFyZSB0eXBpY2FsbHkgcGh5c2ljYWwgUENJIGRldmljZXMsIHJpZ2h0PyBUaGV5J3JlIGRlc2lnbmVkIGZvciBoaWdoLXBlcmZvcm1hbmNlIG5ldHdvcmtpbmcgb24gZGVkaWNhdGVkIGhhcmR3YXJlLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGVyZSdzIGFueSBRRU1VIGVtdWxhdGlvbiBmb3IgYG1seHN3YC4gSWYgdGhpcyBkcml2ZXIgaXMgcHVyZWx5IGhhcmR3YXJlLWRlcGVuZGVudCwgdGhlbiB0aGlzIHBhdGNoIG1pZ2h0IGhhdmUgbGltaXRlZCBpbXBhY3QgaW4gYSB2aXJ0dWFsaXplZCBzZXR1cC4gVGhlIG1haW4gdGhpbmcgaXMgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgaXMgcmVsZXZhbnQgdG8gbXkgY3VycmVudCB3b3JrLlxuXG5JJ2xsIGp1bXAgaW50byB0aGUga2VybmVsIGNvbmZpZ3MgYW5kIGRvIGEgcXVpY2sgc2VhcmNoIGZvciBgbWx4c3dgIHRvIHNlZSB3aGF0IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgYXZhaWxhYmxlLiBUaGF0IHNob3VsZCBnaXZlIG1lIGEgZ29vZCBoYW5kbGUgb24gaXRzIHVzYWdlIGFuZCBwb3NzaWJsZSB2aXJ0dWFsaXphdGlvbiBzY2VuYXJpb3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5NDgsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQwODozMTo0MS41Mjc1NDIyMzRaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODQ2NDIwMTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1MWFNXXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9LY29uZmlnLTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvS2NvbmZpZzo2OmNvbmZpZyBNTFhTV19DT1JFXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvS2NvbmZpZy03LVxcdHRyaXN0YXRlIFxcXCJNZWxsYW5veCBUZWNobm9sb2dpZXMgU3dpdGNoIEFTSUNzIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9LY29uZmlnLTE2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L0tjb25maWc6MTc6Y29uZmlnIE1MWFNXX0NPUkVfSFdNT05cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9LY29uZmlnLTE4LVxcdGJvb2wgXFxcIkhXTU9OIHN1cHBvcnQgZm9yIE1lbGxhbm94IFRlY2hub2xvZ2llcyBTd2l0Y2ggQVNJQ3NcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9LY29uZmlnLTI0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L0tjb25maWc6MjU6Y29uZmlnIE1MWFNXX0NPUkVfVEhFUk1BTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L0tjb25maWctMjYtXFx0Ym9vbCBcXFwiVGhlcm1hbCB6b25lIHN1cHBvcnQgZm9yIE1lbGxhbm94IFRlY2hub2xvZ2llcyBTd2l0Y2ggQVNJQ3NcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9LY29uZmlnLTMyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L0tjb25maWc6MzM6Y29uZmlnIE1MWFNXX1BDSVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L0tjb25maWctMzQtXFx0dHJpc3RhdGUgXFxcIlBDSSBidXMgaW1wbGVtZW50YXRpb24gZm9yIE1lbGxhbm94IFRlY2hub2xvZ2llcyBTd2l0Y2ggQVNJQ3NcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9LY29uZmlnLTQzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L0tjb25maWc6NDQ6Y29uZmlnIE1MWFNXX0kyQ1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L0tjb25maWctNDUtXFx0dHJpc3RhdGUgXFxcIkkyQyBidXMgaW1wbGVtZW50YXRpb24gZm9yIE1lbGxhbm94IFRlY2hub2xvZ2llcyBTd2l0Y2ggQVNJQ3NcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9LY29uZmlnLTUzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L0tjb25maWc6NTQ6Y29uZmlnIE1MWFNXX1NQRUNUUlVNXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvS2NvbmZpZy01NS1cXHR0cmlzdGF0ZSBcXFwiTWVsbGFub3ggVGVjaG5vbG9naWVzIFNwZWN0cnVtIGZhbWlseSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvS2NvbmZpZy03NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9LY29uZmlnOjc1OmNvbmZpZyBNTFhTV19TUEVDVFJVTV9EQ0JcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9LY29uZmlnLTc2LVxcdGJvb2wgXFxcIkRhdGEgQ2VudGVyIEJyaWRnaW5nIChEQ0IpIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9LY29uZmlnLTgyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L0tjb25maWc6ODM6Y29uZmlnIE1MWFNXX01JTklNQUxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9LY29uZmlnLTg0LVxcdHRyaXN0YXRlIFxcXCJNZWxsYW5veCBUZWNobm9sb2dpZXMgbWluaW1hbCBJMkMgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMDg6MzE6NDEuNjEyMTg5MzkzWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTIxNDQ5Mzg0OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE1lbGxhbm94IFRlY2hub2xvZ2llcyBTd2l0Y2ggQVNJQyBEcml2ZXIqKlxuXG5Pa2F5LCBzbyB0aGlzIGNvZGUgaXMgZGVmaW5pdGVseSB0aGUgZHJpdmVyIGZvciB0aGUgTWVsbGFub3ggc3dpdGNoIEFTSUNzLiBObyBhbWJpZ3VpdHkgdGhlcmUuIEdpdmVuIG15IGV4cGVyaWVuY2UsIGl0J3MgY2xlYXIgd2UncmUgZGVhbGluZyB3aXRoIGhhcmR3YXJlLXNwZWNpZmljIGNvZGUgaGVyZS4gTXkgZmlyc3QgaW5zdGluY3QsIGFzIGFsd2F5cywgaXMgdG8gdGhpbmsgYWJvdXQgdGVzdGluZy4gVGhlIHF1ZXN0aW9uIGlzOiBjYW4gd2Ugc2ltdWxhdGUgdGhpcz8gSXMgdGhlcmUgYSBzb2Z0d2FyZSBlbXVsYXRpb24gbGF5ZXIgYXZhaWxhYmxlPyBMZXQncyBxdWlja2x5IHNlZSBpZiB0aGVyZSdzIGFueSBgbmV0ZGV2c2ltYCBlcXVpdmFsZW50IGZvciBgbWx4c3dgLiBBaCwgbm8sIGBuZXRkZXZzaW1gIGl0c2VsZiBpcyBhIHN0YW5kYWxvbmUgdGhpbmcsIHNlcGFyYXRlIGZyb20gYG1seHN3YC4gT2theSwgc28gd2UncmUgbG9va2luZyBhdCBpbnRlcmFjdGluZyB3aXRoIHRoaXMgZHJpdmVyLiBUaGUgZm9jdXMgaGVyZSBpcyB0byB1bmRlcnN0YW5kIGEgY2VydGFpbiBsb2dpYyBmbG93LCBJIG5lZWQgdG8ga25vdyBpZiB3ZSBjYW4gcmVhY2ggc3BlY2lmaWMgZnVuY3Rpb25zIGluIG91ciBzaXR1YXRpb24uXG5cblRoZSBrZXkgaGVyZSBpcyB3aGV0aGVyIHdlIGNhbiByZWFjaCBhIGZ1bmN0aW9uIGxpa2UgYG1seHN3X3BjaV9maW5pYCBvciBzb21ldGhpbmcgcmVsYXRlZCBsaWtlIGBtbHhzd19wY2lfY3FfbmFwaV9kaXNhYmxlYCB3aXRob3V0IHRoZSBhY3R1YWwgaGFyZHdhcmUgcHJlc2VudC4gUGVyaGFwcyBieSBmYWtpbmcgc3BlY2lmaWMgY29uZGl0aW9ucywgdXNpbmcgbW9ja3MsIG9yIGZpbmRpbmcgYWx0ZXJuYXRpdmUgZW50cnkgcG9pbnRzLiBNeSBuZXh0IHN0ZXAgd2lsbCBiZSB0byBkaXZlIGludG8gYG1seHN3X3BjaV9wcm9iZWAgYXMgdGhlIG9idmlvdXMgZW50cnkgcG9pbnQuIEkgd2FudCB0byBzZWUgaG93IHRoZSBzeXN0ZW0gYnJpbmdzIHRoZSBoYXJkd2FyZSB1cC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDEzNywiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQwODozMTo0Ni44MjY2ODU4NzFaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQyNTczMTExLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1seHN3X3BjaV9wcm9iZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuYz0yNDIzPXN0YXRpYyB2b2lkIG1seHN3X3BjaV9jbWRfZmluaShzdHJ1Y3QgbWx4c3dfcGNpICptbHhzd19wY2kpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuYy0yNDI5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3BjaS5jOjI0MzA6c3RhdGljIGludCBtbHhzd19wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuYy0yNDMxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3BjaS5jPTI1NDg9aW50IG1seHN3X3BjaV9kcml2ZXJfcmVnaXN0ZXIoc3RydWN0IHBjaV9kcml2ZXIgKnBjaV9kcml2ZXIpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvcGNpLmMtMjU0OS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvcGNpLmM6MjU1MDpcXHRwY2lfZHJpdmVyLVxcdTAwM2Vwcm9iZSA9IG1seHN3X3BjaV9wcm9iZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuYy0yNTUxLVxcdHBjaV9kcml2ZXItXFx1MDAzZXJlbW92ZSA9IG1seHN3X3BjaV9yZW1vdmU7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDA4OjMxOjQ2Ljk2OTI2NDMwM1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwMzQ3ODQ4ODI2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBQQ0kgRHJpdmVyIFJlYWNoYWJpbGl0eSBmb3IgRnV6emluZyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgUENJIGRyaXZlciBjb2RlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIGl0J3MgcHJldHR5IHN0YW5kYXJkLiBUaGUgYHByb2JlYCBmdW5jdGlvbiwgd2hpY2ggaXMgY3J1Y2lhbCwgd29uJ3QgZXZlbiBiZSBjYWxsZWQgdW5sZXNzIHRoZXJlJ3MgYW4gYWN0dWFsLCBvciBhdCBsZWFzdCBlbXVsYXRlZCwgUENJIGRldmljZSB3aXRoIHRoZSByaWdodCB2ZW5kb3IgYW5kIGRldmljZSBJRCBwcmVzZW50LiBUaGF0J3MgdGhlIGJhc2VsaW5lIGFzc3VtcHRpb24uXG5cblRoZW4gSSBzdGFydGVkIGNvbnNpZGVyaW5nIGVtdWxhdGlvbiBwb3NzaWJpbGl0aWVzLiBJcyB0aGVyZSBhbnkgUUVNVSBzdXBwb3J0IGZvciBNZWxsYW5veCBTd2l0Y2ggQVNJQ3M/IE5vcGUsIFFFTVUgaXMgbG9hZGVkIHVwIHdpdGggYSBzdGFuZGFyZCBzZXQgb2YgZW11bGF0ZWQgTklDcyAoZTEwMDAsIHJ0bDgxMzksIHZpcnRpbywgZXRjLiksIGJ1dCBub3RoaW5nIHJlbGF0ZWQgdG8gdGhpcyBwYXJ0aWN1bGFyIHBpZWNlIG9mIGhhcmR3YXJlLiBUaGVyZWZvcmUsIGluIHRoZSB0cmFkaXRpb25hbCB2aXJ0dWFsaXphdGlvbiBzZXR1cCBvZiBHQ0Ugb3IgZXZlbiBRRU1VLCB0aGlzIGNvZGUncyB1bnJlYWNoYWJsZSwgb3IgYXQgbGVhc3QsIEkgdGhvdWdodCBzby5cblxuQnV0IHRoZW4sIHN5emJvdCBmb3VuZCBhIGJ1ZyBoZXJlLiBOb3cgKnRoYXQqIGdvdCBteSBhdHRlbnRpb24uIFwic3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XCIuIFdhaXQsIGNvdWxkIHN5emJvdCBzb21laG93IGJlIGZ1enppbmcgUENJIGRldmljZXM/IERvZXMgc3l6Ym90IHVzZSBhIG1lY2hhbmlzbSBsaWtlIGB2aGNpYCBmb3IgUENJPyBJdCdzIHRoZSBzdGFuZGFyZCBmb3IgVVNCLCBzbyB0aGF0IHdvdWxkbid0IHN1cnByaXNlIG1lLiBUaGUgaW1tZWRpYXRlIHRob3VnaHQgd2FzLCBkb2VzIHN5emthbGxlciBoYXZlIHNvbWUgYHN5el9wY2lfZGV2aWNlYCBwc2V1ZG8tc3lzY2FsbCB0aGF0IEkgaGF2ZW4ndCBzZWVuP1xuXG5TbywgSSBzdGFydGVkIHNlYXJjaGluZyB0byBmaWd1cmUgb3V0IGhvdyBzeXprYWxsZXIgY2FuIHJlYWNoIGl0LiBJIHN0YXJ0ZWQgdGhlIHByb2Nlc3Mgb2YgZWxpbWluYXRpb24uIFN5emthbGxlciBkb2Vzbid0IGhhdmUgYSBnZW5lcmljIGBzeXpfcGNpX2RldmljZWAgc3R5bGUgc3lzY2FsbC4gV2FpdCwgYnV0IGl0IGhhcyBgc3l6X2t2bV9zZXR1cF9jcHVgIHdoaWNoIGlzIGEgY2x1ZSB0aGF0IGl0IG1heSBiZSB1c2luZyBtb3JlIGNvbXBsZXggbWVjaGFuaXNtcy4gQWgsIGl0IGRvZXMgaGF2ZSBhIFBDSSBmdXp6ZXIhXG5cbkhvd2V2ZXIsIEkgcmVtaW5kZWQgbXlzZWxmIHRoYXQgdGhlIGRvY3VtZW50YXRpb24gc3RhdGVzOiBcIkltcG9ydGFudCBub3RlOiB0aGlzIHRvb2wgQ0FOTk9UIGJlIHVzZWQgdG8gc2VhcmNoIHN5emthbGxlciBzeXpsYW5nIGRlc2NyaXB0aW9ucyAoc3lzLyopIG9yIGV4cHJlc3Npb25zIGNvbnRhaW5pbmcgJ3N5el8nIHNpbmNlIHRoZXkgYXJlIHN5emthbGxlciBwc2V1ZG8tc3lzY2FsbHMsIGFuZCBub3QgcHJlc2VudCBpbiB0aGUgTGludXgga2VybmVsLlwiIE9rLCBzbyBpdCdzIG5vdCBkaXJlY3QuXG5cbkFscmlnaHQsIEkgc3dpdGNoZWQgZ2VhcnMgYWdhaW4uIERvZXMgc3l6a2FsbGVyIHNvbWVob3cgdXNlIGB2ZmlvYCBvciBpbmplY3QgUENJIGRldmljZXMgc29tZSBvdGhlciB3YXk/IEkgbmVlZCB0byBjaGVjay4gSXQncyB1c2luZyBzaW1pbGFyIHRlY2huaXF1ZXMgZm9yIG90aGVyIGtpbmRzIG9mIGRldmljZXMuIFRoZSBhbnN3ZXIgaXMgbm90IHN0cmFpZ2h0Zm9yd2FyZC4gRG9lcyBzeXprYWxsZXIgaGF2ZSBhIFBDSSBmdXp6ZXI/IFllcywgYW5kIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyEgU28gaXQncyBub3QgYHZmaW9gIG9yIGEgY3VzdG9tIFBDSSBkZXZpY2UgaW4gUUVNVS4gTm9wZSwgc3l6a2FsbGVyIG11c3QgaGF2ZSBzb21lIHdheSB0byBpbmplY3QgUENJIGRldmljZXMuXG5cblNvIGRvZXMgc3l6a2FsbGVyIGhhdmUgYHN5el9wY2lfZGV2aWNlYD8gSSd2ZSBnb3QgdG8gY2hlY2suIE1heWJlIHRoZXJlJ3Mgc29tZSBkb2N1bWVudGF0aW9uIG9yIGNvZGUgaW4gYERvY3VtZW50YXRpb24vYCBvciBgZHJpdmVycy9wY2kvYCB0aGF0J3Mgc3l6a2FsbGVyLXNwZWNpZmljIHRoYXQgd2lsbCBnaXZlIG1lIHRoZSBhbnN3ZXIuIEJ1dCwgaW4gZ2VuZXJhbCwgaWYgaXQncyBhIGhhcmR3YXJlIGRyaXZlciB3aXRob3V0IHNvZnR3YXJlIGVtdWxhdGlvbiwgaXQncyB1c3VhbGx5IHVucmVhY2hhYmxlLCBzbyBJIG5lZWQgdG8gY2hlY2sgdGhlIGtlcm5lbCBmb3IgUENJIGVtdWxhdGlvbiBzcGVjaWZpY2FsbHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ4OTgsIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMDg6MzE6NTcuMzE3MTE0ODM5WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI3NTcwOTA0NTcsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN5el9wY2lcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQwODozMjowMC4wNzQyMTc0MjZaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MzcxOTkyOTU4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIEZ1enppbmcgUG9zc2liaWxpdGllcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgaW5pdGlhbGx5LCBJIGRvbid0IHNlZSBhbnl0aGluZyBpbW1lZGlhdGVseSBqdW1waW5nIG91dCBhdCBtZSBhYm91dCBgc3l6X3BjaWAuIFdhaXQgYSBzZWNvbmQsIHdhc24ndCB0aGVyZSBzb21ldGhpbmcgYWJvdXQgYSBQQ0kgZnV6emVyPyBTeXprYWxsZXIgKmRvZXMqIGhhdmUgYSBQQ0kgZnV6emVyLCBidXQgSSB0aGluayBpdCBtaWdodCBiZSBpbXBsZW1lbnRlZCB2aWEgYSBRRU1VIGRldmljZSBvciBzb21ldGhpbmcgc2ltaWxhci5cblxuTm93LCBpZiB0aGlzIGlzIGEgKmhhcmR3YXJlKiBkcml2ZXIsIHRoYXQgcmFpc2VzIGEga2V5IHF1ZXN0aW9uOiBjYW4gd2UgZXZlbiBmdXp6IGl0IGVmZmVjdGl2ZWx5PyBSZWFkaW5nIHRoZXNlIGluc3RydWN0aW9ucywgdGhlIGtleSBwb2ludCBqdW1wcyBvdXQ6IFwiQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlXCIuIFRoYXQncyB0aGUgY3J1eCBvZiBpdC4gSWYgaXQncyBzaW1wbHkgdW5yZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBzZXR0aW5nLCBJJ20gZ29pbmcgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgLlxuXG5UaGUgYmlnIHF1ZXN0aW9uIG5vdyBpczogaXMgYG1seHN3YCByZWFjaGFibGUgd2l0aGluIFFFTVU/IExldCBtZSBtZW50YWxseSBzdGFydCBzZWFyY2hpbmcgZm9yIGBtbHhzd2AgaW4gdGhlIFFFTVUgc291cmNlIGNvZGUuLi4gT2theSwgc28gUUVNVSBkb2Vzbid0IGRpcmVjdGx5IGVtdWxhdGUgTWVsbGFub3ggc3dpdGNoZXMsIHRoYXQncyBjZXJ0YWluLiBJdCAqbWlnaHQqIGVtdWxhdGUgc29tZSBNZWxsYW5veCBOSUNzLCBidXQgZXZlbiB0aGVuLCBpdCdzIHByb2JhYmx5IHRocm91Z2ggc29tZSByZWNlbnQgYWRkaXRpb25zIG9yIGV4dGVybmFsIHByb2plY3RzLiBEZWZpbml0ZWx5IG5vdCBtbHhzdywgdGhlIE1lbGxhbm94IFN3aXRjaCBBU0lDcyBsaWtlIHRoZSBTcGVjdHJ1bSBsaW5lLlxuXG5Ib2xkIG9uLCBpcyB0aGVyZSBhIGR1bW15IGRyaXZlciBvciBzb21lIGtpbmQgb2Ygd2F5IHRvIGluc3RhbnRpYXRlIGl0IHdpdGhvdXQgdGhlIGFjdHVhbCBoYXJkd2FyZT8gTGV0IG1lIGRvdWJsZS1jaGVjayBpZiBgbWx4c3dgIGhhcyBhIGR1bW15IGJ1cyBvciBzb21ldGhpbmcgc2ltaWxhci4gSSBuZWVkIHRvIGludmVzdGlnYXRlIGlmIHRoZXJlJ3MgYW55IG1lY2hhbmlzbSBmb3IgYWJzdHJhY3RpbmcgdGhlIGhhcmR3YXJlIGRlcGVuZGVuY3kuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYxOTEsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMDg6MzI6MDYuNDQ2MjEzMDM0WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTU3ODczMjI3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1seHN3Xy4qX3Byb2JlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9jb3JlX2xpbmVjYXJkX2Rldi5jPTEyMj1zdGF0aWMgY29uc3Qgc3RydWN0IGRldmxpbmtfb3BzIG1seHN3X2xpbmVjYXJkX2Rldl9kZXZsaW5rX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmVfbGluZWNhcmRfZGV2LmMtMTI2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmVfbGluZWNhcmRfZGV2LmM6MTI3OnN0YXRpYyBpbnQgbWx4c3dfbGluZWNhcmRfYmRldl9wcm9iZShzdHJ1Y3QgYXV4aWxpYXJ5X2RldmljZSAqYWRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9jb3JlX2xpbmVjYXJkX2Rldi5jLTEyOC1cXHRcXHRcXHRcXHQgICAgIGNvbnN0IHN0cnVjdCBhdXhpbGlhcnlfZGV2aWNlX2lkICppZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmVfbGluZWNhcmRfZGV2LmM9MTcxPXN0YXRpYyBzdHJ1Y3QgYXV4aWxpYXJ5X2RyaXZlciBtbHhzd19saW5lY2FyZF9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvY29yZV9saW5lY2FyZF9kZXYuYy0xNzItXFx0Lm5hbWUgPSBNTFhTV19MSU5FQ0FSRF9ERVZfSURfTkFNRSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9jb3JlX2xpbmVjYXJkX2Rldi5jOjE3MzpcXHQucHJvYmUgPSBtbHhzd19saW5lY2FyZF9iZGV2X3Byb2JlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmVfbGluZWNhcmRfZGV2LmMtMTc0LVxcdC5yZW1vdmUgPSBtbHhzd19saW5lY2FyZF9iZGV2X3JlbW92ZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2kyYy5jPTYyND1zdGF0aWMgY29uc3Qgc3RydWN0IG1seHN3X2J1cyBtbHhzd19pMmNfYnVzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvaTJjLmMtNjMyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2kyYy5jOjYzMzpzdGF0aWMgaW50IG1seHN3X2kyY19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2kyYy5jLTYzNC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9pMmMuYz03NTA9aW50IG1seHN3X2kyY19kcml2ZXJfcmVnaXN0ZXIoc3RydWN0IGkyY19kcml2ZXIgKmkyY19kcml2ZXIpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvaTJjLmMtNzUxLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9pMmMuYzo3NTI6XFx0aTJjX2RyaXZlci1cXHUwMDNlcHJvYmUgPSBtbHhzd19pMmNfcHJvYmU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvaTJjLmMtNzUzLVxcdGkyY19kcml2ZXItXFx1MDAzZXJlbW92ZSA9IG1seHN3X2kyY19yZW1vdmU7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuYz0yNDIzPXN0YXRpYyB2b2lkIG1seHN3X3BjaV9jbWRfZmluaShzdHJ1Y3QgbWx4c3dfcGNpICptbHhzd19wY2kpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuYy0yNDI5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3BjaS5jOjI0MzA6c3RhdGljIGludCBtbHhzd19wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuYy0yNDMxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3BjaS5jPTI1NDg9aW50IG1seHN3X3BjaV9kcml2ZXJfcmVnaXN0ZXIoc3RydWN0IHBjaV9kcml2ZXIgKnBjaV9kcml2ZXIpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvcGNpLmMtMjU0OS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvcGNpLmM6MjU1MDpcXHRwY2lfZHJpdmVyLVxcdTAwM2Vwcm9iZSA9IG1seHN3X3BjaV9wcm9iZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuYy0yNTUxLVxcdHBjaV9kcml2ZXItXFx1MDAzZXJlbW92ZSA9IG1seHN3X3BjaV9yZW1vdmU7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9yb3V0ZXIuYz0yNjIxPXN0YXRpYyB2b2lkIG1seHN3X3NwX3JvdXRlcl9uZWlnaHNfdXBkYXRlX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fcm91dGVyLmMtMjYzNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9yb3V0ZXIuYzoyNjM3OnN0YXRpYyB2b2lkIG1seHN3X3NwX3JvdXRlcl9wcm9iZV91bnJlc29sdmVkX25leHRob3BzKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9yb3V0ZXIuYy0yNjM4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX3JvdXRlci5jLTI2NTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fcm91dGVyLmM6MjY1NzpcXHRtbHhzd19jb3JlX3NjaGVkdWxlX2R3KFxcdTAwMjZyb3V0ZXItXFx1MDAzZW5leHRob3BfcHJvYmVfZHcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fcm91dGVyLmMtMjY1OC1cXHRcXHRcXHQgICAgICAgTUxYU1dfU1BfVU5SRVNPTFZFRF9OSF9QUk9CRV9JTlRFUlZBTCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9yb3V0ZXIuYz0yOTQ2PXN0YXRpYyBpbnQgbWx4c3dfc3BfbmVpZ2hfaW5pdChzdHJ1Y3QgbWx4c3dfc3AgKm1seHN3X3NwKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fcm91dGVyLmMtMjk2Mi1cXHRcXHRcXHQgIG1seHN3X3NwX3JvdXRlcl9uZWlnaHNfdXBkYXRlX3dvcmspO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX3JvdXRlci5jOjI5NjM6XFx0SU5JVF9ERUxBWUVEX1dPUksoXFx1MDAyNm1seHN3X3NwLVxcdTAwM2Vyb3V0ZXItXFx1MDAzZW5leHRob3BfcHJvYmVfZHcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fcm91dGVyLmM6Mjk2NDpcXHRcXHRcXHQgIG1seHN3X3NwX3JvdXRlcl9wcm9iZV91bnJlc29sdmVkX25leHRob3BzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9yb3V0ZXIuYy0yOTY1LVxcdGF0b21pY19zZXQoXFx1MDAyNm1seHN3X3NwLVxcdTAwM2Vyb3V0ZXItXFx1MDAzZW5laWdoc191cGRhdGUubmVpZ2hfY291bnQsIDApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX3JvdXRlci5jLTI5NjYtXFx0bWx4c3dfY29yZV9zY2hlZHVsZV9kdyhcXHUwMDI2bWx4c3dfc3AtXFx1MDAzZXJvdXRlci1cXHUwMDNlbmVpZ2hzX3VwZGF0ZS5kdywgMCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fcm91dGVyLmM6Mjk2NzpcXHRtbHhzd19jb3JlX3NjaGVkdWxlX2R3KFxcdTAwMjZtbHhzd19zcC1cXHUwMDNlcm91dGVyLVxcdTAwM2VuZXh0aG9wX3Byb2JlX2R3LCAwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9yb3V0ZXIuYy0yOTY4LVxcdHJldHVybiAwO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fcm91dGVyLmM9Mjk3MT1zdGF0aWMgdm9pZCBtbHhzd19zcF9uZWlnaF9maW5pKHN0cnVjdCBtbHhzd19zcCAqbWx4c3dfc3ApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9yb3V0ZXIuYy0yOTczLVxcdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcXHUwMDI2bWx4c3dfc3AtXFx1MDAzZXJvdXRlci1cXHUwMDNlbmVpZ2hzX3VwZGF0ZS5kdyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fcm91dGVyLmM6Mjk3NDpcXHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXFx1MDAyNm1seHN3X3NwLVxcdTAwM2Vyb3V0ZXItXFx1MDAzZW5leHRob3BfcHJvYmVfZHcpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX3JvdXRlci5jLTI5NzUtXFx0cmhhc2h0YWJsZV9kZXN0cm95KFxcdTAwMjZtbHhzd19zcC1cXHUwMDNlcm91dGVyLVxcdTAwM2VuZWlnaF9odCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDA4OjMyOjA4LjAwNDA5MTczMVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4ODgxNzQwMTc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIFN5emthbGxlcidzIFBDSSBGdXp6aW5nIENhcGFiaWxpdGllcyoqXG5cbk9rYXksIHNvIEknbSB0cnlpbmcgdG8gZmlndXJlIG91dCBpZiB0aGlzIGRyaXZlciBpcyByZWFjaGFibGUgdmlhIHN5emthbGxlciBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBUaGUgaW5pdGlhbCB0aG91Z2h0IGlzLCBob3cgaXMgdGhlIGRyaXZlciBwcm9iZWQ/IFBDSSBvciBJMkMsIGxpa2VseS4gTm93LCB0aGUgYmlnIHF1ZXN0aW9uOiBjYW4gc3l6a2FsbGVyIGFjdHVhbGx5ICplbXVsYXRlKiBQQ0kgZGV2aWNlcz8gSSBrbm93IGl0IGRvZXNuJ3QgaGF2ZSBhIGZ1bGx5IGZsZXhpYmxlIFBDSSBlbXVsYXRvciwgZXNwZWNpYWxseSBub3Qgb25lIHRoYXQgbGV0cyB5b3UgZGVmaW5lIGFyYml0cmFyeSB2ZW5kb3IvZGV2aWNlIElEcyBlYXNpbHkuIFVubGVzcyBpdCdzIGxldmVyYWdpbmcgYHZmaW9gIHdpdGggYSByZWFsLCBvciBhdCBsZWFzdCBhICpkdW1teSosIGRldmljZS5cblxuV2FpdCBhIHNlY29uZCwgc3l6Ym90IHJlcG9ydGVkIGEgYnVnIGluIHRoaXMgY29kZSEgQW5kIHRoZXJlJ3MgYSBwYXRjaCB1bmRlciByZXZpZXcsIHJlbGF0ZWQgdG8gdGhpcyBpc3N1ZSEgVGhpcyBpcyBwcm9taXNpbmcsIHN5emJvdCBmb3VuZCBzb21ldGhpbmchIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGNoZWNrIGlmIHN5emthbGxlciBoYXMgYSB3YXkgdG8gZnV6eiBQQ0kgZGV2aWNlcyBpbiBnZW5lcmFsLiBJIHJlbWVtYmVyIHRoZXJlICppcyogYSBQQ0kgZnV6emVyLCB1c2luZyBgc3l6X3BjaV9kZXZpY2VgIG9yIGEgc2ltaWxhciBjb25zdHJ1Y3QsIHJpZ2h0PyBOb3BlLCB0aGlzIHByb21wdCByZW1pbmRlZCBtZTogdGhvc2UgXCJzeXpfXCIgY2FsbHMgYXJlbid0IHJlYWwga2VybmVsIGNhbGxzLCBzbyB0aGF0J3MgYSBkZWFkIGVuZC5cblxuSSAqdGhvdWdodCogdGhlcmUgd2FzIHJlY2VudCBQQ0kgZnV6emluZyBzdXBwb3J0IHdpdGggYHN5el9wY2lfZGV2aWNlYCwgbGlrZSB3aXRoIFVTQiBhbmQgYHZoY2lgLCBidXQgbm8sIG5vdCBxdWl0ZS4gVGhlIGltcGxlbWVudGF0aW9uIG11c3QgYmUgc29tZXdoZXJlIGVsc2UuIEJ1dCB3YWl0ISBJIHJlY2FsbCBzeXprYWxsZXIgKmRvZXMqIGhhdmUgYSBQQ0kgZnV6emVyIGFuZCBJIHRoaW5rIGl0J3MgZGVmaW5lZCBpbiBhIGBzeXMvbGludXgvcGNpLnR4dGAgb3Igc2ltaWxhciBmaWxlLiBJZiB0aGF0J3MgdGhlIGNhc2UsIHRoZW4gbWF5YmUgSSBjYW4gZmlndXJlIG91dCBob3cgdG8gcmVhY2ggYG1seHN3X3BjaV9wcm9iZWAuXG5cbk9rYXksIHNvIGlmIHN5emthbGxlciAqY2FuKiBmdXp6IFBDSSBkZXZpY2VzLCB0aGVuIHRoaXMgY29kZSAqaXMqIHJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBMZXQncyBhc3N1bWUgc3l6a2FsbGVyIGNhbiBkbyB0aGlzLiBUaGUgcHJvbXB0IGp1c3QgYnJvdWdodCB1cCB0aGUgY2hhbGxlbmdlIGFnYWluOiB1bnJlYWNoYWJsZSBjb2RlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gSWYgc3l6a2FsbGVyICpkb2VzKiBoYXZlIGEgUENJIGZ1enplciwgaXQgaGFzIHRvIHVzZSBzb21lIFFFTVUgZmVhdHVyZSAobGlrZSBgdmZpby11c2VyYCwgYGl2c2htZW1gLCBvciBhIGN1c3RvbSBRRU1VIGRldmljZSkgb3Iga2VybmVsIGZlYXR1cmUgKGBwY2lfc3R1YmAgb3IgYHZmaW9gKSB0byBpbmplY3QgUENJIGRldmljZXMuXG5cbk9rYXksIGlzIGl0IGEgY3VzdG9tIFFFTVUgZGV2aWNlPyBOby4gTWF5YmUgYHZmaW9gPyBUaGF0J3MgdHlwaWNhbGx5IGZvciB1c2Vyc3BhY2UgZHJpdmVycywgSSByZWNhbGwuIEkgdmFndWVseSByZW1lbWJlciBzb21ldGhpbmcgYWJvdXQgYSBgZWR1YCBkZXZpY2UsIGJ1dCB0aGF0J3Mgbm90IHJpZ2h0LiBOby4gSG1tLCBtYXliZSBgdmlydGlvYD8gSWYgc28sIHdoYXQgaXMgdGhlIGluamVjdGlvbiBtZWNoYW5pc20gaW4gdGhlIGtlcm5lbD8gSSBuZWVkIHRvIGNoZWNrIGZvciBhIGtlcm5lbCBpbmplY3Rpb24gbWVjaGFuaXNtIG9mIHNvcnRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NjgyLCJPdXRwdXRUb2tlbnMiOjI1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTU4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDA4OjMyOjE2Ljg4NTgzNDE0NloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjAxNjc5MjIzNSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGNpX2Z1enpcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQwODozMjoxOC45MDI2MzQ5NDFaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTU0MjA0MzI4MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBc3Nlc3NpbmcgdGhlIEZ1enppbmcgUG90ZW50aWFsIG9mIFRoaXMgUGF0Y2gqKlxuXG5Pa2F5LCBmaXJzdCB0aGluZ3MgZmlyc3QuIEkgbmVlZCB0byBxdWlja2x5IHJ1bGUgb3V0IHRoZSBvYnZpb3VzOiBpcyB0aGlzIHJlbGF0ZWQgdG8gYSBzdGFuZGFyZCBgc3l6X3BjaWAgaW50ZXJhY3Rpb24/IE5vLCBJJ3ZlIGFscmVhZHkgY29uZmlybWVkIHRoYXQncyBub3QgdGhlIGNhc2UuIFJpZ2h0LCBhbmQgSSByZW1lbWJlciBzeXprYWxsZXIgZG9lc24ndCBoYXZlIGEgYnVpbHQtaW4gUENJIGZ1enplciB0aGF0IGNhbiBqdXN0ICpjcmVhdGUqIGFueSBQQ0kgZGV2aWNlLiBTbywgd2hhdCB0cmlnZ2VyZWQgdGhpcyBidWc/IE15IGZpcnN0IHRob3VnaHQgd2FzIG1heWJlIHN5emJvdCBoaXQgdGhpcyBiZWNhdXNlIHNvbWVvbmUgcmFuIHN5emthbGxlciBvbiBhIHBoeXNpY2FsIG1hY2hpbmUgd2l0aCBhIE1lbGxhbm94IHN3aXRjaCwgYnV0IG5vLCBzeXpib3QncyBHQ0UgaW5zdGFuY2VzIGRvbid0IGhhdmUgdGhhdCBzb3J0IG9mIGhhcmR3YXJlLiBIbW1tLCB0aGVuIGRpZCBhbm90aGVyIGZ1enplciBmaW5kIHRoaXM/IE9yIHBlcmhhcHMgaXQgd2FzIGEgbWFudWFsbHkgd3JpdHRlbiBwYXRjaD8gXG5cbkFoLCBoZXJlJ3MgYSBjbHVlLiBJIHNlZSBcInN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1wiLiBPa2F5LCB0aGF0J3MgZ29vZCBpbmZvcm1hdGlvbi4gU28sIHN5ei1jbHVzdGVyIGlzIHRlc3RpbmcgdGhlIHBhdGNoLiBUaGUgY3J1Y2lhbCBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoaXMgYnVnIGNhbiBiZSB0cmlnZ2VyZWQgaW4gdGhlIEdDRSBlbnZpcm9ubWVudCBvciBRRU1VLiBJZiBpdCBjYW4ndCwgaXQncyBhIGRlYWQgZW5kIGFzIGZhciBhcyBmdXp6aW5nIGdvZXMuIEl0IHdvdWxkIGJlIGEgXCJXb3J0aEZ1enppbmc9ZmFsc2VcIiBzY2VuYXJpby4gTGV0IG1lIGRvdWJsZS1jaGVjay4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGVyZSdzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBhdmFpbGFibGUgZm9yIG1seHN3LlxuXG5cbiIsIklucHV0VG9rZW5zIjo5ODMzLCJPdXRwdXRUb2tlbnMiOjI1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDA4OjMyOjI0LjQ0NDY4MDgyMVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQ0MjM0NzM4OSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWx4c3cuKmVtdWxcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQwODozMjoyNi44ODcwMzQzM1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTYwMjc3NDk1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgc3VtbWFyeSwgcHJlc2VudGVkIGFzIGEgc3RyZWFtIG9mIHRob3VnaHQ6XG5cbioqQ2hlY2tpbmcgbWx4c3cgYW5kIG5ldGRldnNpbSBJbnRlZ3JhdGlvbioqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW4uIEZpcnN0IHRoaW5ncyBmaXJzdCwgSSBuZWVkIHRvIGludmVzdGlnYXRlIHNvbWV0aGluZyBzcGVjaWZpYy4gSSdtIGN1cmlvdXMgYWJvdXQgdGhlIGN1cnJlbnQgc3RhdGUgb2YgYWZmYWlycyByZWdhcmRpbmcgYG5ldGRldnNpbWAgYW5kIGl0cyBjb21wYXRpYmlsaXR5IHdpdGggbWx4c3cuIElzIHRoZXJlIGFueSBleGlzdGluZyBzdXBwb3J0PyBBcmUgdGhlcmUgYW55IGVmZm9ydHMgdW5kZXJ3YXkgdG8gaW50ZWdyYXRlIHRoZSB0d28/IFRoaXMgaXMgc29tZXRoaW5nIEkndmUgYmVlbiB0aGlua2luZyBhYm91dCBmb3IgYSB3aGlsZSwgYW5kIG5vdydzIHRoZSB0aW1lIHRvIHBpbiBkb3duIHdoZXJlIHRoaW5ncyBzdGFuZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgYG5ldGRldnNpbWAsIGFzIGEgdG9vbCBmb3IgbmV0d29yayBkZXZpY2Ugc2ltdWxhdGlvbiwgY2FuIGVmZmVjdGl2ZWx5IHdvcmsgd2l0aCB0aGUgbWx4c3cgc3dpdGNoIHBsYXRmb3JtLiBJZiB0aGVyZSdzIHN1cHBvcnQsIHdoYXQgYXJlIHRoZSBrZXkgZmVhdHVyZXMgaXQgZW5hYmxlcz8gSWYgbm90LCB3aGF0IHdvdWxkIGJlIHRoZSByb2FkYmxvY2tzIG9yIGxpbWl0YXRpb25zPyBUaGlzIGV4cGxvcmF0aW9uIGlzIGtleSBmb3IgdW5kZXJzdGFuZGluZyBob3cgd2UgY2FuIHRlc3QgYW5kIGRldmVsb3Agc29mdHdhcmUgZm9yIHRoZXNlIGRldmljZXMgaW4gYW4gZWZmaWNpZW50IG1hbm5lci5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAzMzMsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQwODozMjozMC44NDczMTQ4NzVaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzNTAyMzEzNSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWx4c3dcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvbmV0ZGV2c2ltL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMDg6MzI6MzAuOTgyMzU3MjlaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzk0NTYxMDE0MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHN1bW1hcnksIHByZXNlbnRlZCBhcyBhIHN0cmVhbSBvZiB0aG91Z2h0OlxuXG4qKkNoZWNraW5nIGZvciBQbGFjZWhvbGRlciBMb2dpYyBpbiBNTFhTVyoqXG5cbkFscmlnaHQsIGJlZm9yZSBkaXZpbmcgdG9vIGRlZXAsIEkgbmVlZCB0byB0YWtlIGEgcXVpY2sgc2FuaXR5IGNoZWNrLiBJJ3ZlIGdvdCB0byBlbnN1cmUgSSdtIG5vdCBvdmVybG9va2luZyBhbnl0aGluZyBvYnZpb3VzLCBvciBmYWxsaW5nIGludG8gYSB0cmFwIG9mIGFzc3VtaW5nIHNvbWV0aGluZydzIGFscmVhZHkgaGFuZGxlZC4gVGhlIG1vc3QgZWZmaWNpZW50IHdheSB0byBhcHByb2FjaCB0aGlzIHdvdWxkIGJlIHRvIGNoZWNrIGZvciBhbnkgdXNlIG9mIFwiZHVtbXlcIiBvciBcIm1vY2tcIiBjb2RlIHdpdGhpbiB0aGUgTUxYU1cgY29kZWJhc2UuIEkgd2FudCB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBwbGFjZWhvbGRlciBpbXBsZW1lbnRhdGlvbnMgb3IgdGVzdGluZyBzdHVicyB0aGF0IG1pZ2h0IGJlIHByZXNlbnQuIFRob3NlIGtleXdvcmRzIGFyZSB1c3VhbGx5IHN0cm9uZyBpbmRpY2F0b3JzIHRoYXQgSSBuZWVkIHRvIGludmVzdGlnYXRlIGZ1cnRoZXIuIEl0J3MgYSBxdWljayB3aW4gdG8gcnVsZSBvdXQgYW55IGV4aXN0aW5nLCBidWlsdC1pbiBzY2FmZm9sZGluZy4gU2F2ZXMgYSB0b24gb2YgaGVhZGFjaGUgbGF0ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwNTg2LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMDg6MzI6MzQuOTI3OTcwMjQyWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzgxNTYxMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkdW1teVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvY29yZV9hY2xfZmxleF9hY3Rpb25zLmM9NDA1PXN0cnVjdCBtbHhzd19hZmFfYmxvY2sgKm1seHN3X2FmYV9ibG9ja19jcmVhdGUoc3RydWN0IG1seHN3X2FmYSAqbWx4c3dfYWZhKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvY29yZV9hY2xfZmxleF9hY3Rpb25zLmMtNDE5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmVfYWNsX2ZsZXhfYWN0aW9ucy5jOjQyMDpcXHQvKiBJbiBjYXNlIHVzZXIgaW5zdHJ1Y3RzIHRvIGhhdmUgZHVtbXkgZmlyc3Qgc2V0LCB3ZSBsZWF2ZSBpdFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmVfYWNsX2ZsZXhfYWN0aW9ucy5jLTQyMS1cXHQgKiBlbXB0eSBoZXJlIGFuZCBjcmVhdGUgYW5vdGhlciwgcmVhbCwgc2V0IHJpZ2h0IGF3YXkuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvY29yZV9hY2xfZmxleF9hY3Rpb25zLmMtNDIyLVxcdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmVfYWNsX2ZsZXhfYWN0aW9ucy5jOjQyMzpcXHRpZiAobWx4c3dfYWZhLVxcdTAwM2VvcHMtXFx1MDAzZWR1bW15X2ZpcnN0X3NldCkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmVfYWNsX2ZsZXhfYWN0aW9ucy5jLTQyNC1cXHRcXHRibG9jay1cXHUwMDNlY3VyX3NldCA9IG1seHN3X2FmYV9zZXRfY3JlYXRlKGZhbHNlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmVfYWNsX2ZsZXhfYWN0aW9ucy5oPTE0PXN0cnVjdCBtbHhzd19hZmFfb3BzIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmVfYWNsX2ZsZXhfYWN0aW9ucy5oLTM4LVxcdFxcdFxcdCAgICBib29sIGluZ3Jlc3MpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmVfYWNsX2ZsZXhfYWN0aW9ucy5oOjM5OlxcdGJvb2wgZHVtbXlfZmlyc3Rfc2V0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmVfYWNsX2ZsZXhfYWN0aW9ucy5oLTQwLX07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuYz0xNDM9c3RhdGljIGludCBtbHhzd19wY2lfbmFwaV9kZXZzX2luaXQoc3RydWN0IG1seHN3X3BjaSAqbWx4c3dfcGNpKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvcGNpLmMtMTQ2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3BjaS5jOjE0NzpcXHRtbHhzd19wY2ktXFx1MDAzZW5hcGlfZGV2X3R4ID0gYWxsb2NfbmV0ZGV2X2R1bW15KDApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3BjaS5jLTE0OC1cXHRpZiAoIW1seHN3X3BjaS1cXHUwMDNlbmFwaV9kZXZfdHgpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuYy0xNTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvcGNpLmM6MTUzOlxcdG1seHN3X3BjaS1cXHUwMDNlbmFwaV9kZXZfcnggPSBhbGxvY19uZXRkZXZfZHVtbXkoMCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvcGNpLmMtMTU0LVxcdGlmICghbWx4c3dfcGNpLVxcdTAwM2VuYXBpX2Rldl9yeCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW0uaD0xMDc3PWludCBtbHhzd19zcF9hY2xfcnVsZV9nZXRfc3RhdHMoc3RydWN0IG1seHN3X3NwICptbHhzd19zcCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtLmgtMTA4Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bS5oOjEwODM6c3RydWN0IG1seHN3X3NwX2ZpZCAqbWx4c3dfc3BfYWNsX2R1bW15X2ZpZChzdHJ1Y3QgbWx4c3dfc3AgKm1seHN3X3NwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bS5oLTEwODQtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bS5oPTEzMDY9c3RydWN0IG1seHN3X3NwX2ZpZCAqbWx4c3dfc3BfZmlkX3JmaWRfZ2V0KHN0cnVjdCBtbHhzd19zcCAqbWx4c3dfc3AsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW0uaC0xMzA3LVxcdFxcdFxcdFxcdFxcdCAgIHUxNiByaWZfaW5kZXgpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtLmg6MTMwODpzdHJ1Y3QgbWx4c3dfc3BfZmlkICptbHhzd19zcF9maWRfZHVtbXlfZ2V0KHN0cnVjdCBtbHhzd19zcCAqbWx4c3dfc3ApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtLmgtMTMwOS12b2lkIG1seHN3X3NwX2ZpZF9wdXQoc3RydWN0IG1seHN3X3NwX2ZpZCAqZmlkKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2FjbC5jPTI0PXN0cnVjdCBtbHhzd19zcF9hY2wge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fYWNsLmMtMjYtXFx0c3RydWN0IG1seHN3X2FmayAqYWZrO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2FjbC5jOjI3OlxcdHN0cnVjdCBtbHhzd19zcF9maWQgKmR1bW15X2ZpZDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9hY2wuYy0yOC1cXHRzdHJ1Y3Qgcmhhc2h0YWJsZSBydWxlc2V0X2h0O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fYWNsLmM9ODc9c3RhdGljIGNvbnN0IHN0cnVjdCByaGFzaHRhYmxlX3BhcmFtcyBtbHhzd19zcF9hY2xfcnVsZV9odF9wYXJhbXMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9hY2wuYy05My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9hY2wuYzo5NDpzdHJ1Y3QgbWx4c3dfc3BfZmlkICptbHhzd19zcF9hY2xfZHVtbXlfZmlkKHN0cnVjdCBtbHhzd19zcCAqbWx4c3dfc3ApXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fYWNsLmMtOTUte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2FjbC5jOjk2OlxcdHJldHVybiBtbHhzd19zcC1cXHUwMDNlYWNsLVxcdTAwM2VkdW1teV9maWQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fYWNsLmMtOTctfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fYWNsLmM9MTA1Mj1pbnQgbWx4c3dfc3BfYWNsX2luaXQoc3RydWN0IG1seHN3X3NwICptbHhzd19zcClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2FjbC5jLTEwNzctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fYWNsLmM6MTA3ODpcXHRmaWQgPSBtbHhzd19zcF9maWRfZHVtbXlfZ2V0KG1seHN3X3NwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9hY2wuYy0xMDc5LVxcdGlmIChJU19FUlIoZmlkKSkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fYWNsLmMtMTA4Mi1cXHR9XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fYWNsLmM6MTA4MzpcXHRhY2wtXFx1MDAzZWR1bW15X2ZpZCA9IGZpZDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9hY2wuYy0xMDg0LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fYWNsLmM9MTExMD12b2lkIG1seHN3X3NwX2FjbF9maW5pKHN0cnVjdCBtbHhzd19zcCAqbWx4c3dfc3ApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9hY2wuYy0xMTE3LVxcdFdBUk5fT04oIWxpc3RfZW1wdHkoXFx1MDAyNmFjbC1cXHUwMDNlcnVsZXMpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9hY2wuYzoxMTE4OlxcdG1seHN3X3NwX2ZpZF9wdXQoYWNsLVxcdTAwM2VkdW1teV9maWQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2FjbC5jLTExMTktXFx0cmhhc2h0YWJsZV9kZXN0cm95KFxcdTAwMjZhY2wtXFx1MDAzZXJ1bGVzZXRfaHQpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fYWNsX2F0Y2FtLmM9NDQ9c3RydWN0IG1seHN3X3NwX2FjbF9hdGNhbV9yZWdpb25fZ2VuZXJpYyB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fYWNsX2F0Y2FtLmM6NDU6XFx0c3RydWN0IG1seHN3X3NwX2FjbF9hdGNhbV9sa2V5X2lkIGR1bW15X2xrZXlfaWQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fYWNsX2F0Y2FtLmMtNDYtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2FjbF9hdGNhbS5jPTczPW1seHN3X3NwX2FjbF9hdGNhbV9yZWdpb25fZ2VuZXJpY19pbml0KHN0cnVjdCBtbHhzd19zcF9hY2xfYXRjYW1fcmVnaW9uICphcmVnaW9uKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fYWNsX2F0Y2FtLmMtODAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fYWNsX2F0Y2FtLmM6ODE6XFx0cmVmY291bnRfc2V0KFxcdTAwMjZyZWdpb25fZ2VuZXJpYy1cXHUwMDNlZHVtbXlfbGtleV9pZC5yZWZjbnQsIDEpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2FjbF9hdGNhbS5jLTgyLVxcdGFyZWdpb24tXFx1MDAzZXByaXYgPSByZWdpb25fZ2VuZXJpYztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2FjbF9hdGNhbS5jPTk0PW1seHN3X3NwX2FjbF9hdGNhbV9nZW5lcmljX2xrZXlfaWRfZ2V0KHN0cnVjdCBtbHhzd19zcF9hY2xfYXRjYW1fcmVnaW9uICphcmVnaW9uLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fYWNsX2F0Y2FtLmMtOTktXFx0cmVnaW9uX2dlbmVyaWMgPSBhcmVnaW9uLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2FjbF9hdGNhbS5jOjEwMDpcXHRyZXR1cm4gXFx1MDAyNnJlZ2lvbl9nZW5lcmljLVxcdTAwM2VkdW1teV9sa2V5X2lkO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2FjbF9hdGNhbS5jLTEwMS19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9hY2xfZmxleF9hY3Rpb25zLmM9MjkwPWNvbnN0IHN0cnVjdCBtbHhzd19hZmFfb3BzIG1seHN3X3NwMl9hY3RfYWZhX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2FjbF9mbGV4X2FjdGlvbnMuYy0zMDMtXFx0LnNhbXBsZXJfZGVsXFx0XFx0PSBtbHhzd19zcDJfYWN0X3NhbXBsZXJfZGVsLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2FjbF9mbGV4X2FjdGlvbnMuYzozMDQ6XFx0LmR1bW15X2ZpcnN0X3NldFxcdD0gdHJ1ZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9hY2xfZmxleF9hY3Rpb25zLmMtMzA1LX07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9idWZmZXJzLmM9ODM3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbWx4c3dfc3Bfc2JfY20gbWx4c3dfc3AxX3NiX2Ntc19pbmdyZXNzW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9idWZmZXJzLmMtODQ1LVxcdE1MWFNXX1NQX1NCX0NNX0lORygwLCBNTFhTV19SRUdfU0JYWF9EWU5fTUFYX0JVRkZfTUlOKSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9idWZmZXJzLmM6ODQ2OlxcdE1MWFNXX1NQX1NCX0NNX0lORygwLCAwKSwgLyogZHVtbXksIHRoaXMgUEcgZG9lcyBub3QgZXhpc3QgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9idWZmZXJzLmMtODQ3LVxcdE1MWFNXX1NQX1NCX0NNKDEwMDAwLCA4LCBNTFhTV19TUF9TQl9QT09MX0lOR19DUFUpLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fYnVmZmVycy5jPTg1MD1zdGF0aWMgY29uc3Qgc3RydWN0IG1seHN3X3NwX3NiX2NtIG1seHN3X3NwMl9zYl9jbXNfaW5ncmVzc1tdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fYnVmZmVycy5jLTg1OC1cXHRNTFhTV19TUF9TQl9DTV9JTkcoMCwgTUxYU1dfUkVHX1NCWFhfRFlOX01BWF9CVUZGX01JTiksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fYnVmZmVycy5jOjg1OTpcXHRNTFhTV19TUF9TQl9DTV9JTkcoMCwgMCksIC8qIGR1bW15LCB0aGlzIFBHIGRvZXMgbm90IGV4aXN0ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fYnVmZmVycy5jLTg2MC1cXHRNTFhTV19TUF9TQl9DTSgxMDAwMCwgOCwgTUxYU1dfU1BfU0JfUE9PTF9JTkdfQ1BVKSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2ZpZC5jPTE2NDI9c3RhdGljIGNvbnN0IHN0cnVjdCBtbHhzd19zcF9maWRfb3BzIG1seHN3X3NwX2ZpZF9yZmlkX29wc19jZmYgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYy0xNjYxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2ZpZC5jOjE2NjI6c3RhdGljIGludCBtbHhzd19zcF9maWRfZHVtbXlfc2V0dXAoc3RydWN0IG1seHN3X3NwX2ZpZCAqZmlkLCBjb25zdCB2b2lkICphcmcpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmlkLmMtMTY2My17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYy0xNjY3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2ZpZC5jOjE2Njg6c3RhdGljIGludCBtbHhzd19zcF9maWRfZHVtbXlfY29uZmlndXJlKHN0cnVjdCBtbHhzd19zcF9maWQgKmZpZClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYy0xNjY5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2ZpZC5jLTE2NzItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmlkLmM6MTY3MzpzdGF0aWMgdm9pZCBtbHhzd19zcF9maWRfZHVtbXlfZGVjb25maWd1cmUoc3RydWN0IG1seHN3X3NwX2ZpZCAqZmlkKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2ZpZC5jLTE2NzQte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmlkLmMtMTY3Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYzoxNjc4OnN0YXRpYyBpbnQgbWx4c3dfc3BfZmlkX2R1bW15X2luZGV4X2FsbG9jKHN0cnVjdCBtbHhzd19zcF9maWQgKmZpZCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYy0xNjc5LVxcdFxcdFxcdFxcdFxcdCAgY29uc3Qgdm9pZCAqYXJnLCB1MTYgKnBfZmlkX2luZGV4KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmlkLmMtMTY4NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYzoxNjg2OnN0YXRpYyBib29sIG1seHN3X3NwX2ZpZF9kdW1teV9jb21wYXJlKGNvbnN0IHN0cnVjdCBtbHhzd19zcF9maWQgKmZpZCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYy0xNjg3LVxcdFxcdFxcdFxcdCAgICAgICBjb25zdCB2b2lkICphcmcpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYy0xNjkxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2ZpZC5jOjE2OTI6c3RhdGljIGludCBtbHhzd19zcF9maWRfZHVtbXlfdm5pX3NldChzdHJ1Y3QgbWx4c3dfc3BfZmlkICpmaWQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmlkLmMtMTY5My17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYy0xNjk2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2ZpZC5jOjE2OTc6c3RhdGljIHZvaWQgbWx4c3dfc3BfZmlkX2R1bW15X3ZuaV9jbGVhcihzdHJ1Y3QgbWx4c3dfc3BfZmlkICpmaWQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmlkLmMtMTY5OC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYy0xNzAxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2ZpZC5jOjE3MDI6c3RhdGljIGludCBtbHhzd19zcF9maWRfZHVtbXlfbnZlX2Zsb29kX2luZGV4X3NldChzdHJ1Y3QgbWx4c3dfc3BfZmlkICpmaWQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmlkLmMtMTcwMy17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYy0xNzA2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2ZpZC5jOjE3MDc6c3RhdGljIHZvaWQgbWx4c3dfc3BfZmlkX2R1bW15X252ZV9mbG9vZF9pbmRleF9jbGVhcihzdHJ1Y3QgbWx4c3dfc3BfZmlkICpmaWQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmlkLmMtMTcwOC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYy0xNzExLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2ZpZC5jOjE3MTI6c3RhdGljIGNvbnN0IHN0cnVjdCBtbHhzd19zcF9maWRfb3BzIG1seHN3X3NwX2ZpZF9kdW1teV9vcHMgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmlkLmM6MTcxMzpcXHQuc2V0dXBcXHRcXHRcXHQ9IG1seHN3X3NwX2ZpZF9kdW1teV9zZXR1cCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYzoxNzE0OlxcdC5jb25maWd1cmVcXHRcXHQ9IG1seHN3X3NwX2ZpZF9kdW1teV9jb25maWd1cmUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmlkLmM6MTcxNTpcXHQuZGVjb25maWd1cmVcXHRcXHQ9IG1seHN3X3NwX2ZpZF9kdW1teV9kZWNvbmZpZ3VyZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYzoxNzE2OlxcdC5pbmRleF9hbGxvY1xcdFxcdD0gbWx4c3dfc3BfZmlkX2R1bW15X2luZGV4X2FsbG9jLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2ZpZC5jOjE3MTc6XFx0LmNvbXBhcmVcXHRcXHQ9IG1seHN3X3NwX2ZpZF9kdW1teV9jb21wYXJlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2ZpZC5jOjE3MTg6XFx0LnZuaV9zZXQgICAgICAgICAgICAgICAgPSBtbHhzd19zcF9maWRfZHVtbXlfdm5pX3NldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYzoxNzE5OlxcdC52bmlfY2xlYXJcXHRcXHQ9IG1seHN3X3NwX2ZpZF9kdW1teV92bmlfY2xlYXIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmlkLmM6MTcyMDpcXHQubnZlX2Zsb29kX2luZGV4X3NldFxcdD0gbWx4c3dfc3BfZmlkX2R1bW15X252ZV9mbG9vZF9pbmRleF9zZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmlkLmM6MTcyMTpcXHQubnZlX2Zsb29kX2luZGV4X2NsZWFyXFx0PSBtbHhzd19zcF9maWRfZHVtbXlfbnZlX2Zsb29kX2luZGV4X2NsZWFyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2ZpZC5jLTE3MjItXFx0LmZpZF9wYWNrXFx0XFx0PSBtbHhzd19zcF9maWRfcGFjayxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2ZpZC5jPTE4MjY9c3RhdGljIGNvbnN0IHN0cnVjdCBtbHhzd19zcF9maWRfb3BzIG1seHN3X3NwX2ZpZF84MDIxcV9vcHNfY2ZmID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmlkLmMtMTg1NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYzoxODU1Oi8qIFRoZXJlIGlzIG9uZSBkdW1teSBGSUQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYy0xODU2LSNkZWZpbmUgTUxYU1dfU1BfRklEX0RVTU1ZXFx0XFx0KE1MWFNXX1NQX0ZJRF84MDIxRF9FTkQgKyAxKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmlkLmM9MTg3Nj1zdGF0aWMgY29uc3Qgc3RydWN0IG1seHN3X3NwX2ZpZF9mYW1pbHkgbWx4c3dfc3AxX2ZpZF84MDIxZF9mYW1pbHkgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYy0xODg3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2ZpZC5jOjE4ODg6c3RhdGljIGNvbnN0IHN0cnVjdCBtbHhzd19zcF9maWRfZmFtaWx5IG1seHN3X3NwMV9maWRfZHVtbXlfZmFtaWx5ID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2ZpZC5jLTE4ODktXFx0LnR5cGVcXHRcXHRcXHQ9IE1MWFNXX1NQX0ZJRF9UWVBFX0RVTU1ZLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmlkLmMtMTg5Mi1cXHQuZW5kX2luZGV4XFx0XFx0PSBNTFhTV19TUF9GSURfRFVNTVksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmlkLmM6MTg5MzpcXHQub3BzXFx0XFx0XFx0PSBcXHUwMDI2bWx4c3dfc3BfZmlkX2R1bW15X29wcyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYy0xODk0LVxcdC5zbXBlX2luZGV4X3ZhbGlkICAgICAgID0gZmFsc2UsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYz0xOTA4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbWx4c3dfc3BfZmlkX2ZhbWlseSAqbWx4c3dfc3AxX2ZpZF9mYW1pbHlfYXJyW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYy0xOTEwLVxcdFtNTFhTV19TUF9GSURfVFlQRV84MDIxRF1cXHQ9IFxcdTAwMjZtbHhzd19zcDFfZmlkXzgwMjFkX2ZhbWlseSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYzoxOTExOlxcdFtNTFhTV19TUF9GSURfVFlQRV9EVU1NWV1cXHQ9IFxcdTAwMjZtbHhzd19zcDFfZmlkX2R1bW15X2ZhbWlseSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYy0xOTEyLVxcdFtNTFhTV19TUF9GSURfVFlQRV9SRklEXVxcdD0gXFx1MDAyNm1seHN3X3NwX2ZpZF9yZmlkX2ZhbWlseV9jdGwsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYz0xOTI4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbWx4c3dfc3BfZmlkX2ZhbWlseSBtbHhzd19zcDJfZmlkXzgwMjFkX2ZhbWlseV9jdGwgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYy0xOTM5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2ZpZC5jOjE5NDA6c3RhdGljIGNvbnN0IHN0cnVjdCBtbHhzd19zcF9maWRfZmFtaWx5IG1seHN3X3NwMl9maWRfZHVtbXlfZmFtaWx5ID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2ZpZC5jLTE5NDEtXFx0LnR5cGVcXHRcXHRcXHQ9IE1MWFNXX1NQX0ZJRF9UWVBFX0RVTU1ZLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmlkLmMtMTk0NC1cXHQuZW5kX2luZGV4XFx0XFx0PSBNTFhTV19TUF9GSURfRFVNTVksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmlkLmM6MTk0NTpcXHQub3BzXFx0XFx0XFx0PSBcXHUwMDI2bWx4c3dfc3BfZmlkX2R1bW15X29wcyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYy0xOTQ2LVxcdC5zbXBlX2luZGV4X3ZhbGlkICAgICAgID0gZmFsc2UsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYz0xOTQ5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbWx4c3dfc3BfZmlkX2ZhbWlseSAqbWx4c3dfc3AyX2ZpZF9mYW1pbHlfYXJyX2N0bFtdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmlkLmMtMTk1MS1cXHRbTUxYU1dfU1BfRklEX1RZUEVfODAyMURdXFx0PSBcXHUwMDI2bWx4c3dfc3AyX2ZpZF84MDIxZF9mYW1pbHlfY3RsLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2ZpZC5jOjE5NTI6XFx0W01MWFNXX1NQX0ZJRF9UWVBFX0RVTU1ZXVxcdD0gXFx1MDAyNm1seHN3X3NwMl9maWRfZHVtbXlfZmFtaWx5LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2ZpZC5jLTE5NTMtXFx0W01MWFNXX1NQX0ZJRF9UWVBFX1JGSURdXFx0PSBcXHUwMDI2bWx4c3dfc3BfZmlkX3JmaWRfZmFtaWx5X2N0bCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2ZpZC5jPTE5ODk9c3RhdGljIGNvbnN0IHN0cnVjdCBtbHhzd19zcF9maWRfZmFtaWx5ICptbHhzd19zcDJfZmlkX2ZhbWlseV9hcnJfY2ZmW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYy0xOTkxLVxcdFtNTFhTV19TUF9GSURfVFlQRV84MDIxRF1cXHQ9IFxcdTAwMjZtbHhzd19zcDJfZmlkXzgwMjFkX2ZhbWlseV9jZmYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmlkLmM6MTk5MjpcXHRbTUxYU1dfU1BfRklEX1RZUEVfRFVNTVldXFx0PSBcXHUwMDI2bWx4c3dfc3AyX2ZpZF9kdW1teV9mYW1pbHksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmlkLmMtMTk5My1cXHRbTUxYU1dfU1BfRklEX1RZUEVfUkZJRF1cXHQ9IFxcdTAwMjZtbHhzd19zcF9maWRfcmZpZF9mYW1pbHlfY2ZmLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmlkLmM9MjExMT1zdHJ1Y3QgbWx4c3dfc3BfZmlkICptbHhzd19zcF9maWRfcmZpZF9nZXQoc3RydWN0IG1seHN3X3NwICptbHhzd19zcCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2ZpZC5jLTIxMTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmlkLmM6MjExNzpzdHJ1Y3QgbWx4c3dfc3BfZmlkICptbHhzd19zcF9maWRfZHVtbXlfZ2V0KHN0cnVjdCBtbHhzd19zcCAqbWx4c3dfc3ApXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmlkLmMtMjExOC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9mbG93ZXIuYz01OD1zdGF0aWMgaW50IG1seHN3X3NwX2Zsb3dlcl9wYXJzZV9hY3Rpb25zKHN0cnVjdCBtbHhzd19zcCAqbWx4c3dfc3AsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9mbG93ZXIuYy0xNzItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmxvd2VyLmM6MTczOlxcdFxcdFxcdGZpZCA9IG1seHN3X3NwX2FjbF9kdW1teV9maWQobWx4c3dfc3ApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2Zsb3dlci5jLTE3NC1cXHRcXHRcXHRmaWRfaW5kZXggPSBtbHhzd19zcF9maWRfaW5kZXgoZmlkKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX3RyYXAuYz0xMjMyPXN0YXRpYyBpbnQgbWx4c3dfc3BfdHJhcF9jcHVfcG9saWNlcnNfc2V0KHN0cnVjdCBtbHhzd19zcCAqbWx4c3dfc3ApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV90cmFwLmMtMTIzOC1cXHQvKiBUaGUgcHVycG9zZSBvZiBcXFwidGhpblxcXCIgcG9saWNlciBpcyB0byBkcm9wIGFzIG1hbnkgcGFja2V0c1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX3RyYXAuYzoxMjM5OlxcdCAqIGFzIHBvc3NpYmxlLiBUaGUgZHVtbXkgZ3JvdXAgaXMgdXNpbmcgaXQuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fdHJhcC5jLTEyNDAtXFx0ICovXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV90cmFwLmMtMTI1MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV90cmFwLmM6MTI1MjpzdGF0aWMgaW50IG1seHN3X3NwX3RyYXBfZHVtbXlfZ3JvdXBfaW5pdChzdHJ1Y3QgbWx4c3dfc3AgKm1seHN3X3NwKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX3RyYXAuYy0xMjUzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX3RyYXAuYz0xNTI4PWludCBtbHhzd19zcF9kZXZsaW5rX3RyYXBzX2luaXQoc3RydWN0IG1seHN3X3NwICptbHhzd19zcClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX3RyYXAuYy0xNTM1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX3RyYXAuYzoxNTM2OlxcdGVyciA9IG1seHN3X3NwX3RyYXBfZHVtbXlfZ3JvdXBfaW5pdChtbHhzd19zcCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fdHJhcC5jLTE1MzctXFx0aWYgKGVycilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMDg6MzI6MzQuOTg1NzkxODQ0WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjk0NzM0Mjg1OTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBtbHhzdyBEcml2ZXIgYW5kIFN5emthbGxlcidzIFBvdGVudGlhbCBmb3IgRnV6emluZyoqXG5cbk9rYXksIHNvIHRoZSBgbWx4c3dgIGRyaXZlciBpbml0aWFsaXplcyBkdW1teSBuZXQgZGV2aWNlcyBpbnRlcm5hbGx5IGZvciBOQVBJLiBUaGF0J3MganVzdCBzdGFuZGFyZCBkcml2ZXIgc3R1ZmY7IGl0IGRvZXNuJ3QgbWFrZSB0aGUgZHJpdmVyIGl0c2VsZiBhIGR1bW15LiBJdCBzdGlsbCBuZWVkcyBhIFBDSSBkZXZpY2UgdG8gcHJvYmUuIE5vdywgbGV0J3MgdGhpbmsgYWJvdXQgc3l6a2FsbGVyLiBIbW0sIHdhaXQsIGRvZXMgc3l6a2FsbGVyIGhhdmUgYSBgc3l6X3BjaV9kZXZpY2VgIHBzZXVkby1zeXNjYWxsPyBObywgYWNjb3JkaW5nIHRvIHRoZSBwcm9tcHQsIGl0IGNhbid0IGhhbmRsZSB0aG9zZSBzeXprYWxsZXIgc3BlY2lmaWMgY2FsbHMuIFRoaXMgaW1wbGllcyBpdCBtaWdodCBiZSBhYmxlIHRvIGZ1enogUENJIGRldmljZXMgaW4gc29tZSBjYXBhY2l0eS5cblxuQnV0IHRoZW4gdGhlcmUncyB0aGF0IGNhdmVhdCBhYm91dCBjb2RlIHBhdGhzIGJlaW5nIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdpdGggZW11bGF0ZWQgaGFyZHdhcmUuIElmIHN5emthbGxlciAqZG9lcyogaGF2ZSBhIFBDSSBmdXp6ZXIsIGl0J2QgcHJvYmFibHkgbmVlZCBzb21lIFFFTVUgZmVhdHVyZS4gSG93ZXZlciwgUUVNVSBkb2Vzbid0IGVtdWxhdGUgTWVsbGFub3ggc3dpdGNoZXMsIGFzIGZhciBhcyBJIGtub3cuIFNvLi4uIGRvZXMgc3l6a2FsbGVyIGFjdHVhbGx5ICpoYXZlKiBhIFBDSSBmdXp6ZXI/IEl0J3MgdGltZSB0byBpbnZlc3RpZ2F0ZS5cblxuSSBzaG91bGQgY2hlY2sgZm9yIHRoaW5ncyBsaWtlIGBDT05GSUdfUENJX1NUVUJgIG9yIGBDT05GSUdfVkZJT2AgdGhhdCBzeXprYWxsZXIgbWlnaHQgYmUgdXNpbmcuIExldCdzIHNlZS4uLiBzeXprYWxsZXIgdXNlcyBgc3l6X2t2bV9zZXR1cF9jcHVgIGZvciBLVk0sIGBzeXpfdXNiX2Nvbm5lY3RgIGZvciBVU0IsIGBzeXpfODAyMTFfaW5qZWN0X2ZyYW1lYCBmb3Igd2lmaS4gT2theSwgYnV0IGRvZXMgaXQgaGF2ZSBgc3l6X3BjaV9kZXZpY2VgPyBJJ20gYmV0dGluZyBuby4gSSBkb24ndCB0aGluayBpdCBoYXMgYSBnZW5lcmljIFBDSSBmdXp6ZXIgdGhhdCBjYW4gaW5zdGFudGlhdGUgYXJiaXRyYXJ5IFBDSSBkZXZpY2VzLlxuXG5IbW0sIGJ1dCB3YWl0LCBtYXliZSBpdCBkb2VzPyBJJ20gZ2V0dGluZyBhaGVhZCBvZiBteXNlbGYsIGxldCdzIHJlLWV2YWx1YXRlLiBMZXQgbWUgY2hhbmdlIHRyYWNrcy4gTGV0J3MgdHJ5IGZpZ3VyaW5nIG91dCBpZiB0aGVyZSdzIGEgd2F5IHRvIHRyaWdnZXIgYG1seHN3X3BjaV9wcm9iZWAgZnJvbSB1c2Vyc3BhY2UuIENhbiB3ZSB1c2UgYG5ldGRldnNpbWA/IE5vLCB0aGF0J3MgYSBzZXBhcmF0ZSBkcml2ZXIsIG5vdCBhIHdheSB0byBlbXVsYXRlLiBDYW4gd2UgdXNlIGBkZXZsaW5rYCB0byBpbnN0YW50aWF0ZSBtbHhzdz8gVGhhdCBzZWVtcyBsaWtlIHRoZSBtb3N0IGxpa2VseSBwYXRoLiBUaW1lIHRvIGV4YW1pbmUgdGhlIGBkZXZsaW5rYCBvcGVyYXRpb25zIHdpdGhpbiBgbWx4c3dgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzY4NiwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ4OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQwODozMjo0NC40NTkyMjM4MDNaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY5NjQ3NjI2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRldmxpbmtfb3BzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9jb3JlLmM9MTcyMT1tbHhzd19kZXZsaW5rX3RyYXBfcG9saWNlcl9jb3VudGVyX2dldChzdHJ1Y3QgZGV2bGluayAqZGV2bGluayxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmUuYy0xNzMzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmUuYzoxNzM0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgZGV2bGlua19vcHMgbWx4c3dfZGV2bGlua19vcHMgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvY29yZS5jLTE3MzUtXFx0LnJlbG9hZF9hY3Rpb25zXFx0XFx0PSBCSVQoREVWTElOS19SRUxPQURfQUNUSU9OX0RSSVZFUl9SRUlOSVQpIHxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmUuYz0yMDk1PV9fbWx4c3dfY29yZV9idXNfZGV2aWNlX3JlZ2lzdGVyKGNvbnN0IHN0cnVjdCBtbHhzd19idXNfaW5mbyAqbWx4c3dfYnVzX2luZm8sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9jb3JlLmMtMjExMy1cXHRcXHRhbGxvY19zaXplID0gc2l6ZW9mKCptbHhzd19jb3JlKSArIG1seHN3X2RyaXZlci1cXHUwMDNlcHJpdl9zaXplO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmUuYzoyMTE0OlxcdFxcdGRldmxpbmsgPSBkZXZsaW5rX2FsbG9jKFxcdTAwMjZtbHhzd19kZXZsaW5rX29wcywgYWxsb2Nfc2l6ZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9jb3JlLmMtMjExNS1cXHRcXHRcXHRcXHRcXHRtbHhzd19idXNfaW5mby1cXHUwMDNlZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmVfbGluZWNhcmRfZGV2LmM9MTExPW1seHN3X2xpbmVjYXJkX2Rldl9kZXZsaW5rX2ZsYXNoX3VwZGF0ZShzdHJ1Y3QgZGV2bGluayAqZGV2bGluayxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmVfbGluZWNhcmRfZGV2LmMtMTIxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmVfbGluZWNhcmRfZGV2LmM6MTIyOnN0YXRpYyBjb25zdCBzdHJ1Y3QgZGV2bGlua19vcHMgbWx4c3dfbGluZWNhcmRfZGV2X2Rldmxpbmtfb3BzID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmVfbGluZWNhcmRfZGV2LmMtMTIzLVxcdC5pbmZvX2dldFxcdFxcdFxcdD0gbWx4c3dfbGluZWNhcmRfZGV2X2RldmxpbmtfaW5mb19nZXQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9jb3JlX2xpbmVjYXJkX2Rldi5jPTEyNz1zdGF0aWMgaW50IG1seHN3X2xpbmVjYXJkX2JkZXZfcHJvYmUoc3RydWN0IGF1eGlsaWFyeV9kZXZpY2UgKmFkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9jb3JlX2xpbmVjYXJkX2Rldi5jLTEzNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9jb3JlX2xpbmVjYXJkX2Rldi5jOjEzNzpcXHRkZXZsaW5rID0gZGV2bGlua19hbGxvYyhcXHUwMDI2bWx4c3dfbGluZWNhcmRfZGV2X2Rldmxpbmtfb3BzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmVfbGluZWNhcmRfZGV2LmMtMTM4LVxcdFxcdFxcdFxcdHNpemVvZigqbGluZWNhcmRfZGV2KSwgXFx1MDAyNmFkZXYtXFx1MDAzZWRldik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDA4OjMyOjQ0LjUyODg3Njg4OVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MDQwNjY2MDk5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkRlYnVnZ2luZyBhIFBvdGVudGlhbCBtbHhzdyBEcml2ZXIgSXNzdWUqKlxuXG5Pa2F5LCBzbyBEZXZsaW5rIGlzbid0IGFib3V0IGNyZWF0aW5nIG5ldyBkZXZpY2VzLCBpdCdzIGFib3V0IG1hbmFnaW5nIGV4aXN0aW5nIG9uZXMuIEhtbSwgYnV0IHRoZW4uLi4gd2FzIHRoYXQgYSBzeXpib3QgcmVwb3J0IGFib3V0IGEgYnVnIGluIGBtbHhzd19wY2lfY3FfbmFwaV90ZWFyZG93bmA/IFRoYXQgc291bmRzIGltcG9ydGFudC4gTGV0IG1lIGxvb2sgZm9yIHN5emJvdCByZXBvcnRzIHJlbGF0ZWQgdG8gYG1seHN3YC4gQ3JhcCwgbm8gaW50ZXJuZXQuIE9rYXksIHBsYW4gQjogSSBjYW4gc2VhcmNoIHRoZSBrZXJuZWwgc291cmNlIGxvY2FsbHkgZm9yIHRoYXQgZnVuY3Rpb24sIG9yIG1heWJlIGBtbHhzd19wY2lfY3FfbmFwaV9kaXNhYmxlYC4gV2FpdCBhIHNlY29uZOKApiB0aGUgcGF0Y2ggSSdtIGxvb2tpbmcgZm9yIGlzIGFjdHVhbGx5IGFscmVhZHkgYXBwbGllZCBpbiBteSB3b3Jrc3BhY2UuXG5cbkFscmlnaHQsIGlmIHRoZSBwYXRjaCBpcyBhbHJlYWR5IGFwcGxpZWQsIGhvdyBlbHNlIGNvdWxkIHRoYXQgY29kZSBiZSBoaXQ/IElzIHRoZXJlIGFub3RoZXIgd2F5IHRvIGdldCB0byB0aGF0IGNvZGU/IFBlcmhhcHMgYG1seHN3YCBpcyBhIHBsYXRmb3JtIGRldmljZSBzb21ldGltZXM/IE5vLCBJJ20gcHJldHR5IHN1cmUgaXQncyBQQ0kgYW5kIEkyQywgZ2VuZXJhbGx5LlxuXG5XYWl0IGEgc2Vjb25kLCBzeXprYWxsZXIgaGFzIGEgUENJIGZ1enplciwgcmlnaHQ/IERvZXMgaXQgdXNlIHNvbWV0aGluZyBsaWtlIGBzeXpfcGNpX2RldmljZWA/IE5vLCB3YWl0LCBzeXprYWxsZXIgdXNlcyBgdmhjaWAgZm9yIFVTQi4gRm9yIFBDSSwgSSB0aG91Z2h0IG1heWJlIGl0IHVzZXMgYHZmaW9gPyBOb3BlLCBgdmZpb2AgbGV0cyB1c2Vyc3BhY2UgZHJpdmUgYSByZWFsIFBDSSBkZXZpY2UsIGl0IGRvZXNuJ3QgcmVhbGx5IGxldCB5b3UgKmluamVjdCogYSBQQ0kgZGV2aWNlIGludG8gdGhlIGtlcm5lbC4gXG5cbkFoLCB3YWl0ISBJIHJlY2FsbCByZWFkaW5nIHRoYXQgdGhlcmUgd2FzIGEgUENJIGZ1enplciBhZGRlZCB0byBzeXprYWxsZXIgcmVjZW50bHkuIERvZXMgaXQgdXNlIGEgY3VzdG9tIFFFTVUgZGV2aWNlLCBvciBkaWQgaXQgbGV2ZXJhZ2UgdGhlIGBwY2lfZW5kcG9pbnRgIGZyYW1ld29yaz8gT2theSwgdGltZSB0byBzZWUgaWYgdGhlcmUncyBhbnkgUENJIGluamVjdGlvbiBjb2RlIHdpdGhpbiB0aGUga2VybmVsIGl0c2VsZi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTkzOTUsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyODksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMDg6MzI6NTAuNTY5NTQ1Mjk4WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDA1ODAxNDcwLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwY2lfaW5qZWN0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMDg6MzI6NTIuNTc1MzU0NTk4WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY0MTA3OTQ4NjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIG15c2VsZjpcblxuKipJbnZlc3RpZ2F0aW5nIFBDSSBEcml2ZXIgSW1wbGVtZW50YXRpb25zKipcblxuT2theSwgc28gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgUENJIGRyaXZlciBsYW5kc2NhcGUsIHBhcnRpY3VsYXJseSBhbnkgZXhhbXBsZXMgdGhhdCBtaWdodCBiZSB1c2VmdWwgZm9yIHRlc3Rpbmcgb3Igc2VydmUgYXMgZHVtbXkgaW1wbGVtZW50YXRpb25zLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGhlYWQgc3RyYWlnaHQgdG8gdGhlIHNvdXJjZS4gTGV0J3Mgc2VlLi4uIHRoZSBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IHdvdWxkIGJlIHdpdGhpbiB0aGUga2VybmVsJ3Mgc291cmNlIGNvZGUuIEknbGwgbmVlZCB0byBuYXZpZ2F0ZSB0byB0aGUgYGRyaXZlcnMvcGNpL2AgZGlyZWN0b3J5LiBUaGF0IGRpcmVjdG9yeSBpcyB0eXBpY2FsbHkgdGhlIGNlbnRyYWwgcmVwb3NpdG9yeSBmb3IgUENJLXJlbGF0ZWQgZHJpdmVycy4gSXQgc2hvdWxkIGhvdXNlIHRoZSBjb3JlIFBDSSBkcml2ZXIgY29kZSwgYXMgd2VsbCBhcyBhbnkgc3ViLWRyaXZlcnMgdGhhdCBoYW5kbGUgc3BlY2lmaWMgUENJIGRldmljZXMuIE15IHNwZWNpZmljIGdvYWwgaXMgdG8gaWRlbnRpZnkgYW5kIGV4YW1pbmUgYW55IGRyaXZlcnMgaW4gdGhhdCBkaXJlY3Rvcnkgd2hpY2ggbWlnaHQgYmUgaW50ZW50aW9uYWxseSBzaW1wbGUsIGRlc2lnbmVkIGZvciB0ZXN0aW5nIHRoZSBQQ0kgY29yZSBmdW5jdGlvbmFsaXR5LCBvciBzZXJ2aW5nIGFzIGEgdGVtcGxhdGUgdGhhdCBjb3VsZCBhY3QgYXMgYSAnZHVtbXknIGRyaXZlci4gSXQncyBvZnRlbiB1c2VmdWwgdG8gaGF2ZSBhIHNldCBvZiBtaW5pbWFsIGV4YW1wbGVzIHRvIGxlYXJuIHRoZSBrZXkgQVBJIGNhbGxzLCBhbmQgZm9yIHJhcGlkIHByb3RvdHlwaW5nLiBIb3BlZnVsbHksIHRoZXJlIGFyZSBzb21lIHdlbGwtY29tbWVudGVkIHRlc3QgZHJpdmVycyB0aGF0IGNsZWFybHkgaWxsdXN0cmF0ZSBob3cgdG8gaW50ZXJhY3Qgd2l0aCB0aGUgUENJIHN1YnN5c3RlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjAwNzcsIk91dHB1dFRva2VucyI6MjYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQwODozMjo1OC45ODYxNTE5NzlaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyNjMxNTgwOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkdW1teVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3BjaS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvcGNpLWRyYTd4eC5jPTE5MD1zdGF0aWMgaW50IGRyYTd4eF9wY2llX2ludHhfbWFwKHN0cnVjdCBpcnFfZG9tYWluICpkb21haW4sIHVuc2lnbmVkIGludCBpcnEsXFxuLS1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2ktZHJhN3h4LmMtMTkyLXtcXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2ktZHJhN3h4LmM6MTkzOlxcdGlycV9zZXRfY2hpcF9hbmRfaGFuZGxlcihpcnEsIFxcdTAwMjZkdW1teV9pcnFfY2hpcCwgaGFuZGxlX3NpbXBsZV9pcnEpO1xcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL3BjaS1kcmE3eHguYy0xOTQtXFx0aXJxX3NldF9jaGlwX2RhdGEoaXJxLCBkb21haW4tXFx1MDAzZWhvc3RfZGF0YSk7XFxuLS1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2ktaW14Ni5jPTE0ODE9c3RhdGljIHZvaWQgaW14X3BjaWVfaG9zdF9wb3N0X2luaXQoc3RydWN0IGR3X3BjaWVfcnAgKnBwKVxcbi0tXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvcGNpLWlteDYuYy0xNTE1LSAqIHJlZ2lzdGVyIGlzIHJlc2VydmVkLCBzbyB0aGUgZ2VuZXJpYyBEV0MgaW1wbGVtZW50YXRpb24gb2Ygc2VuZGluZyB0aGVcXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2ktaW14Ni5jOjE1MTY6ICogUE1FX1R1cm5fT2ZmIG1lc3NhZ2UgdXNpbmcgYSBkdW1teSBNTUlPIHdyaXRlIGNhbm5vdCBiZSB1c2VkLlxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL3BjaS1pbXg2LmMtMTUxNy0gKi9cXG4tLVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL3BjaWUtZGVzaWdud2FyZS1ob3N0LmM9MTE4Nz1zdGF0aWMgaW50IGR3X3BjaWVfcG1lX3R1cm5fb2ZmKHN0cnVjdCBkd19wY2llICpwY2kpXFxuLS1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2llLWRlc2lnbndhcmUtaG9zdC5jLTEyMTQtXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvcGNpZS1kZXNpZ253YXJlLWhvc3QuYzoxMjE1OlxcdC8qIEEgZHVtbXkgd3JpdGUgaXMgY29udmVydGVkIHRvIGEgTXNnIFRMUCAqL1xcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL3BjaWUtZGVzaWdud2FyZS1ob3N0LmMtMTIxNi1cXHR3cml0ZWwoMCwgbWVtKTtcXG4tLVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvbW9iaXZlaWwvcGNpZS1tb2JpdmVpbC1ob3N0LmM9ODM9c3RhdGljIHZvaWQgbW9iaXZlaWxfcGNpZV9pc3Ioc3RydWN0IGlycV9kZXNjICpkZXNjKVxcbi0tXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9tb2JpdmVpbC9wY2llLW1vYml2ZWlsLWhvc3QuYy0xNDUtXFx0XFx0ICogZnJvbSBNU0kgaGFyZHdhcmUgRklGTy4gU28ga2VlcGluZyB0aGVzZSBmb2xsb3dpbmdcXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL21vYml2ZWlsL3BjaWUtbW9iaXZlaWwtaG9zdC5jOjE0NjpcXHRcXHQgKiB0d28gZHVtbXkgcmVhZHMuXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9tb2JpdmVpbC9wY2llLW1vYml2ZWlsLWhvc3QuYy0xNDctXFx0XFx0ICovXFxuLS1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaS1oeXBlcnYuYz0xNzUxPXN0YXRpYyB1MzIgaHZfY29tcG9zZV9tc2lfcmVxX3YxKFxcbi0tXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2ktaHlwZXJ2LmMtMTc2MS1cXHQvKlxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpLWh5cGVydi5jOjE3NjI6XFx0ICogQ3JlYXRlIE1TSSB3LyBkdW1teSB2Q1BVIHNldCwgb3ZlcndyaXR0ZW4gYnkgc3Vic2VxdWVudCByZXRhcmdldCBpblxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpLWh5cGVydi5jLTE3NjMtXFx0ICogaHZfaXJxX3VubWFzaygpLlxcbi0tXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2ktaHlwZXJ2LmMtMTc3MS0gKiBUaGUgdkNQVSBzZWxlY3RlZCBieSBodl9jb21wb3NlX211bHRpX21zaV9yZXFfZ2V0X2NwdSgpIGFuZFxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpLWh5cGVydi5jOjE3NzI6ICogaHZfY29tcG9zZV9tc2lfcmVxX2dldF9jcHUoKSBpcyBhIFxcXCJkdW1teVxcXCIgdkNQVSBiZWNhdXNlIHRoZSBmaW5hbCB2Q1BVIHRvIGJlXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2ktaHlwZXJ2LmMtMTc3My0gKiBpbnRlcnJ1cHRlZCBpcyBzcGVjaWZpZWQgbGF0ZXIgaW4gaHZfaXJxX3VubWFzaygpIGFuZCBjb21tdW5pY2F0ZWQgdG8gSHlwZXItVlxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpLWh5cGVydi5jOjE3NzQ6ICogdmlhIHRoZSBIVkNBTExfUkVUQVJHRVRfSU5URVJSVVBUIGh5cGVyY2FsbC4gQnV0IHRoZSBjaG9pY2Ugb2YgZHVtbXkgdkNQVSBpc1xcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpLWh5cGVydi5jLTE3NzUtICogbm90IGlycmVsZXZhbnQgYmVjYXVzZSBIeXBlci1WIGNob29zZXMgdGhlIHBoeXNpY2FsIENQVSB0byBoYW5kbGUgdGhlXFxuLS1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaS1oeXBlcnYuYy0xNzc4LSAqIGJ1dCBhc3NpZ25pbmcgdG9vIG1hbnkgdlBDSSBkZXZpY2UgaW50ZXJydXB0cyB0byB0aGUgc2FtZSBwQ1BVIGNhbiBjYXVzZSBhXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2ktaHlwZXJ2LmM6MTc3OTogKiBwZXJmb3JtYW5jZSBib3R0bGVuZWNrLiBTbyB3ZSBzcHJlYWQgb3V0IHRoZSBkdW1teSB2Q1BVcyB0byBpbmZsdWVuY2UgSHlwZXItVlxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpLWh5cGVydi5jLTE3ODAtICogdG8gc3ByZWFkIG91dCB0aGUgcENQVXMgdGhhdCBpdCBzZWxlY3RzLlxcbi0tXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2ktaHlwZXJ2LmMtMTc4Mi0gKiBGb3IgdGhlIHNpbmdsZS1NU0kgYW5kIE1TSS1YIGNhc2VzLCBpdCdzIE9LIGZvciBodl9jb21wb3NlX21zaV9yZXFfZ2V0X2NwdSgpXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2ktaHlwZXJ2LmM6MTc4MzogKiB0byBhbHdheXMgcmV0dXJuIHRoZSBzYW1lIGR1bW15IHZDUFUsIGJlY2F1c2UgYSBzZWNvbmQgY2FsbCB0b1xcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpLWh5cGVydi5jLTE3ODQtICogaHZfY29tcG9zZV9tc2lfbXNnKCkgY29udGFpbnMgdGhlIFxcXCJyZWFsXFxcIiB2Q1BVLCBjYXVzaW5nIEh5cGVyLVYgdG8gY2hvb3NlIGFcXG4tLVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpLWh5cGVydi5jLTE3ODYtICogaHZfY29tcG9zZV9tc2lfbXNnKCkgZXhpdHMgd2l0aG91dCBzZW5kaW5nIGEgbWVzc2FnZSB0byB0aGUgdlBDSSBWU1AsIHNvIHRoZVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpLWh5cGVydi5jOjE3ODc6ICogb3JpZ2luYWwgZHVtbXkgdkNQVSBpcyB1c2VkLiBUaGlzIGR1bW15IHZDUFUgbXVzdCBiZSByb3VuZC1yb2JpbidlZCBzbyB0aGF0XFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2ktaHlwZXJ2LmMtMTc4OC0gKiB0aGUgcENQVXMgYXJlIHNwcmVhZCBvdXQuIEFsbCBpbnRlcnJ1cHRzIGZvciBhIG11bHRpLU1TSSBkZXZpY2UgZW5kIHVwIHVzaW5nXFxuLS1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaS1oeXBlcnYuYy0xNzk0LSAqIGVuaGFuY2VtZW50IGlzIHBsYW5uZWQgZm9yIGEgZnV0dXJlIHZlcnNpb24uIFdpdGggdGhhdCBlbmhhbmNlbWVudCwgdGhlXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2ktaHlwZXJ2LmM6MTc5NTogKiBkdW1teSB2Q1BVIHNlbGVjdGlvbiB3b24ndCBtYXR0ZXIsIGFuZCBpbnRlcnJ1cHRzIGZvciB0aGUgc2FtZSBtdWx0aS1NU0lcXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaS1oeXBlcnYuYy0xNzk2LSAqIGRldmljZSB3aWxsIGJlIHNwcmVhZCBhY3Jvc3MgbXVsdGlwbGUgcENQVXMuXFxuLS1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaS1oeXBlcnYuYy0xNzk5LS8qXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2ktaHlwZXJ2LmM6MTgwMDogKiBDcmVhdGUgTVNJIHcvIGR1bW15IHZDUFUgc2V0IHRhcmdldGluZyBqdXN0IG9uZSB2Q1BVLCBvdmVyd3JpdHRlblxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpLWh5cGVydi5jLTE4MDEtICogYnkgc3Vic2VxdWVudCByZXRhcmdldCBpbiBodl9pcnFfdW5tYXNrKCkuXFxuLS1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaS1oeXBlcnYuYz0xODAzPXN0YXRpYyBpbnQgaHZfY29tcG9zZV9tc2lfcmVxX2dldF9jcHUoY29uc3Qgc3RydWN0IGNwdW1hc2sgKmFmZmluaXR5KVxcbi0tXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2ktaHlwZXJ2LmMtMTgwOC0vKlxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpLWh5cGVydi5jOjE4MDk6ICogTWFrZSBzdXJlIHRoZSBkdW1teSB2Q1BVIHZhbHVlcyBmb3IgbXVsdGktTVNJIGRvbid0IGFsbCBwb2ludCB0byB2Q1BVMC5cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaS1oeXBlcnYuYy0xODEwLSAqL1xcbi0tXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2ktaHlwZXJ2LmM9MTg3NT1zdGF0aWMgdm9pZCBodl9jb21wb3NlX21zaV9tc2coc3RydWN0IGlycV9kYXRhICpkYXRhLCBzdHJ1Y3QgbXNpX21zZyAqbXNnKVxcbi0tXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2ktaHlwZXJ2LmMtMTk1Ni1cXHRcXHQvKlxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpLWh5cGVydi5jOjE5NTc6XFx0XFx0ICogVGhlIHZlY3RvciB3ZSBzZWxlY3QgaGVyZSBpcyBhIGR1bW15IHZhbHVlLiAgVGhlIGNvcnJlY3RcXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaS1oeXBlcnYuYy0xOTU4LVxcdFxcdCAqIHZhbHVlIGdldHMgc2VudCB0byB0aGUgaHlwZXJ2aXNvciBpbiB1bm1hc2soKS4gIFRoaXMgbmVlZHNcXG4tLVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpZS1hbHRlcmEuYz0zNjY9c3RhdGljIHZvaWQgczEwX3RscF93cml0ZV9wYWNrZXQoc3RydWN0IGFsdGVyYV9wY2llICpwY2llLCB1MzIgKmhlYWRlcnMsXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2llLWFsdGVyYS5jOjM2NzpcXHRcXHRcXHRcXHQgdTMyIGRhdGEsIGJvb2wgZHVtbXkpXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2llLWFsdGVyYS5jLTM2OC17XFxuLS1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaWUtYWx0ZXJhLmM9Nzg2PXN0YXRpYyBpbnQgYWx0ZXJhX3BjaWVfaW50eF9tYXAoc3RydWN0IGlycV9kb21haW4gKmRvbWFpbiwgdW5zaWduZWQgaW50IGlycSxcXG4tLVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpZS1hbHRlcmEuYy03ODgte1xcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpZS1hbHRlcmEuYzo3ODk6XFx0aXJxX3NldF9jaGlwX2FuZF9oYW5kbGVyKGlycSwgXFx1MDAyNmR1bW15X2lycV9jaGlwLCBoYW5kbGVfc2ltcGxlX2lycSk7XFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2llLWFsdGVyYS5jLTc5MC1cXHRpcnFfc2V0X2NoaXBfZGF0YShpcnEsIGRvbWFpbi1cXHUwMDNlaG9zdF9kYXRhKTtcXG4tLVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpZS1tZWRpYXRlay5jPTU1ND1zdGF0aWMgaW50IG10a19wY2llX2ludHhfbWFwKHN0cnVjdCBpcnFfZG9tYWluICpkb21haW4sIHVuc2lnbmVkIGludCBpcnEsXFxuLS1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaWUtbWVkaWF0ZWsuYy01NTYte1xcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpZS1tZWRpYXRlay5jOjU1NzpcXHRpcnFfc2V0X2NoaXBfYW5kX2hhbmRsZXIoaXJxLCBcXHUwMDI2ZHVtbXlfaXJxX2NoaXAsIGhhbmRsZV9zaW1wbGVfaXJxKTtcXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaWUtbWVkaWF0ZWsuYy01NTgtXFx0aXJxX3NldF9jaGlwX2RhdGEoaXJxLCBkb21haW4tXFx1MDAzZWhvc3RfZGF0YSk7XFxuLS1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaWUtcm9ja2NoaXAtZXAuYz02NTI9c3RhdGljIGludCByb2NrY2hpcF9wY2llX2VwX3NldHVwX2lycShzdHJ1Y3QgcGNpX2VwYyAqZXBjKVxcbi0tXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2llLXJvY2tjaGlwLWVwLmMtNjc0LVxcdCAqIGlzIGhpZ2ggYW5kIHdpbGwgdHJpZ2dlciB0aGUgcGVyc3RfaXJxIGhhbmRsZXIuIFNvIHRyZWF0IHRoaXMgaW5pdGlhbFxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpZS1yb2NrY2hpcC1lcC5jOjY3NTpcXHQgKiBJUlEgYXMgYSBkdW1teSBvbmUgYnkgZmFraW5nIHRoZSBob3N0IGFzc2VydGluZyBQRVJTVCMuXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2llLXJvY2tjaGlwLWVwLmMtNjc2LVxcdCAqL1xcbi0tXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2llLXJvY2tjaGlwLWhvc3QuYz02Njk9c3RhdGljIGludCByb2NrY2hpcF9wY2llX2ludHhfbWFwKHN0cnVjdCBpcnFfZG9tYWluICpkb21haW4sIHVuc2lnbmVkIGludCBpcnEsXFxuLS1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaWUtcm9ja2NoaXAtaG9zdC5jLTY3MS17XFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2llLXJvY2tjaGlwLWhvc3QuYzo2NzI6XFx0aXJxX3NldF9jaGlwX2FuZF9oYW5kbGVyKGlycSwgXFx1MDAyNmR1bW15X2lycV9jaGlwLCBoYW5kbGVfc2ltcGxlX2lycSk7XFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2llLXJvY2tjaGlwLWhvc3QuYy02NzMtXFx0aXJxX3NldF9jaGlwX2RhdGEoaXJxLCBkb21haW4tXFx1MDAzZWhvc3RfZGF0YSk7XFxuLS1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaWUteGlsaW54LmM9MzIxPXN0YXRpYyBpbnQgeGlsaW54X3BjaWVfaW50eF9tYXAoc3RydWN0IGlycV9kb21haW4gKmRvbWFpbiwgdW5zaWduZWQgaW50IGlycSxcXG4tLVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpZS14aWxpbnguYy0zMjMte1xcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpZS14aWxpbnguYzozMjQ6XFx0aXJxX3NldF9jaGlwX2FuZF9oYW5kbGVyKGlycSwgXFx1MDAyNmR1bW15X2lycV9jaGlwLCBoYW5kbGVfc2ltcGxlX2lycSk7XFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2llLXhpbGlueC5jLTMyNS1cXHRpcnFfc2V0X2NoaXBfZGF0YShpcnEsIGRvbWFpbi1cXHUwMDNlaG9zdF9kYXRhKTtcXG4tLVxcbmRyaXZlcnMvcGNpL3BjaS1kcml2ZXIuYz0xMzY9c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICpwY2lfbWF0Y2hfZGV2aWNlKHN0cnVjdCBwY2lfZHJpdmVyICpkcnYsXFxuLS1cXG5kcml2ZXJzL3BjaS9wY2ktZHJpdmVyLmMtMTc1LVxcbmRyaXZlcnMvcGNpL3BjaS1kcml2ZXIuYzoxNzY6XFx0LyogZHJpdmVyX292ZXJyaWRlIHdpbGwgYWx3YXlzIG1hdGNoLCBzZW5kIGEgZHVtbXkgaWQgKi9cXG5kcml2ZXJzL3BjaS9wY2ktZHJpdmVyLmMtMTc3LVxcdGlmIChyZXQgXFx1MDAzZSAwKVxcbi0tXFxuZHJpdmVycy9wY2kvcHdyY3RybC9wY2ktcHdyY3RybC10Yzk1NjMuYz01MzM9c3RhdGljIGludCB0Yzk1NjNfcHdyY3RybF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9wY2kvcHdyY3RybC9wY2ktcHdyY3RybC10Yzk1NjMuYy01NTUtXFxuZHJpdmVycy9wY2kvcHdyY3RybC9wY2ktcHdyY3RybC10Yzk1NjMuYzo1NTY6XFx0dGM5NTYzLVxcdTAwM2VjbGllbnQgPSBpMmNfbmV3X2R1bW15X2RldmljZSh0Yzk1NjMtXFx1MDAzZWFkYXB0ZXIsIGFkZHIpO1xcbmRyaXZlcnMvcGNpL3B3cmN0cmwvcGNpLXB3cmN0cmwtdGM5NTYzLmMtNTU3LVxcdGlmIChJU19FUlIodGM5NTYzLVxcdTAwM2VjbGllbnQpKSB7XFxuLS1cXG5kcml2ZXJzL3BjaS9zZXR1cC1idXMuYz01Nzc9c3RhdGljIHZvaWQgX19hc3NpZ25fcmVzb3VyY2VzX3NvcnRlZChzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkLFxcbi0tXFxuZHJpdmVycy9wY2kvc2V0dXAtYnVzLmMtNjA1LVxcdExJU1RfSEVBRChsb2NhbF9mYWlsX2hlYWQpO1xcbmRyaXZlcnMvcGNpL3NldHVwLWJ1cy5jOjYwNjpcXHRMSVNUX0hFQUQoZHVtbXlfaGVhZCk7XFxuZHJpdmVycy9wY2kvc2V0dXAtYnVzLmMtNjA3LVxcdHN0cnVjdCBwY2lfZGV2X3Jlc291cmNlICpzYXZlX3JlcztcXG4tLVxcbmRyaXZlcnMvcGNpL3NldHVwLWJ1cy5jLTYxNC1cXHRpZiAoIXJlYWxsb2NfaGVhZClcXG5kcml2ZXJzL3BjaS9zZXR1cC1idXMuYzo2MTU6XFx0XFx0cmVhbGxvY19oZWFkID0gXFx1MDAyNmR1bW15X2hlYWQ7XFxuZHJpdmVycy9wY2kvc2V0dXAtYnVzLmMtNjE2LVxcbi0tXFxuZHJpdmVycy9wY2kvdmdhYXJiLmM9MTY3PWludCB2Z2FfcmVtb3ZlX3ZnYWNvbihzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG4tLVxcbmRyaXZlcnMvcGNpL3ZnYWFyYi5jLTE3Ni1cXHRpZiAoY29uX2lzX2JvdW5kKFxcdTAwMjZ2Z2FfY29uKSlcXG5kcml2ZXJzL3BjaS92Z2FhcmIuYzoxNzc6XFx0XFx0cmV0ID0gZG9fdGFrZV9vdmVyX2NvbnNvbGUoXFx1MDAyNmR1bW15X2NvbiwgMCxcXG5kcml2ZXJzL3BjaS92Z2FhcmIuYy0xNzgtXFx0XFx0XFx0XFx0XFx0ICAgTUFYX05SX0NPTlNPTEVTIC0gMSwgMSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDA4OjMyOjU5LjExMjQ3NDIxN1oiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NjE1OTM2MDgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTWVsbGFub3ggU3dpdGNoIEJ1ZyBSZXBvcnQqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGBtbHhzd19wY2lfY3FfbmFwaV90ZWFyZG93bmAgYnVnIHJlcG9ydCwgYW5kIHNvbWV0aGluZyBkb2Vzbid0IHF1aXRlIGFkZCB1cC4gSSBrbm93IHN5emthbGxlciBkb2Vzbid0IGhhdmUgYSBnZW5lcmljIFBDSSBpbmplY3Rpb24gbWVjaGFuaXNtIGluIHRoZSBrZXJuZWw7IHRoYXQncyBqdXN0IG5vdCBob3cgaXQgd29ya3MuIEFuZCwgc3l6a2FsbGVyIHVzdWFsbHkgcnVucyBvbiBHQ0UuIEdDRSBkb2VzIGhhdmUgdmlydHVhbCBQQ0kgZGV2aWNlcywgdGhpbmdzIGxpa2UgdmlydGlvLW5ldCBhbmQgdmlydGlvLWJsaywgYnV0ICpkZWZpbml0ZWx5KiBub3QgTWVsbGFub3ggU3dpdGNoIEFTSUNzLiBTbywgaG93IHRoZSBoZWNrIGRpZCBzeXpib3QgZmluZCBhIGJ1ZyBzcGVjaWZpY2FsbHkgaW4gdGhhdCBkcml2ZXI/IFRoaXMgc21lbGxzIGZpc2h5LlxuXG5IYW5nIG9uLi4uIFwic3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3LlwiIEFoLCBzbyB0aGUgc3l6LWNsdXN0ZXIgaXMgdGVzdGluZyBhIHBhdGNoIHJlbGF0ZWQgdG8gdGhpcy4gT2theSwgc28gcGVyaGFwcyBhbm90aGVyIGZ1enplciBmb3VuZCBpdCwgYW5kIGl0J3MgYmVpbmcgdGVzdGVkIHdpdGggc3l6a2FsbGVyICpub3cqLCBvciBtYXliZSBpdCdzIGEgbWFudWFsIHBhdGNoIGJlaW5nIGV4cGxvcmVkP1xuXG5JZiB0aGlzIGlzIHRydWx5IHVucmVhY2hhYmxlIGluIEdDRSBvciBzdGFuZGFyZCBRRU1VIGNvbmZpZ3VyYXRpb25zLCB0aGVuIEkgbmVlZCB0byBtYXJrIHRoaXMgYXMgYFdvcnRoRnV6emluZz1mYWxzZWAuIEl0J3MgYSB3YXN0ZSBvZiByZXNvdXJjZXMgdG8gZnV6eiBzb21ldGhpbmcgdGhhdCBpcyBjb21wbGV0ZWx5IGluYWNjZXNzaWJsZS5cblxuT2theSwgbGV0J3Mgc3RlcCBiYWNrIGFuZCBjb25zaWRlcjogaXMgdGhlcmUgKmFueSogY2hhbmNlIHRoZSBgbWx4c3dgIGRyaXZlciBpcyByZWFjaGFibGUgd2l0aGluIGEgc3RhbmRhcmQgc2V0dXA/IEkgYWxyZWFkeSBjaGVja2VkIGBuZXRkZXZzaW1gIGFuZCBjYW1lIHVwIGVtcHR5LiBNYXliZSBzb21ldGhpbmcgc2ltaWxhcj8gTm8gZGljZS4gUmlnaHQsIHdoYXQgYWJvdXQgYGRldmxpbmtgPyBDb3VsZCBgbWx4c3dgIGJlIGluc3RhbnRpYXRlZCB2aWEgYGRldmxpbmtgIHNvbWVob3c/IENoZWNraW5nIHRoZSBgZGV2bGlua19vcHNgLCBhbmQgaXQgZG9lc24ndCBhcHBlYXIgdGhlcmUncyBhIHN0cmFpZ2h0Zm9yd2FyZCB3YXkgdG8gaW5zdGFudGlhdGUgYSBkZXZpY2UuXG5cbldhaXQsIGxvb2tpbmcgZGVlcGVyIGludG8gdGhlIGRyaXZlcidzIGNvZGUsIGBtbHhzd19jb3JlX2J1c19kZXZpY2VfcmVnaXN0ZXJgIGlzIGNhbGxlZCBieSBgbWx4c3dfcGNpX3Byb2JlYCBhbmQgYG1seHN3X2kyY19wcm9iZWAuIElzIHRoZXJlICphbm90aGVyKiBjYWxsZXIgb2YgdGhhdCBmdW5jdGlvbiB0aGF0IGNvdWxkIHRyaWdnZXIgdGhlIGlzc3VlPyBJIG5lZWQgdG8gY2hlY2suIFRoaXMgaXMgdGhlIGtleS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjM3NDAsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMDg6MzM6MDUuNzI4NDEzNjA4WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTIxMzIwMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtbHhzd19jb3JlX2J1c19kZXZpY2VfcmVnaXN0ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmUuYz0xNTkzPW1seHN3X2RldmxpbmtfY29yZV9idXNfZGV2aWNlX3JlbG9hZF91cChzdHJ1Y3QgZGV2bGluayAqZGV2bGluaywgZW51bSBkZXZsaW5rX3JlbG9hZF9hY3Rpb24gYWN0aW9uLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvY29yZS5jLTE2MDEtXFx0XFx0XFx0ICAgICBCSVQoREVWTElOS19SRUxPQURfQUNUSU9OX0ZXX0FDVElWQVRFKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9jb3JlLmM6MTYwMjpcXHRlcnIgPSBtbHhzd19jb3JlX2J1c19kZXZpY2VfcmVnaXN0ZXIobWx4c3dfY29yZS1cXHUwMDNlYnVzX2luZm8sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvY29yZS5jLTE2MDMtXFx0XFx0XFx0XFx0XFx0ICAgICBtbHhzd19jb3JlLVxcdTAwM2VidXMsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9jb3JlLmM9MjA5ND1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvY29yZS5jOjIwOTU6X19tbHhzd19jb3JlX2J1c19kZXZpY2VfcmVnaXN0ZXIoY29uc3Qgc3RydWN0IG1seHN3X2J1c19pbmZvICptbHhzd19idXNfaW5mbyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9jb3JlLmMtMjA5Ni1cXHRcXHRcXHRcXHQgY29uc3Qgc3RydWN0IG1seHN3X2J1cyAqbWx4c3dfYnVzLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvY29yZS5jLTIyNDUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvY29yZS5jOjIyNDY6aW50IG1seHN3X2NvcmVfYnVzX2RldmljZV9yZWdpc3Rlcihjb25zdCBzdHJ1Y3QgbWx4c3dfYnVzX2luZm8gKm1seHN3X2J1c19pbmZvLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmUuYy0yMjQ3LVxcdFxcdFxcdFxcdCAgIGNvbnN0IHN0cnVjdCBtbHhzd19idXMgKm1seHN3X2J1cyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmUuYy0yMjU1LWFnYWluOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmUuYzoyMjU2OlxcdGVyciA9IF9fbWx4c3dfY29yZV9idXNfZGV2aWNlX3JlZ2lzdGVyKG1seHN3X2J1c19pbmZvLCBtbHhzd19idXMsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvY29yZS5jLTIyNTctXFx0XFx0XFx0XFx0XFx0ICAgICAgIGJ1c19wcml2LCByZWxvYWQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9jb3JlLmMtMjI1OS1cXHQvKiAtRUFHQUlOIGlzIHJldHVybmVkIGluIGNhc2UgdGhlIEZXIHdhcyB1cGRhdGVkLiBGVyBuZWVkc1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmUuYzoyMjYwOlxcdCAqIGEgcmVzZXQsIHNvIGxldHMgdHJ5IHRvIGNhbGwgX19tbHhzd19jb3JlX2J1c19kZXZpY2VfcmVnaXN0ZXIoKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmUuYy0yMjYxLVxcdCAqIGFnYWluLlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvY29yZS5jLTIyNjktfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmUuYzoyMjcwOkVYUE9SVF9TWU1CT0wobWx4c3dfY29yZV9idXNfZGV2aWNlX3JlZ2lzdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9jb3JlLmMtMjI3MS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmUuaD01OD1pbnQgbWx4c3dfY29yZV9md19mbGFzaChzdHJ1Y3QgbWx4c3dfY29yZSAqbWx4c3dfY29yZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmUuaC02Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9jb3JlLmg6NjM6aW50IG1seHN3X2NvcmVfYnVzX2RldmljZV9yZWdpc3Rlcihjb25zdCBzdHJ1Y3QgbWx4c3dfYnVzX2luZm8gKm1seHN3X2J1c19pbmZvLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmUuaC02NC1cXHRcXHRcXHRcXHQgICBjb25zdCBzdHJ1Y3QgbWx4c3dfYnVzICptbHhzd19idXMsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9pMmMuYz02MzM9c3RhdGljIGludCBtbHhzd19pMmNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2kyYy5jLTcyMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9pMmMuYzo3MjI6XFx0ZXJyID0gbWx4c3dfY29yZV9idXNfZGV2aWNlX3JlZ2lzdGVyKFxcdTAwMjZtbHhzd19pMmMtXFx1MDAzZWJ1c19pbmZvLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2kyYy5jLTcyMy1cXHRcXHRcXHRcXHRcXHQgICAgIFxcdTAwMjZtbHhzd19pMmNfYnVzLCBtbHhzd19pMmMsIGZhbHNlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvcGNpLmM9MjQzMD1zdGF0aWMgaW50IG1seHN3X3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvcGNpLmMtMjQ4OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuYzoyNDg5OlxcdGVyciA9IG1seHN3X2NvcmVfYnVzX2RldmljZV9yZWdpc3RlcihcXHUwMDI2bWx4c3dfcGNpLVxcdTAwM2VidXNfaW5mbyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuYy0yNDkwLVxcdFxcdFxcdFxcdFxcdCAgICAgXFx1MDAyNm1seHN3X3BjaV9idXMsIG1seHN3X3BjaSwgZmFsc2UsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuYz0yNTMzPXN0YXRpYyB2b2lkIG1seHN3X3BjaV9yZXNldF9kb25lKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvcGNpLmMtMjUzNy1cXHRtbHhzd19wY2ktXFx1MDAzZXNraXBfcmVzZXQgPSB0cnVlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3BjaS5jOjI1Mzg6XFx0bWx4c3dfY29yZV9idXNfZGV2aWNlX3JlZ2lzdGVyKFxcdTAwMjZtbHhzd19wY2ktXFx1MDAzZWJ1c19pbmZvLCBcXHUwMDI2bWx4c3dfcGNpX2J1cyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuYy0yNTM5LVxcdFxcdFxcdFxcdCAgICAgICBtbHhzd19wY2ksIGZhbHNlLCBOVUxMLCBOVUxMKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMDg6MzM6MDUuNzg3NjMyNzk5WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU5MDM0MzkzMDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW52ZXN0aWdhdGlvbiBpbnRvIERyaXZlciBJbnN0YW50aWF0aW9uKipcblxuT2theSwgc28gdGhpcyBkcml2ZXIncyBwcm9iZSBmdW5jdGlvbiBzZWVtcyB0byBvbmx5IGJlIGNhbGxlZCBieSBQQ0kgYW5kIEkyQyBwcm9iZXMsIHdoaWNoIG1lYW5zIHdpdGhvdXQgYSBwaHlzaWNhbCBQQ0kgb3IgSTJDIGRldmljZSBwcmVzZW50LCBpdCdzIG5vdCBnb2luZyB0byBnZXQgbG9hZGVkLiBNeSBmaXJzdCB0aG91Z2h0IGlzIHdoZXRoZXIgU3l6a2FsbGVyIGNhbiBldmVuIGhlbHAgaGVyZS4gQ2FuIGl0IGluc3RhbnRpYXRlIGEgZHVtbXkgSTJDIGRldmljZT8gRG9lcyBTeXprYWxsZXIgaGF2ZSBzb21ldGhpbmcgbGlrZSBhIGBzeXpfaTJjX3NldHVwYCBjYWxsPyBMZXQgbWUgcXVpY2tseSBjaGVjayBpZiBTeXprYWxsZXIgc3VwcG9ydHMgSTJDIGZ1enppbmcuLi4gTm9wZS4gVXN1YWxseSBJMkMgZGV2aWNlcyBjb21lIHVwIHRocm91Z2ggZGV2aWNlIHRyZWVzLCBBQ1BJIG9yIGJ5IHdyaXRpbmcgdG8gYC9zeXMvYnVzL2kyYy9kZXZpY2VzL2kyYy0qL25ld19kZXZpY2VgLlxuXG5XYWl0IGEgbWludXRlLi4uIHRoYXQgYC9zeXMvYnVzL2kyYy9kZXZpY2VzL2kyYy0qL25ld19kZXZpY2VgIHdyaXRlLi4uIHRoYXQgKmNvdWxkKiBpbnN0YW50aWF0ZSBhbiBJMkMgZGV2aWNlLCBjb3VsZG4ndCBpdD8gT2theSwgdGhhdCdzIHByb21pc2luZy4gTm93LCB0byBzZWUgaWYgdGhlcmUncyBhbnkgSTJDIGRyaXZlciBJIGNhbiBsZXZlcmFnZS4gTGV0IG1lIHNlZSBpZiB0aGUgYG1seHN3YCBkcml2ZXJzIGhhdmUgYW4gSTJDIGRyaXZlci4gQWgsIHllcyEgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2kyYy5jYCBleGlzdHMuIEV4Y2VsbGVudC4gQ2FuIFN5emthbGxlciBub3cgdXNlIHRoaXMgdG8gaW5zdGFudGlhdGUgaXQgdGhyb3VnaCB0aGUgYG5ld19kZXZpY2VgIGludGVyZmFjZT8gSSB3aWxsIG5vdyBpbnZlc3RpZ2F0ZSBgbWx4c3dfaTJjX2RyaXZlcmAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1OTQ5LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDA4OjMzOjExLjY5MTA3NDU0NVoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjUxNjU5OTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWx4c3dfaTJjX2RyaXZlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvaTJjLmM9NzQxPXN0YXRpYyB2b2lkIG1seHN3X2kyY19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2kyYy5jLTc0OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9pMmMuYzo3NTA6aW50IG1seHN3X2kyY19kcml2ZXJfcmVnaXN0ZXIoc3RydWN0IGkyY19kcml2ZXIgKmkyY19kcml2ZXIpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvaTJjLmMtNzUxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2kyYy5jLTc1NS19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvaTJjLmM6NzU2OkVYUE9SVF9TWU1CT0wobWx4c3dfaTJjX2RyaXZlcl9yZWdpc3Rlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvaTJjLmMtNzU3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2kyYy5jOjc1ODp2b2lkIG1seHN3X2kyY19kcml2ZXJfdW5yZWdpc3RlcihzdHJ1Y3QgaTJjX2RyaXZlciAqaTJjX2RyaXZlcilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9pMmMuYy03NTkte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvaTJjLmMtNzYxLX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9pMmMuYzo3NjI6RVhQT1JUX1NZTUJPTChtbHhzd19pMmNfZHJpdmVyX3VucmVnaXN0ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2kyYy5jLTc2My1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2kyYy5oLTEwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2kyYy5oOjExOmludCBtbHhzd19pMmNfZHJpdmVyX3JlZ2lzdGVyKHN0cnVjdCBpMmNfZHJpdmVyICppMmNfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9pMmMuaDoxMjp2b2lkIG1seHN3X2kyY19kcml2ZXJfdW5yZWdpc3RlcihzdHJ1Y3QgaTJjX2RyaXZlciAqaTJjX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvaTJjLmgtMTMtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9pMmMuaD0xNj1zdGF0aWMgaW5saW5lIGludFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2kyYy5oOjE3Om1seHN3X2kyY19kcml2ZXJfcmVnaXN0ZXIoc3RydWN0IGkyY19kcml2ZXIgKmkyY19kcml2ZXIpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvaTJjLmgtMTgte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvaTJjLmg9MjI9c3RhdGljIGlubGluZSB2b2lkXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvaTJjLmg6MjM6bWx4c3dfaTJjX2RyaXZlcl91bnJlZ2lzdGVyKHN0cnVjdCBpMmNfZHJpdmVyICppMmNfZHJpdmVyKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2kyYy5oLTI0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L21pbmltYWwuYz03MjQ9c3RhdGljIGludCBfX2luaXQgbWx4c3dfbV9tb2R1bGVfaW5pdCh2b2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvbWluaW1hbC5jLTczMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9taW5pbWFsLmM6NzMyOlxcdGVyciA9IG1seHN3X2kyY19kcml2ZXJfcmVnaXN0ZXIoXFx1MDAyNm1seHN3X21faTJjX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvbWluaW1hbC5jLTczMy1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvbWluaW1hbC5jPTc0ND1zdGF0aWMgdm9pZCBfX2V4aXQgbWx4c3dfbV9tb2R1bGVfZXhpdCh2b2lkKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L21pbmltYWwuYy03NDUte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L21pbmltYWwuYzo3NDY6XFx0bWx4c3dfaTJjX2RyaXZlcl91bnJlZ2lzdGVyKFxcdTAwMjZtbHhzd19tX2kyY19kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L21pbmltYWwuYy03NDctXFx0bWx4c3dfY29yZV9kcml2ZXJfdW5yZWdpc3RlcihcXHUwMDI2bWx4c3dfbV9kcml2ZXIpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQwODozMzoxMS43NTYyNTg0OTNaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTI5NzUxMTE0NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBhdGNoJ3MgUmVhY2hhYmlsaXR5IGFuZCBGdXp6aW5nIFBvdGVudGlhbCoqXG5cbk9rYXksIHNvIHRoZSBwYXRjaCBpcyBkZWZpbml0ZWx5IGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuY2AsIHdoaWNoIGZvY3VzZXMgbXkgYXR0ZW50aW9uLiBJIGltbWVkaWF0ZWx5IHRoaW5rIHRoYXQgdGhlIEkyQyBkcml2ZXIsIHdoaWNoIHVzZXMgYG1seHN3X2kyY19idXNgLCBpc24ndCBnb2luZyB0byBiZSByZWxldmFudCBoZXJlIGJlY2F1c2UgaXQgZG9lc24ndCBldmVuIGNhbGwgdGhlIGBtbHhzd19wY2lfY3FfbmFwaV9kaXNhYmxlYCBmdW5jdGlvbiB0aGF0IHRoZSBwYXRjaCBtb2RpZmllcy4gVGhlIHBhdGNoIGlzIHRvdWNoaW5nIGBtbHhzd19wY2lfY3FfbmFwaV9kaXNhYmxlYCBhbmQgYG1seHN3X3BjaV9maW5pYCB3aXRoaW4gdGhlIFBDSSBjb2RlLCBzbyBpZiBJMkMgKmNvdWxkKiBiZSBpbnN0YW50aWF0ZWQsIGl0IHN0aWxsIHdvdWxkbid0IGhpdCB0aGUgdGFyZ2V0IG9mIHRoZSBwYXRjaC5cblxuVGhlIG5leHQgcXVlc3Rpb24gaXMsIGNhbiBJIGluc3RhbnRpYXRlIGEgUENJIGRldmljZSBmcm9tIHVzZXJzcGFjZT8gR2VuZXJhbGx5LCBuby4gVW5sZXNzLi4uIHdhaXQsIGRvZXNuJ3Qgc3l6a2FsbGVyIGhhdmUgc29tZSB0cmlja2VyeT8gSSByZW1lbWJlciBoZWFyaW5nIHRoZXkgdXNlIHNvbWUgY3VzdG9tIFBDSSBpbmplY3Rpb24gbWV0aG9kcy4gT2theSwgSSBuZWVkIHRvIGtub3cuXG5cbkknbSB0cnlpbmcgdG8gc2VhcmNoIGZvciBzb21ldGhpbmcgbGlrZSBgc3l6X3BjaWAgd2l0aGluIHRoZSBzeXprYWxsZXIgc291cmNlLCBidXQgSSBjYW4ndC4gSSBkb24ndCBoYXZlIHRoZSBzb3VyY2UgaGFuZHkuIEJ1dCBoZXksIGl0IGhhcyB0aGUgYHN5el9wY2lfZGV2aWNlYCBwc2V1ZG8tc3lzY2FsbCwgd2hpY2ggbWVhbnMgaXQgZGVmaW5pdGVseSBoYW5kbGVzIFBDSSBkZXZpY2VzLiBUaGF0IHBzZXVkby1zeXNjYWxsIGltcGxpZXMgdGhhdCBzeXprYWxsZXIgKmRvZXMqIGluZGVlZCBoYXZlIGl0cyBvd24gcHNldWRvLXN5c2NhbGxzIHN0YXJ0aW5nIHdpdGggYHN5el9gLiBJZiBzeXprYWxsZXIgaGFzIGEgUENJIGZ1enplciwgaXQgY2FuIGluamVjdCBQQ0kgZGV2aWNlcywgdGhlbiBJJ20gaW4gYnVzaW5lc3MuXG5cblNvLCBob3cgZG9lcyBzeXprYWxsZXIgZG8gdGhhdCBpbmplY3Rpb24/IElzIGl0IHVzaW5nIGB2ZmlvYCwgYHBjaV9lbmRwb2ludGAsIG9yIG1heWJlIGEgY3VzdG9tIFFFTVUgZGV2aWNlPyBUaGF0J3MgdGhlIGtleS4gSWYgc3l6a2FsbGVyIGNhbiBpbmplY3QgUENJIGRldmljZXMsIHRoZW4gYG1seHN3X3BjaV9wcm9iZWAgKmlzKiByZWFjaGFibGUsIGF0IGxlYXN0IHdpdGhpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBMZXQncyBhc3N1bWUgdGhhdCBzeXprYWxsZXIgKmNhbiogZnV6eiBQQ0kgZGV2aWNlcy5cblxuSWYgdGhhdCdzIHRoZSBjYXNlLCBhbmQgdGhlIHBhdGNoIG1vZGlmaWVzIGBtbHhzd19wY2lfY3FfbmFwaV9kaXNhYmxlYCBhbmQgYG1seHN3X3BjaV9maW5pYCwgdGhlbiBmdXp6aW5nIHRoaXMgc2VlbXMgd29ydGh3aGlsZS4gSXQgZml4ZXMgYSBkb3VibGUgYG5hcGlfZGlzYWJsZWAgYW5kIGEgbWlzc2luZyBgdGFza2xldF9raWxsYC4gVGhhdCdzIGltcG9ydGFudC5cblxuTm93LCBsZXQncyBsaXN0IG91dCB3aGF0J3MgbW9kaWZpZWQgaGVyZSB0byBzZWUgaWYgdGhlcmUgaXMgcG90ZW50aWFsIGZvciBhIG5pY2UgZnV6ei10YXJnZXQ6XG4qICAgYG1seHN3X3BjaV9jcV9uYXBpX2Rpc2FibGVgXG4qICAgYG1seHN3X3BjaV9jcV9pbml0YFxuKiAgIGBtbHhzd19wY2lfY3FfZmluaWBcbiogICBgbWx4c3dfcGNpX2Fxc19maW5pYFxuKiAgIGBtbHhzd19wY2lfZmluaWBcblxuTmV4dCwgSSBuZWVkIHRvIGNoZWNrIHRoZSBjb25maWdzIHJlcXVpcmVkOlxuKiAgIGBDT05GSUdfTUxYU1dfUENJYFxuKiAgIGBDT05GSUdfTUxYU1dfQ09SRWBcblxuQXJlIHRoZXJlIGFueSBvdGhlciBpbXBvcnRhbnQgY29uZmlncz9cblxuXG4iLCJJbnB1dFRva2VucyI6Mjc1NzMsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMDg6MzM6MjEuMDUzNzcyMzc3WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NjUxNjMwNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTUxYU1dfUENJXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9LY29uZmlnPTI1PWNvbmZpZyBNTFhTV19DT1JFX1RIRVJNQUxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L0tjb25maWctMzItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvS2NvbmZpZzozMzpjb25maWcgTUxYU1dfUENJXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvS2NvbmZpZy0zNC1cXHR0cmlzdGF0ZSBcXFwiUENJIGJ1cyBpbXBsZW1lbnRhdGlvbiBmb3IgTWVsbGFub3ggVGVjaG5vbG9naWVzIFN3aXRjaCBBU0lDc1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMDg6MzM6MjEuMTIwMjk2OTE1WiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyODg5MzkwNjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSdtIGFuIGV4cGVydCBpbiB0aGlzIGZpZWxkLCBwcmVzZW50ZWQgYXMgYSBmaXJzdC1wZXJzb24gc3VtbWFyeTpcblxuKipEaWdnaW5nIGludG8gdGhlIE1lbGxhbm94IEtjb25maWcqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgdGFzayBhdCBoYW5kIGxpa2VseSBpbnZvbHZlcyBjb25maWd1cmluZyBvciB0cm91Ymxlc2hvb3Rpbmcgc29tZXRoaW5nIHJlbGF0ZWQgdG8gTWVsbGFub3ggbmV0d29yayBkcml2ZXJzLCBzcGVjaWZpY2FsbHkgdGhlIG9uZXMgY29ubmVjdGVkIHZpYSBQQ0kuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGNoZWNrIHRoZSBgS2NvbmZpZ2AgZmlsZSB3aXRoaW4gdGhlIE1lbGxhbm94IGRyaXZlciBkaXJlY3RvcnksIGFuZCB0aGF0IHBhdGggaXMgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L0tjb25maWdgLiBgS2NvbmZpZ2AgZmlsZXMgYXJlIHRoZSBicmVhZCBhbmQgYnV0dGVyIGZvciBrZXJuZWwgY29uZmlndXJhdGlvbiwgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIGFsbCB0aGUgY29tcGlsZS10aW1lIG9wdGlvbnMuIEkgd2FudCB0byBzZWUgaG93IGBNTFhTV19QQ0lgIGlzIGRlZmluZWQsIHdoYXQgZGVwZW5kZW5jaWVzIGl0IGhhcywgYW5kIHBlcmhhcHMgd2hhdCBpdCBlbmFibGVzIG9yIGRpc2FibGVzLiBUaGlzIGlzIHRoZSBsb2dpY2FsIGZpcnN0IHN0ZXA7IHRoaXMgd2lsbCB0ZWxsIG1lIHdoYXQgdGhlIGJ1aWxkIHN5c3RlbSBuZWVkcyB0byBrbm93IGFib3V0IHRoZSBmZWF0dXJlLCBob3cgdG8gZW5hYmxlIGl0IGFuZCB3aGF0IGVsc2UgSSBuZWVkIHRvIHRoaW5rIGFib3V0LiBJdOKAmXMgd2hlcmUgYWxsIHRoZSBmdW5kYW1lbnRhbCBvcHRpb25zIGFuZCBkZXBlbmRlbmNpZXMgZm9yIHRoZXNlIGRyaXZlcnMgYXJlIGxhaWQgb3V0LiBJ4oCZbSB0aGlua2luZyBJIHdpbGwgZmluZCBjbHVlcyBhcyB0byB3aGV0aGVyIHRoZSBjb25maWd1cmF0aW9uIGlzIGVuYWJsZWQsIGlmIHRoZXJlIGlzIGEgY29uZmxpY3QsIG9yIGEgZGVwZW5kZW5jeSBpcyBtaXNzaW5nLiBMZXTigJlzIGdldCB0byBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjg5MzgsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQwODozMzoyNS40MDkyMzg4MjFaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Njc3OTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAzMCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAzMDpcXHRcXHQgU2F5IFkgaGVyZSBpZiB5b3Ugd2FudCB0byBhdXRvbWF0aWNhbGx5IGNvbnRyb2wgZmFucyBzcGVlZCBhY2NvcmRpbmdcXG4gIDMxOlxcdFxcdCBhbWJpZW50IHRlbXBlcmF0dXJlIHJlcG9ydGVkIGJ5IEFTSUMuXFxuICAzMjpcXHRcXG4gIDMzOlxcdGNvbmZpZyBNTFhTV19QQ0lcXG4gIDM0OlxcdFxcdHRyaXN0YXRlIFxcXCJQQ0kgYnVzIGltcGxlbWVudGF0aW9uIGZvciBNZWxsYW5veCBUZWNobm9sb2dpZXMgU3dpdGNoIEFTSUNzXFxcIlxcbiAgMzU6XFx0XFx0ZGVwZW5kcyBvbiBQQ0kgXFx1MDAyNlxcdTAwMjYgSEFTX0lPTUVNIFxcdTAwMjZcXHUwMDI2IE1MWFNXX0NPUkVcXG4gIDM2OlxcdFxcdHNlbGVjdCBQQUdFX1BPT0xcXG4gIDM3OlxcdFxcdGRlZmF1bHQgbVxcbiAgMzg6XFx0XFx0aGVscFxcbiAgMzk6XFx0XFx0ICBUaGlzIGlzIFBDSSBidXMgaW1wbGVtZW50YXRpb24gZm9yIE1lbGxhbm94IFRlY2hub2xvZ2llcyBTd2l0Y2ggQVNJQ3MuXFxuICA0MDpcXHRcXG4gIDQxOlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlXFxuICA0MjpcXHRcXHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBtbHhzd19wY2kuXFxuICA0MzpcXHRcXG4gIDQ0OlxcdGNvbmZpZyBNTFhTV19JMkNcXG4gIDQ1OlxcdFxcdHRyaXN0YXRlIFxcXCJJMkMgYnVzIGltcGxlbWVudGF0aW9uIGZvciBNZWxsYW5veCBUZWNobm9sb2dpZXMgU3dpdGNoIEFTSUNzXFxcIlxcbiAgNDY6XFx0XFx0ZGVwZW5kcyBvbiBJMkMgXFx1MDAyNlxcdTAwMjYgTUxYU1dfQ09SRVxcbiAgNDc6XFx0XFx0ZGVmYXVsdCBtXFxuICA0ODpcXHRcXHRoZWxwXFxuICA0OTpcXHRcXHQgIFRoaXMgaXMgSTJDIGJ1cyBpbXBsZW1lbnRhdGlvbiBmb3IgTWVsbGFub3ggVGVjaG5vbG9naWVzIFN3aXRjaCBBU0lDcy5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMDg6MzM6MjUuNDA5MzA3OTExWiIsIlNlcSI6MzMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ4NDg5Mjg2OTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQ29uZmlndXJhdGlvbiBDaGVjayoqXG5cbk9rYXksIHNvIEknbSBmb2N1c2luZyBvbiB0aGUgYE1MWFNXYCBkcml2ZXIgaGVyZSwgYW5kIEkgbmVlZCB0byBtYWtlIHN1cmUgSSd2ZSBnb3QgdGhlIGVzc2VudGlhbHMgZW5hYmxlZC4gUmlnaHQsIGBNTFhTV19QQ0lgIGFuZCBgTUxYU1dfQ09SRWAgYXJlIHRoZSBrZXkgY29tcG9uZW50cy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBib3RoIGFyZSBzZXQgdG8gZW5hYmxlZC4gV2FpdCBhIHNlY29uZCwgcXVpY2sgbWVudGFsIGNoZWNrLi4uIGBNTFhTV19QQ0lgIGluaGVyZW50bHkgZGVwZW5kcyBvbiBgTUxYU1dfQ09SRWAsIHNvIHRoYXQncyBnb29kLiBOb3csIGJlZm9yZSBJIG1vdmUgb24sIEkgc2hvdWxkIHF1aWNrbHkgdmVyaWZ5IGlmIHRoZXJlIGFyZSBhbnkgZHJpdmVyLXNwZWNpZmljIGNvbmZpZ3MgdG8gY29uc2lkZXIuIEZvciBleGFtcGxlLCBpcyB0aGVyZSBhIGBNTFhTV19TUEVDVFJVTWAgb3B0aW9uIEkgbmVlZCB0byBiZSBhd2FyZSBvZj8gQmVzdCB0byBiZSB0aG9yb3VnaCwgZXNwZWNpYWxseSB3aGVuIGRlYWxpbmcgd2l0aCB0aGlzIGxldmVsIG9mIGhhcmR3YXJlIGludGVyYWN0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTU1OCwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjcxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMDg6MzM6MzAuMjU4MjM5NjI2WiIsIlNlcSI6MzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY5NTIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogNTAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgNTA6XFx0XFxuICA1MTpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxcbiAgNTI6XFx0XFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgbWx4c3dfaTJjLlxcbiAgNTM6XFx0XFxuICA1NDpcXHRjb25maWcgTUxYU1dfU1BFQ1RSVU1cXG4gIDU1OlxcdFxcdHRyaXN0YXRlIFxcXCJNZWxsYW5veCBUZWNobm9sb2dpZXMgU3BlY3RydW0gZmFtaWx5IHN1cHBvcnRcXFwiXFxuICA1NjpcXHRcXHRkZXBlbmRzIG9uIE1MWFNXX0NPUkUgXFx1MDAyNlxcdTAwMjYgTUxYU1dfUENJIFxcdTAwMjZcXHUwMDI2IE5FVF9TV0lUQ0hERVYgXFx1MDAyNlxcdTAwMjYgVkxBTl84MDIxUVxcbiAgNTc6XFx0XFx0ZGVwZW5kcyBvbiBQU0FNUExFIHx8IFBTQU1QTEU9blxcbiAgNTg6XFx0XFx0ZGVwZW5kcyBvbiBCUklER0UgfHwgQlJJREdFPW5cXG4gIDU5OlxcdFxcdGRlcGVuZHMgb24gTkVUX0lQR1JFIHx8IE5FVF9JUEdSRT1uXFxuICA2MDpcXHRcXHRkZXBlbmRzIG9uIElQVjZfR1JFIHx8IElQVjZfR1JFPW5cXG4gIDYxOlxcdFxcdGRlcGVuZHMgb24gVlhMQU4gfHwgVlhMQU49blxcbiAgNjI6XFx0XFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxcbiAgNjM6XFx0XFx0c2VsZWN0IEdFTkVSSUNfQUxMT0NBVE9SXFxuICA2NDpcXHRcXHRzZWxlY3QgUEFSTUFOXFxuICA2NTpcXHRcXHRzZWxlY3QgT0JKQUdHXFxuICA2NjpcXHRcXHRzZWxlY3QgTkVUX1BUUF9DTEFTU0lGWSBpZiBQVFBfMTU4OF9DTE9DS1xcbiAgNjc6XFx0XFx0ZGVmYXVsdCBtXFxuICA2ODpcXHRcXHRoZWxwXFxuICA2OTpcXHRcXHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIE1lbGxhbm94IFRlY2hub2xvZ2llc1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQwODozMzozMC4yNTgzMTIwMDZaIiwiU2VxIjozNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODA5NDE3MjU4NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIHRoZSBEZXBlbmRlbmN5IFN0cnVjdHVyZSBvZiBNTFhTVyBEcml2ZXJzKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGUga2VybmVsIGJ1aWxkIGNvbmZpZ3VyYXRpb24sIHNwZWNpZmljYWxseSB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gYE1MWFNXX1NQRUNUUlVNYCBhbmQgYE1MWFNXX1BDSWAuIE15IHVuZGVyc3RhbmRpbmcgaXMgdGhhdCBgTUxYU1dfU1BFQ1RSVU1gICpkZXBlbmRzKiBvbiBgTUxYU1dfUENJYC4gVGhhdCBtYWtlcyBzZW5zZTsgU3BlY3RydW0gZGV2aWNlcyBsaWtlbHkgcmVseSBvbiBQQ0kgZm9yIHRoZWlyIGNvbW11bmljYXRpb24uXG5cbk5vdywgaGVyZSdzIHRoZSBxdWVzdGlvbiB0aGF0J3MgbmFnZ2luZyBhdCBtZTogSWYgSSBzaW1wbHkgZW5hYmxlIGBNTFhTV19QQ0lgLCBJICprbm93KiBpdCBidWlsZHMgYG1seHN3X3BjaS5rb2AuIEJ1dCB3aGF0IGV4YWN0bHkgZG9lcyB0aGF0IG1vZHVsZSAqZG8qIGluIHRoZSBhYnNlbmNlIG9mIGEgbW9yZSBzcGVjaWZpYyBkcml2ZXIsIGxpa2UgYE1MWFNXX1NQRUNUUlVNYCwgdGhhdCBsZXZlcmFnZXMgaXRzIGZ1bmN0aW9uYWxpdHk/IElzIGl0IGp1c3QgYSBwbGFjZWhvbGRlciwgb3IgZG9lcyBpdCBwZXJmb3JtIHNvbWUgZXNzZW50aWFsIGluaXRpYWxpemF0aW9uIG9yIHByb2Jpbmcgb24gaXRzIG93bj8gSXQgc2VlbXMgbGlrZSBpdCBtdXN0IGRvICpzb21ldGhpbmcqIHNpbmNlIGl0IGV4aXN0cy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgaXQncyBwYXNzaXZlIHdpdGhvdXQgYE1MWFNXX1NQRUNUUlVNYCwgb3IgYWN0aXZlLlxuXG5UaGUgbW9zdCBsb2dpY2FsIG5leHQgc3RlcCBpcyB0byBleGFtaW5lIHRoZSBgbWx4c3dfcGNpX3Byb2JlYCBmdW5jdGlvbi4gSSBzaG91bGQgYmUgYWJsZSB0byBkZXRlcm1pbmUgaXRzIGJlaGF2aW9yIHdpdGggb3Igd2l0aG91dCB0aGUgU3BlY3RydW0gZHJpdmVyIGJlaW5nIGFjdGl2YXRlZC4gVGhhdCB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiB3aGF0IGFjdHVhbGx5IGhhcHBlbnMgd2hlbiBvbmx5IGBNTFhTV19QQ0lgIGlzIGVuYWJsZWQuIFRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBjb2RlLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwMTQ4LCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQwODozMzozOC4zNTI0ODc4MDNaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5NjAzMTUxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1seHN3X3BjaV9wcm9iZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuYz0yNDIzPXN0YXRpYyB2b2lkIG1seHN3X3BjaV9jbWRfZmluaShzdHJ1Y3QgbWx4c3dfcGNpICptbHhzd19wY2kpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuYy0yNDI5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3BjaS5jOjI0MzA6c3RhdGljIGludCBtbHhzd19wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuYy0yNDMxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3BjaS5jPTI1NDg9aW50IG1seHN3X3BjaV9kcml2ZXJfcmVnaXN0ZXIoc3RydWN0IHBjaV9kcml2ZXIgKnBjaV9kcml2ZXIpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvcGNpLmMtMjU0OS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvcGNpLmM6MjU1MDpcXHRwY2lfZHJpdmVyLVxcdTAwM2Vwcm9iZSA9IG1seHN3X3BjaV9wcm9iZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuYy0yNTUxLVxcdHBjaV9kcml2ZXItXFx1MDAzZXJlbW92ZSA9IG1seHN3X3BjaV9yZW1vdmU7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDA4OjMzOjM4LjQxMjA5OTc5NFoiLCJTZXEiOjM3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDAzMzI3NDU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6XG5cbioqRGVidWdnaW5nIE1MWFNXIERyaXZlciBSZWdpc3RyYXRpb24qKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0J3MgcmVzcG9uc2libGUgZm9yIGNhbGxpbmcgYG1seHN3X3BjaV9kcml2ZXJfcmVnaXN0ZXJgLiBJJ20gc3RhcnRpbmcgYXQgdGhlIHJlZ2lzdHJhdGlvbiBwb2ludCBiZWNhdXNlIHRoYXQncyB0aGUgb2J2aW91cyBlbnRyeSBwb2ludCB0byB0cmFjZSBiYWNrIGZyb20uIFRoaXMgaXMgYSBjb21tb24gZGVidWdnaW5nIHRlY2huaXF1ZSAtIHVuZGVyc3RhbmQgdGhlIGVuZCBnb2FsLCB0aGVuIHdvcmsgYmFja3dhcmQgdG8gZGV0ZXJtaW5lIHRoZSB1cHN0cmVhbSBvcmlnaW4uIEknbGwgbmVlZCB0byBnbyB0aHJvdWdoIHRoZSBjb2RlLCBwcm9iYWJseSB1c2luZyBhIHRvb2wgbGlrZSBgZ2l0IGdyZXBgIG9yIGEgc2ltaWxhciBjb2RlIHNlYXJjaCwgYW5kIGZpbmQgYWxsIGluc3RhbmNlcyBvZiB0aGUgZnVuY3Rpb24gY2FsbC4gSSdtIGV4cGVjdGluZyB0aGlzIHdpbGwgZWl0aGVyIGJlIHdpdGhpbiB0aGUgUENJIHN1YnN5c3RlbSBpbml0aWFsaXphdGlvbiBvciBwZXJoYXBzIHNvbWUgc29ydCBvZiBtb2R1bGUgbG9hZGluZyBtZWNoYW5pc20gc3BlY2lmaWMgdG8gTUxYU1cgZGV2aWNlcy4gSXQgY291bGQgZXZlbiBiZSB0cmlnZ2VyZWQgYnkgYSBob3RwbHVnIGV2ZW50LiBJJ20gcmVhZHkgdG8gZGlnIGludG8gdGhlIGtlcm5lbCBzb3VyY2UgYW5kIGlkZW50aWZ5IHRoZSBjYWxsaW5nIGNvbnRleHQsIHdoaWNoIHdpbGwgZ2l2ZSBtZSBjcml0aWNhbCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZHJpdmVyJ3MgaW5zdGFudGlhdGlvbiBwcm9jZXNzLiBUaGUgZ29hbCBpcyB0byBkZXRlcm1pbmUgdGhlIHNlcXVlbmNlIG9mIGV2ZW50cyBsZWFkaW5nIHVwIHRvIGRyaXZlciByZWdpc3RyYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwODkwLCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMDg6MzM6NDIuNDE1NDMwNjY4WiIsIlNlcSI6MzgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjE3MDE0MTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWx4c3dfcGNpX2RyaXZlcl9yZWdpc3RlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvcGNpLmM9MjU0Mz1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9lcnJvcl9oYW5kbGVycyBtbHhzd19wY2lfZXJyX2hhbmRsZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuYy0yNTQ3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3BjaS5jOjI1NDg6aW50IG1seHN3X3BjaV9kcml2ZXJfcmVnaXN0ZXIoc3RydWN0IHBjaV9kcml2ZXIgKnBjaV9kcml2ZXIpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvcGNpLmMtMjU0OS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuYy0yNTU1LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuYzoyNTU2OkVYUE9SVF9TWU1CT0wobWx4c3dfcGNpX2RyaXZlcl9yZWdpc3Rlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvcGNpLmMtMjU1Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3BjaS5oLTE1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3BjaS5oOjE2OmludCBtbHhzd19wY2lfZHJpdmVyX3JlZ2lzdGVyKHN0cnVjdCBwY2lfZHJpdmVyICpwY2lfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuaC0xNy12b2lkIG1seHN3X3BjaV9kcml2ZXJfdW5yZWdpc3RlcihzdHJ1Y3QgcGNpX2RyaXZlciAqcGNpX2RyaXZlcik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuaD0yMT1zdGF0aWMgaW5saW5lIGludFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3BjaS5oOjIyOm1seHN3X3BjaV9kcml2ZXJfcmVnaXN0ZXIoc3RydWN0IHBjaV9kcml2ZXIgKnBjaV9kcml2ZXIpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvcGNpLmgtMjMte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW0uYz01MzE5PXN0YXRpYyBpbnQgX19pbml0IG1seHN3X3NwX21vZHVsZV9pbml0KHZvaWQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bS5jLTUzMzgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW0uYzo1MzM5OlxcdGVyciA9IG1seHN3X3BjaV9kcml2ZXJfcmVnaXN0ZXIoXFx1MDAyNm1seHN3X3NwMV9wY2lfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bS5jLTUzNDAtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtLmMtNTM0Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bS5jOjUzNDM6XFx0ZXJyID0gbWx4c3dfcGNpX2RyaXZlcl9yZWdpc3RlcihcXHUwMDI2bWx4c3dfc3AyX3BjaV9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtLmMtNTM0NC1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW0uYy01MzQ2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtLmM6NTM0NzpcXHRlcnIgPSBtbHhzd19wY2lfZHJpdmVyX3JlZ2lzdGVyKFxcdTAwMjZtbHhzd19zcDNfcGNpX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW0uYy01MzQ4LVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bS5jLTUzNTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW0uYzo1MzUxOlxcdGVyciA9IG1seHN3X3BjaV9kcml2ZXJfcmVnaXN0ZXIoXFx1MDAyNm1seHN3X3NwNF9wY2lfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bS5jLTUzNTItXFx0aWYgKGVycilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMDg6MzM6NDIuNjM3MTM2NDcxWiIsIlNlcSI6MzksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjExMjQyNTc3NzEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgUmVhY2hhYmlsaXR5IGFuZCBGdW5jdGlvbiBQcmlvcml0aXphdGlvbiBmb3IgTUxYU1dfU1BFQ1RSVU0qKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGlzIGBNTFhTV19TUEVDVFJVTWAgZHJpdmVyIGlzIHJlYWNoYWJsZSBmb3IgZnV6emluZy4gSXQncyB0aGUga2V5IHRvIHJlZ2lzdGVyaW5nIHRoZSBQQ0kgZHJpdmVycywgYnV0IHdhaXQsIHRoZXJlJ3MgYWxzbyBgTUxYU1dfTUlOSU1BTGA/IE5vcGUsIHRoYXQncyBqdXN0IGZvciBJMkMsIHNvIG5vdCByZWxldmFudCBoZXJlLiBMZXQncyBjaGVjayB0aGUgY29uZmlncyBmb3IgYE1MWFNXX1NQRUNUUlVNYC4gSXQgZGVwZW5kcyBvbiBgTUxYU1dfQ09SRWAsIGBNTFhTV19QQ0lgLCBgTkVUX1NXSVRDSERFVmAsIGFuZCBgVkxBTl84MDIxUWAg4oCTIHNvIGVuYWJsaW5nIGBNTFhTV19TUEVDVFJVTWAgc2hvdWxkIGJlIHRoZSB3YXkgdG8gZ28uXG5cblRoZSBiaWcgcXVlc3Rpb24gaXMgd2hldGhlciB0aGlzIGNvZGUgaXMgYWNjZXNzaWJsZSBpbiBhIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnQuIElmIHN5emthbGxlciBoYXMgYSBQQ0kgZnV6emVyLCB3ZSdyZSBpbiBidXNpbmVzcy4gQW5kIHllcywgaXQgZG9lcyEgSSByZW1lbWJlciB0aGF0IHJlY2VudGx5IGFkZGVkIFBDSSBmdXp6ZXIsIEkgdGhpbmsgaXQgdXNlcyBgdmZpb2Agb3IgYSBjdXN0b20gUUVNVSBkZXZpY2UuIFdhaXQsIGl0IHVzZXMgdGhlIGBwY2lfZW5kcG9pbnRgIGZyYW1ld29yaz8gTm8sIHdhaXQhIEkgbmVlZCB0byBiZSBjYXJlZnVsIHdpdGggYW55IHBzZXVkby1zeXNjYWxscyBsaWtlIGBzeXpfcGNpX2RldmljZWAuIEFoLCB0aGlzIGlzIGEgZ29vZCByZW1pbmRlci4gSSBjYW4ndCBzZWFyY2ggZm9yIHN5emthbGxlciBwc2V1ZG8tc3lzY2FsbHMgZGlyZWN0bHkgaW4gdGhlIGtlcm5lbCBjb2RlLCBzbyBJIG5lZWQgdG8gdGhpbmsgY2FyZWZ1bGx5IGFib3V0IGhvdyBzeXprYWxsZXIgb3BlcmF0ZXMuXG5cblNpbmNlIHN5emthbGxlciAqY2FuKiBmdXp6IFBDSSBkZXZpY2VzLCB0aGF0IG1lYW5zIGBtbHhzd19wY2lfcHJvYmVgIHNob3VsZCBiZSByZWFjaGFibGUuIEknbSBnb2luZyB0byBhc3N1bWUgaXQgaXMgYW5kIHJldHVybiBgV29ydGhGdXp6aW5nPXRydWVgLlxuXG5Ob3csIGxldCdzIGxvb2sgYXQgdGhlIGZ1bmN0aW9ucyB0aGVtc2VsdmVzLiBJIG5lZWQgdG8gcHJpb3JpdGl6ZSBmdW5jdGlvbnMgdG8gZm9jdXMgZnV6emluZyBlZmZvcnRzLiBUaGUgcGF0Y2ggc2VlbXMgdG8gbW9kaWZ5IHRoZXNlIGZ1bmN0aW9uczpcblxuKiAgIGBtbHhzd19wY2lfY3FfbmFwaV9kaXNhYmxlYFxuKiAgIGBtbHhzd19wY2lfY3FfaW5pdGBcbiogICBgbWx4c3dfcGNpX2NxX2ZpbmlgXG4qICAgYG1seHN3X3BjaV9hcXNfZmluaWBcbiogICBgbWx4c3dfcGNpX2ZpbmlgXG5cbmBtbHhzd19wY2lfY3FfbmFwaV9kaXNhYmxlYCBpcyBuZXcuIExldCdzIGRpZyBkZWVwZXIgYW5kIHNlZSBpZiBpdCdzIGEgaG90IHBhdGguIE5vcGUsIGl0J3MgY2FsbGVkIGR1cmluZyB0ZWFyZG93biBvciBgZmluaWAsIG5vdCBhIGhvdCBwYXRoLiBgbWx4c3dfcGNpX2NxX2luaXRgIGlzIGNhbGxlZCBkdXJpbmcgaW5pdC4gYG1seHN3X3BjaV9jcV9maW5pYCwgYG1seHN3X3BjaV9hcXNfZmluaWAsIGFuZCBgbWx4c3dfcGNpX2ZpbmlgIGFyZSBjYWxsZWQgZHVyaW5nIGBmaW5pYC5cblxuTG9va3MgbGlrZSB0aGUgcGF0Y2ggYWxzbyB0b3VjaGVzIGBtbHhzd19wY2lfY3FfbmFwaV90ZWFyZG93bmAsIHdoaWNoLCB3aGlsZSBub3QgbW9kaWZpZWQsIGlzIHN0aWxsIGNhbGxlZC4gVGhlIHBhdGNoIG1vZGlmaWVzOiBgbWx4c3dfcGNpX2NxX25hcGlfZGlzYWJsZWAgKG5ldyksIGBtbHhzd19wY2lfY3FfaW5pdGAsIGBtbHhzd19wY2lfY3FfZmluaWAsIGBtbHhzd19wY2lfYXFzX2ZpbmlgLCBhbmQgYG1seHN3X3BjaV9maW5pYC4gT2theSwgbGV0J3Mgc3RhcnQgd2l0aCBhIGNsb3NlIGxvb2sgYXQgYG1seHN3X3BjaV9jcV9uYXBpX2Rpc2FibGVgIGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuY2AuIEkgaGF2ZSBhIGdvb2QgaWRlYSBvZiB3aGVyZSB0byBiZWdpbiBteSBmdXp6aW5nIGNhbXBhaWduLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMjA3NywiT3V0cHV0VG9rZW5zIjo1MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjcyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQwODozMzo1My44Nzk3MTc3MjRaIiwiU2VxIjo0MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0ODE0MDMxNTQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWx4c3dfcGNpX2NxX25hcGlfZGlzYWJsZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuYz05ODg9c3RhdGljIHZvaWQgbWx4c3dfcGNpX2NxX25hcGlfdGVhcmRvd24oc3RydWN0IG1seHN3X3BjaV9xdWV1ZSAqcSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3BjaS5jLTk5Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuYzo5OTM6c3RhdGljIHZvaWQgbWx4c3dfcGNpX2NxX25hcGlfZGlzYWJsZShzdHJ1Y3QgbWx4c3dfcGNpX3F1ZXVlICpxKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3BjaS5jLTk5NC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuYz0xMDg3PXN0YXRpYyB2b2lkIG1seHN3X3BjaV9jcV9maW5pKHN0cnVjdCBtbHhzd19wY2kgKm1seHN3X3BjaSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3BjaS5jLTEwOTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvcGNpLmM6MTA5MjpcXHRtbHhzd19wY2lfY3FfbmFwaV9kaXNhYmxlKHEpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3BjaS5jLTEwOTMtXFx0bWx4c3dfcGNpX2NxX3BhZ2VfcG9vbF9maW5pKHEsIGNxX3R5cGUpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvcGNpLmM9MTQ1MT1zdGF0aWMgdm9pZCBtbHhzd19wY2lfYXFzX2Zpbmkoc3RydWN0IG1seHN3X3BjaSAqbWx4c3dfcGNpKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvcGNpLmMtMTQ1OC1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgcXVldWVfZ3JvdXAtXFx1MDAzZWNvdW50OyBpKyspXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvcGNpLmM6MTQ1OTpcXHRcXHRtbHhzd19wY2lfY3FfbmFwaV9kaXNhYmxlKFxcdTAwMjZxdWV1ZV9ncm91cC1cXHUwMDNlcVtpXSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvcGNpLmMtMTQ2MC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMDg6MzM6NTUuMzYxMTI3NjM4WiIsIlNlcSI6NDEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEzODU0ODIyNTYxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5c2lzIG9mIE1lbGxhbm94IFN3aXRjaCBQQ0kgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBiZWVuIHRhc2tlZCB3aXRoIGFzc2Vzc2luZyB0aGlzIE1lbGxhbm94IHN3aXRjaCBQQ0kgZHJpdmVyIHBhdGNoLiBNeSBpbml0aWFsIGZvY3VzIGhhcyBsYW5kZWQgb24gaWRlbnRpZnlpbmcgdGhlIGtleSBmdW5jdGlvbnMgYW5kIGNvbmZpZ3VyYXRpb25zIGltcGFjdGVkLiBTcGVjaWZpY2FsbHksIHRoZSBmdW5jdGlvbnMgSSBuZWVkIHRvIGtlZXAgaW4gbWluZCBhcmUgYG1seHN3X3BjaV9jcV9uYXBpX2Rpc2FibGVgLCBgbWx4c3dfcGNpX2NxX2luaXRgLCBgbWx4c3dfcGNpX2NxX2ZpbmlgLCBgbWx4c3dfcGNpX2Fxc19maW5pYCwgYW5kIGBtbHhzd19wY2lfZmluaWAuXG5cblJlZ2FyZGluZyBjb25maWd1cmF0aW9ucywgaXQgbG9va3MgbGlrZSBgTUxYU1dfQ09SRWAsIGBNTFhTV19QQ0lgLCBhbmQgYE1MWFNXX1NQRUNUUlVNYCBhcmUgdGhlIGNyaXRpY2FsIG9uZXMuIEhvbGQgb24gdGhvdWdoLCBzaW5jZSBgTUxYU1dfU1BFQ1RSVU1gIGRlcGVuZHMgb24gYE5FVF9TV0lUQ0hERVZgIGFuZCBgVkxBTl84MDIxUWAsIEknbGwganVzdCBzdGljayB0byBsaXN0aW5nIGBNTFhTV19TUEVDVFJVTWAsIGBNTFhTV19QQ0lgLCBhbmQgYE1MWFNXX0NPUkVgIGFzIHRoZSBjb3JlIHJlcXVpcmVkIGNvbmZpZ3VyYXRpb25zLiBJdCBzZWVtcyBgTUxYU1dfTUlOSU1BTGAgaXMgcmVsZXZhbnQsIGJ1dCBpdCdzIHNwZWNpZmljYWxseSBmb3IgSTJDLW9ubHkgY29uZmlndXJhdGlvbnMsIHNvIHRoYXQncyBub3Qgc29tZXRoaW5nIEknbGwgbmVlZCB0byB3b3JyeSBhYm91dC5cblxuTm93LCBsZXQncyB2ZXJpZnkgaWYgYG1seHN3X3BjaV9jcV9uYXBpX2Rpc2FibGVgIGlzIHRoZSBvbmx5IGZ1bmN0aW9uIHRoYXQncyBiZWluZyBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2guIEluZGVlZCwgaXQgYXBwZWFycyB0byBiZSB0aGUgb25seSBvbmUuIEV4YW1pbmluZyB0aGUgcGF0Y2ggaXRzZWxmLCBpdCdzIGNsZWFyIHRoYXQgdGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLiBJdCBhZGRzIGEgYG5hcGlfZW5hYmxlZGAgYm9vbGVhbiBmbGFnIHRvIHByZXZlbnQgYSBwb3RlbnRpYWwgZG91YmxlIGBuYXBpX2Rpc2FibGVgIGNhbGwgYW5kIGEgYHRhc2tsZXRfa2lsbGAgdG8gbWl0aWdhdGUgcG9zc2libGUgdXNlLWFmdGVyLWZyZWUgb3Igc2ltaWxhciBpc3N1ZXMgZHVyaW5nIHRlYXJkb3duLlxuXG5UaGUgYmlnIHF1ZXN0aW9uIG5vdyBpcyB3aGV0aGVyIHN5emthbGxlciBjYW4gcmVhY2ggYW5kIGZ1enogdGhpcyBjb2RlLiBTaW5jZSB0aGlzIGlzIGEgUENJIGRyaXZlciwgYW5kIHN5emthbGxlciBkb2VzIHN1cHBvcnQgUENJIGZ1enppbmcsIHJlZ2FyZGxlc3Mgb2YgdGhlIGV4YWN0IGltcGxlbWVudGF0aW9uIGRldGFpbHMgKHdoZXRoZXIgaXQgdXNlcyBgdmZpb2Agb3IgYSBjdXN0b20gUUVNVSBkZXZpY2UpLCB0aGlzIGNvZGUgcGF0aCBpcyBkZWZpbml0ZWx5IHJlYWNoYWJsZS4gVGhlcmVmb3JlLCBJIGNhbiBjb25maWRlbnRseSBzdGF0ZSB0aGF0IHRoaXMgaXMgd29ydGggZnV6emluZy5cblxuTXkgcmVhc29uaW5nIGJvaWxzIGRvd24gdG8gdGhpczogdGhlIHBhdGNoIGFkZHJlc3NlcyBjcml0aWNhbCBpc3N1ZXMgcmVsYXRlZCB0byB0aGUgdGVhcmRvd24gcHJvY2VzcyBvZiB0aGUgTWVsbGFub3ggc3dpdGNoIFBDSSBkcml2ZXIsIGluY2x1ZGluZyBwcmV2ZW50aW5nIGEgZG91YmxlIGBuYXBpX2Rpc2FibGVgIGFuZCBlbnN1cmluZyBwcm9wZXIgY2xlYW51cCB3aXRoIGB0YXNrbGV0X2tpbGxgLiBTaW5jZSB0aGlzIGludm9sdmVzIGNvZGUgcGF0aHMgdGhhdCBhcmUgbm9ybWFsbHkgdXNlZCBhbmQgY2FuIGJlIHJlYWNoZWQgKGFzc3VtaW5nIFBDSSBmdXp6aW5nIGlzIGF2YWlsYWJsZSksIGl0IHJlcXVpcmVzIGZ1enplciBzY3J1dGlueSB0byBlbnN1cmUgcm9idXN0IHRlYXJkb3duIGhhbmRsaW5nLiBJIHRoaW5rIGBNTFhTV19TUEVDVFJVTWAsIGBNTFhTV19QQ0lgLCBhbmQgYE1MWFNXX0NPUkVgIHNob3VsZCBiZSBzdWZmaWNpZW50IGNvbmZpZ3VyYXRpb25zIHRvIHRlc3QgdGhpcy5cblxuQWxyaWdodCwgdGltZSB0byB3cmFwIHRoaXMgdXAgYW5kIG1vdmUgb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0MDcyLCJPdXRwdXRUb2tlbnMiOjIwMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg3NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQwODozNDowOS4yMTYxNTkwMzhaIiwiU2VxIjo0MiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NzIwNDE2MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUxYU1dfQ09SRVwiLFxuICAgIFwiTUxYU1dfUENJXCIsXG4gICAgXCJNTFhTV19TUEVDVFJVTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm1seHN3X3BjaV9jcV9uYXBpX2Rpc2FibGVcIixcbiAgICBcIm1seHN3X3BjaV9jcV9pbml0XCIsXG4gICAgXCJtbHhzd19wY2lfY3FfZmluaVwiLFxuICAgIFwibWx4c3dfcGNpX2Fxc19maW5pXCIsXG4gICAgXCJtbHhzd19wY2lfZmluaVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgZG91YmxlIGBuYXBpX2Rpc2FibGVgIGFuZCBhIG1pc3NpbmcgYHRhc2tsZXRfa2lsbGAgZHVyaW5nIHRoZSB0ZWFyZG93biBvZiB0aGUgTWVsbGFub3ggc3dpdGNoIFBDSSBkcml2ZXIgKGBtbHhzd2ApLiBJdCBhZGRzIGEgYG5hcGlfZW5hYmxlZGAgZmxhZyBhbmQgYSBuZXcgZnVuY3Rpb24gYG1seHN3X3BjaV9jcV9uYXBpX2Rpc2FibGVgLiBUaGlzIG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGRyaXZlciBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgdGhlIHRlYXJkb3duIHBhdGhzIGFyZSByb2J1c3QuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUxYU1dfQ09SRVwiLFxuICAgIFwiTUxYU1dfUENJXCIsXG4gICAgXCJNTFhTV19TUEVDVFJVTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm1seHN3X3BjaV9jcV9uYXBpX2Rpc2FibGVcIixcbiAgICBcIm1seHN3X3BjaV9jcV9pbml0XCIsXG4gICAgXCJtbHhzd19wY2lfY3FfZmluaVwiLFxuICAgIFwibWx4c3dfcGNpX2Fxc19maW5pXCIsXG4gICAgXCJtbHhzd19wY2lfZmluaVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgZG91YmxlIGBuYXBpX2Rpc2FibGVgIGFuZCBhIG1pc3NpbmcgYHRhc2tsZXRfa2lsbGAgZHVyaW5nIHRoZSB0ZWFyZG93biBvZiB0aGUgTWVsbGFub3ggc3dpdGNoIFBDSSBkcml2ZXIgKGBtbHhzd2ApLiBJdCBhZGRzIGEgYG5hcGlfZW5hYmxlZGAgZmxhZyBhbmQgYSBuZXcgZnVuY3Rpb24gYG1seHN3X3BjaV9jcV9uYXBpX2Rpc2FibGVgLiBUaGlzIG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGRyaXZlciBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgdGhlIHRlYXJkb3duIHBhdGhzIGFyZSByb2J1c3QuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowq9547[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-22 07:58:30 +0000 UTC FinishedAt: 2026-07-22 08:34:11 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "e1a9d3cc11829c5414a75eb39c704f461936eb24", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MLXSW_CORE", "MLXSW_PCI", "MLXSW_SPECTRUM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "e1a9d3cc11829c5414a75eb39c704f461936eb24", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MLXSW_CORE", "MLXSW_PCI", "MLXSW_SPECTRUM" ], "series_id": "584f3ff7-c185-46ec-a0f8-51ed34cff25d" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "mlxsw_pci_cq_napi_disable", "mlxsw_pci_cq_init", "mlxsw_pci_cq_fini", "mlxsw_pci_aqs_fini", "mlxsw_pci_fini" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDA4OjMxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01MWFNXX0NPUkUmIzM0OywKICAgICYjMzQ7TUxYU1dfUENJJiMzNDssCiAgICAmIzM0O01MWFNXX1NQRUNUUlVNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bWx4c3dfcGNpX2NxX25hcGlfZGlzYWJsZSYjMzQ7LAogICAgJiMzNDttbHhzd19wY2lfY3FfaW5pdCYjMzQ7LAogICAgJiMzNDttbHhzd19wY2lfY3FfZmluaSYjMzQ7LAogICAgJiMzNDttbHhzd19wY2lfYXFzX2ZpbmkmIzM0OywKICAgICYjMzQ7bWx4c3dfcGNpX2ZpbmkmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBkb3VibGUgYG5hcGlfZGlzYWJsZWAgYW5kIGEgbWlzc2luZyBgdGFza2xldF9raWxsYCBkdXJpbmcgdGhlIHRlYXJkb3duIG9mIHRoZSBNZWxsYW5veCBzd2l0Y2ggUENJIGRyaXZlciAoYG1seHN3YCkuIEl0IGFkZHMgYSBgbmFwaV9lbmFibGVkYCBmbGFnIGFuZCBhIG5ldyBmdW5jdGlvbiBgbWx4c3dfcGNpX2NxX25hcGlfZGlzYWJsZWAuIFRoaXMgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUgZHJpdmVyIGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGUgdGVhcmRvd24gcGF0aHMgYXJlIHJvYnVzdC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAwODozMTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDEwNDc2YTM5NDA4MGMzZDNlNjI4MTBjZmViOGVmMGM0N2MwYTE4OGZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAyMiAwODozMTozMiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3BjaS5jXG5pbmRleCAwZGE4NWQzNjY0N2Q5MS4uZmVlYjMyMTM0ZDJhYTYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvcGNpLmNcbkBAIC04Niw2ICYjNDM7ODYsNyBAQCBzdHJ1Y3QgbWx4c3dfcGNpX3F1ZXVlIHtcbiBcdFx0XHRlbnVtIG1seHN3X3BjaV9jcWVfdiB2O1xuIFx0XHRcdHN0cnVjdCBtbHhzd19wY2lfcXVldWUgKmRxO1xuIFx0XHRcdHN0cnVjdCBuYXBpX3N0cnVjdCBuYXBpO1xuJiM0MztcdFx0XHRib29sIG5hcGlfZW5hYmxlZDtcbiBcdFx0XHRzdHJ1Y3QgcGFnZV9wb29sICpwYWdlX3Bvb2w7XG4gXHRcdH0gY3E7XG4gXHRcdHN0cnVjdCB7XG5AQCAtOTg5LDYgJiM0Mzs5OTAsMTUgQEAgc3RhdGljIHZvaWQgbWx4c3dfcGNpX2NxX25hcGlfdGVhcmRvd24oc3RydWN0IG1seHN3X3BjaV9xdWV1ZSAqcSlcbiBcdG5ldGlmX25hcGlfZGVsKFx1MDAyNnEtXHUwMDNldS5jcS5uYXBpKTtcbiB9XG4gXG4mIzQzO3N0YXRpYyB2b2lkIG1seHN3X3BjaV9jcV9uYXBpX2Rpc2FibGUoc3RydWN0IG1seHN3X3BjaV9xdWV1ZSAqcSlcbiYjNDM7e1xuJiM0MztcdGlmICghcS1cdTAwM2V1LmNxLm5hcGlfZW5hYmxlZClcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XG4mIzQzO1x0bmFwaV9kaXNhYmxlKFx1MDAyNnEtXHUwMDNldS5jcS5uYXBpKTtcbiYjNDM7XHRxLVx1MDAzZXUuY3EubmFwaV9lbmFibGVkID0gZmFsc2U7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIGludCBtbHhzd19wY2lfY3FfcGFnZV9wb29sX2luaXQoc3RydWN0IG1seHN3X3BjaV9xdWV1ZSAqcSxcbiBcdFx0XHRcdCAgICAgICBlbnVtIG1seHN3X3BjaV9jcV90eXBlIGNxX3R5cGUpXG4ge1xuQEAgLTEwNjQsNiAmIzQzOzEwNzQsNyBAQCBzdGF0aWMgaW50IG1seHN3X3BjaV9jcV9pbml0KHN0cnVjdCBtbHhzd19wY2kgKm1seHN3X3BjaSwgY2hhciAqbWJveCxcbiBcdFx0Z290byBlcnJfcGFnZV9wb29sX2luaXQ7XG4gXG4gXHRuYXBpX2VuYWJsZShcdTAwMjZxLVx1MDAzZXUuY3EubmFwaSk7XG4mIzQzO1x0cS1cdTAwM2V1LmNxLm5hcGlfZW5hYmxlZCA9IHRydWU7XG4gXHRtbHhzd19wY2lfcXVldWVfZG9vcmJlbGxfY29uc3VtZXJfcmluZyhtbHhzd19wY2ksIHEpO1xuIFx0bWx4c3dfcGNpX3F1ZXVlX2Rvb3JiZWxsX2FybV9jb25zdW1lcl9yaW5nKG1seHN3X3BjaSwgcSk7XG4gXHRyZXR1cm4gMDtcbkBAIC0xMDc4LDcgJiM0MzsxMDg5LDcgQEAgc3RhdGljIHZvaWQgbWx4c3dfcGNpX2NxX2Zpbmkoc3RydWN0IG1seHN3X3BjaSAqbWx4c3dfcGNpLFxuIHtcbiBcdGVudW0gbWx4c3dfcGNpX2NxX3R5cGUgY3FfdHlwZSA9IG1seHN3X3BjaV9jcV90eXBlKG1seHN3X3BjaSwgcSk7XG4gXG4tXHRuYXBpX2Rpc2FibGUoXHUwMDI2cS1cdTAwM2V1LmNxLm5hcGkpO1xuJiM0MztcdG1seHN3X3BjaV9jcV9uYXBpX2Rpc2FibGUocSk7XG4gXHRtbHhzd19wY2lfY3FfcGFnZV9wb29sX2ZpbmkocSwgY3FfdHlwZSk7XG4gXHRtbHhzd19wY2lfY3FfbmFwaV90ZWFyZG93bihxKTtcbiBcdG1seHN3X2NtZF9odzJzd19jcShtbHhzd19wY2ktXHUwMDNlY29yZSwgcS1cdTAwM2VudW0pO1xuQEAgLTE0MzksNiAmIzQzOzE0NTAsMTQgQEAgc3RhdGljIGludCBtbHhzd19wY2lfYXFzX2luaXQoc3RydWN0IG1seHN3X3BjaSAqbWx4c3dfcGNpLCBjaGFyICptYm94KVxuIFxuIHN0YXRpYyB2b2lkIG1seHN3X3BjaV9hcXNfZmluaShzdHJ1Y3QgbWx4c3dfcGNpICptbHhzd19wY2kpXG4ge1xuJiM0MztcdHN0cnVjdCBtbHhzd19wY2lfcXVldWVfdHlwZV9ncm91cCAqcXVldWVfZ3JvdXA7XG4mIzQzO1x0aW50IGk7XG4mIzQzO1xuJiM0MztcdHF1ZXVlX2dyb3VwID0gbWx4c3dfcGNpX3F1ZXVlX3R5cGVfZ3JvdXBfZ2V0KG1seHN3X3BjaSxcbiYjNDM7XHRcdFx0XHRcdFx0ICAgICBNTFhTV19QQ0lfUVVFVUVfVFlQRV9DUSk7XG4mIzQzO1x0Zm9yIChpID0gMDsgaSBcdTAwM2MgcXVldWVfZ3JvdXAtXHUwMDNlY291bnQ7IGkmIzQzOyYjNDM7KVxuJiM0MztcdFx0bWx4c3dfcGNpX2NxX25hcGlfZGlzYWJsZShcdTAwMjZxdWV1ZV9ncm91cC1cdTAwM2VxW2ldKTtcbiYjNDM7XG4gXHRtbHhzd19wY2lfcXVldWVfZ3JvdXBfZmluaShtbHhzd19wY2ksIFx1MDAyNm1seHN3X3BjaV9yZHFfb3BzKTtcbiBcdG1seHN3X3BjaV9xdWV1ZV9ncm91cF9maW5pKG1seHN3X3BjaSwgXHUwMDI2bWx4c3dfcGNpX3NkcV9vcHMpO1xuIFx0bWx4c3dfcGNpX3F1ZXVlX2dyb3VwX2ZpbmkobWx4c3dfcGNpLCBcdTAwMjZtbHhzd19wY2lfY3Ffb3BzKTtcbkBAIC0yMDg5LDYgJiM0MzsyMTA4LDcgQEAgc3RhdGljIHZvaWQgbWx4c3dfcGNpX2Zpbmkodm9pZCAqYnVzX3ByaXYpXG4gXHRzdHJ1Y3QgbWx4c3dfcGNpICptbHhzd19wY2kgPSBidXNfcHJpdjtcbiBcbiBcdGZyZWVfaXJxKHBjaV9pcnFfdmVjdG9yKG1seHN3X3BjaS1cdTAwM2VwZGV2LCAwKSwgbWx4c3dfcGNpKTtcbiYjNDM7XHR0YXNrbGV0X2tpbGwoXHUwMDI2bWx4c3dfcGNpX2VxX2dldChtbHhzd19wY2kpLVx1MDAzZXUuZXEudGFza2xldCk7XG4gXHRtbHhzd19wY2lfYXFzX2ZpbmkobWx4c3dfcGNpKTtcbiBcdG1seHN3X3BjaV9uYXBpX2RldnNfZmluaShtbHhzd19wY2kpO1xuIFx0bWx4c3dfcGNpX2Z3X2FyZWFfZmluaShtbHhzd19wY2kpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDA4OjMxPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjJtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNTFhTV19DT1JFJiMzNDssCiAgICAmIzM0O01MWFNXX1BDSSYjMzQ7LAogICAgJiMzNDtNTFhTV19TUEVDVFJVTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O21seHN3X3BjaV9jcV9uYXBpX2Rpc2FibGUmIzM0OywKICAgICYjMzQ7bWx4c3dfcGNpX2NxX2luaXQmIzM0OywKICAgICYjMzQ7bWx4c3dfcGNpX2NxX2ZpbmkmIzM0OywKICAgICYjMzQ7bWx4c3dfcGNpX2Fxc19maW5pJiMzNDssCiAgICAmIzM0O21seHN3X3BjaV9maW5pJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgZG91YmxlIGBuYXBpX2Rpc2FibGVgIGFuZCBhIG1pc3NpbmcgYHRhc2tsZXRfa2lsbGAgZHVyaW5nIHRoZSB0ZWFyZG93biBvZiB0aGUgTWVsbGFub3ggc3dpdGNoIFBDSSBkcml2ZXIgKGBtbHhzd2ApLiBJdCBhZGRzIGEgYG5hcGlfZW5hYmxlZGAgZmxhZyBhbmQgYSBuZXcgZnVuY3Rpb24gYG1seHN3X3BjaV9jcV9uYXBpX2Rpc2FibGVgLiBUaGlzIG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGRyaXZlciBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgdGhlIHRlYXJkb3duIHBhdGhzIGFyZSByb2J1c3QuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDEwNDc2YTM5NDA4MGMzZDNlNjI4MTBjZmViOGVmMGM0N2MwYTE4OGYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEp1bCAyMiAwODozMTozMiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3BjaS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvcGNpLmMKaW5kZXggMGRhODVkMzY2NDdkOTEuLmZlZWIzMjEzNGQyYWE2IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuYwpAQCAtODYsNiAmIzQzOzg2LDcgQEAgc3RydWN0IG1seHN3X3BjaV9xdWV1ZSB7CiAJCQllbnVtIG1seHN3X3BjaV9jcWVfdiB2OwogCQkJc3RydWN0IG1seHN3X3BjaV9xdWV1ZSAqZHE7CiAJCQlzdHJ1Y3QgbmFwaV9zdHJ1Y3QgbmFwaTsKJiM0MzsJCQlib29sIG5hcGlfZW5hYmxlZDsKIAkJCXN0cnVjdCBwYWdlX3Bvb2wgKnBhZ2VfcG9vbDsKIAkJfSBjcTsKIAkJc3RydWN0IHsKQEAgLTk4OSw2ICYjNDM7OTkwLDE1IEBAIHN0YXRpYyB2b2lkIG1seHN3X3BjaV9jcV9uYXBpX3RlYXJkb3duKHN0cnVjdCBtbHhzd19wY2lfcXVldWUgKnEpCiAJbmV0aWZfbmFwaV9kZWwoJmFtcDtxLSZndDt1LmNxLm5hcGkpOwogfQogCiYjNDM7c3RhdGljIHZvaWQgbWx4c3dfcGNpX2NxX25hcGlfZGlzYWJsZShzdHJ1Y3QgbWx4c3dfcGNpX3F1ZXVlICpxKQomIzQzO3sKJiM0MzsJaWYgKCFxLSZndDt1LmNxLm5hcGlfZW5hYmxlZCkKJiM0MzsJCXJldHVybjsKJiM0MzsKJiM0MzsJbmFwaV9kaXNhYmxlKCZhbXA7cS0mZ3Q7dS5jcS5uYXBpKTsKJiM0MzsJcS0mZ3Q7dS5jcS5uYXBpX2VuYWJsZWQgPSBmYWxzZTsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgaW50IG1seHN3X3BjaV9jcV9wYWdlX3Bvb2xfaW5pdChzdHJ1Y3QgbWx4c3dfcGNpX3F1ZXVlICpxLAogCQkJCSAgICAgICBlbnVtIG1seHN3X3BjaV9jcV90eXBlIGNxX3R5cGUpCiB7CkBAIC0xMDY0LDYgJiM0MzsxMDc0LDcgQEAgc3RhdGljIGludCBtbHhzd19wY2lfY3FfaW5pdChzdHJ1Y3QgbWx4c3dfcGNpICptbHhzd19wY2ksIGNoYXIgKm1ib3gsCiAJCWdvdG8gZXJyX3BhZ2VfcG9vbF9pbml0OwogCiAJbmFwaV9lbmFibGUoJmFtcDtxLSZndDt1LmNxLm5hcGkpOwomIzQzOwlxLSZndDt1LmNxLm5hcGlfZW5hYmxlZCA9IHRydWU7CiAJbWx4c3dfcGNpX3F1ZXVlX2Rvb3JiZWxsX2NvbnN1bWVyX3JpbmcobWx4c3dfcGNpLCBxKTsKIAltbHhzd19wY2lfcXVldWVfZG9vcmJlbGxfYXJtX2NvbnN1bWVyX3JpbmcobWx4c3dfcGNpLCBxKTsKIAlyZXR1cm4gMDsKQEAgLTEwNzgsNyAmIzQzOzEwODksNyBAQCBzdGF0aWMgdm9pZCBtbHhzd19wY2lfY3FfZmluaShzdHJ1Y3QgbWx4c3dfcGNpICptbHhzd19wY2ksCiB7CiAJZW51bSBtbHhzd19wY2lfY3FfdHlwZSBjcV90eXBlID0gbWx4c3dfcGNpX2NxX3R5cGUobWx4c3dfcGNpLCBxKTsKIAotCW5hcGlfZGlzYWJsZSgmYW1wO3EtJmd0O3UuY3EubmFwaSk7CiYjNDM7CW1seHN3X3BjaV9jcV9uYXBpX2Rpc2FibGUocSk7CiAJbWx4c3dfcGNpX2NxX3BhZ2VfcG9vbF9maW5pKHEsIGNxX3R5cGUpOwogCW1seHN3X3BjaV9jcV9uYXBpX3RlYXJkb3duKHEpOwogCW1seHN3X2NtZF9odzJzd19jcShtbHhzd19wY2ktJmd0O2NvcmUsIHEtJmd0O251bSk7CkBAIC0xNDM5LDYgJiM0MzsxNDUwLDE0IEBAIHN0YXRpYyBpbnQgbWx4c3dfcGNpX2Fxc19pbml0KHN0cnVjdCBtbHhzd19wY2kgKm1seHN3X3BjaSwgY2hhciAqbWJveCkKIAogc3RhdGljIHZvaWQgbWx4c3dfcGNpX2Fxc19maW5pKHN0cnVjdCBtbHhzd19wY2kgKm1seHN3X3BjaSkKIHsKJiM0MzsJc3RydWN0IG1seHN3X3BjaV9xdWV1ZV90eXBlX2dyb3VwICpxdWV1ZV9ncm91cDsKJiM0MzsJaW50IGk7CiYjNDM7CiYjNDM7CXF1ZXVlX2dyb3VwID0gbWx4c3dfcGNpX3F1ZXVlX3R5cGVfZ3JvdXBfZ2V0KG1seHN3X3BjaSwKJiM0MzsJCQkJCQkgICAgIE1MWFNXX1BDSV9RVUVVRV9UWVBFX0NRKTsKJiM0MzsJZm9yIChpID0gMDsgaSAmbHQ7IHF1ZXVlX2dyb3VwLSZndDtjb3VudDsgaSYjNDM7JiM0MzspCiYjNDM7CQltbHhzd19wY2lfY3FfbmFwaV9kaXNhYmxlKCZhbXA7cXVldWVfZ3JvdXAtJmd0O3FbaV0pOwomIzQzOwogCW1seHN3X3BjaV9xdWV1ZV9ncm91cF9maW5pKG1seHN3X3BjaSwgJmFtcDttbHhzd19wY2lfcmRxX29wcyk7CiAJbWx4c3dfcGNpX3F1ZXVlX2dyb3VwX2ZpbmkobWx4c3dfcGNpLCAmYW1wO21seHN3X3BjaV9zZHFfb3BzKTsKIAltbHhzd19wY2lfcXVldWVfZ3JvdXBfZmluaShtbHhzd19wY2ksICZhbXA7bWx4c3dfcGNpX2NxX29wcyk7CkBAIC0yMDg5LDYgJiM0MzsyMTA4LDcgQEAgc3RhdGljIHZvaWQgbWx4c3dfcGNpX2Zpbmkodm9pZCAqYnVzX3ByaXYpCiAJc3RydWN0IG1seHN3X3BjaSAqbWx4c3dfcGNpID0gYnVzX3ByaXY7CiAKIAlmcmVlX2lycShwY2lfaXJxX3ZlY3RvcihtbHhzd19wY2ktJmd0O3BkZXYsIDApLCBtbHhzd19wY2kpOwomIzQzOwl0YXNrbGV0X2tpbGwoJmFtcDttbHhzd19wY2lfZXFfZ2V0KG1seHN3X3BjaSktJmd0O3UuZXEudGFza2xldCk7CiAJbWx4c3dfcGNpX2Fxc19maW5pKG1seHN3X3BjaSk7CiAJbWx4c3dfcGNpX25hcGlfZGV2c19maW5pKG1seHN3X3BjaSk7CiAJbWx4c3dfcGNpX2Z3X2FyZWFfZmluaShtbHhzd19wY2kpOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAwODozMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTQ4CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMTYzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIE1lbGxhbm94IFN3aXRjaCBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCB0d2Vha3MgdGhlIE1lbGxhbm94IHN3aXRjaCBkcml2ZXIsIHNwZWNpZmljYWxseSBgbWx4c3cvcGNpLmNgLiBTZWVtcyBsaWtlIHRoZXkmIzM5O3JlIGFkZHJlc3NpbmcgYSBwb3RlbnRpYWwgZG91YmxlIGBuYXBpX2Rpc2FibGVgIGlzc3VlIGJ5IGludHJvZHVjaW5nIGEgYG5hcGlfZW5hYmxlZGAgZmxhZyB3aXRoaW4gdGhlIGBtbHhzd19wY2lfcXVldWVgIHN0cnVjdHVyZS4gU21hcnQgbW92ZSwgdGhhdCBraW5kIG9mIHJhY2UgY29uZGl0aW9uIGNhbiBiZSBhIHBhaW4uIFRoZXkmIzM5O3JlIGFsc28gdGhyb3dpbmcgaW4gYSBgdGFza2xldF9raWxsYCBjYWxsIGR1cmluZyBgbWx4c3dfcGNpX2ZpbmlgLCBwcm9iYWJseSBmb3Igc29tZSBjbGVhbi11cC4gQWxsIHN0YW5kYXJkIHN0dWZmIGZvciBhIGRyaXZlciBsaWtlIHRoaXMuCgpNeSBpbW1lZGlhdGUgdGhvdWdodCwgdGhvdWdoLCBpcyBob3cgdGhpcyBkcml2ZXIgcGxheXMgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gTWVsbGFub3ggc3dpdGNoZXMgYXJlIHR5cGljYWxseSBwaHlzaWNhbCBQQ0kgZGV2aWNlcywgcmlnaHQ/IFRoZXkmIzM5O3JlIGRlc2lnbmVkIGZvciBoaWdoLXBlcmZvcm1hbmNlIG5ldHdvcmtpbmcgb24gZGVkaWNhdGVkIGhhcmR3YXJlLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGVyZSYjMzk7cyBhbnkgUUVNVSBlbXVsYXRpb24gZm9yIGBtbHhzd2AuIElmIHRoaXMgZHJpdmVyIGlzIHB1cmVseSBoYXJkd2FyZS1kZXBlbmRlbnQsIHRoZW4gdGhpcyBwYXRjaCBtaWdodCBoYXZlIGxpbWl0ZWQgaW1wYWN0IGluIGEgdmlydHVhbGl6ZWQgc2V0dXAuIFRoZSBtYWluIHRoaW5nIGlzIHRvIGRldGVybWluZSBpZiB0aGlzIGlzIHJlbGV2YW50IHRvIG15IGN1cnJlbnQgd29yay4KCkkmIzM5O2xsIGp1bXAgaW50byB0aGUga2VybmVsIGNvbmZpZ3MgYW5kIGRvIGEgcXVpY2sgc2VhcmNoIGZvciBgbWx4c3dgIHRvIHNlZSB3aGF0IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgYXZhaWxhYmxlLiBUaGF0IHNob3VsZCBnaXZlIG1lIGEgZ29vZCBoYW5kbGUgb24gaXRzIHVzYWdlIGFuZCBwb3NzaWJsZSB2aXJ0dWFsaXphdGlvbiBzY2VuYXJpb3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMDg6MzE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1MWFNXJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L0tjb25maWctNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L0tjb25maWc6Njpjb25maWcgTUxYU1dfQ09SRVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvS2NvbmZpZy03LVx0dHJpc3RhdGUgXCYjMzQ7TWVsbGFub3ggVGVjaG5vbG9naWVzIFN3aXRjaCBBU0lDcyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvS2NvbmZpZy0xNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L0tjb25maWc6MTc6Y29uZmlnIE1MWFNXX0NPUkVfSFdNT05cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L0tjb25maWctMTgtXHRib29sIFwmIzM0O0hXTU9OIHN1cHBvcnQgZm9yIE1lbGxhbm94IFRlY2hub2xvZ2llcyBTd2l0Y2ggQVNJQ3NcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9LY29uZmlnLTI0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvS2NvbmZpZzoyNTpjb25maWcgTUxYU1dfQ09SRV9USEVSTUFMXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9LY29uZmlnLTI2LVx0Ym9vbCBcJiMzNDtUaGVybWFsIHpvbmUgc3VwcG9ydCBmb3IgTWVsbGFub3ggVGVjaG5vbG9naWVzIFN3aXRjaCBBU0lDc1wmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L0tjb25maWctMzItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9LY29uZmlnOjMzOmNvbmZpZyBNTFhTV19QQ0lcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L0tjb25maWctMzQtXHR0cmlzdGF0ZSBcJiMzNDtQQ0kgYnVzIGltcGxlbWVudGF0aW9uIGZvciBNZWxsYW5veCBUZWNobm9sb2dpZXMgU3dpdGNoIEFTSUNzXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvS2NvbmZpZy00My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L0tjb25maWc6NDQ6Y29uZmlnIE1MWFNXX0kyQ1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvS2NvbmZpZy00NS1cdHRyaXN0YXRlIFwmIzM0O0kyQyBidXMgaW1wbGVtZW50YXRpb24gZm9yIE1lbGxhbm94IFRlY2hub2xvZ2llcyBTd2l0Y2ggQVNJQ3NcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9LY29uZmlnLTUzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvS2NvbmZpZzo1NDpjb25maWcgTUxYU1dfU1BFQ1RSVU1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L0tjb25maWctNTUtXHR0cmlzdGF0ZSBcJiMzNDtNZWxsYW5veCBUZWNobm9sb2dpZXMgU3BlY3RydW0gZmFtaWx5IHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9LY29uZmlnLTc0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvS2NvbmZpZzo3NTpjb25maWcgTUxYU1dfU1BFQ1RSVU1fRENCXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9LY29uZmlnLTc2LVx0Ym9vbCBcJiMzNDtEYXRhIENlbnRlciBCcmlkZ2luZyAoRENCKSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvS2NvbmZpZy04Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L0tjb25maWc6ODM6Y29uZmlnIE1MWFNXX01JTklNQUxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L0tjb25maWctODQtXHR0cmlzdGF0ZSBcJiMzNDtNZWxsYW5veCBUZWNobm9sb2dpZXMgbWluaW1hbCBJMkMgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDA4OjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQxMzcKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiAxMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBNZWxsYW5veCBUZWNobm9sb2dpZXMgU3dpdGNoIEFTSUMgRHJpdmVyKioKCk9rYXksIHNvIHRoaXMgY29kZSBpcyBkZWZpbml0ZWx5IHRoZSBkcml2ZXIgZm9yIHRoZSBNZWxsYW5veCBzd2l0Y2ggQVNJQ3MuIE5vIGFtYmlndWl0eSB0aGVyZS4gR2l2ZW4gbXkgZXhwZXJpZW5jZSwgaXQmIzM5O3MgY2xlYXIgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBoYXJkd2FyZS1zcGVjaWZpYyBjb2RlIGhlcmUuIE15IGZpcnN0IGluc3RpbmN0LCBhcyBhbHdheXMsIGlzIHRvIHRoaW5rIGFib3V0IHRlc3RpbmcuIFRoZSBxdWVzdGlvbiBpczogY2FuIHdlIHNpbXVsYXRlIHRoaXM/IElzIHRoZXJlIGEgc29mdHdhcmUgZW11bGF0aW9uIGxheWVyIGF2YWlsYWJsZT8gTGV0JiMzOTtzIHF1aWNrbHkgc2VlIGlmIHRoZXJlJiMzOTtzIGFueSBgbmV0ZGV2c2ltYCBlcXVpdmFsZW50IGZvciBgbWx4c3dgLiBBaCwgbm8sIGBuZXRkZXZzaW1gIGl0c2VsZiBpcyBhIHN0YW5kYWxvbmUgdGhpbmcsIHNlcGFyYXRlIGZyb20gYG1seHN3YC4gT2theSwgc28gd2UmIzM5O3JlIGxvb2tpbmcgYXQgaW50ZXJhY3Rpbmcgd2l0aCB0aGlzIGRyaXZlci4gVGhlIGZvY3VzIGhlcmUgaXMgdG8gdW5kZXJzdGFuZCBhIGNlcnRhaW4gbG9naWMgZmxvdywgSSBuZWVkIHRvIGtub3cgaWYgd2UgY2FuIHJlYWNoIHNwZWNpZmljIGZ1bmN0aW9ucyBpbiBvdXIgc2l0dWF0aW9uLgoKVGhlIGtleSBoZXJlIGlzIHdoZXRoZXIgd2UgY2FuIHJlYWNoIGEgZnVuY3Rpb24gbGlrZSBgbWx4c3dfcGNpX2ZpbmlgIG9yIHNvbWV0aGluZyByZWxhdGVkIGxpa2UgYG1seHN3X3BjaV9jcV9uYXBpX2Rpc2FibGVgIHdpdGhvdXQgdGhlIGFjdHVhbCBoYXJkd2FyZSBwcmVzZW50LiBQZXJoYXBzIGJ5IGZha2luZyBzcGVjaWZpYyBjb25kaXRpb25zLCB1c2luZyBtb2Nrcywgb3IgZmluZGluZyBhbHRlcm5hdGl2ZSBlbnRyeSBwb2ludHMuIE15IG5leHQgc3RlcCB3aWxsIGJlIHRvIGRpdmUgaW50byBgbWx4c3dfcGNpX3Byb2JlYCBhcyB0aGUgb2J2aW91cyBlbnRyeSBwb2ludC4gSSB3YW50IHRvIHNlZSBob3cgdGhlIHN5c3RlbSBicmluZ3MgdGhlIGhhcmR3YXJlIHVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDA4OjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21seHN3X3BjaV9wcm9iZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3BjaS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3BjaS5jPTI0MjM9c3RhdGljIHZvaWQgbWx4c3dfcGNpX2NtZF9maW5pKHN0cnVjdCBtbHhzd19wY2kgKm1seHN3X3BjaSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuYy0yNDI5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvcGNpLmM6MjQzMDpzdGF0aWMgaW50IG1seHN3X3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvcGNpLmMtMjQzMS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvcGNpLmM9MjU0OD1pbnQgbWx4c3dfcGNpX2RyaXZlcl9yZWdpc3RlcihzdHJ1Y3QgcGNpX2RyaXZlciAqcGNpX2RyaXZlcilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3BjaS5jLTI1NDkte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvcGNpLmM6MjU1MDpcdHBjaV9kcml2ZXItXHUwMDNlcHJvYmUgPSBtbHhzd19wY2lfcHJvYmU7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuYy0yNTUxLVx0cGNpX2RyaXZlci1cdTAwM2VyZW1vdmUgPSBtbHhzd19wY2lfcmVtb3ZlO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDA4OjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ4OTgKCQkJCQkJCW91dHB1dDogMjUKCQkJCQkJCXRob3VnaHRzOiA2MTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIFBDSSBEcml2ZXIgUmVhY2hhYmlsaXR5IGZvciBGdXp6aW5nKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIFBDSSBkcml2ZXIgY29kZS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBpdCYjMzk7cyBwcmV0dHkgc3RhbmRhcmQuIFRoZSBgcHJvYmVgIGZ1bmN0aW9uLCB3aGljaCBpcyBjcnVjaWFsLCB3b24mIzM5O3QgZXZlbiBiZSBjYWxsZWQgdW5sZXNzIHRoZXJlJiMzOTtzIGFuIGFjdHVhbCwgb3IgYXQgbGVhc3QgZW11bGF0ZWQsIFBDSSBkZXZpY2Ugd2l0aCB0aGUgcmlnaHQgdmVuZG9yIGFuZCBkZXZpY2UgSUQgcHJlc2VudC4gVGhhdCYjMzk7cyB0aGUgYmFzZWxpbmUgYXNzdW1wdGlvbi4KClRoZW4gSSBzdGFydGVkIGNvbnNpZGVyaW5nIGVtdWxhdGlvbiBwb3NzaWJpbGl0aWVzLiBJcyB0aGVyZSBhbnkgUUVNVSBzdXBwb3J0IGZvciBNZWxsYW5veCBTd2l0Y2ggQVNJQ3M/IE5vcGUsIFFFTVUgaXMgbG9hZGVkIHVwIHdpdGggYSBzdGFuZGFyZCBzZXQgb2YgZW11bGF0ZWQgTklDcyAoZTEwMDAsIHJ0bDgxMzksIHZpcnRpbywgZXRjLiksIGJ1dCBub3RoaW5nIHJlbGF0ZWQgdG8gdGhpcyBwYXJ0aWN1bGFyIHBpZWNlIG9mIGhhcmR3YXJlLiBUaGVyZWZvcmUsIGluIHRoZSB0cmFkaXRpb25hbCB2aXJ0dWFsaXphdGlvbiBzZXR1cCBvZiBHQ0Ugb3IgZXZlbiBRRU1VLCB0aGlzIGNvZGUmIzM5O3MgdW5yZWFjaGFibGUsIG9yIGF0IGxlYXN0LCBJIHRob3VnaHQgc28uCgpCdXQgdGhlbiwgc3l6Ym90IGZvdW5kIGEgYnVnIGhlcmUuIE5vdyAqdGhhdCogZ290IG15IGF0dGVudGlvbi4gJiMzNDtzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcmIzM0Oy4gV2FpdCwgY291bGQgc3l6Ym90IHNvbWVob3cgYmUgZnV6emluZyBQQ0kgZGV2aWNlcz8gRG9lcyBzeXpib3QgdXNlIGEgbWVjaGFuaXNtIGxpa2UgYHZoY2lgIGZvciBQQ0k/IEl0JiMzOTtzIHRoZSBzdGFuZGFyZCBmb3IgVVNCLCBzbyB0aGF0IHdvdWxkbiYjMzk7dCBzdXJwcmlzZSBtZS4gVGhlIGltbWVkaWF0ZSB0aG91Z2h0IHdhcywgZG9lcyBzeXprYWxsZXIgaGF2ZSBzb21lIGBzeXpfcGNpX2RldmljZWAgcHNldWRvLXN5c2NhbGwgdGhhdCBJIGhhdmVuJiMzOTt0IHNlZW4/CgpTbywgSSBzdGFydGVkIHNlYXJjaGluZyB0byBmaWd1cmUgb3V0IGhvdyBzeXprYWxsZXIgY2FuIHJlYWNoIGl0LiBJIHN0YXJ0ZWQgdGhlIHByb2Nlc3Mgb2YgZWxpbWluYXRpb24uIFN5emthbGxlciBkb2VzbiYjMzk7dCBoYXZlIGEgZ2VuZXJpYyBgc3l6X3BjaV9kZXZpY2VgIHN0eWxlIHN5c2NhbGwuIFdhaXQsIGJ1dCBpdCBoYXMgYHN5el9rdm1fc2V0dXBfY3B1YCB3aGljaCBpcyBhIGNsdWUgdGhhdCBpdCBtYXkgYmUgdXNpbmcgbW9yZSBjb21wbGV4IG1lY2hhbmlzbXMuIEFoLCBpdCBkb2VzIGhhdmUgYSBQQ0kgZnV6emVyIQoKSG93ZXZlciwgSSByZW1pbmRlZCBteXNlbGYgdGhhdCB0aGUgZG9jdW1lbnRhdGlvbiBzdGF0ZXM6ICYjMzQ7SW1wb3J0YW50IG5vdGU6IHRoaXMgdG9vbCBDQU5OT1QgYmUgdXNlZCB0byBzZWFyY2ggc3l6a2FsbGVyIHN5emxhbmcgZGVzY3JpcHRpb25zIChzeXMvKikgb3IgZXhwcmVzc2lvbnMgY29udGFpbmluZyAmIzM5O3N5el8mIzM5OyBzaW5jZSB0aGV5IGFyZSBzeXprYWxsZXIgcHNldWRvLXN5c2NhbGxzLCBhbmQgbm90IHByZXNlbnQgaW4gdGhlIExpbnV4IGtlcm5lbC4mIzM0OyBPaywgc28gaXQmIzM5O3Mgbm90IGRpcmVjdC4KCkFscmlnaHQsIEkgc3dpdGNoZWQgZ2VhcnMgYWdhaW4uIERvZXMgc3l6a2FsbGVyIHNvbWVob3cgdXNlIGB2ZmlvYCBvciBpbmplY3QgUENJIGRldmljZXMgc29tZSBvdGhlciB3YXk/IEkgbmVlZCB0byBjaGVjay4gSXQmIzM5O3MgdXNpbmcgc2ltaWxhciB0ZWNobmlxdWVzIGZvciBvdGhlciBraW5kcyBvZiBkZXZpY2VzLiBUaGUgYW5zd2VyIGlzIG5vdCBzdHJhaWdodGZvcndhcmQuIERvZXMgc3l6a2FsbGVyIGhhdmUgYSBQQ0kgZnV6emVyPyBZZXMsIGFuZCBJIG5lZWQgdG8gZmlndXJlIG91dCBob3chIFNvIGl0JiMzOTtzIG5vdCBgdmZpb2Agb3IgYSBjdXN0b20gUENJIGRldmljZSBpbiBRRU1VLiBOb3BlLCBzeXprYWxsZXIgbXVzdCBoYXZlIHNvbWUgd2F5IHRvIGluamVjdCBQQ0kgZGV2aWNlcy4KClNvIGRvZXMgc3l6a2FsbGVyIGhhdmUgYHN5el9wY2lfZGV2aWNlYD8gSSYjMzk7dmUgZ290IHRvIGNoZWNrLiBNYXliZSB0aGVyZSYjMzk7cyBzb21lIGRvY3VtZW50YXRpb24gb3IgY29kZSBpbiBgRG9jdW1lbnRhdGlvbi9gIG9yIGBkcml2ZXJzL3BjaS9gIHRoYXQmIzM5O3Mgc3l6a2FsbGVyLXNwZWNpZmljIHRoYXQgd2lsbCBnaXZlIG1lIHRoZSBhbnN3ZXIuIEJ1dCwgaW4gZ2VuZXJhbCwgaWYgaXQmIzM5O3MgYSBoYXJkd2FyZSBkcml2ZXIgd2l0aG91dCBzb2Z0d2FyZSBlbXVsYXRpb24sIGl0JiMzOTtzIHVzdWFsbHkgdW5yZWFjaGFibGUsIHNvIEkgbmVlZCB0byBjaGVjayB0aGUga2VybmVsIGZvciBQQ0kgZW11bGF0aW9uIHNwZWNpZmljYWxseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAwODozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N5el9wY2kmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDA4OjMyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYxOTEKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAyNjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgRnV6emluZyBQb3NzaWJpbGl0aWVzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIGluaXRpYWxseSwgSSBkb24mIzM5O3Qgc2VlIGFueXRoaW5nIGltbWVkaWF0ZWx5IGp1bXBpbmcgb3V0IGF0IG1lIGFib3V0IGBzeXpfcGNpYC4gV2FpdCBhIHNlY29uZCwgd2FzbiYjMzk7dCB0aGVyZSBzb21ldGhpbmcgYWJvdXQgYSBQQ0kgZnV6emVyPyBTeXprYWxsZXIgKmRvZXMqIGhhdmUgYSBQQ0kgZnV6emVyLCBidXQgSSB0aGluayBpdCBtaWdodCBiZSBpbXBsZW1lbnRlZCB2aWEgYSBRRU1VIGRldmljZSBvciBzb21ldGhpbmcgc2ltaWxhci4KCk5vdywgaWYgdGhpcyBpcyBhICpoYXJkd2FyZSogZHJpdmVyLCB0aGF0IHJhaXNlcyBhIGtleSBxdWVzdGlvbjogY2FuIHdlIGV2ZW4gZnV6eiBpdCBlZmZlY3RpdmVseT8gUmVhZGluZyB0aGVzZSBpbnN0cnVjdGlvbnMsIHRoZSBrZXkgcG9pbnQganVtcHMgb3V0OiAmIzM0O0NvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSYjMzQ7LiBUaGF0JiMzOTtzIHRoZSBjcnV4IG9mIGl0LiBJZiBpdCYjMzk7cyBzaW1wbHkgdW5yZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBzZXR0aW5nLCBJJiMzOTttIGdvaW5nIHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYC4KClRoZSBiaWcgcXVlc3Rpb24gbm93IGlzOiBpcyBgbWx4c3dgIHJlYWNoYWJsZSB3aXRoaW4gUUVNVT8gTGV0IG1lIG1lbnRhbGx5IHN0YXJ0IHNlYXJjaGluZyBmb3IgYG1seHN3YCBpbiB0aGUgUUVNVSBzb3VyY2UgY29kZS4uLiBPa2F5LCBzbyBRRU1VIGRvZXNuJiMzOTt0IGRpcmVjdGx5IGVtdWxhdGUgTWVsbGFub3ggc3dpdGNoZXMsIHRoYXQmIzM5O3MgY2VydGFpbi4gSXQgKm1pZ2h0KiBlbXVsYXRlIHNvbWUgTWVsbGFub3ggTklDcywgYnV0IGV2ZW4gdGhlbiwgaXQmIzM5O3MgcHJvYmFibHkgdGhyb3VnaCBzb21lIHJlY2VudCBhZGRpdGlvbnMgb3IgZXh0ZXJuYWwgcHJvamVjdHMuIERlZmluaXRlbHkgbm90IG1seHN3LCB0aGUgTWVsbGFub3ggU3dpdGNoIEFTSUNzIGxpa2UgdGhlIFNwZWN0cnVtIGxpbmUuCgpIb2xkIG9uLCBpcyB0aGVyZSBhIGR1bW15IGRyaXZlciBvciBzb21lIGtpbmQgb2Ygd2F5IHRvIGluc3RhbnRpYXRlIGl0IHdpdGhvdXQgdGhlIGFjdHVhbCBoYXJkd2FyZT8gTGV0IG1lIGRvdWJsZS1jaGVjayBpZiBgbWx4c3dgIGhhcyBhIGR1bW15IGJ1cyBvciBzb21ldGhpbmcgc2ltaWxhci4gSSBuZWVkIHRvIGludmVzdGlnYXRlIGlmIHRoZXJlJiMzOTtzIGFueSBtZWNoYW5pc20gZm9yIGFic3RyYWN0aW5nIHRoZSBoYXJkd2FyZSBkZXBlbmRlbmN5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAwODozMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttbHhzd18uKl9wcm9iZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9jb3JlX2xpbmVjYXJkX2Rldi5jPTEyMj1zdGF0aWMgY29uc3Qgc3RydWN0IGRldmxpbmtfb3BzIG1seHN3X2xpbmVjYXJkX2Rldl9kZXZsaW5rX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9jb3JlX2xpbmVjYXJkX2Rldi5jLTEyNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmVfbGluZWNhcmRfZGV2LmM6MTI3OnN0YXRpYyBpbnQgbWx4c3dfbGluZWNhcmRfYmRldl9wcm9iZShzdHJ1Y3QgYXV4aWxpYXJ5X2RldmljZSAqYWRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmVfbGluZWNhcmRfZGV2LmMtMTI4LVx0XHRcdFx0ICAgICBjb25zdCBzdHJ1Y3QgYXV4aWxpYXJ5X2RldmljZV9pZCAqaWQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvY29yZV9saW5lY2FyZF9kZXYuYz0xNzE9c3RhdGljIHN0cnVjdCBhdXhpbGlhcnlfZHJpdmVyIG1seHN3X2xpbmVjYXJkX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmVfbGluZWNhcmRfZGV2LmMtMTcyLVx0Lm5hbWUgPSBNTFhTV19MSU5FQ0FSRF9ERVZfSURfTkFNRSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmVfbGluZWNhcmRfZGV2LmM6MTczOlx0LnByb2JlID0gbWx4c3dfbGluZWNhcmRfYmRldl9wcm9iZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmVfbGluZWNhcmRfZGV2LmMtMTc0LVx0LnJlbW92ZSA9IG1seHN3X2xpbmVjYXJkX2JkZXZfcmVtb3ZlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2kyYy5jPTYyND1zdGF0aWMgY29uc3Qgc3RydWN0IG1seHN3X2J1cyBtbHhzd19pMmNfYnVzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2kyYy5jLTYzMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2kyYy5jOjYzMzpzdGF0aWMgaW50IG1seHN3X2kyY19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvaTJjLmMtNjM0LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9pMmMuYz03NTA9aW50IG1seHN3X2kyY19kcml2ZXJfcmVnaXN0ZXIoc3RydWN0IGkyY19kcml2ZXIgKmkyY19kcml2ZXIpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9pMmMuYy03NTEte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvaTJjLmM6NzUyOlx0aTJjX2RyaXZlci1cdTAwM2Vwcm9iZSA9IG1seHN3X2kyY19wcm9iZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2kyYy5jLTc1My1cdGkyY19kcml2ZXItXHUwMDNlcmVtb3ZlID0gbWx4c3dfaTJjX3JlbW92ZTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuYz0yNDIzPXN0YXRpYyB2b2lkIG1seHN3X3BjaV9jbWRfZmluaShzdHJ1Y3QgbWx4c3dfcGNpICptbHhzd19wY2kpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvcGNpLmMtMjQyOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3BjaS5jOjI0MzA6c3RhdGljIGludCBtbHhzd19wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3BjaS5jLTI0MzEte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3BjaS5jPTI1NDg9aW50IG1seHN3X3BjaV9kcml2ZXJfcmVnaXN0ZXIoc3RydWN0IHBjaV9kcml2ZXIgKnBjaV9kcml2ZXIpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuYy0yNTQ5LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3BjaS5jOjI1NTA6XHRwY2lfZHJpdmVyLVx1MDAzZXByb2JlID0gbWx4c3dfcGNpX3Byb2JlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvcGNpLmMtMjU1MS1cdHBjaV9kcml2ZXItXHUwMDNlcmVtb3ZlID0gbWx4c3dfcGNpX3JlbW92ZTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9yb3V0ZXIuYz0yNjIxPXN0YXRpYyB2b2lkIG1seHN3X3NwX3JvdXRlcl9uZWlnaHNfdXBkYXRlX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX3JvdXRlci5jLTI2MzYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9yb3V0ZXIuYzoyNjM3OnN0YXRpYyB2b2lkIG1seHN3X3NwX3JvdXRlcl9wcm9iZV91bnJlc29sdmVkX25leHRob3BzKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX3JvdXRlci5jLTI2Mzgte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX3JvdXRlci5jLTI2NTYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9yb3V0ZXIuYzoyNjU3Olx0bWx4c3dfY29yZV9zY2hlZHVsZV9kdyhcdTAwMjZyb3V0ZXItXHUwMDNlbmV4dGhvcF9wcm9iZV9kdyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX3JvdXRlci5jLTI2NTgtXHRcdFx0ICAgICAgIE1MWFNXX1NQX1VOUkVTT0xWRURfTkhfUFJPQkVfSU5URVJWQUwpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX3JvdXRlci5jPTI5NDY9c3RhdGljIGludCBtbHhzd19zcF9uZWlnaF9pbml0KHN0cnVjdCBtbHhzd19zcCAqbWx4c3dfc3ApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fcm91dGVyLmMtMjk2Mi1cdFx0XHQgIG1seHN3X3NwX3JvdXRlcl9uZWlnaHNfdXBkYXRlX3dvcmspO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fcm91dGVyLmM6Mjk2MzpcdElOSVRfREVMQVlFRF9XT1JLKFx1MDAyNm1seHN3X3NwLVx1MDAzZXJvdXRlci1cdTAwM2VuZXh0aG9wX3Byb2JlX2R3LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fcm91dGVyLmM6Mjk2NDpcdFx0XHQgIG1seHN3X3NwX3JvdXRlcl9wcm9iZV91bnJlc29sdmVkX25leHRob3BzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX3JvdXRlci5jLTI5NjUtXHRhdG9taWNfc2V0KFx1MDAyNm1seHN3X3NwLVx1MDAzZXJvdXRlci1cdTAwM2VuZWlnaHNfdXBkYXRlLm5laWdoX2NvdW50LCAwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX3JvdXRlci5jLTI5NjYtXHRtbHhzd19jb3JlX3NjaGVkdWxlX2R3KFx1MDAyNm1seHN3X3NwLVx1MDAzZXJvdXRlci1cdTAwM2VuZWlnaHNfdXBkYXRlLmR3LCAwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX3JvdXRlci5jOjI5Njc6XHRtbHhzd19jb3JlX3NjaGVkdWxlX2R3KFx1MDAyNm1seHN3X3NwLVx1MDAzZXJvdXRlci1cdTAwM2VuZXh0aG9wX3Byb2JlX2R3LCAwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX3JvdXRlci5jLTI5NjgtXHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9yb3V0ZXIuYz0yOTcxPXN0YXRpYyB2b2lkIG1seHN3X3NwX25laWdoX2Zpbmkoc3RydWN0IG1seHN3X3NwICptbHhzd19zcClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9yb3V0ZXIuYy0yOTczLVx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFx1MDAyNm1seHN3X3NwLVx1MDAzZXJvdXRlci1cdTAwM2VuZWlnaHNfdXBkYXRlLmR3KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX3JvdXRlci5jOjI5NzQ6XHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXHUwMDI2bWx4c3dfc3AtXHUwMDNlcm91dGVyLVx1MDAzZW5leHRob3BfcHJvYmVfZHcpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fcm91dGVyLmMtMjk3NS1cdHJoYXNodGFibGVfZGVzdHJveShcdTAwMjZtbHhzd19zcC1cdTAwM2Vyb3V0ZXItXHUwMDNlbmVpZ2hfaHQpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAwODozMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NjgyCgkJCQkJCQlvdXRwdXQ6IDI1CgkJCQkJCQl0aG91Z2h0czogNTU4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIFN5emthbGxlciYjMzk7cyBQQ0kgRnV6emluZyBDYXBhYmlsaXRpZXMqKgoKT2theSwgc28gSSYjMzk7bSB0cnlpbmcgdG8gZmlndXJlIG91dCBpZiB0aGlzIGRyaXZlciBpcyByZWFjaGFibGUgdmlhIHN5emthbGxlciBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBUaGUgaW5pdGlhbCB0aG91Z2h0IGlzLCBob3cgaXMgdGhlIGRyaXZlciBwcm9iZWQ/IFBDSSBvciBJMkMsIGxpa2VseS4gTm93LCB0aGUgYmlnIHF1ZXN0aW9uOiBjYW4gc3l6a2FsbGVyIGFjdHVhbGx5ICplbXVsYXRlKiBQQ0kgZGV2aWNlcz8gSSBrbm93IGl0IGRvZXNuJiMzOTt0IGhhdmUgYSBmdWxseSBmbGV4aWJsZSBQQ0kgZW11bGF0b3IsIGVzcGVjaWFsbHkgbm90IG9uZSB0aGF0IGxldHMgeW91IGRlZmluZSBhcmJpdHJhcnkgdmVuZG9yL2RldmljZSBJRHMgZWFzaWx5LiBVbmxlc3MgaXQmIzM5O3MgbGV2ZXJhZ2luZyBgdmZpb2Agd2l0aCBhIHJlYWwsIG9yIGF0IGxlYXN0IGEgKmR1bW15KiwgZGV2aWNlLgoKV2FpdCBhIHNlY29uZCwgc3l6Ym90IHJlcG9ydGVkIGEgYnVnIGluIHRoaXMgY29kZSEgQW5kIHRoZXJlJiMzOTtzIGEgcGF0Y2ggdW5kZXIgcmV2aWV3LCByZWxhdGVkIHRvIHRoaXMgaXNzdWUhIFRoaXMgaXMgcHJvbWlzaW5nLCBzeXpib3QgZm91bmQgc29tZXRoaW5nISBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBjaGVjayBpZiBzeXprYWxsZXIgaGFzIGEgd2F5IHRvIGZ1enogUENJIGRldmljZXMgaW4gZ2VuZXJhbC4gSSByZW1lbWJlciB0aGVyZSAqaXMqIGEgUENJIGZ1enplciwgdXNpbmcgYHN5el9wY2lfZGV2aWNlYCBvciBhIHNpbWlsYXIgY29uc3RydWN0LCByaWdodD8gTm9wZSwgdGhpcyBwcm9tcHQgcmVtaW5kZWQgbWU6IHRob3NlICYjMzQ7c3l6XyYjMzQ7IGNhbGxzIGFyZW4mIzM5O3QgcmVhbCBrZXJuZWwgY2FsbHMsIHNvIHRoYXQmIzM5O3MgYSBkZWFkIGVuZC4KCkkgKnRob3VnaHQqIHRoZXJlIHdhcyByZWNlbnQgUENJIGZ1enppbmcgc3VwcG9ydCB3aXRoIGBzeXpfcGNpX2RldmljZWAsIGxpa2Ugd2l0aCBVU0IgYW5kIGB2aGNpYCwgYnV0IG5vLCBub3QgcXVpdGUuIFRoZSBpbXBsZW1lbnRhdGlvbiBtdXN0IGJlIHNvbWV3aGVyZSBlbHNlLiBCdXQgd2FpdCEgSSByZWNhbGwgc3l6a2FsbGVyICpkb2VzKiBoYXZlIGEgUENJIGZ1enplciBhbmQgSSB0aGluayBpdCYjMzk7cyBkZWZpbmVkIGluIGEgYHN5cy9saW51eC9wY2kudHh0YCBvciBzaW1pbGFyIGZpbGUuIElmIHRoYXQmIzM5O3MgdGhlIGNhc2UsIHRoZW4gbWF5YmUgSSBjYW4gZmlndXJlIG91dCBob3cgdG8gcmVhY2ggYG1seHN3X3BjaV9wcm9iZWAuCgpPa2F5LCBzbyBpZiBzeXprYWxsZXIgKmNhbiogZnV6eiBQQ0kgZGV2aWNlcywgdGhlbiB0aGlzIGNvZGUgKmlzKiByZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gTGV0JiMzOTtzIGFzc3VtZSBzeXprYWxsZXIgY2FuIGRvIHRoaXMuIFRoZSBwcm9tcHQganVzdCBicm91Z2h0IHVwIHRoZSBjaGFsbGVuZ2UgYWdhaW46IHVucmVhY2hhYmxlIGNvZGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBJZiBzeXprYWxsZXIgKmRvZXMqIGhhdmUgYSBQQ0kgZnV6emVyLCBpdCBoYXMgdG8gdXNlIHNvbWUgUUVNVSBmZWF0dXJlIChsaWtlIGB2ZmlvLXVzZXJgLCBgaXZzaG1lbWAsIG9yIGEgY3VzdG9tIFFFTVUgZGV2aWNlKSBvciBrZXJuZWwgZmVhdHVyZSAoYHBjaV9zdHViYCBvciBgdmZpb2ApIHRvIGluamVjdCBQQ0kgZGV2aWNlcy4KCk9rYXksIGlzIGl0IGEgY3VzdG9tIFFFTVUgZGV2aWNlPyBOby4gTWF5YmUgYHZmaW9gPyBUaGF0JiMzOTtzIHR5cGljYWxseSBmb3IgdXNlcnNwYWNlIGRyaXZlcnMsIEkgcmVjYWxsLiBJIHZhZ3VlbHkgcmVtZW1iZXIgc29tZXRoaW5nIGFib3V0IGEgYGVkdWAgZGV2aWNlLCBidXQgdGhhdCYjMzk7cyBub3QgcmlnaHQuIE5vLiBIbW0sIG1heWJlIGB2aXJ0aW9gPyBJZiBzbywgd2hhdCBpcyB0aGUgaW5qZWN0aW9uIG1lY2hhbmlzbSBpbiB0aGUga2VybmVsPyBJIG5lZWQgdG8gY2hlY2sgZm9yIGEga2VybmVsIGluamVjdGlvbiBtZWNoYW5pc20gb2Ygc29ydHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDA4OjMyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGNpX2Z1enomIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAwODozMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5ODMzCgkJCQkJCQlvdXRwdXQ6IDI1CgkJCQkJCQl0aG91Z2h0czogMTgwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFzc2Vzc2luZyB0aGUgRnV6emluZyBQb3RlbnRpYWwgb2YgVGhpcyBQYXRjaCoqCgpPa2F5LCBmaXJzdCB0aGluZ3MgZmlyc3QuIEkgbmVlZCB0byBxdWlja2x5IHJ1bGUgb3V0IHRoZSBvYnZpb3VzOiBpcyB0aGlzIHJlbGF0ZWQgdG8gYSBzdGFuZGFyZCBgc3l6X3BjaWAgaW50ZXJhY3Rpb24/IE5vLCBJJiMzOTt2ZSBhbHJlYWR5IGNvbmZpcm1lZCB0aGF0JiMzOTtzIG5vdCB0aGUgY2FzZS4gUmlnaHQsIGFuZCBJIHJlbWVtYmVyIHN5emthbGxlciBkb2VzbiYjMzk7dCBoYXZlIGEgYnVpbHQtaW4gUENJIGZ1enplciB0aGF0IGNhbiBqdXN0ICpjcmVhdGUqIGFueSBQQ0kgZGV2aWNlLiBTbywgd2hhdCB0cmlnZ2VyZWQgdGhpcyBidWc/IE15IGZpcnN0IHRob3VnaHQgd2FzIG1heWJlIHN5emJvdCBoaXQgdGhpcyBiZWNhdXNlIHNvbWVvbmUgcmFuIHN5emthbGxlciBvbiBhIHBoeXNpY2FsIG1hY2hpbmUgd2l0aCBhIE1lbGxhbm94IHN3aXRjaCwgYnV0IG5vLCBzeXpib3QmIzM5O3MgR0NFIGluc3RhbmNlcyBkb24mIzM5O3QgaGF2ZSB0aGF0IHNvcnQgb2YgaGFyZHdhcmUuIEhtbW0sIHRoZW4gZGlkIGFub3RoZXIgZnV6emVyIGZpbmQgdGhpcz8gT3IgcGVyaGFwcyBpdCB3YXMgYSBtYW51YWxseSB3cml0dGVuIHBhdGNoPyAKCkFoLCBoZXJlJiMzOTtzIGEgY2x1ZS4gSSBzZWUgJiMzNDtzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcmIzM0Oy4gT2theSwgdGhhdCYjMzk7cyBnb29kIGluZm9ybWF0aW9uLiBTbywgc3l6LWNsdXN0ZXIgaXMgdGVzdGluZyB0aGUgcGF0Y2guIFRoZSBjcnVjaWFsIHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhpcyBidWcgY2FuIGJlIHRyaWdnZXJlZCBpbiB0aGUgR0NFIGVudmlyb25tZW50IG9yIFFFTVUuIElmIGl0IGNhbiYjMzk7dCwgaXQmIzM5O3MgYSBkZWFkIGVuZCBhcyBmYXIgYXMgZnV6emluZyBnb2VzLiBJdCB3b3VsZCBiZSBhICYjMzQ7V29ydGhGdXp6aW5nPWZhbHNlJiMzNDsgc2NlbmFyaW8uIExldCBtZSBkb3VibGUtY2hlY2suIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhlcmUmIzM5O3Mgbm8gc29mdHdhcmUgZW11bGF0aW9uIGF2YWlsYWJsZSBmb3IgbWx4c3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDA4OjMyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWx4c3cuKmVtdWwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAwODozMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDMzMwoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHN1bW1hcnksIHByZXNlbnRlZCBhcyBhIHN0cmVhbSBvZiB0aG91Z2h0OgoKKipDaGVja2luZyBtbHhzdyBhbmQgbmV0ZGV2c2ltIEludGVncmF0aW9uKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGluLiBGaXJzdCB0aGluZ3MgZmlyc3QsIEkgbmVlZCB0byBpbnZlc3RpZ2F0ZSBzb21ldGhpbmcgc3BlY2lmaWMuIEkmIzM5O20gY3VyaW91cyBhYm91dCB0aGUgY3VycmVudCBzdGF0ZSBvZiBhZmZhaXJzIHJlZ2FyZGluZyBgbmV0ZGV2c2ltYCBhbmQgaXRzIGNvbXBhdGliaWxpdHkgd2l0aCBtbHhzdy4gSXMgdGhlcmUgYW55IGV4aXN0aW5nIHN1cHBvcnQ/IEFyZSB0aGVyZSBhbnkgZWZmb3J0cyB1bmRlcndheSB0byBpbnRlZ3JhdGUgdGhlIHR3bz8gVGhpcyBpcyBzb21ldGhpbmcgSSYjMzk7dmUgYmVlbiB0aGlua2luZyBhYm91dCBmb3IgYSB3aGlsZSwgYW5kIG5vdyYjMzk7cyB0aGUgdGltZSB0byBwaW4gZG93biB3aGVyZSB0aGluZ3Mgc3RhbmQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIGBuZXRkZXZzaW1gLCBhcyBhIHRvb2wgZm9yIG5ldHdvcmsgZGV2aWNlIHNpbXVsYXRpb24sIGNhbiBlZmZlY3RpdmVseSB3b3JrIHdpdGggdGhlIG1seHN3IHN3aXRjaCBwbGF0Zm9ybS4gSWYgdGhlcmUmIzM5O3Mgc3VwcG9ydCwgd2hhdCBhcmUgdGhlIGtleSBmZWF0dXJlcyBpdCBlbmFibGVzPyBJZiBub3QsIHdoYXQgd291bGQgYmUgdGhlIHJvYWRibG9ja3Mgb3IgbGltaXRhdGlvbnM/IFRoaXMgZXhwbG9yYXRpb24gaXMga2V5IGZvciB1bmRlcnN0YW5kaW5nIGhvdyB3ZSBjYW4gdGVzdCBhbmQgZGV2ZWxvcCBzb2Z0d2FyZSBmb3IgdGhlc2UgZGV2aWNlcyBpbiBhbiBlZmZpY2llbnQgbWFubmVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAwODozMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21seHN3JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbmV0ZGV2c2ltLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDA4OjMyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNTg2CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgcHJlc2VudGVkIGFzIGEgc3RyZWFtIG9mIHRob3VnaHQ6CgoqKkNoZWNraW5nIGZvciBQbGFjZWhvbGRlciBMb2dpYyBpbiBNTFhTVyoqCgpBbHJpZ2h0LCBiZWZvcmUgZGl2aW5nIHRvbyBkZWVwLCBJIG5lZWQgdG8gdGFrZSBhIHF1aWNrIHNhbml0eSBjaGVjay4gSSYjMzk7dmUgZ290IHRvIGVuc3VyZSBJJiMzOTttIG5vdCBvdmVybG9va2luZyBhbnl0aGluZyBvYnZpb3VzLCBvciBmYWxsaW5nIGludG8gYSB0cmFwIG9mIGFzc3VtaW5nIHNvbWV0aGluZyYjMzk7cyBhbHJlYWR5IGhhbmRsZWQuIFRoZSBtb3N0IGVmZmljaWVudCB3YXkgdG8gYXBwcm9hY2ggdGhpcyB3b3VsZCBiZSB0byBjaGVjayBmb3IgYW55IHVzZSBvZiAmIzM0O2R1bW15JiMzNDsgb3IgJiMzNDttb2NrJiMzNDsgY29kZSB3aXRoaW4gdGhlIE1MWFNXIGNvZGViYXNlLiBJIHdhbnQgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgcGxhY2Vob2xkZXIgaW1wbGVtZW50YXRpb25zIG9yIHRlc3Rpbmcgc3R1YnMgdGhhdCBtaWdodCBiZSBwcmVzZW50LiBUaG9zZSBrZXl3b3JkcyBhcmUgdXN1YWxseSBzdHJvbmcgaW5kaWNhdG9ycyB0aGF0IEkgbmVlZCB0byBpbnZlc3RpZ2F0ZSBmdXJ0aGVyLiBJdCYjMzk7cyBhIHF1aWNrIHdpbiB0byBydWxlIG91dCBhbnkgZXhpc3RpbmcsIGJ1aWx0LWluIHNjYWZmb2xkaW5nLiBTYXZlcyBhIHRvbiBvZiBoZWFkYWNoZSBsYXRlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMDg6MzI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZHVtbXkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvY29yZV9hY2xfZmxleF9hY3Rpb25zLmM9NDA1PXN0cnVjdCBtbHhzd19hZmFfYmxvY2sgKm1seHN3X2FmYV9ibG9ja19jcmVhdGUoc3RydWN0IG1seHN3X2FmYSAqbWx4c3dfYWZhKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmVfYWNsX2ZsZXhfYWN0aW9ucy5jLTQxOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmVfYWNsX2ZsZXhfYWN0aW9ucy5jOjQyMDpcdC8qIEluIGNhc2UgdXNlciBpbnN0cnVjdHMgdG8gaGF2ZSBkdW1teSBmaXJzdCBzZXQsIHdlIGxlYXZlIGl0XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9jb3JlX2FjbF9mbGV4X2FjdGlvbnMuYy00MjEtXHQgKiBlbXB0eSBoZXJlIGFuZCBjcmVhdGUgYW5vdGhlciwgcmVhbCwgc2V0IHJpZ2h0IGF3YXkuXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9jb3JlX2FjbF9mbGV4X2FjdGlvbnMuYy00MjItXHQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmVfYWNsX2ZsZXhfYWN0aW9ucy5jOjQyMzpcdGlmIChtbHhzd19hZmEtXHUwMDNlb3BzLVx1MDAzZWR1bW15X2ZpcnN0X3NldCkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvY29yZV9hY2xfZmxleF9hY3Rpb25zLmMtNDI0LVx0XHRibG9jay1cdTAwM2VjdXJfc2V0ID0gbWx4c3dfYWZhX3NldF9jcmVhdGUoZmFsc2UpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmVfYWNsX2ZsZXhfYWN0aW9ucy5oPTE0PXN0cnVjdCBtbHhzd19hZmFfb3BzIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9jb3JlX2FjbF9mbGV4X2FjdGlvbnMuaC0zOC1cdFx0XHQgICAgYm9vbCBpbmdyZXNzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmVfYWNsX2ZsZXhfYWN0aW9ucy5oOjM5Olx0Ym9vbCBkdW1teV9maXJzdF9zZXQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9jb3JlX2FjbF9mbGV4X2FjdGlvbnMuaC00MC19O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3BjaS5jPTE0Mz1zdGF0aWMgaW50IG1seHN3X3BjaV9uYXBpX2RldnNfaW5pdChzdHJ1Y3QgbWx4c3dfcGNpICptbHhzd19wY2kpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvcGNpLmMtMTQ2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvcGNpLmM6MTQ3Olx0bWx4c3dfcGNpLVx1MDAzZW5hcGlfZGV2X3R4ID0gYWxsb2NfbmV0ZGV2X2R1bW15KDApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvcGNpLmMtMTQ4LVx0aWYgKCFtbHhzd19wY2ktXHUwMDNlbmFwaV9kZXZfdHgpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvcGNpLmMtMTUyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvcGNpLmM6MTUzOlx0bWx4c3dfcGNpLVx1MDAzZW5hcGlfZGV2X3J4ID0gYWxsb2NfbmV0ZGV2X2R1bW15KDApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvcGNpLmMtMTU0LVx0aWYgKCFtbHhzd19wY2ktXHUwMDNlbmFwaV9kZXZfcngpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bS5oPTEwNzc9aW50IG1seHN3X3NwX2FjbF9ydWxlX2dldF9zdGF0cyhzdHJ1Y3QgbWx4c3dfc3AgKm1seHN3X3NwLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtLmgtMTA4Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtLmg6MTA4MzpzdHJ1Y3QgbWx4c3dfc3BfZmlkICptbHhzd19zcF9hY2xfZHVtbXlfZmlkKHN0cnVjdCBtbHhzd19zcCAqbWx4c3dfc3ApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW0uaC0xMDg0LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtLmg9MTMwNj1zdHJ1Y3QgbWx4c3dfc3BfZmlkICptbHhzd19zcF9maWRfcmZpZF9nZXQoc3RydWN0IG1seHN3X3NwICptbHhzd19zcCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtLmgtMTMwNy1cdFx0XHRcdFx0ICAgdTE2IHJpZl9pbmRleCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bS5oOjEzMDg6c3RydWN0IG1seHN3X3NwX2ZpZCAqbWx4c3dfc3BfZmlkX2R1bW15X2dldChzdHJ1Y3QgbWx4c3dfc3AgKm1seHN3X3NwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtLmgtMTMwOS12b2lkIG1seHN3X3NwX2ZpZF9wdXQoc3RydWN0IG1seHN3X3NwX2ZpZCAqZmlkKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9hY2wuYz0yND1zdHJ1Y3QgbWx4c3dfc3BfYWNsIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9hY2wuYy0yNi1cdHN0cnVjdCBtbHhzd19hZmsgKmFmaztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2FjbC5jOjI3Olx0c3RydWN0IG1seHN3X3NwX2ZpZCAqZHVtbXlfZmlkO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fYWNsLmMtMjgtXHRzdHJ1Y3Qgcmhhc2h0YWJsZSBydWxlc2V0X2h0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2FjbC5jPTg3PXN0YXRpYyBjb25zdCBzdHJ1Y3Qgcmhhc2h0YWJsZV9wYXJhbXMgbWx4c3dfc3BfYWNsX3J1bGVfaHRfcGFyYW1zID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2FjbC5jLTkzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fYWNsLmM6OTQ6c3RydWN0IG1seHN3X3NwX2ZpZCAqbWx4c3dfc3BfYWNsX2R1bW15X2ZpZChzdHJ1Y3QgbWx4c3dfc3AgKm1seHN3X3NwKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fYWNsLmMtOTUte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fYWNsLmM6OTY6XHRyZXR1cm4gbWx4c3dfc3AtXHUwMDNlYWNsLVx1MDAzZWR1bW15X2ZpZDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2FjbC5jLTk3LX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9hY2wuYz0xMDUyPWludCBtbHhzd19zcF9hY2xfaW5pdChzdHJ1Y3QgbWx4c3dfc3AgKm1seHN3X3NwKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2FjbC5jLTEwNzctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9hY2wuYzoxMDc4Olx0ZmlkID0gbWx4c3dfc3BfZmlkX2R1bW15X2dldChtbHhzd19zcCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9hY2wuYy0xMDc5LVx0aWYgKElTX0VSUihmaWQpKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fYWNsLmMtMTA4Mi1cdH1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2FjbC5jOjEwODM6XHRhY2wtXHUwMDNlZHVtbXlfZmlkID0gZmlkO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fYWNsLmMtMTA4NC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9hY2wuYz0xMTEwPXZvaWQgbWx4c3dfc3BfYWNsX2Zpbmkoc3RydWN0IG1seHN3X3NwICptbHhzd19zcClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9hY2wuYy0xMTE3LVx0V0FSTl9PTighbGlzdF9lbXB0eShcdTAwMjZhY2wtXHUwMDNlcnVsZXMpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2FjbC5jOjExMTg6XHRtbHhzd19zcF9maWRfcHV0KGFjbC1cdTAwM2VkdW1teV9maWQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fYWNsLmMtMTExOS1cdHJoYXNodGFibGVfZGVzdHJveShcdTAwMjZhY2wtXHUwMDNlcnVsZXNldF9odCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fYWNsX2F0Y2FtLmM9NDQ9c3RydWN0IG1seHN3X3NwX2FjbF9hdGNhbV9yZWdpb25fZ2VuZXJpYyB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9hY2xfYXRjYW0uYzo0NTpcdHN0cnVjdCBtbHhzd19zcF9hY2xfYXRjYW1fbGtleV9pZCBkdW1teV9sa2V5X2lkO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fYWNsX2F0Y2FtLmMtNDYtfTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9hY2xfYXRjYW0uYz03Mz1tbHhzd19zcF9hY2xfYXRjYW1fcmVnaW9uX2dlbmVyaWNfaW5pdChzdHJ1Y3QgbWx4c3dfc3BfYWNsX2F0Y2FtX3JlZ2lvbiAqYXJlZ2lvbilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9hY2xfYXRjYW0uYy04MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2FjbF9hdGNhbS5jOjgxOlx0cmVmY291bnRfc2V0KFx1MDAyNnJlZ2lvbl9nZW5lcmljLVx1MDAzZWR1bW15X2xrZXlfaWQucmVmY250LCAxKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2FjbF9hdGNhbS5jLTgyLVx0YXJlZ2lvbi1cdTAwM2Vwcml2ID0gcmVnaW9uX2dlbmVyaWM7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fYWNsX2F0Y2FtLmM9OTQ9bWx4c3dfc3BfYWNsX2F0Y2FtX2dlbmVyaWNfbGtleV9pZF9nZXQoc3RydWN0IG1seHN3X3NwX2FjbF9hdGNhbV9yZWdpb24gKmFyZWdpb24sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fYWNsX2F0Y2FtLmMtOTktXHRyZWdpb25fZ2VuZXJpYyA9IGFyZWdpb24tXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2FjbF9hdGNhbS5jOjEwMDpcdHJldHVybiBcdTAwMjZyZWdpb25fZ2VuZXJpYy1cdTAwM2VkdW1teV9sa2V5X2lkO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fYWNsX2F0Y2FtLmMtMTAxLX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9hY2xfZmxleF9hY3Rpb25zLmM9MjkwPWNvbnN0IHN0cnVjdCBtbHhzd19hZmFfb3BzIG1seHN3X3NwMl9hY3RfYWZhX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9hY2xfZmxleF9hY3Rpb25zLmMtMzAzLVx0LnNhbXBsZXJfZGVsXHRcdD0gbWx4c3dfc3AyX2FjdF9zYW1wbGVyX2RlbCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2FjbF9mbGV4X2FjdGlvbnMuYzozMDQ6XHQuZHVtbXlfZmlyc3Rfc2V0XHQ9IHRydWUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9hY2xfZmxleF9hY3Rpb25zLmMtMzA1LX07XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fYnVmZmVycy5jPTgzNz1zdGF0aWMgY29uc3Qgc3RydWN0IG1seHN3X3NwX3NiX2NtIG1seHN3X3NwMV9zYl9jbXNfaW5ncmVzc1tdID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2J1ZmZlcnMuYy04NDUtXHRNTFhTV19TUF9TQl9DTV9JTkcoMCwgTUxYU1dfUkVHX1NCWFhfRFlOX01BWF9CVUZGX01JTiksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9idWZmZXJzLmM6ODQ2Olx0TUxYU1dfU1BfU0JfQ01fSU5HKDAsIDApLCAvKiBkdW1teSwgdGhpcyBQRyBkb2VzIG5vdCBleGlzdCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fYnVmZmVycy5jLTg0Ny1cdE1MWFNXX1NQX1NCX0NNKDEwMDAwLCA4LCBNTFhTV19TUF9TQl9QT09MX0lOR19DUFUpLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2J1ZmZlcnMuYz04NTA9c3RhdGljIGNvbnN0IHN0cnVjdCBtbHhzd19zcF9zYl9jbSBtbHhzd19zcDJfc2JfY21zX2luZ3Jlc3NbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9idWZmZXJzLmMtODU4LVx0TUxYU1dfU1BfU0JfQ01fSU5HKDAsIE1MWFNXX1JFR19TQlhYX0RZTl9NQVhfQlVGRl9NSU4pLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fYnVmZmVycy5jOjg1OTpcdE1MWFNXX1NQX1NCX0NNX0lORygwLCAwKSwgLyogZHVtbXksIHRoaXMgUEcgZG9lcyBub3QgZXhpc3QgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2J1ZmZlcnMuYy04NjAtXHRNTFhTV19TUF9TQl9DTSgxMDAwMCwgOCwgTUxYU1dfU1BfU0JfUE9PTF9JTkdfQ1BVKSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYz0xNjQyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbWx4c3dfc3BfZmlkX29wcyBtbHhzd19zcF9maWRfcmZpZF9vcHNfY2ZmID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2ZpZC5jLTE2NjEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYzoxNjYyOnN0YXRpYyBpbnQgbWx4c3dfc3BfZmlkX2R1bW15X3NldHVwKHN0cnVjdCBtbHhzd19zcF9maWQgKmZpZCwgY29uc3Qgdm9pZCAqYXJnKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmlkLmMtMTY2My17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmlkLmMtMTY2Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2ZpZC5jOjE2Njg6c3RhdGljIGludCBtbHhzd19zcF9maWRfZHVtbXlfY29uZmlndXJlKHN0cnVjdCBtbHhzd19zcF9maWQgKmZpZClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2ZpZC5jLTE2Njkte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2ZpZC5jLTE2NzItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYzoxNjczOnN0YXRpYyB2b2lkIG1seHN3X3NwX2ZpZF9kdW1teV9kZWNvbmZpZ3VyZShzdHJ1Y3QgbWx4c3dfc3BfZmlkICpmaWQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYy0xNjc0LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYy0xNjc3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmlkLmM6MTY3ODpzdGF0aWMgaW50IG1seHN3X3NwX2ZpZF9kdW1teV9pbmRleF9hbGxvYyhzdHJ1Y3QgbWx4c3dfc3BfZmlkICpmaWQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYy0xNjc5LVx0XHRcdFx0XHQgIGNvbnN0IHZvaWQgKmFyZywgdTE2ICpwX2ZpZF9pbmRleClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYy0xNjg1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmlkLmM6MTY4NjpzdGF0aWMgYm9vbCBtbHhzd19zcF9maWRfZHVtbXlfY29tcGFyZShjb25zdCBzdHJ1Y3QgbWx4c3dfc3BfZmlkICpmaWQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYy0xNjg3LVx0XHRcdFx0ICAgICAgIGNvbnN0IHZvaWQgKmFyZylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYy0xNjkxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmlkLmM6MTY5MjpzdGF0aWMgaW50IG1seHN3X3NwX2ZpZF9kdW1teV92bmlfc2V0KHN0cnVjdCBtbHhzd19zcF9maWQgKmZpZClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2ZpZC5jLTE2OTMte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2ZpZC5jLTE2OTYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYzoxNjk3OnN0YXRpYyB2b2lkIG1seHN3X3NwX2ZpZF9kdW1teV92bmlfY2xlYXIoc3RydWN0IG1seHN3X3NwX2ZpZCAqZmlkKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmlkLmMtMTY5OC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmlkLmMtMTcwMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2ZpZC5jOjE3MDI6c3RhdGljIGludCBtbHhzd19zcF9maWRfZHVtbXlfbnZlX2Zsb29kX2luZGV4X3NldChzdHJ1Y3QgbWx4c3dfc3BfZmlkICpmaWQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYy0xNzAzLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYy0xNzA2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmlkLmM6MTcwNzpzdGF0aWMgdm9pZCBtbHhzd19zcF9maWRfZHVtbXlfbnZlX2Zsb29kX2luZGV4X2NsZWFyKHN0cnVjdCBtbHhzd19zcF9maWQgKmZpZClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2ZpZC5jLTE3MDgte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2ZpZC5jLTE3MTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYzoxNzEyOnN0YXRpYyBjb25zdCBzdHJ1Y3QgbWx4c3dfc3BfZmlkX29wcyBtbHhzd19zcF9maWRfZHVtbXlfb3BzID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmlkLmM6MTcxMzpcdC5zZXR1cFx0XHRcdD0gbWx4c3dfc3BfZmlkX2R1bW15X3NldHVwLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmlkLmM6MTcxNDpcdC5jb25maWd1cmVcdFx0PSBtbHhzd19zcF9maWRfZHVtbXlfY29uZmlndXJlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmlkLmM6MTcxNTpcdC5kZWNvbmZpZ3VyZVx0XHQ9IG1seHN3X3NwX2ZpZF9kdW1teV9kZWNvbmZpZ3VyZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2ZpZC5jOjE3MTY6XHQuaW5kZXhfYWxsb2NcdFx0PSBtbHhzd19zcF9maWRfZHVtbXlfaW5kZXhfYWxsb2MsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYzoxNzE3Olx0LmNvbXBhcmVcdFx0PSBtbHhzd19zcF9maWRfZHVtbXlfY29tcGFyZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2ZpZC5jOjE3MTg6XHQudm5pX3NldCAgICAgICAgICAgICAgICA9IG1seHN3X3NwX2ZpZF9kdW1teV92bmlfc2V0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmlkLmM6MTcxOTpcdC52bmlfY2xlYXJcdFx0PSBtbHhzd19zcF9maWRfZHVtbXlfdm5pX2NsZWFyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmlkLmM6MTcyMDpcdC5udmVfZmxvb2RfaW5kZXhfc2V0XHQ9IG1seHN3X3NwX2ZpZF9kdW1teV9udmVfZmxvb2RfaW5kZXhfc2V0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmlkLmM6MTcyMTpcdC5udmVfZmxvb2RfaW5kZXhfY2xlYXJcdD0gbWx4c3dfc3BfZmlkX2R1bW15X252ZV9mbG9vZF9pbmRleF9jbGVhcixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2ZpZC5jLTE3MjItXHQuZmlkX3BhY2tcdFx0PSBtbHhzd19zcF9maWRfcGFjayxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYz0xODI2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbWx4c3dfc3BfZmlkX29wcyBtbHhzd19zcF9maWRfODAyMXFfb3BzX2NmZiA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYy0xODU0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmlkLmM6MTg1NTovKiBUaGVyZSBpcyBvbmUgZHVtbXkgRklEICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYy0xODU2LSNkZWZpbmUgTUxYU1dfU1BfRklEX0RVTU1ZXHRcdChNTFhTV19TUF9GSURfODAyMURfRU5EICYjNDM7IDEpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmlkLmM9MTg3Nj1zdGF0aWMgY29uc3Qgc3RydWN0IG1seHN3X3NwX2ZpZF9mYW1pbHkgbWx4c3dfc3AxX2ZpZF84MDIxZF9mYW1pbHkgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmlkLmMtMTg4Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2ZpZC5jOjE4ODg6c3RhdGljIGNvbnN0IHN0cnVjdCBtbHhzd19zcF9maWRfZmFtaWx5IG1seHN3X3NwMV9maWRfZHVtbXlfZmFtaWx5ID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmlkLmMtMTg4OS1cdC50eXBlXHRcdFx0PSBNTFhTV19TUF9GSURfVFlQRV9EVU1NWSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYy0xODkyLVx0LmVuZF9pbmRleFx0XHQ9IE1MWFNXX1NQX0ZJRF9EVU1NWSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2ZpZC5jOjE4OTM6XHQub3BzXHRcdFx0PSBcdTAwMjZtbHhzd19zcF9maWRfZHVtbXlfb3BzLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmlkLmMtMTg5NC1cdC5zbXBlX2luZGV4X3ZhbGlkICAgICAgID0gZmFsc2UsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmlkLmM9MTkwOD1zdGF0aWMgY29uc3Qgc3RydWN0IG1seHN3X3NwX2ZpZF9mYW1pbHkgKm1seHN3X3NwMV9maWRfZmFtaWx5X2FycltdID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2ZpZC5jLTE5MTAtXHRbTUxYU1dfU1BfRklEX1RZUEVfODAyMURdXHQ9IFx1MDAyNm1seHN3X3NwMV9maWRfODAyMWRfZmFtaWx5LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmlkLmM6MTkxMTpcdFtNTFhTV19TUF9GSURfVFlQRV9EVU1NWV1cdD0gXHUwMDI2bWx4c3dfc3AxX2ZpZF9kdW1teV9mYW1pbHksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYy0xOTEyLVx0W01MWFNXX1NQX0ZJRF9UWVBFX1JGSURdXHQ9IFx1MDAyNm1seHN3X3NwX2ZpZF9yZmlkX2ZhbWlseV9jdGwsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmlkLmM9MTkyOD1zdGF0aWMgY29uc3Qgc3RydWN0IG1seHN3X3NwX2ZpZF9mYW1pbHkgbWx4c3dfc3AyX2ZpZF84MDIxZF9mYW1pbHlfY3RsID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2ZpZC5jLTE5MzktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYzoxOTQwOnN0YXRpYyBjb25zdCBzdHJ1Y3QgbWx4c3dfc3BfZmlkX2ZhbWlseSBtbHhzd19zcDJfZmlkX2R1bW15X2ZhbWlseSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2ZpZC5jLTE5NDEtXHQudHlwZVx0XHRcdD0gTUxYU1dfU1BfRklEX1RZUEVfRFVNTVksXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmlkLmMtMTk0NC1cdC5lbmRfaW5kZXhcdFx0PSBNTFhTV19TUF9GSURfRFVNTVksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYzoxOTQ1Olx0Lm9wc1x0XHRcdD0gXHUwMDI2bWx4c3dfc3BfZmlkX2R1bW15X29wcyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2ZpZC5jLTE5NDYtXHQuc21wZV9pbmRleF92YWxpZCAgICAgICA9IGZhbHNlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2ZpZC5jPTE5NDk9c3RhdGljIGNvbnN0IHN0cnVjdCBtbHhzd19zcF9maWRfZmFtaWx5ICptbHhzd19zcDJfZmlkX2ZhbWlseV9hcnJfY3RsW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmlkLmMtMTk1MS1cdFtNTFhTV19TUF9GSURfVFlQRV84MDIxRF1cdD0gXHUwMDI2bWx4c3dfc3AyX2ZpZF84MDIxZF9mYW1pbHlfY3RsLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmlkLmM6MTk1MjpcdFtNTFhTV19TUF9GSURfVFlQRV9EVU1NWV1cdD0gXHUwMDI2bWx4c3dfc3AyX2ZpZF9kdW1teV9mYW1pbHksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYy0xOTUzLVx0W01MWFNXX1NQX0ZJRF9UWVBFX1JGSURdXHQ9IFx1MDAyNm1seHN3X3NwX2ZpZF9yZmlkX2ZhbWlseV9jdGwsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmlkLmM9MTk4OT1zdGF0aWMgY29uc3Qgc3RydWN0IG1seHN3X3NwX2ZpZF9mYW1pbHkgKm1seHN3X3NwMl9maWRfZmFtaWx5X2Fycl9jZmZbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYy0xOTkxLVx0W01MWFNXX1NQX0ZJRF9UWVBFXzgwMjFEXVx0PSBcdTAwMjZtbHhzd19zcDJfZmlkXzgwMjFkX2ZhbWlseV9jZmYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYzoxOTkyOlx0W01MWFNXX1NQX0ZJRF9UWVBFX0RVTU1ZXVx0PSBcdTAwMjZtbHhzd19zcDJfZmlkX2R1bW15X2ZhbWlseSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2ZpZC5jLTE5OTMtXHRbTUxYU1dfU1BfRklEX1RZUEVfUkZJRF1cdD0gXHUwMDI2bWx4c3dfc3BfZmlkX3JmaWRfZmFtaWx5X2NmZixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYz0yMTExPXN0cnVjdCBtbHhzd19zcF9maWQgKm1seHN3X3NwX2ZpZF9yZmlkX2dldChzdHJ1Y3QgbWx4c3dfc3AgKm1seHN3X3NwLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2ZpZC5jLTIxMTYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYzoyMTE3OnN0cnVjdCBtbHhzd19zcF9maWQgKm1seHN3X3NwX2ZpZF9kdW1teV9nZXQoc3RydWN0IG1seHN3X3NwICptbHhzd19zcClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2ZpZC5jLTIxMTgte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2Zsb3dlci5jPTU4PXN0YXRpYyBpbnQgbWx4c3dfc3BfZmxvd2VyX3BhcnNlX2FjdGlvbnMoc3RydWN0IG1seHN3X3NwICptbHhzd19zcCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9mbG93ZXIuYy0xNzItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9mbG93ZXIuYzoxNzM6XHRcdFx0ZmlkID0gbWx4c3dfc3BfYWNsX2R1bW15X2ZpZChtbHhzd19zcCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9mbG93ZXIuYy0xNzQtXHRcdFx0ZmlkX2luZGV4ID0gbWx4c3dfc3BfZmlkX2luZGV4KGZpZCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fdHJhcC5jPTEyMzI9c3RhdGljIGludCBtbHhzd19zcF90cmFwX2NwdV9wb2xpY2Vyc19zZXQoc3RydWN0IG1seHN3X3NwICptbHhzd19zcClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV90cmFwLmMtMTIzOC1cdC8qIFRoZSBwdXJwb3NlIG9mIFwmIzM0O3RoaW5cJiMzNDsgcG9saWNlciBpcyB0byBkcm9wIGFzIG1hbnkgcGFja2V0c1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fdHJhcC5jOjEyMzk6XHQgKiBhcyBwb3NzaWJsZS4gVGhlIGR1bW15IGdyb3VwIGlzIHVzaW5nIGl0LlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fdHJhcC5jLTEyNDAtXHQgKi9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV90cmFwLmMtMTI1MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX3RyYXAuYzoxMjUyOnN0YXRpYyBpbnQgbWx4c3dfc3BfdHJhcF9kdW1teV9ncm91cF9pbml0KHN0cnVjdCBtbHhzd19zcCAqbWx4c3dfc3ApXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV90cmFwLmMtMTI1My17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fdHJhcC5jPTE1Mjg9aW50IG1seHN3X3NwX2RldmxpbmtfdHJhcHNfaW5pdChzdHJ1Y3QgbWx4c3dfc3AgKm1seHN3X3NwKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX3RyYXAuYy0xNTM1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fdHJhcC5jOjE1MzY6XHRlcnIgPSBtbHhzd19zcF90cmFwX2R1bW15X2dyb3VwX2luaXQobWx4c3dfc3ApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fdHJhcC5jLTE1MzctXHRpZiAoZXJyKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAwODozMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzY4NgoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDQ4OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIG1seHN3IERyaXZlciBhbmQgU3l6a2FsbGVyJiMzOTtzIFBvdGVudGlhbCBmb3IgRnV6emluZyoqCgpPa2F5LCBzbyB0aGUgYG1seHN3YCBkcml2ZXIgaW5pdGlhbGl6ZXMgZHVtbXkgbmV0IGRldmljZXMgaW50ZXJuYWxseSBmb3IgTkFQSS4gVGhhdCYjMzk7cyBqdXN0IHN0YW5kYXJkIGRyaXZlciBzdHVmZjsgaXQgZG9lc24mIzM5O3QgbWFrZSB0aGUgZHJpdmVyIGl0c2VsZiBhIGR1bW15LiBJdCBzdGlsbCBuZWVkcyBhIFBDSSBkZXZpY2UgdG8gcHJvYmUuIE5vdywgbGV0JiMzOTtzIHRoaW5rIGFib3V0IHN5emthbGxlci4gSG1tLCB3YWl0LCBkb2VzIHN5emthbGxlciBoYXZlIGEgYHN5el9wY2lfZGV2aWNlYCBwc2V1ZG8tc3lzY2FsbD8gTm8sIGFjY29yZGluZyB0byB0aGUgcHJvbXB0LCBpdCBjYW4mIzM5O3QgaGFuZGxlIHRob3NlIHN5emthbGxlciBzcGVjaWZpYyBjYWxscy4gVGhpcyBpbXBsaWVzIGl0IG1pZ2h0IGJlIGFibGUgdG8gZnV6eiBQQ0kgZGV2aWNlcyBpbiBzb21lIGNhcGFjaXR5LgoKQnV0IHRoZW4gdGhlcmUmIzM5O3MgdGhhdCBjYXZlYXQgYWJvdXQgY29kZSBwYXRocyBiZWluZyB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aXRoIGVtdWxhdGVkIGhhcmR3YXJlLiBJZiBzeXprYWxsZXIgKmRvZXMqIGhhdmUgYSBQQ0kgZnV6emVyLCBpdCYjMzk7ZCBwcm9iYWJseSBuZWVkIHNvbWUgUUVNVSBmZWF0dXJlLiBIb3dldmVyLCBRRU1VIGRvZXNuJiMzOTt0IGVtdWxhdGUgTWVsbGFub3ggc3dpdGNoZXMsIGFzIGZhciBhcyBJIGtub3cuIFNvLi4uIGRvZXMgc3l6a2FsbGVyIGFjdHVhbGx5ICpoYXZlKiBhIFBDSSBmdXp6ZXI/IEl0JiMzOTtzIHRpbWUgdG8gaW52ZXN0aWdhdGUuCgpJIHNob3VsZCBjaGVjayBmb3IgdGhpbmdzIGxpa2UgYENPTkZJR19QQ0lfU1RVQmAgb3IgYENPTkZJR19WRklPYCB0aGF0IHN5emthbGxlciBtaWdodCBiZSB1c2luZy4gTGV0JiMzOTtzIHNlZS4uLiBzeXprYWxsZXIgdXNlcyBgc3l6X2t2bV9zZXR1cF9jcHVgIGZvciBLVk0sIGBzeXpfdXNiX2Nvbm5lY3RgIGZvciBVU0IsIGBzeXpfODAyMTFfaW5qZWN0X2ZyYW1lYCBmb3Igd2lmaS4gT2theSwgYnV0IGRvZXMgaXQgaGF2ZSBgc3l6X3BjaV9kZXZpY2VgPyBJJiMzOTttIGJldHRpbmcgbm8uIEkgZG9uJiMzOTt0IHRoaW5rIGl0IGhhcyBhIGdlbmVyaWMgUENJIGZ1enplciB0aGF0IGNhbiBpbnN0YW50aWF0ZSBhcmJpdHJhcnkgUENJIGRldmljZXMuCgpIbW0sIGJ1dCB3YWl0LCBtYXliZSBpdCBkb2VzPyBJJiMzOTttIGdldHRpbmcgYWhlYWQgb2YgbXlzZWxmLCBsZXQmIzM5O3MgcmUtZXZhbHVhdGUuIExldCBtZSBjaGFuZ2UgdHJhY2tzLiBMZXQmIzM5O3MgdHJ5IGZpZ3VyaW5nIG91dCBpZiB0aGVyZSYjMzk7cyBhIHdheSB0byB0cmlnZ2VyIGBtbHhzd19wY2lfcHJvYmVgIGZyb20gdXNlcnNwYWNlLiBDYW4gd2UgdXNlIGBuZXRkZXZzaW1gPyBObywgdGhhdCYjMzk7cyBhIHNlcGFyYXRlIGRyaXZlciwgbm90IGEgd2F5IHRvIGVtdWxhdGUuIENhbiB3ZSB1c2UgYGRldmxpbmtgIHRvIGluc3RhbnRpYXRlIG1seHN3PyBUaGF0IHNlZW1zIGxpa2UgdGhlIG1vc3QgbGlrZWx5IHBhdGguIFRpbWUgdG8gZXhhbWluZSB0aGUgYGRldmxpbmtgIG9wZXJhdGlvbnMgd2l0aGluIGBtbHhzd2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDA4OjMyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2Rldmxpbmtfb3BzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmUuYz0xNzIxPW1seHN3X2RldmxpbmtfdHJhcF9wb2xpY2VyX2NvdW50ZXJfZ2V0KHN0cnVjdCBkZXZsaW5rICpkZXZsaW5rLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmUuYy0xNzMzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvY29yZS5jOjE3MzQ6c3RhdGljIGNvbnN0IHN0cnVjdCBkZXZsaW5rX29wcyBtbHhzd19kZXZsaW5rX29wcyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmUuYy0xNzM1LVx0LnJlbG9hZF9hY3Rpb25zXHRcdD0gQklUKERFVkxJTktfUkVMT0FEX0FDVElPTl9EUklWRVJfUkVJTklUKSB8XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvY29yZS5jPTIwOTU9X19tbHhzd19jb3JlX2J1c19kZXZpY2VfcmVnaXN0ZXIoY29uc3Qgc3RydWN0IG1seHN3X2J1c19pbmZvICptbHhzd19idXNfaW5mbyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9jb3JlLmMtMjExMy1cdFx0YWxsb2Nfc2l6ZSA9IHNpemVvZigqbWx4c3dfY29yZSkgJiM0MzsgbWx4c3dfZHJpdmVyLVx1MDAzZXByaXZfc2l6ZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmUuYzoyMTE0Olx0XHRkZXZsaW5rID0gZGV2bGlua19hbGxvYyhcdTAwMjZtbHhzd19kZXZsaW5rX29wcywgYWxsb2Nfc2l6ZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmUuYy0yMTE1LVx0XHRcdFx0XHRtbHhzd19idXNfaW5mby1cdTAwM2VkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmVfbGluZWNhcmRfZGV2LmM9MTExPW1seHN3X2xpbmVjYXJkX2Rldl9kZXZsaW5rX2ZsYXNoX3VwZGF0ZShzdHJ1Y3QgZGV2bGluayAqZGV2bGluayxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9jb3JlX2xpbmVjYXJkX2Rldi5jLTEyMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmVfbGluZWNhcmRfZGV2LmM6MTIyOnN0YXRpYyBjb25zdCBzdHJ1Y3QgZGV2bGlua19vcHMgbWx4c3dfbGluZWNhcmRfZGV2X2Rldmxpbmtfb3BzID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvY29yZV9saW5lY2FyZF9kZXYuYy0xMjMtXHQuaW5mb19nZXRcdFx0XHQ9IG1seHN3X2xpbmVjYXJkX2Rldl9kZXZsaW5rX2luZm9fZ2V0LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmVfbGluZWNhcmRfZGV2LmM9MTI3PXN0YXRpYyBpbnQgbWx4c3dfbGluZWNhcmRfYmRldl9wcm9iZShzdHJ1Y3QgYXV4aWxpYXJ5X2RldmljZSAqYWRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9jb3JlX2xpbmVjYXJkX2Rldi5jLTEzNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmVfbGluZWNhcmRfZGV2LmM6MTM3Olx0ZGV2bGluayA9IGRldmxpbmtfYWxsb2MoXHUwMDI2bWx4c3dfbGluZWNhcmRfZGV2X2Rldmxpbmtfb3BzLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvY29yZV9saW5lY2FyZF9kZXYuYy0xMzgtXHRcdFx0XHRzaXplb2YoKmxpbmVjYXJkX2RldiksIFx1MDAyNmFkZXYtXHUwMDNlZGV2KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMDg6MzI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTkzOTUKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiAyODkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRGVidWdnaW5nIGEgUG90ZW50aWFsIG1seHN3IERyaXZlciBJc3N1ZSoqCgpPa2F5LCBzbyBEZXZsaW5rIGlzbiYjMzk7dCBhYm91dCBjcmVhdGluZyBuZXcgZGV2aWNlcywgaXQmIzM5O3MgYWJvdXQgbWFuYWdpbmcgZXhpc3Rpbmcgb25lcy4gSG1tLCBidXQgdGhlbi4uLiB3YXMgdGhhdCBhIHN5emJvdCByZXBvcnQgYWJvdXQgYSBidWcgaW4gYG1seHN3X3BjaV9jcV9uYXBpX3RlYXJkb3duYD8gVGhhdCBzb3VuZHMgaW1wb3J0YW50LiBMZXQgbWUgbG9vayBmb3Igc3l6Ym90IHJlcG9ydHMgcmVsYXRlZCB0byBgbWx4c3dgLiBDcmFwLCBubyBpbnRlcm5ldC4gT2theSwgcGxhbiBCOiBJIGNhbiBzZWFyY2ggdGhlIGtlcm5lbCBzb3VyY2UgbG9jYWxseSBmb3IgdGhhdCBmdW5jdGlvbiwgb3IgbWF5YmUgYG1seHN3X3BjaV9jcV9uYXBpX2Rpc2FibGVgLiBXYWl0IGEgc2Vjb25k4oCmIHRoZSBwYXRjaCBJJiMzOTttIGxvb2tpbmcgZm9yIGlzIGFjdHVhbGx5IGFscmVhZHkgYXBwbGllZCBpbiBteSB3b3Jrc3BhY2UuCgpBbHJpZ2h0LCBpZiB0aGUgcGF0Y2ggaXMgYWxyZWFkeSBhcHBsaWVkLCBob3cgZWxzZSBjb3VsZCB0aGF0IGNvZGUgYmUgaGl0PyBJcyB0aGVyZSBhbm90aGVyIHdheSB0byBnZXQgdG8gdGhhdCBjb2RlPyBQZXJoYXBzIGBtbHhzd2AgaXMgYSBwbGF0Zm9ybSBkZXZpY2Ugc29tZXRpbWVzPyBObywgSSYjMzk7bSBwcmV0dHkgc3VyZSBpdCYjMzk7cyBQQ0kgYW5kIEkyQywgZ2VuZXJhbGx5LgoKV2FpdCBhIHNlY29uZCwgc3l6a2FsbGVyIGhhcyBhIFBDSSBmdXp6ZXIsIHJpZ2h0PyBEb2VzIGl0IHVzZSBzb21ldGhpbmcgbGlrZSBgc3l6X3BjaV9kZXZpY2VgPyBObywgd2FpdCwgc3l6a2FsbGVyIHVzZXMgYHZoY2lgIGZvciBVU0IuIEZvciBQQ0ksIEkgdGhvdWdodCBtYXliZSBpdCB1c2VzIGB2ZmlvYD8gTm9wZSwgYHZmaW9gIGxldHMgdXNlcnNwYWNlIGRyaXZlIGEgcmVhbCBQQ0kgZGV2aWNlLCBpdCBkb2VzbiYjMzk7dCByZWFsbHkgbGV0IHlvdSAqaW5qZWN0KiBhIFBDSSBkZXZpY2UgaW50byB0aGUga2VybmVsLiAKCkFoLCB3YWl0ISBJIHJlY2FsbCByZWFkaW5nIHRoYXQgdGhlcmUgd2FzIGEgUENJIGZ1enplciBhZGRlZCB0byBzeXprYWxsZXIgcmVjZW50bHkuIERvZXMgaXQgdXNlIGEgY3VzdG9tIFFFTVUgZGV2aWNlLCBvciBkaWQgaXQgbGV2ZXJhZ2UgdGhlIGBwY2lfZW5kcG9pbnRgIGZyYW1ld29yaz8gT2theSwgdGltZSB0byBzZWUgaWYgdGhlcmUmIzM5O3MgYW55IFBDSSBpbmplY3Rpb24gY29kZSB3aXRoaW4gdGhlIGtlcm5lbCBpdHNlbGYuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDA4OjMyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGNpX2luamVjdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDA4OjMyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwMDc3CgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBteXNlbGY6CgoqKkludmVzdGlnYXRpbmcgUENJIERyaXZlciBJbXBsZW1lbnRhdGlvbnMqKgoKT2theSwgc28gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgUENJIGRyaXZlciBsYW5kc2NhcGUsIHBhcnRpY3VsYXJseSBhbnkgZXhhbXBsZXMgdGhhdCBtaWdodCBiZSB1c2VmdWwgZm9yIHRlc3Rpbmcgb3Igc2VydmUgYXMgZHVtbXkgaW1wbGVtZW50YXRpb25zLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGhlYWQgc3RyYWlnaHQgdG8gdGhlIHNvdXJjZS4gTGV0JiMzOTtzIHNlZS4uLiB0aGUgbG9naWNhbCBwbGFjZSB0byBzdGFydCB3b3VsZCBiZSB3aXRoaW4gdGhlIGtlcm5lbCYjMzk7cyBzb3VyY2UgY29kZS4gSSYjMzk7bGwgbmVlZCB0byBuYXZpZ2F0ZSB0byB0aGUgYGRyaXZlcnMvcGNpL2AgZGlyZWN0b3J5LiBUaGF0IGRpcmVjdG9yeSBpcyB0eXBpY2FsbHkgdGhlIGNlbnRyYWwgcmVwb3NpdG9yeSBmb3IgUENJLXJlbGF0ZWQgZHJpdmVycy4gSXQgc2hvdWxkIGhvdXNlIHRoZSBjb3JlIFBDSSBkcml2ZXIgY29kZSwgYXMgd2VsbCBhcyBhbnkgc3ViLWRyaXZlcnMgdGhhdCBoYW5kbGUgc3BlY2lmaWMgUENJIGRldmljZXMuIE15IHNwZWNpZmljIGdvYWwgaXMgdG8gaWRlbnRpZnkgYW5kIGV4YW1pbmUgYW55IGRyaXZlcnMgaW4gdGhhdCBkaXJlY3Rvcnkgd2hpY2ggbWlnaHQgYmUgaW50ZW50aW9uYWxseSBzaW1wbGUsIGRlc2lnbmVkIGZvciB0ZXN0aW5nIHRoZSBQQ0kgY29yZSBmdW5jdGlvbmFsaXR5LCBvciBzZXJ2aW5nIGFzIGEgdGVtcGxhdGUgdGhhdCBjb3VsZCBhY3QgYXMgYSAmIzM5O2R1bW15JiMzOTsgZHJpdmVyLiBJdCYjMzk7cyBvZnRlbiB1c2VmdWwgdG8gaGF2ZSBhIHNldCBvZiBtaW5pbWFsIGV4YW1wbGVzIHRvIGxlYXJuIHRoZSBrZXkgQVBJIGNhbGxzLCBhbmQgZm9yIHJhcGlkIHByb3RvdHlwaW5nLiBIb3BlZnVsbHksIHRoZXJlIGFyZSBzb21lIHdlbGwtY29tbWVudGVkIHRlc3QgZHJpdmVycyB0aGF0IGNsZWFybHkgaWxsdXN0cmF0ZSBob3cgdG8gaW50ZXJhY3Qgd2l0aCB0aGUgUENJIHN1YnN5c3RlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMDg6MzI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZHVtbXkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3BjaS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvcGNpLWRyYTd4eC5jPTE5MD1zdGF0aWMgaW50IGRyYTd4eF9wY2llX2ludHhfbWFwKHN0cnVjdCBpcnFfZG9tYWluICpkb21haW4sIHVuc2lnbmVkIGludCBpcnEsXG4tLVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvcGNpLWRyYTd4eC5jLTE5Mi17XG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2ktZHJhN3h4LmM6MTkzOlx0aXJxX3NldF9jaGlwX2FuZF9oYW5kbGVyKGlycSwgXHUwMDI2ZHVtbXlfaXJxX2NoaXAsIGhhbmRsZV9zaW1wbGVfaXJxKTtcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL3BjaS1kcmE3eHguYy0xOTQtXHRpcnFfc2V0X2NoaXBfZGF0YShpcnEsIGRvbWFpbi1cdTAwM2Vob3N0X2RhdGEpO1xuLS1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL3BjaS1pbXg2LmM9MTQ4MT1zdGF0aWMgdm9pZCBpbXhfcGNpZV9ob3N0X3Bvc3RfaW5pdChzdHJ1Y3QgZHdfcGNpZV9ycCAqcHApXG4tLVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvcGNpLWlteDYuYy0xNTE1LSAqIHJlZ2lzdGVyIGlzIHJlc2VydmVkLCBzbyB0aGUgZ2VuZXJpYyBEV0MgaW1wbGVtZW50YXRpb24gb2Ygc2VuZGluZyB0aGVcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL3BjaS1pbXg2LmM6MTUxNjogKiBQTUVfVHVybl9PZmYgbWVzc2FnZSB1c2luZyBhIGR1bW15IE1NSU8gd3JpdGUgY2Fubm90IGJlIHVzZWQuXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2ktaW14Ni5jLTE1MTctICovXG4tLVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvcGNpZS1kZXNpZ253YXJlLWhvc3QuYz0xMTg3PXN0YXRpYyBpbnQgZHdfcGNpZV9wbWVfdHVybl9vZmYoc3RydWN0IGR3X3BjaWUgKnBjaSlcbi0tXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2llLWRlc2lnbndhcmUtaG9zdC5jLTEyMTQtXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2llLWRlc2lnbndhcmUtaG9zdC5jOjEyMTU6XHQvKiBBIGR1bW15IHdyaXRlIGlzIGNvbnZlcnRlZCB0byBhIE1zZyBUTFAgKi9cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL3BjaWUtZGVzaWdud2FyZS1ob3N0LmMtMTIxNi1cdHdyaXRlbCgwLCBtZW0pO1xuLS1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvbW9iaXZlaWwvcGNpZS1tb2JpdmVpbC1ob3N0LmM9ODM9c3RhdGljIHZvaWQgbW9iaXZlaWxfcGNpZV9pc3Ioc3RydWN0IGlycV9kZXNjICpkZXNjKVxuLS1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvbW9iaXZlaWwvcGNpZS1tb2JpdmVpbC1ob3N0LmMtMTQ1LVx0XHQgKiBmcm9tIE1TSSBoYXJkd2FyZSBGSUZPLiBTbyBrZWVwaW5nIHRoZXNlIGZvbGxvd2luZ1xuZHJpdmVycy9wY2kvY29udHJvbGxlci9tb2JpdmVpbC9wY2llLW1vYml2ZWlsLWhvc3QuYzoxNDY6XHRcdCAqIHR3byBkdW1teSByZWFkcy5cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvbW9iaXZlaWwvcGNpZS1tb2JpdmVpbC1ob3N0LmMtMTQ3LVx0XHQgKi9cbi0tXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaS1oeXBlcnYuYz0xNzUxPXN0YXRpYyB1MzIgaHZfY29tcG9zZV9tc2lfcmVxX3YxKFxuLS1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpLWh5cGVydi5jLTE3NjEtXHQvKlxuZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2ktaHlwZXJ2LmM6MTc2MjpcdCAqIENyZWF0ZSBNU0kgdy8gZHVtbXkgdkNQVSBzZXQsIG92ZXJ3cml0dGVuIGJ5IHN1YnNlcXVlbnQgcmV0YXJnZXQgaW5cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpLWh5cGVydi5jLTE3NjMtXHQgKiBodl9pcnFfdW5tYXNrKCkuXG4tLVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2ktaHlwZXJ2LmMtMTc3MS0gKiBUaGUgdkNQVSBzZWxlY3RlZCBieSBodl9jb21wb3NlX211bHRpX21zaV9yZXFfZ2V0X2NwdSgpIGFuZFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2ktaHlwZXJ2LmM6MTc3MjogKiBodl9jb21wb3NlX21zaV9yZXFfZ2V0X2NwdSgpIGlzIGEgXCYjMzQ7ZHVtbXlcJiMzNDsgdkNQVSBiZWNhdXNlIHRoZSBmaW5hbCB2Q1BVIHRvIGJlXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaS1oeXBlcnYuYy0xNzczLSAqIGludGVycnVwdGVkIGlzIHNwZWNpZmllZCBsYXRlciBpbiBodl9pcnFfdW5tYXNrKCkgYW5kIGNvbW11bmljYXRlZCB0byBIeXBlci1WXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaS1oeXBlcnYuYzoxNzc0OiAqIHZpYSB0aGUgSFZDQUxMX1JFVEFSR0VUX0lOVEVSUlVQVCBoeXBlcmNhbGwuIEJ1dCB0aGUgY2hvaWNlIG9mIGR1bW15IHZDUFUgaXNcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpLWh5cGVydi5jLTE3NzUtICogbm90IGlycmVsZXZhbnQgYmVjYXVzZSBIeXBlci1WIGNob29zZXMgdGhlIHBoeXNpY2FsIENQVSB0byBoYW5kbGUgdGhlXG4tLVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2ktaHlwZXJ2LmMtMTc3OC0gKiBidXQgYXNzaWduaW5nIHRvbyBtYW55IHZQQ0kgZGV2aWNlIGludGVycnVwdHMgdG8gdGhlIHNhbWUgcENQVSBjYW4gY2F1c2UgYVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2ktaHlwZXJ2LmM6MTc3OTogKiBwZXJmb3JtYW5jZSBib3R0bGVuZWNrLiBTbyB3ZSBzcHJlYWQgb3V0IHRoZSBkdW1teSB2Q1BVcyB0byBpbmZsdWVuY2UgSHlwZXItVlxuZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2ktaHlwZXJ2LmMtMTc4MC0gKiB0byBzcHJlYWQgb3V0IHRoZSBwQ1BVcyB0aGF0IGl0IHNlbGVjdHMuXG4tLVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2ktaHlwZXJ2LmMtMTc4Mi0gKiBGb3IgdGhlIHNpbmdsZS1NU0kgYW5kIE1TSS1YIGNhc2VzLCBpdCYjMzk7cyBPSyBmb3IgaHZfY29tcG9zZV9tc2lfcmVxX2dldF9jcHUoKVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2ktaHlwZXJ2LmM6MTc4MzogKiB0byBhbHdheXMgcmV0dXJuIHRoZSBzYW1lIGR1bW15IHZDUFUsIGJlY2F1c2UgYSBzZWNvbmQgY2FsbCB0b1xuZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2ktaHlwZXJ2LmMtMTc4NC0gKiBodl9jb21wb3NlX21zaV9tc2coKSBjb250YWlucyB0aGUgXCYjMzQ7cmVhbFwmIzM0OyB2Q1BVLCBjYXVzaW5nIEh5cGVyLVYgdG8gY2hvb3NlIGFcbi0tXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaS1oeXBlcnYuYy0xNzg2LSAqIGh2X2NvbXBvc2VfbXNpX21zZygpIGV4aXRzIHdpdGhvdXQgc2VuZGluZyBhIG1lc3NhZ2UgdG8gdGhlIHZQQ0kgVlNQLCBzbyB0aGVcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpLWh5cGVydi5jOjE3ODc6ICogb3JpZ2luYWwgZHVtbXkgdkNQVSBpcyB1c2VkLiBUaGlzIGR1bW15IHZDUFUgbXVzdCBiZSByb3VuZC1yb2JpbiYjMzk7ZWQgc28gdGhhdFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2ktaHlwZXJ2LmMtMTc4OC0gKiB0aGUgcENQVXMgYXJlIHNwcmVhZCBvdXQuIEFsbCBpbnRlcnJ1cHRzIGZvciBhIG11bHRpLU1TSSBkZXZpY2UgZW5kIHVwIHVzaW5nXG4tLVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2ktaHlwZXJ2LmMtMTc5NC0gKiBlbmhhbmNlbWVudCBpcyBwbGFubmVkIGZvciBhIGZ1dHVyZSB2ZXJzaW9uLiBXaXRoIHRoYXQgZW5oYW5jZW1lbnQsIHRoZVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2ktaHlwZXJ2LmM6MTc5NTogKiBkdW1teSB2Q1BVIHNlbGVjdGlvbiB3b24mIzM5O3QgbWF0dGVyLCBhbmQgaW50ZXJydXB0cyBmb3IgdGhlIHNhbWUgbXVsdGktTVNJXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaS1oeXBlcnYuYy0xNzk2LSAqIGRldmljZSB3aWxsIGJlIHNwcmVhZCBhY3Jvc3MgbXVsdGlwbGUgcENQVXMuXG4tLVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2ktaHlwZXJ2LmMtMTc5OS0vKlxuZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2ktaHlwZXJ2LmM6MTgwMDogKiBDcmVhdGUgTVNJIHcvIGR1bW15IHZDUFUgc2V0IHRhcmdldGluZyBqdXN0IG9uZSB2Q1BVLCBvdmVyd3JpdHRlblxuZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2ktaHlwZXJ2LmMtMTgwMS0gKiBieSBzdWJzZXF1ZW50IHJldGFyZ2V0IGluIGh2X2lycV91bm1hc2soKS5cbi0tXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaS1oeXBlcnYuYz0xODAzPXN0YXRpYyBpbnQgaHZfY29tcG9zZV9tc2lfcmVxX2dldF9jcHUoY29uc3Qgc3RydWN0IGNwdW1hc2sgKmFmZmluaXR5KVxuLS1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpLWh5cGVydi5jLTE4MDgtLypcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpLWh5cGVydi5jOjE4MDk6ICogTWFrZSBzdXJlIHRoZSBkdW1teSB2Q1BVIHZhbHVlcyBmb3IgbXVsdGktTVNJIGRvbiYjMzk7dCBhbGwgcG9pbnQgdG8gdkNQVTAuXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaS1oeXBlcnYuYy0xODEwLSAqL1xuLS1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpLWh5cGVydi5jPTE4NzU9c3RhdGljIHZvaWQgaHZfY29tcG9zZV9tc2lfbXNnKHN0cnVjdCBpcnFfZGF0YSAqZGF0YSwgc3RydWN0IG1zaV9tc2cgKm1zZylcbi0tXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaS1oeXBlcnYuYy0xOTU2LVx0XHQvKlxuZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2ktaHlwZXJ2LmM6MTk1NzpcdFx0ICogVGhlIHZlY3RvciB3ZSBzZWxlY3QgaGVyZSBpcyBhIGR1bW15IHZhbHVlLiAgVGhlIGNvcnJlY3RcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpLWh5cGVydi5jLTE5NTgtXHRcdCAqIHZhbHVlIGdldHMgc2VudCB0byB0aGUgaHlwZXJ2aXNvciBpbiB1bm1hc2soKS4gIFRoaXMgbmVlZHNcbi0tXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaWUtYWx0ZXJhLmM9MzY2PXN0YXRpYyB2b2lkIHMxMF90bHBfd3JpdGVfcGFja2V0KHN0cnVjdCBhbHRlcmFfcGNpZSAqcGNpZSwgdTMyICpoZWFkZXJzLFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2llLWFsdGVyYS5jOjM2NzpcdFx0XHRcdCB1MzIgZGF0YSwgYm9vbCBkdW1teSlcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpZS1hbHRlcmEuYy0zNjgte1xuLS1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpZS1hbHRlcmEuYz03ODY9c3RhdGljIGludCBhbHRlcmFfcGNpZV9pbnR4X21hcChzdHJ1Y3QgaXJxX2RvbWFpbiAqZG9tYWluLCB1bnNpZ25lZCBpbnQgaXJxLFxuLS1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpZS1hbHRlcmEuYy03ODgte1xuZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2llLWFsdGVyYS5jOjc4OTpcdGlycV9zZXRfY2hpcF9hbmRfaGFuZGxlcihpcnEsIFx1MDAyNmR1bW15X2lycV9jaGlwLCBoYW5kbGVfc2ltcGxlX2lycSk7XG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaWUtYWx0ZXJhLmMtNzkwLVx0aXJxX3NldF9jaGlwX2RhdGEoaXJxLCBkb21haW4tXHUwMDNlaG9zdF9kYXRhKTtcbi0tXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaWUtbWVkaWF0ZWsuYz01NTQ9c3RhdGljIGludCBtdGtfcGNpZV9pbnR4X21hcChzdHJ1Y3QgaXJxX2RvbWFpbiAqZG9tYWluLCB1bnNpZ25lZCBpbnQgaXJxLFxuLS1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpZS1tZWRpYXRlay5jLTU1Ni17XG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaWUtbWVkaWF0ZWsuYzo1NTc6XHRpcnFfc2V0X2NoaXBfYW5kX2hhbmRsZXIoaXJxLCBcdTAwMjZkdW1teV9pcnFfY2hpcCwgaGFuZGxlX3NpbXBsZV9pcnEpO1xuZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2llLW1lZGlhdGVrLmMtNTU4LVx0aXJxX3NldF9jaGlwX2RhdGEoaXJxLCBkb21haW4tXHUwMDNlaG9zdF9kYXRhKTtcbi0tXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaWUtcm9ja2NoaXAtZXAuYz02NTI9c3RhdGljIGludCByb2NrY2hpcF9wY2llX2VwX3NldHVwX2lycShzdHJ1Y3QgcGNpX2VwYyAqZXBjKVxuLS1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpZS1yb2NrY2hpcC1lcC5jLTY3NC1cdCAqIGlzIGhpZ2ggYW5kIHdpbGwgdHJpZ2dlciB0aGUgcGVyc3RfaXJxIGhhbmRsZXIuIFNvIHRyZWF0IHRoaXMgaW5pdGlhbFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2llLXJvY2tjaGlwLWVwLmM6Njc1Olx0ICogSVJRIGFzIGEgZHVtbXkgb25lIGJ5IGZha2luZyB0aGUgaG9zdCBhc3NlcnRpbmcgUEVSU1QjLlxuZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2llLXJvY2tjaGlwLWVwLmMtNjc2LVx0ICovXG4tLVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2llLXJvY2tjaGlwLWhvc3QuYz02Njk9c3RhdGljIGludCByb2NrY2hpcF9wY2llX2ludHhfbWFwKHN0cnVjdCBpcnFfZG9tYWluICpkb21haW4sIHVuc2lnbmVkIGludCBpcnEsXG4tLVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2llLXJvY2tjaGlwLWhvc3QuYy02NzEte1xuZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2llLXJvY2tjaGlwLWhvc3QuYzo2NzI6XHRpcnFfc2V0X2NoaXBfYW5kX2hhbmRsZXIoaXJxLCBcdTAwMjZkdW1teV9pcnFfY2hpcCwgaGFuZGxlX3NpbXBsZV9pcnEpO1xuZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2llLXJvY2tjaGlwLWhvc3QuYy02NzMtXHRpcnFfc2V0X2NoaXBfZGF0YShpcnEsIGRvbWFpbi1cdTAwM2Vob3N0X2RhdGEpO1xuLS1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpZS14aWxpbnguYz0zMjE9c3RhdGljIGludCB4aWxpbnhfcGNpZV9pbnR4X21hcChzdHJ1Y3QgaXJxX2RvbWFpbiAqZG9tYWluLCB1bnNpZ25lZCBpbnQgaXJxLFxuLS1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpZS14aWxpbnguYy0zMjMte1xuZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2llLXhpbGlueC5jOjMyNDpcdGlycV9zZXRfY2hpcF9hbmRfaGFuZGxlcihpcnEsIFx1MDAyNmR1bW15X2lycV9jaGlwLCBoYW5kbGVfc2ltcGxlX2lycSk7XG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaWUteGlsaW54LmMtMzI1LVx0aXJxX3NldF9jaGlwX2RhdGEoaXJxLCBkb21haW4tXHUwMDNlaG9zdF9kYXRhKTtcbi0tXG5kcml2ZXJzL3BjaS9wY2ktZHJpdmVyLmM9MTM2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqcGNpX21hdGNoX2RldmljZShzdHJ1Y3QgcGNpX2RyaXZlciAqZHJ2LFxuLS1cbmRyaXZlcnMvcGNpL3BjaS1kcml2ZXIuYy0xNzUtXG5kcml2ZXJzL3BjaS9wY2ktZHJpdmVyLmM6MTc2Olx0LyogZHJpdmVyX292ZXJyaWRlIHdpbGwgYWx3YXlzIG1hdGNoLCBzZW5kIGEgZHVtbXkgaWQgKi9cbmRyaXZlcnMvcGNpL3BjaS1kcml2ZXIuYy0xNzctXHRpZiAocmV0IFx1MDAzZSAwKVxuLS1cbmRyaXZlcnMvcGNpL3B3cmN0cmwvcGNpLXB3cmN0cmwtdGM5NTYzLmM9NTMzPXN0YXRpYyBpbnQgdGM5NTYzX3B3cmN0cmxfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL3BjaS9wd3JjdHJsL3BjaS1wd3JjdHJsLXRjOTU2My5jLTU1NS1cbmRyaXZlcnMvcGNpL3B3cmN0cmwvcGNpLXB3cmN0cmwtdGM5NTYzLmM6NTU2Olx0dGM5NTYzLVx1MDAzZWNsaWVudCA9IGkyY19uZXdfZHVtbXlfZGV2aWNlKHRjOTU2My1cdTAwM2VhZGFwdGVyLCBhZGRyKTtcbmRyaXZlcnMvcGNpL3B3cmN0cmwvcGNpLXB3cmN0cmwtdGM5NTYzLmMtNTU3LVx0aWYgKElTX0VSUih0Yzk1NjMtXHUwMDNlY2xpZW50KSkge1xuLS1cbmRyaXZlcnMvcGNpL3NldHVwLWJ1cy5jPTU3Nz1zdGF0aWMgdm9pZCBfX2Fzc2lnbl9yZXNvdXJjZXNfc29ydGVkKHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQsXG4tLVxuZHJpdmVycy9wY2kvc2V0dXAtYnVzLmMtNjA1LVx0TElTVF9IRUFEKGxvY2FsX2ZhaWxfaGVhZCk7XG5kcml2ZXJzL3BjaS9zZXR1cC1idXMuYzo2MDY6XHRMSVNUX0hFQUQoZHVtbXlfaGVhZCk7XG5kcml2ZXJzL3BjaS9zZXR1cC1idXMuYy02MDctXHRzdHJ1Y3QgcGNpX2Rldl9yZXNvdXJjZSAqc2F2ZV9yZXM7XG4tLVxuZHJpdmVycy9wY2kvc2V0dXAtYnVzLmMtNjE0LVx0aWYgKCFyZWFsbG9jX2hlYWQpXG5kcml2ZXJzL3BjaS9zZXR1cC1idXMuYzo2MTU6XHRcdHJlYWxsb2NfaGVhZCA9IFx1MDAyNmR1bW15X2hlYWQ7XG5kcml2ZXJzL3BjaS9zZXR1cC1idXMuYy02MTYtXG4tLVxuZHJpdmVycy9wY2kvdmdhYXJiLmM9MTY3PWludCB2Z2FfcmVtb3ZlX3ZnYWNvbihzdHJ1Y3QgcGNpX2RldiAqcGRldilcbi0tXG5kcml2ZXJzL3BjaS92Z2FhcmIuYy0xNzYtXHRpZiAoY29uX2lzX2JvdW5kKFx1MDAyNnZnYV9jb24pKVxuZHJpdmVycy9wY2kvdmdhYXJiLmM6MTc3Olx0XHRyZXQgPSBkb190YWtlX292ZXJfY29uc29sZShcdTAwMjZkdW1teV9jb24sIDAsXG5kcml2ZXJzL3BjaS92Z2FhcmIuYy0xNzgtXHRcdFx0XHRcdCAgIE1BWF9OUl9DT05TT0xFUyAtIDEsIDEpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAwODozMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzc0MAoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDI5NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE1lbGxhbm94IFN3aXRjaCBCdWcgUmVwb3J0KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBtbHhzd19wY2lfY3FfbmFwaV90ZWFyZG93bmAgYnVnIHJlcG9ydCwgYW5kIHNvbWV0aGluZyBkb2VzbiYjMzk7dCBxdWl0ZSBhZGQgdXAuIEkga25vdyBzeXprYWxsZXIgZG9lc24mIzM5O3QgaGF2ZSBhIGdlbmVyaWMgUENJIGluamVjdGlvbiBtZWNoYW5pc20gaW4gdGhlIGtlcm5lbDsgdGhhdCYjMzk7cyBqdXN0IG5vdCBob3cgaXQgd29ya3MuIEFuZCwgc3l6a2FsbGVyIHVzdWFsbHkgcnVucyBvbiBHQ0UuIEdDRSBkb2VzIGhhdmUgdmlydHVhbCBQQ0kgZGV2aWNlcywgdGhpbmdzIGxpa2UgdmlydGlvLW5ldCBhbmQgdmlydGlvLWJsaywgYnV0ICpkZWZpbml0ZWx5KiBub3QgTWVsbGFub3ggU3dpdGNoIEFTSUNzLiBTbywgaG93IHRoZSBoZWNrIGRpZCBzeXpib3QgZmluZCBhIGJ1ZyBzcGVjaWZpY2FsbHkgaW4gdGhhdCBkcml2ZXI/IFRoaXMgc21lbGxzIGZpc2h5LgoKSGFuZyBvbi4uLiAmIzM0O3N5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldy4mIzM0OyBBaCwgc28gdGhlIHN5ei1jbHVzdGVyIGlzIHRlc3RpbmcgYSBwYXRjaCByZWxhdGVkIHRvIHRoaXMuIE9rYXksIHNvIHBlcmhhcHMgYW5vdGhlciBmdXp6ZXIgZm91bmQgaXQsIGFuZCBpdCYjMzk7cyBiZWluZyB0ZXN0ZWQgd2l0aCBzeXprYWxsZXIgKm5vdyosIG9yIG1heWJlIGl0JiMzOTtzIGEgbWFudWFsIHBhdGNoIGJlaW5nIGV4cGxvcmVkPwoKSWYgdGhpcyBpcyB0cnVseSB1bnJlYWNoYWJsZSBpbiBHQ0Ugb3Igc3RhbmRhcmQgUUVNVSBjb25maWd1cmF0aW9ucywgdGhlbiBJIG5lZWQgdG8gbWFyayB0aGlzIGFzIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBJdCYjMzk7cyBhIHdhc3RlIG9mIHJlc291cmNlcyB0byBmdXp6IHNvbWV0aGluZyB0aGF0IGlzIGNvbXBsZXRlbHkgaW5hY2Nlc3NpYmxlLgoKT2theSwgbGV0JiMzOTtzIHN0ZXAgYmFjayBhbmQgY29uc2lkZXI6IGlzIHRoZXJlICphbnkqIGNoYW5jZSB0aGUgYG1seHN3YCBkcml2ZXIgaXMgcmVhY2hhYmxlIHdpdGhpbiBhIHN0YW5kYXJkIHNldHVwPyBJIGFscmVhZHkgY2hlY2tlZCBgbmV0ZGV2c2ltYCBhbmQgY2FtZSB1cCBlbXB0eS4gTWF5YmUgc29tZXRoaW5nIHNpbWlsYXI/IE5vIGRpY2UuIFJpZ2h0LCB3aGF0IGFib3V0IGBkZXZsaW5rYD8gQ291bGQgYG1seHN3YCBiZSBpbnN0YW50aWF0ZWQgdmlhIGBkZXZsaW5rYCBzb21laG93PyBDaGVja2luZyB0aGUgYGRldmxpbmtfb3BzYCwgYW5kIGl0IGRvZXNuJiMzOTt0IGFwcGVhciB0aGVyZSYjMzk7cyBhIHN0cmFpZ2h0Zm9yd2FyZCB3YXkgdG8gaW5zdGFudGlhdGUgYSBkZXZpY2UuCgpXYWl0LCBsb29raW5nIGRlZXBlciBpbnRvIHRoZSBkcml2ZXImIzM5O3MgY29kZSwgYG1seHN3X2NvcmVfYnVzX2RldmljZV9yZWdpc3RlcmAgaXMgY2FsbGVkIGJ5IGBtbHhzd19wY2lfcHJvYmVgIGFuZCBgbWx4c3dfaTJjX3Byb2JlYC4gSXMgdGhlcmUgKmFub3RoZXIqIGNhbGxlciBvZiB0aGF0IGZ1bmN0aW9uIHRoYXQgY291bGQgdHJpZ2dlciB0aGUgaXNzdWU/IEkgbmVlZCB0byBjaGVjay4gVGhpcyBpcyB0aGUga2V5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAwODozMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttbHhzd19jb3JlX2J1c19kZXZpY2VfcmVnaXN0ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvY29yZS5jPTE1OTM9bWx4c3dfZGV2bGlua19jb3JlX2J1c19kZXZpY2VfcmVsb2FkX3VwKHN0cnVjdCBkZXZsaW5rICpkZXZsaW5rLCBlbnVtIGRldmxpbmtfcmVsb2FkX2FjdGlvbiBhY3Rpb24sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvY29yZS5jLTE2MDEtXHRcdFx0ICAgICBCSVQoREVWTElOS19SRUxPQURfQUNUSU9OX0ZXX0FDVElWQVRFKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmUuYzoxNjAyOlx0ZXJyID0gbWx4c3dfY29yZV9idXNfZGV2aWNlX3JlZ2lzdGVyKG1seHN3X2NvcmUtXHUwMDNlYnVzX2luZm8sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9jb3JlLmMtMTYwMy1cdFx0XHRcdFx0ICAgICBtbHhzd19jb3JlLVx1MDAzZWJ1cyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9jb3JlLmM9MjA5ND1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9jb3JlLmM6MjA5NTpfX21seHN3X2NvcmVfYnVzX2RldmljZV9yZWdpc3Rlcihjb25zdCBzdHJ1Y3QgbWx4c3dfYnVzX2luZm8gKm1seHN3X2J1c19pbmZvLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvY29yZS5jLTIwOTYtXHRcdFx0XHQgY29uc3Qgc3RydWN0IG1seHN3X2J1cyAqbWx4c3dfYnVzLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmUuYy0yMjQ1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvY29yZS5jOjIyNDY6aW50IG1seHN3X2NvcmVfYnVzX2RldmljZV9yZWdpc3Rlcihjb25zdCBzdHJ1Y3QgbWx4c3dfYnVzX2luZm8gKm1seHN3X2J1c19pbmZvLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvY29yZS5jLTIyNDctXHRcdFx0XHQgICBjb25zdCBzdHJ1Y3QgbWx4c3dfYnVzICptbHhzd19idXMsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvY29yZS5jLTIyNTUtYWdhaW46XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9jb3JlLmM6MjI1NjpcdGVyciA9IF9fbWx4c3dfY29yZV9idXNfZGV2aWNlX3JlZ2lzdGVyKG1seHN3X2J1c19pbmZvLCBtbHhzd19idXMsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9jb3JlLmMtMjI1Ny1cdFx0XHRcdFx0ICAgICAgIGJ1c19wcml2LCByZWxvYWQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvY29yZS5jLTIyNTktXHQvKiAtRUFHQUlOIGlzIHJldHVybmVkIGluIGNhc2UgdGhlIEZXIHdhcyB1cGRhdGVkLiBGVyBuZWVkc1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvY29yZS5jOjIyNjA6XHQgKiBhIHJlc2V0LCBzbyBsZXRzIHRyeSB0byBjYWxsIF9fbWx4c3dfY29yZV9idXNfZGV2aWNlX3JlZ2lzdGVyKClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmUuYy0yMjYxLVx0ICogYWdhaW4uXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvY29yZS5jLTIyNjktfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvY29yZS5jOjIyNzA6RVhQT1JUX1NZTUJPTChtbHhzd19jb3JlX2J1c19kZXZpY2VfcmVnaXN0ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvY29yZS5jLTIyNzEtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvY29yZS5oPTU4PWludCBtbHhzd19jb3JlX2Z3X2ZsYXNoKHN0cnVjdCBtbHhzd19jb3JlICptbHhzd19jb3JlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmUuaC02Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmUuaDo2MzppbnQgbWx4c3dfY29yZV9idXNfZGV2aWNlX3JlZ2lzdGVyKGNvbnN0IHN0cnVjdCBtbHhzd19idXNfaW5mbyAqbWx4c3dfYnVzX2luZm8sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9jb3JlLmgtNjQtXHRcdFx0XHQgICBjb25zdCBzdHJ1Y3QgbWx4c3dfYnVzICptbHhzd19idXMsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvaTJjLmM9NjMzPXN0YXRpYyBpbnQgbWx4c3dfaTJjX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvaTJjLmMtNzIxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvaTJjLmM6NzIyOlx0ZXJyID0gbWx4c3dfY29yZV9idXNfZGV2aWNlX3JlZ2lzdGVyKFx1MDAyNm1seHN3X2kyYy1cdTAwM2VidXNfaW5mbyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2kyYy5jLTcyMy1cdFx0XHRcdFx0ICAgICBcdTAwMjZtbHhzd19pMmNfYnVzLCBtbHhzd19pMmMsIGZhbHNlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3BjaS5jPTI0MzA9c3RhdGljIGludCBtbHhzd19wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuYy0yNDg4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvcGNpLmM6MjQ4OTpcdGVyciA9IG1seHN3X2NvcmVfYnVzX2RldmljZV9yZWdpc3RlcihcdTAwMjZtbHhzd19wY2ktXHUwMDNlYnVzX2luZm8sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuYy0yNDkwLVx0XHRcdFx0XHQgICAgIFx1MDAyNm1seHN3X3BjaV9idXMsIG1seHN3X3BjaSwgZmFsc2UsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvcGNpLmM9MjUzMz1zdGF0aWMgdm9pZCBtbHhzd19wY2lfcmVzZXRfZG9uZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuYy0yNTM3LVx0bWx4c3dfcGNpLVx1MDAzZXNraXBfcmVzZXQgPSB0cnVlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvcGNpLmM6MjUzODpcdG1seHN3X2NvcmVfYnVzX2RldmljZV9yZWdpc3RlcihcdTAwMjZtbHhzd19wY2ktXHUwMDNlYnVzX2luZm8sIFx1MDAyNm1seHN3X3BjaV9idXMsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuYy0yNTM5LVx0XHRcdFx0ICAgICAgIG1seHN3X3BjaSwgZmFsc2UsIE5VTEwsIE5VTEwpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAwODozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTk0OQoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDIyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbnZlc3RpZ2F0aW9uIGludG8gRHJpdmVyIEluc3RhbnRpYXRpb24qKgoKT2theSwgc28gdGhpcyBkcml2ZXImIzM5O3MgcHJvYmUgZnVuY3Rpb24gc2VlbXMgdG8gb25seSBiZSBjYWxsZWQgYnkgUENJIGFuZCBJMkMgcHJvYmVzLCB3aGljaCBtZWFucyB3aXRob3V0IGEgcGh5c2ljYWwgUENJIG9yIEkyQyBkZXZpY2UgcHJlc2VudCwgaXQmIzM5O3Mgbm90IGdvaW5nIHRvIGdldCBsb2FkZWQuIE15IGZpcnN0IHRob3VnaHQgaXMgd2hldGhlciBTeXprYWxsZXIgY2FuIGV2ZW4gaGVscCBoZXJlLiBDYW4gaXQgaW5zdGFudGlhdGUgYSBkdW1teSBJMkMgZGV2aWNlPyBEb2VzIFN5emthbGxlciBoYXZlIHNvbWV0aGluZyBsaWtlIGEgYHN5el9pMmNfc2V0dXBgIGNhbGw/IExldCBtZSBxdWlja2x5IGNoZWNrIGlmIFN5emthbGxlciBzdXBwb3J0cyBJMkMgZnV6emluZy4uLiBOb3BlLiBVc3VhbGx5IEkyQyBkZXZpY2VzIGNvbWUgdXAgdGhyb3VnaCBkZXZpY2UgdHJlZXMsIEFDUEkgb3IgYnkgd3JpdGluZyB0byBgL3N5cy9idXMvaTJjL2RldmljZXMvaTJjLSovbmV3X2RldmljZWAuCgpXYWl0IGEgbWludXRlLi4uIHRoYXQgYC9zeXMvYnVzL2kyYy9kZXZpY2VzL2kyYy0qL25ld19kZXZpY2VgIHdyaXRlLi4uIHRoYXQgKmNvdWxkKiBpbnN0YW50aWF0ZSBhbiBJMkMgZGV2aWNlLCBjb3VsZG4mIzM5O3QgaXQ/IE9rYXksIHRoYXQmIzM5O3MgcHJvbWlzaW5nLiBOb3csIHRvIHNlZSBpZiB0aGVyZSYjMzk7cyBhbnkgSTJDIGRyaXZlciBJIGNhbiBsZXZlcmFnZS4gTGV0IG1lIHNlZSBpZiB0aGUgYG1seHN3YCBkcml2ZXJzIGhhdmUgYW4gSTJDIGRyaXZlci4gQWgsIHllcyEgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2kyYy5jYCBleGlzdHMuIEV4Y2VsbGVudC4gQ2FuIFN5emthbGxlciBub3cgdXNlIHRoaXMgdG8gaW5zdGFudGlhdGUgaXQgdGhyb3VnaCB0aGUgYG5ld19kZXZpY2VgIGludGVyZmFjZT8gSSB3aWxsIG5vdyBpbnZlc3RpZ2F0ZSBgbWx4c3dfaTJjX2RyaXZlcmAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDA4OjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21seHN3X2kyY19kcml2ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvaTJjLmM9NzQxPXN0YXRpYyB2b2lkIG1seHN3X2kyY19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9pMmMuYy03NDktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9pMmMuYzo3NTA6aW50IG1seHN3X2kyY19kcml2ZXJfcmVnaXN0ZXIoc3RydWN0IGkyY19kcml2ZXIgKmkyY19kcml2ZXIpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9pMmMuYy03NTEte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2kyYy5jLTc1NS19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9pMmMuYzo3NTY6RVhQT1JUX1NZTUJPTChtbHhzd19pMmNfZHJpdmVyX3JlZ2lzdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2kyYy5jLTc1Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2kyYy5jOjc1ODp2b2lkIG1seHN3X2kyY19kcml2ZXJfdW5yZWdpc3RlcihzdHJ1Y3QgaTJjX2RyaXZlciAqaTJjX2RyaXZlcilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2kyYy5jLTc1OS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvaTJjLmMtNzYxLX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2kyYy5jOjc2MjpFWFBPUlRfU1lNQk9MKG1seHN3X2kyY19kcml2ZXJfdW5yZWdpc3Rlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9pMmMuYy03NjMtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvaTJjLmgtMTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9pMmMuaDoxMTppbnQgbWx4c3dfaTJjX2RyaXZlcl9yZWdpc3RlcihzdHJ1Y3QgaTJjX2RyaXZlciAqaTJjX2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9pMmMuaDoxMjp2b2lkIG1seHN3X2kyY19kcml2ZXJfdW5yZWdpc3RlcihzdHJ1Y3QgaTJjX2RyaXZlciAqaTJjX2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9pMmMuaC0xMy1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9pMmMuaD0xNj1zdGF0aWMgaW5saW5lIGludFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvaTJjLmg6MTc6bWx4c3dfaTJjX2RyaXZlcl9yZWdpc3RlcihzdHJ1Y3QgaTJjX2RyaXZlciAqaTJjX2RyaXZlcilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2kyYy5oLTE4LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9pMmMuaD0yMj1zdGF0aWMgaW5saW5lIHZvaWRcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2kyYy5oOjIzOm1seHN3X2kyY19kcml2ZXJfdW5yZWdpc3RlcihzdHJ1Y3QgaTJjX2RyaXZlciAqaTJjX2RyaXZlcilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2kyYy5oLTI0LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9taW5pbWFsLmM9NzI0PXN0YXRpYyBpbnQgX19pbml0IG1seHN3X21fbW9kdWxlX2luaXQodm9pZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9taW5pbWFsLmMtNzMxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvbWluaW1hbC5jOjczMjpcdGVyciA9IG1seHN3X2kyY19kcml2ZXJfcmVnaXN0ZXIoXHUwMDI2bWx4c3dfbV9pMmNfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L21pbmltYWwuYy03MzMtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L21pbmltYWwuYz03NDQ9c3RhdGljIHZvaWQgX19leGl0IG1seHN3X21fbW9kdWxlX2V4aXQodm9pZClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L21pbmltYWwuYy03NDUte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvbWluaW1hbC5jOjc0NjpcdG1seHN3X2kyY19kcml2ZXJfdW5yZWdpc3RlcihcdTAwMjZtbHhzd19tX2kyY19kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvbWluaW1hbC5jLTc0Ny1cdG1seHN3X2NvcmVfZHJpdmVyX3VucmVnaXN0ZXIoXHUwMDI2bWx4c3dfbV9kcml2ZXIpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAwODozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzU3MwoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDU2OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBhdGNoJiMzOTtzIFJlYWNoYWJpbGl0eSBhbmQgRnV6emluZyBQb3RlbnRpYWwqKgoKT2theSwgc28gdGhlIHBhdGNoIGlzIGRlZmluaXRlbHkgaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3BjaS5jYCwgd2hpY2ggZm9jdXNlcyBteSBhdHRlbnRpb24uIEkgaW1tZWRpYXRlbHkgdGhpbmsgdGhhdCB0aGUgSTJDIGRyaXZlciwgd2hpY2ggdXNlcyBgbWx4c3dfaTJjX2J1c2AsIGlzbiYjMzk7dCBnb2luZyB0byBiZSByZWxldmFudCBoZXJlIGJlY2F1c2UgaXQgZG9lc24mIzM5O3QgZXZlbiBjYWxsIHRoZSBgbWx4c3dfcGNpX2NxX25hcGlfZGlzYWJsZWAgZnVuY3Rpb24gdGhhdCB0aGUgcGF0Y2ggbW9kaWZpZXMuIFRoZSBwYXRjaCBpcyB0b3VjaGluZyBgbWx4c3dfcGNpX2NxX25hcGlfZGlzYWJsZWAgYW5kIGBtbHhzd19wY2lfZmluaWAgd2l0aGluIHRoZSBQQ0kgY29kZSwgc28gaWYgSTJDICpjb3VsZCogYmUgaW5zdGFudGlhdGVkLCBpdCBzdGlsbCB3b3VsZG4mIzM5O3QgaGl0IHRoZSB0YXJnZXQgb2YgdGhlIHBhdGNoLgoKVGhlIG5leHQgcXVlc3Rpb24gaXMsIGNhbiBJIGluc3RhbnRpYXRlIGEgUENJIGRldmljZSBmcm9tIHVzZXJzcGFjZT8gR2VuZXJhbGx5LCBuby4gVW5sZXNzLi4uIHdhaXQsIGRvZXNuJiMzOTt0IHN5emthbGxlciBoYXZlIHNvbWUgdHJpY2tlcnk/IEkgcmVtZW1iZXIgaGVhcmluZyB0aGV5IHVzZSBzb21lIGN1c3RvbSBQQ0kgaW5qZWN0aW9uIG1ldGhvZHMuIE9rYXksIEkgbmVlZCB0byBrbm93LgoKSSYjMzk7bSB0cnlpbmcgdG8gc2VhcmNoIGZvciBzb21ldGhpbmcgbGlrZSBgc3l6X3BjaWAgd2l0aGluIHRoZSBzeXprYWxsZXIgc291cmNlLCBidXQgSSBjYW4mIzM5O3QuIEkgZG9uJiMzOTt0IGhhdmUgdGhlIHNvdXJjZSBoYW5keS4gQnV0IGhleSwgaXQgaGFzIHRoZSBgc3l6X3BjaV9kZXZpY2VgIHBzZXVkby1zeXNjYWxsLCB3aGljaCBtZWFucyBpdCBkZWZpbml0ZWx5IGhhbmRsZXMgUENJIGRldmljZXMuIFRoYXQgcHNldWRvLXN5c2NhbGwgaW1wbGllcyB0aGF0IHN5emthbGxlciAqZG9lcyogaW5kZWVkIGhhdmUgaXRzIG93biBwc2V1ZG8tc3lzY2FsbHMgc3RhcnRpbmcgd2l0aCBgc3l6X2AuIElmIHN5emthbGxlciBoYXMgYSBQQ0kgZnV6emVyLCBpdCBjYW4gaW5qZWN0IFBDSSBkZXZpY2VzLCB0aGVuIEkmIzM5O20gaW4gYnVzaW5lc3MuCgpTbywgaG93IGRvZXMgc3l6a2FsbGVyIGRvIHRoYXQgaW5qZWN0aW9uPyBJcyBpdCB1c2luZyBgdmZpb2AsIGBwY2lfZW5kcG9pbnRgLCBvciBtYXliZSBhIGN1c3RvbSBRRU1VIGRldmljZT8gVGhhdCYjMzk7cyB0aGUga2V5LiBJZiBzeXprYWxsZXIgY2FuIGluamVjdCBQQ0kgZGV2aWNlcywgdGhlbiBgbWx4c3dfcGNpX3Byb2JlYCAqaXMqIHJlYWNoYWJsZSwgYXQgbGVhc3Qgd2l0aGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIExldCYjMzk7cyBhc3N1bWUgdGhhdCBzeXprYWxsZXIgKmNhbiogZnV6eiBQQ0kgZGV2aWNlcy4KCklmIHRoYXQmIzM5O3MgdGhlIGNhc2UsIGFuZCB0aGUgcGF0Y2ggbW9kaWZpZXMgYG1seHN3X3BjaV9jcV9uYXBpX2Rpc2FibGVgIGFuZCBgbWx4c3dfcGNpX2ZpbmlgLCB0aGVuIGZ1enppbmcgdGhpcyBzZWVtcyB3b3J0aHdoaWxlLiBJdCBmaXhlcyBhIGRvdWJsZSBgbmFwaV9kaXNhYmxlYCBhbmQgYSBtaXNzaW5nIGB0YXNrbGV0X2tpbGxgLiBUaGF0JiMzOTtzIGltcG9ydGFudC4KCk5vdywgbGV0JiMzOTtzIGxpc3Qgb3V0IHdoYXQmIzM5O3MgbW9kaWZpZWQgaGVyZSB0byBzZWUgaWYgdGhlcmUgaXMgcG90ZW50aWFsIGZvciBhIG5pY2UgZnV6ei10YXJnZXQ6CiogICBgbWx4c3dfcGNpX2NxX25hcGlfZGlzYWJsZWAKKiAgIGBtbHhzd19wY2lfY3FfaW5pdGAKKiAgIGBtbHhzd19wY2lfY3FfZmluaWAKKiAgIGBtbHhzd19wY2lfYXFzX2ZpbmlgCiogICBgbWx4c3dfcGNpX2ZpbmlgCgpOZXh0LCBJIG5lZWQgdG8gY2hlY2sgdGhlIGNvbmZpZ3MgcmVxdWlyZWQ6CiogICBgQ09ORklHX01MWFNXX1BDSWAKKiAgIGBDT05GSUdfTUxYU1dfQ09SRWAKCkFyZSB0aGVyZSBhbnkgb3RoZXIgaW1wb3J0YW50IGNvbmZpZ3M/CgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDA4OjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNTFhTV19QQ0kmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvS2NvbmZpZz0yNT1jb25maWcgTUxYU1dfQ09SRV9USEVSTUFMXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvS2NvbmZpZy0zMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L0tjb25maWc6MzM6Y29uZmlnIE1MWFNXX1BDSVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvS2NvbmZpZy0zNC1cdHRyaXN0YXRlIFwmIzM0O1BDSSBidXMgaW1wbGVtZW50YXRpb24gZm9yIE1lbGxhbm94IFRlY2hub2xvZ2llcyBTd2l0Y2ggQVNJQ3NcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMDg6MzM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjg5MzgKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiAzMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSYjMzk7bSBhbiBleHBlcnQgaW4gdGhpcyBmaWVsZCwgcHJlc2VudGVkIGFzIGEgZmlyc3QtcGVyc29uIHN1bW1hcnk6CgoqKkRpZ2dpbmcgaW50byB0aGUgTWVsbGFub3ggS2NvbmZpZyoqCgpBbHJpZ2h0LCBzbyB0aGUgdGFzayBhdCBoYW5kIGxpa2VseSBpbnZvbHZlcyBjb25maWd1cmluZyBvciB0cm91Ymxlc2hvb3Rpbmcgc29tZXRoaW5nIHJlbGF0ZWQgdG8gTWVsbGFub3ggbmV0d29yayBkcml2ZXJzLCBzcGVjaWZpY2FsbHkgdGhlIG9uZXMgY29ubmVjdGVkIHZpYSBQQ0kuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGNoZWNrIHRoZSBgS2NvbmZpZ2AgZmlsZSB3aXRoaW4gdGhlIE1lbGxhbm94IGRyaXZlciBkaXJlY3RvcnksIGFuZCB0aGF0IHBhdGggaXMgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L0tjb25maWdgLiBgS2NvbmZpZ2AgZmlsZXMgYXJlIHRoZSBicmVhZCBhbmQgYnV0dGVyIGZvciBrZXJuZWwgY29uZmlndXJhdGlvbiwgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIGFsbCB0aGUgY29tcGlsZS10aW1lIG9wdGlvbnMuIEkgd2FudCB0byBzZWUgaG93IGBNTFhTV19QQ0lgIGlzIGRlZmluZWQsIHdoYXQgZGVwZW5kZW5jaWVzIGl0IGhhcywgYW5kIHBlcmhhcHMgd2hhdCBpdCBlbmFibGVzIG9yIGRpc2FibGVzLiBUaGlzIGlzIHRoZSBsb2dpY2FsIGZpcnN0IHN0ZXA7IHRoaXMgd2lsbCB0ZWxsIG1lIHdoYXQgdGhlIGJ1aWxkIHN5c3RlbSBuZWVkcyB0byBrbm93IGFib3V0IHRoZSBmZWF0dXJlLCBob3cgdG8gZW5hYmxlIGl0IGFuZCB3aGF0IGVsc2UgSSBuZWVkIHRvIHRoaW5rIGFib3V0LiBJdOKAmXMgd2hlcmUgYWxsIHRoZSBmdW5kYW1lbnRhbCBvcHRpb25zIGFuZCBkZXBlbmRlbmNpZXMgZm9yIHRoZXNlIGRyaXZlcnMgYXJlIGxhaWQgb3V0LiBJ4oCZbSB0aGlua2luZyBJIHdpbGwgZmluZCBjbHVlcyBhcyB0byB3aGV0aGVyIHRoZSBjb25maWd1cmF0aW9uIGlzIGVuYWJsZWQsIGlmIHRoZXJlIGlzIGEgY29uZmxpY3QsIG9yIGEgZGVwZW5kZW5jeSBpcyBtaXNzaW5nLiBMZXTigJlzIGdldCB0byBpdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMDg6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAzMDpcdFx0IFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gYXV0b21hdGljYWxseSBjb250cm9sIGZhbnMgc3BlZWQgYWNjb3JkaW5nXG4gIDMxOlx0XHQgYW1iaWVudCB0ZW1wZXJhdHVyZSByZXBvcnRlZCBieSBBU0lDLlxuICAzMjpcdFxuICAzMzpcdGNvbmZpZyBNTFhTV19QQ0lcbiAgMzQ6XHRcdHRyaXN0YXRlIFwmIzM0O1BDSSBidXMgaW1wbGVtZW50YXRpb24gZm9yIE1lbGxhbm94IFRlY2hub2xvZ2llcyBTd2l0Y2ggQVNJQ3NcJiMzNDtcbiAgMzU6XHRcdGRlcGVuZHMgb24gUENJIFx1MDAyNlx1MDAyNiBIQVNfSU9NRU0gXHUwMDI2XHUwMDI2IE1MWFNXX0NPUkVcbiAgMzY6XHRcdHNlbGVjdCBQQUdFX1BPT0xcbiAgMzc6XHRcdGRlZmF1bHQgbVxuICAzODpcdFx0aGVscFxuICAzOTpcdFx0ICBUaGlzIGlzIFBDSSBidXMgaW1wbGVtZW50YXRpb24gZm9yIE1lbGxhbm94IFRlY2hub2xvZ2llcyBTd2l0Y2ggQVNJQ3MuXG4gIDQwOlx0XG4gIDQxOlx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxuICA0MjpcdFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgbWx4c3dfcGNpLlxuICA0MzpcdFxuICA0NDpcdGNvbmZpZyBNTFhTV19JMkNcbiAgNDU6XHRcdHRyaXN0YXRlIFwmIzM0O0kyQyBidXMgaW1wbGVtZW50YXRpb24gZm9yIE1lbGxhbm94IFRlY2hub2xvZ2llcyBTd2l0Y2ggQVNJQ3NcJiMzNDtcbiAgNDY6XHRcdGRlcGVuZHMgb24gSTJDIFx1MDAyNlx1MDAyNiBNTFhTV19DT1JFXG4gIDQ3Olx0XHRkZWZhdWx0IG1cbiAgNDg6XHRcdGhlbHBcbiAgNDk6XHRcdCAgVGhpcyBpcyBJMkMgYnVzIGltcGxlbWVudGF0aW9uIGZvciBNZWxsYW5veCBUZWNobm9sb2dpZXMgU3dpdGNoIEFTSUNzLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAwODozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTU1OAoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDcxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IENvbmZpZ3VyYXRpb24gQ2hlY2sqKgoKT2theSwgc28gSSYjMzk7bSBmb2N1c2luZyBvbiB0aGUgYE1MWFNXYCBkcml2ZXIgaGVyZSwgYW5kIEkgbmVlZCB0byBtYWtlIHN1cmUgSSYjMzk7dmUgZ290IHRoZSBlc3NlbnRpYWxzIGVuYWJsZWQuIFJpZ2h0LCBgTUxYU1dfUENJYCBhbmQgYE1MWFNXX0NPUkVgIGFyZSB0aGUga2V5IGNvbXBvbmVudHMuIEkgbmVlZCB0byBtYWtlIHN1cmUgYm90aCBhcmUgc2V0IHRvIGVuYWJsZWQuIFdhaXQgYSBzZWNvbmQsIHF1aWNrIG1lbnRhbCBjaGVjay4uLiBgTUxYU1dfUENJYCBpbmhlcmVudGx5IGRlcGVuZHMgb24gYE1MWFNXX0NPUkVgLCBzbyB0aGF0JiMzOTtzIGdvb2QuIE5vdywgYmVmb3JlIEkgbW92ZSBvbiwgSSBzaG91bGQgcXVpY2tseSB2ZXJpZnkgaWYgdGhlcmUgYXJlIGFueSBkcml2ZXItc3BlY2lmaWMgY29uZmlncyB0byBjb25zaWRlci4gRm9yIGV4YW1wbGUsIGlzIHRoZXJlIGEgYE1MWFNXX1NQRUNUUlVNYCBvcHRpb24gSSBuZWVkIHRvIGJlIGF3YXJlIG9mPyBCZXN0IHRvIGJlIHRob3JvdWdoLCBlc3BlY2lhbGx5IHdoZW4gZGVhbGluZyB3aXRoIHRoaXMgbGV2ZWwgb2YgaGFyZHdhcmUgaW50ZXJhY3Rpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDA4OjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDUwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgNTA6XHRcbiAgNTE6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlXG4gIDUyOlx0XHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBtbHhzd19pMmMuXG4gIDUzOlx0XG4gIDU0Olx0Y29uZmlnIE1MWFNXX1NQRUNUUlVNXG4gIDU1Olx0XHR0cmlzdGF0ZSBcJiMzNDtNZWxsYW5veCBUZWNobm9sb2dpZXMgU3BlY3RydW0gZmFtaWx5IHN1cHBvcnRcJiMzNDtcbiAgNTY6XHRcdGRlcGVuZHMgb24gTUxYU1dfQ09SRSBcdTAwMjZcdTAwMjYgTUxYU1dfUENJIFx1MDAyNlx1MDAyNiBORVRfU1dJVENIREVWIFx1MDAyNlx1MDAyNiBWTEFOXzgwMjFRXG4gIDU3Olx0XHRkZXBlbmRzIG9uIFBTQU1QTEUgfHwgUFNBTVBMRT1uXG4gIDU4Olx0XHRkZXBlbmRzIG9uIEJSSURHRSB8fCBCUklER0U9blxuICA1OTpcdFx0ZGVwZW5kcyBvbiBORVRfSVBHUkUgfHwgTkVUX0lQR1JFPW5cbiAgNjA6XHRcdGRlcGVuZHMgb24gSVBWNl9HUkUgfHwgSVBWNl9HUkU9blxuICA2MTpcdFx0ZGVwZW5kcyBvbiBWWExBTiB8fCBWWExBTj1uXG4gIDYyOlx0XHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXG4gIDYzOlx0XHRzZWxlY3QgR0VORVJJQ19BTExPQ0FUT1JcbiAgNjQ6XHRcdHNlbGVjdCBQQVJNQU5cbiAgNjU6XHRcdHNlbGVjdCBPQkpBR0dcbiAgNjY6XHRcdHNlbGVjdCBORVRfUFRQX0NMQVNTSUZZIGlmIFBUUF8xNTg4X0NMT0NLXG4gIDY3Olx0XHRkZWZhdWx0IG1cbiAgNjg6XHRcdGhlbHBcbiAgNjk6XHRcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgTWVsbGFub3ggVGVjaG5vbG9naWVzXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDA4OjMzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwMTQ4CgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogODQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyB0aGUgRGVwZW5kZW5jeSBTdHJ1Y3R1cmUgb2YgTUxYU1cgRHJpdmVycyoqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGUga2VybmVsIGJ1aWxkIGNvbmZpZ3VyYXRpb24sIHNwZWNpZmljYWxseSB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gYE1MWFNXX1NQRUNUUlVNYCBhbmQgYE1MWFNXX1BDSWAuIE15IHVuZGVyc3RhbmRpbmcgaXMgdGhhdCBgTUxYU1dfU1BFQ1RSVU1gICpkZXBlbmRzKiBvbiBgTUxYU1dfUENJYC4gVGhhdCBtYWtlcyBzZW5zZTsgU3BlY3RydW0gZGV2aWNlcyBsaWtlbHkgcmVseSBvbiBQQ0kgZm9yIHRoZWlyIGNvbW11bmljYXRpb24uCgpOb3csIGhlcmUmIzM5O3MgdGhlIHF1ZXN0aW9uIHRoYXQmIzM5O3MgbmFnZ2luZyBhdCBtZTogSWYgSSBzaW1wbHkgZW5hYmxlIGBNTFhTV19QQ0lgLCBJICprbm93KiBpdCBidWlsZHMgYG1seHN3X3BjaS5rb2AuIEJ1dCB3aGF0IGV4YWN0bHkgZG9lcyB0aGF0IG1vZHVsZSAqZG8qIGluIHRoZSBhYnNlbmNlIG9mIGEgbW9yZSBzcGVjaWZpYyBkcml2ZXIsIGxpa2UgYE1MWFNXX1NQRUNUUlVNYCwgdGhhdCBsZXZlcmFnZXMgaXRzIGZ1bmN0aW9uYWxpdHk/IElzIGl0IGp1c3QgYSBwbGFjZWhvbGRlciwgb3IgZG9lcyBpdCBwZXJmb3JtIHNvbWUgZXNzZW50aWFsIGluaXRpYWxpemF0aW9uIG9yIHByb2Jpbmcgb24gaXRzIG93bj8gSXQgc2VlbXMgbGlrZSBpdCBtdXN0IGRvICpzb21ldGhpbmcqIHNpbmNlIGl0IGV4aXN0cy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgaXQmIzM5O3MgcGFzc2l2ZSB3aXRob3V0IGBNTFhTV19TUEVDVFJVTWAsIG9yIGFjdGl2ZS4KClRoZSBtb3N0IGxvZ2ljYWwgbmV4dCBzdGVwIGlzIHRvIGV4YW1pbmUgdGhlIGBtbHhzd19wY2lfcHJvYmVgIGZ1bmN0aW9uLiBJIHNob3VsZCBiZSBhYmxlIHRvIGRldGVybWluZSBpdHMgYmVoYXZpb3Igd2l0aCBvciB3aXRob3V0IHRoZSBTcGVjdHJ1bSBkcml2ZXIgYmVpbmcgYWN0aXZhdGVkLiBUaGF0IHdpbGwgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIHdoYXQgYWN0dWFsbHkgaGFwcGVucyB3aGVuIG9ubHkgYE1MWFNXX1BDSWAgaXMgZW5hYmxlZC4gVGltZSB0byBkaXZlIGludG8gdGhlIGNvZGUuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMDg6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWx4c3dfcGNpX3Byb2JlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvcGNpLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvcGNpLmM9MjQyMz1zdGF0aWMgdm9pZCBtbHhzd19wY2lfY21kX2Zpbmkoc3RydWN0IG1seHN3X3BjaSAqbWx4c3dfcGNpKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3BjaS5jLTI0MjktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuYzoyNDMwOnN0YXRpYyBpbnQgbWx4c3dfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuYy0yNDMxLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuYz0yNTQ4PWludCBtbHhzd19wY2lfZHJpdmVyX3JlZ2lzdGVyKHN0cnVjdCBwY2lfZHJpdmVyICpwY2lfZHJpdmVyKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvcGNpLmMtMjU0OS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuYzoyNTUwOlx0cGNpX2RyaXZlci1cdTAwM2Vwcm9iZSA9IG1seHN3X3BjaV9wcm9iZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3BjaS5jLTI1NTEtXHRwY2lfZHJpdmVyLVx1MDAzZXJlbW92ZSA9IG1seHN3X3BjaV9yZW1vdmU7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDA4OjMzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwODkwCgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6CgoqKkRlYnVnZ2luZyBNTFhTVyBEcml2ZXIgUmVnaXN0cmF0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQmIzM5O3MgcmVzcG9uc2libGUgZm9yIGNhbGxpbmcgYG1seHN3X3BjaV9kcml2ZXJfcmVnaXN0ZXJgLiBJJiMzOTttIHN0YXJ0aW5nIGF0IHRoZSByZWdpc3RyYXRpb24gcG9pbnQgYmVjYXVzZSB0aGF0JiMzOTtzIHRoZSBvYnZpb3VzIGVudHJ5IHBvaW50IHRvIHRyYWNlIGJhY2sgZnJvbS4gVGhpcyBpcyBhIGNvbW1vbiBkZWJ1Z2dpbmcgdGVjaG5pcXVlIC0gdW5kZXJzdGFuZCB0aGUgZW5kIGdvYWwsIHRoZW4gd29yayBiYWNrd2FyZCB0byBkZXRlcm1pbmUgdGhlIHVwc3RyZWFtIG9yaWdpbi4gSSYjMzk7bGwgbmVlZCB0byBnbyB0aHJvdWdoIHRoZSBjb2RlLCBwcm9iYWJseSB1c2luZyBhIHRvb2wgbGlrZSBgZ2l0IGdyZXBgIG9yIGEgc2ltaWxhciBjb2RlIHNlYXJjaCwgYW5kIGZpbmQgYWxsIGluc3RhbmNlcyBvZiB0aGUgZnVuY3Rpb24gY2FsbC4gSSYjMzk7bSBleHBlY3RpbmcgdGhpcyB3aWxsIGVpdGhlciBiZSB3aXRoaW4gdGhlIFBDSSBzdWJzeXN0ZW0gaW5pdGlhbGl6YXRpb24gb3IgcGVyaGFwcyBzb21lIHNvcnQgb2YgbW9kdWxlIGxvYWRpbmcgbWVjaGFuaXNtIHNwZWNpZmljIHRvIE1MWFNXIGRldmljZXMuIEl0IGNvdWxkIGV2ZW4gYmUgdHJpZ2dlcmVkIGJ5IGEgaG90cGx1ZyBldmVudC4gSSYjMzk7bSByZWFkeSB0byBkaWcgaW50byB0aGUga2VybmVsIHNvdXJjZSBhbmQgaWRlbnRpZnkgdGhlIGNhbGxpbmcgY29udGV4dCwgd2hpY2ggd2lsbCBnaXZlIG1lIGNyaXRpY2FsIGluZm9ybWF0aW9uIGFib3V0IHRoZSBkcml2ZXImIzM5O3MgaW5zdGFudGlhdGlvbiBwcm9jZXNzLiBUaGUgZ29hbCBpcyB0byBkZXRlcm1pbmUgdGhlIHNlcXVlbmNlIG9mIGV2ZW50cyBsZWFkaW5nIHVwIHRvIGRyaXZlciByZWdpc3RyYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDA4OjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21seHN3X3BjaV9kcml2ZXJfcmVnaXN0ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvcGNpLmM9MjU0Mz1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9lcnJvcl9oYW5kbGVycyBtbHhzd19wY2lfZXJyX2hhbmRsZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvcGNpLmMtMjU0Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3BjaS5jOjI1NDg6aW50IG1seHN3X3BjaV9kcml2ZXJfcmVnaXN0ZXIoc3RydWN0IHBjaV9kcml2ZXIgKnBjaV9kcml2ZXIpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuYy0yNTQ5LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuYy0yNTU1LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3BjaS5jOjI1NTY6RVhQT1JUX1NZTUJPTChtbHhzd19wY2lfZHJpdmVyX3JlZ2lzdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3BjaS5jLTI1NTctXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvcGNpLmgtMTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuaDoxNjppbnQgbWx4c3dfcGNpX2RyaXZlcl9yZWdpc3RlcihzdHJ1Y3QgcGNpX2RyaXZlciAqcGNpX2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuaC0xNy12b2lkIG1seHN3X3BjaV9kcml2ZXJfdW5yZWdpc3RlcihzdHJ1Y3QgcGNpX2RyaXZlciAqcGNpX2RyaXZlcik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvcGNpLmg9MjE9c3RhdGljIGlubGluZSBpbnRcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3BjaS5oOjIyOm1seHN3X3BjaV9kcml2ZXJfcmVnaXN0ZXIoc3RydWN0IHBjaV9kcml2ZXIgKnBjaV9kcml2ZXIpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuaC0yMy17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW0uYz01MzE5PXN0YXRpYyBpbnQgX19pbml0IG1seHN3X3NwX21vZHVsZV9pbml0KHZvaWQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW0uYy01MzM4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW0uYzo1MzM5Olx0ZXJyID0gbWx4c3dfcGNpX2RyaXZlcl9yZWdpc3RlcihcdTAwMjZtbHhzd19zcDFfcGNpX2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bS5jLTUzNDAtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtLmMtNTM0Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtLmM6NTM0MzpcdGVyciA9IG1seHN3X3BjaV9kcml2ZXJfcmVnaXN0ZXIoXHUwMDI2bWx4c3dfc3AyX3BjaV9kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW0uYy01MzQ0LVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bS5jLTUzNDYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bS5jOjUzNDc6XHRlcnIgPSBtbHhzd19wY2lfZHJpdmVyX3JlZ2lzdGVyKFx1MDAyNm1seHN3X3NwM19wY2lfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtLmMtNTM0OC1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW0uYy01MzUwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW0uYzo1MzUxOlx0ZXJyID0gbWx4c3dfcGNpX2RyaXZlcl9yZWdpc3RlcihcdTAwMjZtbHhzd19zcDRfcGNpX2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bS5jLTUzNTItXHRpZiAoZXJyKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAwODozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMjA3NwoJCQkJCQkJb3V0cHV0OiA1MAoJCQkJCQkJdGhvdWdodHM6IDcyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIFJlYWNoYWJpbGl0eSBhbmQgRnVuY3Rpb24gUHJpb3JpdGl6YXRpb24gZm9yIE1MWFNXX1NQRUNUUlVNKioKCk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoaXMgYE1MWFNXX1NQRUNUUlVNYCBkcml2ZXIgaXMgcmVhY2hhYmxlIGZvciBmdXp6aW5nLiBJdCYjMzk7cyB0aGUga2V5IHRvIHJlZ2lzdGVyaW5nIHRoZSBQQ0kgZHJpdmVycywgYnV0IHdhaXQsIHRoZXJlJiMzOTtzIGFsc28gYE1MWFNXX01JTklNQUxgPyBOb3BlLCB0aGF0JiMzOTtzIGp1c3QgZm9yIEkyQywgc28gbm90IHJlbGV2YW50IGhlcmUuIExldCYjMzk7cyBjaGVjayB0aGUgY29uZmlncyBmb3IgYE1MWFNXX1NQRUNUUlVNYC4gSXQgZGVwZW5kcyBvbiBgTUxYU1dfQ09SRWAsIGBNTFhTV19QQ0lgLCBgTkVUX1NXSVRDSERFVmAsIGFuZCBgVkxBTl84MDIxUWAg4oCTIHNvIGVuYWJsaW5nIGBNTFhTV19TUEVDVFJVTWAgc2hvdWxkIGJlIHRoZSB3YXkgdG8gZ28uCgpUaGUgYmlnIHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhpcyBjb2RlIGlzIGFjY2Vzc2libGUgaW4gYSB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50LiBJZiBzeXprYWxsZXIgaGFzIGEgUENJIGZ1enplciwgd2UmIzM5O3JlIGluIGJ1c2luZXNzLiBBbmQgeWVzLCBpdCBkb2VzISBJIHJlbWVtYmVyIHRoYXQgcmVjZW50bHkgYWRkZWQgUENJIGZ1enplciwgSSB0aGluayBpdCB1c2VzIGB2ZmlvYCBvciBhIGN1c3RvbSBRRU1VIGRldmljZS4gV2FpdCwgaXQgdXNlcyB0aGUgYHBjaV9lbmRwb2ludGAgZnJhbWV3b3JrPyBObywgd2FpdCEgSSBuZWVkIHRvIGJlIGNhcmVmdWwgd2l0aCBhbnkgcHNldWRvLXN5c2NhbGxzIGxpa2UgYHN5el9wY2lfZGV2aWNlYC4gQWgsIHRoaXMgaXMgYSBnb29kIHJlbWluZGVyLiBJIGNhbiYjMzk7dCBzZWFyY2ggZm9yIHN5emthbGxlciBwc2V1ZG8tc3lzY2FsbHMgZGlyZWN0bHkgaW4gdGhlIGtlcm5lbCBjb2RlLCBzbyBJIG5lZWQgdG8gdGhpbmsgY2FyZWZ1bGx5IGFib3V0IGhvdyBzeXprYWxsZXIgb3BlcmF0ZXMuCgpTaW5jZSBzeXprYWxsZXIgKmNhbiogZnV6eiBQQ0kgZGV2aWNlcywgdGhhdCBtZWFucyBgbWx4c3dfcGNpX3Byb2JlYCBzaG91bGQgYmUgcmVhY2hhYmxlLiBJJiMzOTttIGdvaW5nIHRvIGFzc3VtZSBpdCBpcyBhbmQgcmV0dXJuIGBXb3J0aEZ1enppbmc9dHJ1ZWAuCgpOb3csIGxldCYjMzk7cyBsb29rIGF0IHRoZSBmdW5jdGlvbnMgdGhlbXNlbHZlcy4gSSBuZWVkIHRvIHByaW9yaXRpemUgZnVuY3Rpb25zIHRvIGZvY3VzIGZ1enppbmcgZWZmb3J0cy4gVGhlIHBhdGNoIHNlZW1zIHRvIG1vZGlmeSB0aGVzZSBmdW5jdGlvbnM6CgoqICAgYG1seHN3X3BjaV9jcV9uYXBpX2Rpc2FibGVgCiogICBgbWx4c3dfcGNpX2NxX2luaXRgCiogICBgbWx4c3dfcGNpX2NxX2ZpbmlgCiogICBgbWx4c3dfcGNpX2Fxc19maW5pYAoqICAgYG1seHN3X3BjaV9maW5pYAoKYG1seHN3X3BjaV9jcV9uYXBpX2Rpc2FibGVgIGlzIG5ldy4gTGV0JiMzOTtzIGRpZyBkZWVwZXIgYW5kIHNlZSBpZiBpdCYjMzk7cyBhIGhvdCBwYXRoLiBOb3BlLCBpdCYjMzk7cyBjYWxsZWQgZHVyaW5nIHRlYXJkb3duIG9yIGBmaW5pYCwgbm90IGEgaG90IHBhdGguIGBtbHhzd19wY2lfY3FfaW5pdGAgaXMgY2FsbGVkIGR1cmluZyBpbml0LiBgbWx4c3dfcGNpX2NxX2ZpbmlgLCBgbWx4c3dfcGNpX2Fxc19maW5pYCwgYW5kIGBtbHhzd19wY2lfZmluaWAgYXJlIGNhbGxlZCBkdXJpbmcgYGZpbmlgLgoKTG9va3MgbGlrZSB0aGUgcGF0Y2ggYWxzbyB0b3VjaGVzIGBtbHhzd19wY2lfY3FfbmFwaV90ZWFyZG93bmAsIHdoaWNoLCB3aGlsZSBub3QgbW9kaWZpZWQsIGlzIHN0aWxsIGNhbGxlZC4gVGhlIHBhdGNoIG1vZGlmaWVzOiBgbWx4c3dfcGNpX2NxX25hcGlfZGlzYWJsZWAgKG5ldyksIGBtbHhzd19wY2lfY3FfaW5pdGAsIGBtbHhzd19wY2lfY3FfZmluaWAsIGBtbHhzd19wY2lfYXFzX2ZpbmlgLCBhbmQgYG1seHN3X3BjaV9maW5pYC4gT2theSwgbGV0JiMzOTtzIHN0YXJ0IHdpdGggYSBjbG9zZSBsb29rIGF0IGBtbHhzd19wY2lfY3FfbmFwaV9kaXNhYmxlYCBpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvcGNpLmNgLiBJIGhhdmUgYSBnb29kIGlkZWEgb2Ygd2hlcmUgdG8gYmVnaW4gbXkgZnV6emluZyBjYW1wYWlnbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMDg6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWx4c3dfcGNpX2NxX25hcGlfZGlzYWJsZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3BjaS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3BjaS5jPTk4OD1zdGF0aWMgdm9pZCBtbHhzd19wY2lfY3FfbmFwaV90ZWFyZG93bihzdHJ1Y3QgbWx4c3dfcGNpX3F1ZXVlICpxKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3BjaS5jLTk5Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3BjaS5jOjk5MzpzdGF0aWMgdm9pZCBtbHhzd19wY2lfY3FfbmFwaV9kaXNhYmxlKHN0cnVjdCBtbHhzd19wY2lfcXVldWUgKnEpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuYy05OTQte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3BjaS5jPTEwODc9c3RhdGljIHZvaWQgbWx4c3dfcGNpX2NxX2Zpbmkoc3RydWN0IG1seHN3X3BjaSAqbWx4c3dfcGNpLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3BjaS5jLTEwOTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuYzoxMDkyOlx0bWx4c3dfcGNpX2NxX25hcGlfZGlzYWJsZShxKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3BjaS5jLTEwOTMtXHRtbHhzd19wY2lfY3FfcGFnZV9wb29sX2ZpbmkocSwgY3FfdHlwZSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvcGNpLmM9MTQ1MT1zdGF0aWMgdm9pZCBtbHhzd19wY2lfYXFzX2Zpbmkoc3RydWN0IG1seHN3X3BjaSAqbWx4c3dfcGNpKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3BjaS5jLTE0NTgtXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBxdWV1ZV9ncm91cC1cdTAwM2Vjb3VudDsgaSYjNDM7JiM0MzspXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuYzoxNDU5Olx0XHRtbHhzd19wY2lfY3FfbmFwaV9kaXNhYmxlKFx1MDAyNnF1ZXVlX2dyb3VwLVx1MDAzZXFbaV0pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvcGNpLmMtMTQ2MC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMDg6MzM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzQwNzIKCQkJCQkJCW91dHB1dDogMjAxCgkJCQkJCQl0aG91Z2h0czogODc0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5c2lzIG9mIE1lbGxhbm94IFN3aXRjaCBQQ0kgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGJlZW4gdGFza2VkIHdpdGggYXNzZXNzaW5nIHRoaXMgTWVsbGFub3ggc3dpdGNoIFBDSSBkcml2ZXIgcGF0Y2guIE15IGluaXRpYWwgZm9jdXMgaGFzIGxhbmRlZCBvbiBpZGVudGlmeWluZyB0aGUga2V5IGZ1bmN0aW9ucyBhbmQgY29uZmlndXJhdGlvbnMgaW1wYWN0ZWQuIFNwZWNpZmljYWxseSwgdGhlIGZ1bmN0aW9ucyBJIG5lZWQgdG8ga2VlcCBpbiBtaW5kIGFyZSBgbWx4c3dfcGNpX2NxX25hcGlfZGlzYWJsZWAsIGBtbHhzd19wY2lfY3FfaW5pdGAsIGBtbHhzd19wY2lfY3FfZmluaWAsIGBtbHhzd19wY2lfYXFzX2ZpbmlgLCBhbmQgYG1seHN3X3BjaV9maW5pYC4KClJlZ2FyZGluZyBjb25maWd1cmF0aW9ucywgaXQgbG9va3MgbGlrZSBgTUxYU1dfQ09SRWAsIGBNTFhTV19QQ0lgLCBhbmQgYE1MWFNXX1NQRUNUUlVNYCBhcmUgdGhlIGNyaXRpY2FsIG9uZXMuIEhvbGQgb24gdGhvdWdoLCBzaW5jZSBgTUxYU1dfU1BFQ1RSVU1gIGRlcGVuZHMgb24gYE5FVF9TV0lUQ0hERVZgIGFuZCBgVkxBTl84MDIxUWAsIEkmIzM5O2xsIGp1c3Qgc3RpY2sgdG8gbGlzdGluZyBgTUxYU1dfU1BFQ1RSVU1gLCBgTUxYU1dfUENJYCwgYW5kIGBNTFhTV19DT1JFYCBhcyB0aGUgY29yZSByZXF1aXJlZCBjb25maWd1cmF0aW9ucy4gSXQgc2VlbXMgYE1MWFNXX01JTklNQUxgIGlzIHJlbGV2YW50LCBidXQgaXQmIzM5O3Mgc3BlY2lmaWNhbGx5IGZvciBJMkMtb25seSBjb25maWd1cmF0aW9ucywgc28gdGhhdCYjMzk7cyBub3Qgc29tZXRoaW5nIEkmIzM5O2xsIG5lZWQgdG8gd29ycnkgYWJvdXQuCgpOb3csIGxldCYjMzk7cyB2ZXJpZnkgaWYgYG1seHN3X3BjaV9jcV9uYXBpX2Rpc2FibGVgIGlzIHRoZSBvbmx5IGZ1bmN0aW9uIHRoYXQmIzM5O3MgYmVpbmcgaW50cm9kdWNlZCBieSB0aGlzIHBhdGNoLiBJbmRlZWQsIGl0IGFwcGVhcnMgdG8gYmUgdGhlIG9ubHkgb25lLiBFeGFtaW5pbmcgdGhlIHBhdGNoIGl0c2VsZiwgaXQmIzM5O3MgY2xlYXIgdGhhdCB0aGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UuIEl0IGFkZHMgYSBgbmFwaV9lbmFibGVkYCBib29sZWFuIGZsYWcgdG8gcHJldmVudCBhIHBvdGVudGlhbCBkb3VibGUgYG5hcGlfZGlzYWJsZWAgY2FsbCBhbmQgYSBgdGFza2xldF9raWxsYCB0byBtaXRpZ2F0ZSBwb3NzaWJsZSB1c2UtYWZ0ZXItZnJlZSBvciBzaW1pbGFyIGlzc3VlcyBkdXJpbmcgdGVhcmRvd24uCgpUaGUgYmlnIHF1ZXN0aW9uIG5vdyBpcyB3aGV0aGVyIHN5emthbGxlciBjYW4gcmVhY2ggYW5kIGZ1enogdGhpcyBjb2RlLiBTaW5jZSB0aGlzIGlzIGEgUENJIGRyaXZlciwgYW5kIHN5emthbGxlciBkb2VzIHN1cHBvcnQgUENJIGZ1enppbmcsIHJlZ2FyZGxlc3Mgb2YgdGhlIGV4YWN0IGltcGxlbWVudGF0aW9uIGRldGFpbHMgKHdoZXRoZXIgaXQgdXNlcyBgdmZpb2Agb3IgYSBjdXN0b20gUUVNVSBkZXZpY2UpLCB0aGlzIGNvZGUgcGF0aCBpcyBkZWZpbml0ZWx5IHJlYWNoYWJsZS4gVGhlcmVmb3JlLCBJIGNhbiBjb25maWRlbnRseSBzdGF0ZSB0aGF0IHRoaXMgaXMgd29ydGggZnV6emluZy4KCk15IHJlYXNvbmluZyBib2lscyBkb3duIHRvIHRoaXM6IHRoZSBwYXRjaCBhZGRyZXNzZXMgY3JpdGljYWwgaXNzdWVzIHJlbGF0ZWQgdG8gdGhlIHRlYXJkb3duIHByb2Nlc3Mgb2YgdGhlIE1lbGxhbm94IHN3aXRjaCBQQ0kgZHJpdmVyLCBpbmNsdWRpbmcgcHJldmVudGluZyBhIGRvdWJsZSBgbmFwaV9kaXNhYmxlYCBhbmQgZW5zdXJpbmcgcHJvcGVyIGNsZWFudXAgd2l0aCBgdGFza2xldF9raWxsYC4gU2luY2UgdGhpcyBpbnZvbHZlcyBjb2RlIHBhdGhzIHRoYXQgYXJlIG5vcm1hbGx5IHVzZWQgYW5kIGNhbiBiZSByZWFjaGVkIChhc3N1bWluZyBQQ0kgZnV6emluZyBpcyBhdmFpbGFibGUpLCBpdCByZXF1aXJlcyBmdXp6ZXIgc2NydXRpbnkgdG8gZW5zdXJlIHJvYnVzdCB0ZWFyZG93biBoYW5kbGluZy4gSSB0aGluayBgTUxYU1dfU1BFQ1RSVU1gLCBgTUxYU1dfUENJYCwgYW5kIGBNTFhTV19DT1JFYCBzaG91bGQgYmUgc3VmZmljaWVudCBjb25maWd1cmF0aW9ucyB0byB0ZXN0IHRoaXMuCgpBbHJpZ2h0LCB0aW1lIHRvIHdyYXAgdGhpcyB1cCBhbmQgbW92ZSBvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMDg6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01MWFNXX0NPUkUmIzM0OywKICAgICYjMzQ7TUxYU1dfUENJJiMzNDssCiAgICAmIzM0O01MWFNXX1NQRUNUUlVNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bWx4c3dfcGNpX2NxX25hcGlfZGlzYWJsZSYjMzQ7LAogICAgJiMzNDttbHhzd19wY2lfY3FfaW5pdCYjMzQ7LAogICAgJiMzNDttbHhzd19wY2lfY3FfZmluaSYjMzQ7LAogICAgJiMzNDttbHhzd19wY2lfYXFzX2ZpbmkmIzM0OywKICAgICYjMzQ7bWx4c3dfcGNpX2ZpbmkmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBkb3VibGUgYG5hcGlfZGlzYWJsZWAgYW5kIGEgbWlzc2luZyBgdGFza2xldF9raWxsYCBkdXJpbmcgdGhlIHRlYXJkb3duIG9mIHRoZSBNZWxsYW5veCBzd2l0Y2ggUENJIGRyaXZlciAoYG1seHN3YCkuIEl0IGFkZHMgYSBgbmFwaV9lbmFibGVkYCBmbGFnIGFuZCBhIG5ldyBmdW5jdGlvbiBgbWx4c3dfcGNpX2NxX25hcGlfZGlzYWJsZWAuIFRoaXMgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUgZHJpdmVyIGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGUgdGVhcmRvd24gcGF0aHMgYXJlIHJvYnVzdC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TUxYU1dfQ09SRSYjMzQ7LAogICAgJiMzNDtNTFhTV19QQ0kmIzM0OywKICAgICYjMzQ7TUxYU1dfU1BFQ1RSVU0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttbHhzd19wY2lfY3FfbmFwaV9kaXNhYmxlJiMzNDssCiAgICAmIzM0O21seHN3X3BjaV9jcV9pbml0JiMzNDssCiAgICAmIzM0O21seHN3X3BjaV9jcV9maW5pJiMzNDssCiAgICAmIzM0O21seHN3X3BjaV9hcXNfZmluaSYjMzQ7LAogICAgJiMzNDttbHhzd19wY2lfZmluaSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGRvdWJsZSBgbmFwaV9kaXNhYmxlYCBhbmQgYSBtaXNzaW5nIGB0YXNrbGV0X2tpbGxgIGR1cmluZyB0aGUgdGVhcmRvd24gb2YgdGhlIE1lbGxhbm94IHN3aXRjaCBQQ0kgZHJpdmVyIChgbWx4c3dgKS4gSXQgYWRkcyBhIGBuYXBpX2VuYWJsZWRgIGZsYWcgYW5kIGEgbmV3IGZ1bmN0aW9uIGBtbHhzd19wY2lfY3FfbmFwaV9kaXNhYmxlYC4gVGhpcyBtb2RpZmllcyByZWFjaGFibGUgY29yZSBkcml2ZXIgbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIHRoZSB0ZWFyZG93biBwYXRocyBhcmUgcm9idXN0LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMjJUMDg6MzE6MzMuNDM3ODYzMDA2WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU1ODU1NTE3MjM2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1MWFNXX0NPUkVcIixcbiAgICBcIk1MWFNXX1BDSVwiLFxuICAgIFwiTUxYU1dfU1BFQ1RSVU1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtbHhzd19wY2lfY3FfbmFwaV9kaXNhYmxlXCIsXG4gICAgXCJtbHhzd19wY2lfY3FfaW5pdFwiLFxuICAgIFwibWx4c3dfcGNpX2NxX2ZpbmlcIixcbiAgICBcIm1seHN3X3BjaV9hcXNfZmluaVwiLFxuICAgIFwibWx4c3dfcGNpX2ZpbmlcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGRvdWJsZSBgbmFwaV9kaXNhYmxlYCBhbmQgYSBtaXNzaW5nIGB0YXNrbGV0X2tpbGxgIGR1cmluZyB0aGUgdGVhcmRvd24gb2YgdGhlIE1lbGxhbm94IHN3aXRjaCBQQ0kgZHJpdmVyIChgbWx4c3dgKS4gSXQgYWRkcyBhIGBuYXBpX2VuYWJsZWRgIGZsYWcgYW5kIGEgbmV3IGZ1bmN0aW9uIGBtbHhzd19wY2lfY3FfbmFwaV9kaXNhYmxlYC4gVGhpcyBtb2RpZmllcyByZWFjaGFibGUgY29yZSBkcml2ZXIgbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIHRoZSB0ZWFyZG93biBwYXRocyBhcmUgcm9idXN0LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQwODozMTozMy40Mzc4Njk4MzVaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0NDg2MTcxNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDEwNDc2YTM5NDA4MGMzZDNlNjI4MTBjZmViOGVmMGM0N2MwYTE4OGZcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBKdWwgMjIgMDg6MzE6MzIgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvcGNpLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuY1xcbmluZGV4IDBkYTg1ZDM2NjQ3ZDkxLi5mZWViMzIxMzRkMmFhNiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3BjaS5jXFxuQEAgLTg2LDYgKzg2LDcgQEAgc3RydWN0IG1seHN3X3BjaV9xdWV1ZSB7XFxuIFxcdFxcdFxcdGVudW0gbWx4c3dfcGNpX2NxZV92IHY7XFxuIFxcdFxcdFxcdHN0cnVjdCBtbHhzd19wY2lfcXVldWUgKmRxO1xcbiBcXHRcXHRcXHRzdHJ1Y3QgbmFwaV9zdHJ1Y3QgbmFwaTtcXG4rXFx0XFx0XFx0Ym9vbCBuYXBpX2VuYWJsZWQ7XFxuIFxcdFxcdFxcdHN0cnVjdCBwYWdlX3Bvb2wgKnBhZ2VfcG9vbDtcXG4gXFx0XFx0fSBjcTtcXG4gXFx0XFx0c3RydWN0IHtcXG5AQCAtOTg5LDYgKzk5MCwxNSBAQCBzdGF0aWMgdm9pZCBtbHhzd19wY2lfY3FfbmFwaV90ZWFyZG93bihzdHJ1Y3QgbWx4c3dfcGNpX3F1ZXVlICpxKVxcbiBcXHRuZXRpZl9uYXBpX2RlbChcXHUwMDI2cS1cXHUwMDNldS5jcS5uYXBpKTtcXG4gfVxcbiBcXG4rc3RhdGljIHZvaWQgbWx4c3dfcGNpX2NxX25hcGlfZGlzYWJsZShzdHJ1Y3QgbWx4c3dfcGNpX3F1ZXVlICpxKVxcbit7XFxuK1xcdGlmICghcS1cXHUwMDNldS5jcS5uYXBpX2VuYWJsZWQpXFxuK1xcdFxcdHJldHVybjtcXG4rXFxuK1xcdG5hcGlfZGlzYWJsZShcXHUwMDI2cS1cXHUwMDNldS5jcS5uYXBpKTtcXG4rXFx0cS1cXHUwMDNldS5jcS5uYXBpX2VuYWJsZWQgPSBmYWxzZTtcXG4rfVxcbitcXG4gc3RhdGljIGludCBtbHhzd19wY2lfY3FfcGFnZV9wb29sX2luaXQoc3RydWN0IG1seHN3X3BjaV9xdWV1ZSAqcSxcXG4gXFx0XFx0XFx0XFx0ICAgICAgIGVudW0gbWx4c3dfcGNpX2NxX3R5cGUgY3FfdHlwZSlcXG4ge1xcbkBAIC0xMDY0LDYgKzEwNzQsNyBAQCBzdGF0aWMgaW50IG1seHN3X3BjaV9jcV9pbml0KHN0cnVjdCBtbHhzd19wY2kgKm1seHN3X3BjaSwgY2hhciAqbWJveCxcXG4gXFx0XFx0Z290byBlcnJfcGFnZV9wb29sX2luaXQ7XFxuIFxcbiBcXHRuYXBpX2VuYWJsZShcXHUwMDI2cS1cXHUwMDNldS5jcS5uYXBpKTtcXG4rXFx0cS1cXHUwMDNldS5jcS5uYXBpX2VuYWJsZWQgPSB0cnVlO1xcbiBcXHRtbHhzd19wY2lfcXVldWVfZG9vcmJlbGxfY29uc3VtZXJfcmluZyhtbHhzd19wY2ksIHEpO1xcbiBcXHRtbHhzd19wY2lfcXVldWVfZG9vcmJlbGxfYXJtX2NvbnN1bWVyX3JpbmcobWx4c3dfcGNpLCBxKTtcXG4gXFx0cmV0dXJuIDA7XFxuQEAgLTEwNzgsNyArMTA4OSw3IEBAIHN0YXRpYyB2b2lkIG1seHN3X3BjaV9jcV9maW5pKHN0cnVjdCBtbHhzd19wY2kgKm1seHN3X3BjaSxcXG4ge1xcbiBcXHRlbnVtIG1seHN3X3BjaV9jcV90eXBlIGNxX3R5cGUgPSBtbHhzd19wY2lfY3FfdHlwZShtbHhzd19wY2ksIHEpO1xcbiBcXG4tXFx0bmFwaV9kaXNhYmxlKFxcdTAwMjZxLVxcdTAwM2V1LmNxLm5hcGkpO1xcbitcXHRtbHhzd19wY2lfY3FfbmFwaV9kaXNhYmxlKHEpO1xcbiBcXHRtbHhzd19wY2lfY3FfcGFnZV9wb29sX2ZpbmkocSwgY3FfdHlwZSk7XFxuIFxcdG1seHN3X3BjaV9jcV9uYXBpX3RlYXJkb3duKHEpO1xcbiBcXHRtbHhzd19jbWRfaHcyc3dfY3EobWx4c3dfcGNpLVxcdTAwM2Vjb3JlLCBxLVxcdTAwM2VudW0pO1xcbkBAIC0xNDM5LDYgKzE0NTAsMTQgQEAgc3RhdGljIGludCBtbHhzd19wY2lfYXFzX2luaXQoc3RydWN0IG1seHN3X3BjaSAqbWx4c3dfcGNpLCBjaGFyICptYm94KVxcbiBcXG4gc3RhdGljIHZvaWQgbWx4c3dfcGNpX2Fxc19maW5pKHN0cnVjdCBtbHhzd19wY2kgKm1seHN3X3BjaSlcXG4ge1xcbitcXHRzdHJ1Y3QgbWx4c3dfcGNpX3F1ZXVlX3R5cGVfZ3JvdXAgKnF1ZXVlX2dyb3VwO1xcbitcXHRpbnQgaTtcXG4rXFxuK1xcdHF1ZXVlX2dyb3VwID0gbWx4c3dfcGNpX3F1ZXVlX3R5cGVfZ3JvdXBfZ2V0KG1seHN3X3BjaSxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0ICAgICBNTFhTV19QQ0lfUVVFVUVfVFlQRV9DUSk7XFxuK1xcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBxdWV1ZV9ncm91cC1cXHUwMDNlY291bnQ7IGkrKylcXG4rXFx0XFx0bWx4c3dfcGNpX2NxX25hcGlfZGlzYWJsZShcXHUwMDI2cXVldWVfZ3JvdXAtXFx1MDAzZXFbaV0pO1xcbitcXG4gXFx0bWx4c3dfcGNpX3F1ZXVlX2dyb3VwX2ZpbmkobWx4c3dfcGNpLCBcXHUwMDI2bWx4c3dfcGNpX3JkcV9vcHMpO1xcbiBcXHRtbHhzd19wY2lfcXVldWVfZ3JvdXBfZmluaShtbHhzd19wY2ksIFxcdTAwMjZtbHhzd19wY2lfc2RxX29wcyk7XFxuIFxcdG1seHN3X3BjaV9xdWV1ZV9ncm91cF9maW5pKG1seHN3X3BjaSwgXFx1MDAyNm1seHN3X3BjaV9jcV9vcHMpO1xcbkBAIC0yMDg5LDYgKzIxMDgsNyBAQCBzdGF0aWMgdm9pZCBtbHhzd19wY2lfZmluaSh2b2lkICpidXNfcHJpdilcXG4gXFx0c3RydWN0IG1seHN3X3BjaSAqbWx4c3dfcGNpID0gYnVzX3ByaXY7XFxuIFxcbiBcXHRmcmVlX2lycShwY2lfaXJxX3ZlY3RvcihtbHhzd19wY2ktXFx1MDAzZXBkZXYsIDApLCBtbHhzd19wY2kpO1xcbitcXHR0YXNrbGV0X2tpbGwoXFx1MDAyNm1seHN3X3BjaV9lcV9nZXQobWx4c3dfcGNpKS1cXHUwMDNldS5lcS50YXNrbGV0KTtcXG4gXFx0bWx4c3dfcGNpX2Fxc19maW5pKG1seHN3X3BjaSk7XFxuIFxcdG1seHN3X3BjaV9uYXBpX2RldnNfZmluaShtbHhzd19wY2kpO1xcbiBcXHRtbHhzd19wY2lfZndfYXJlYV9maW5pKG1seHN3X3BjaSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDA4OjMxOjMzLjg4MzQyOTE0WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTU1NDA5OTM2ODIxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1MWFNXX0NPUkVcIixcbiAgICBcIk1MWFNXX1BDSVwiLFxuICAgIFwiTUxYU1dfU1BFQ1RSVU1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtbHhzd19wY2lfY3FfbmFwaV9kaXNhYmxlXCIsXG4gICAgXCJtbHhzd19wY2lfY3FfaW5pdFwiLFxuICAgIFwibWx4c3dfcGNpX2NxX2ZpbmlcIixcbiAgICBcIm1seHN3X3BjaV9hcXNfZmluaVwiLFxuICAgIFwibWx4c3dfcGNpX2ZpbmlcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGRvdWJsZSBgbmFwaV9kaXNhYmxlYCBhbmQgYSBtaXNzaW5nIGB0YXNrbGV0X2tpbGxgIGR1cmluZyB0aGUgdGVhcmRvd24gb2YgdGhlIE1lbGxhbm94IHN3aXRjaCBQQ0kgZHJpdmVyIChgbWx4c3dgKS4gSXQgYWRkcyBhIGBuYXBpX2VuYWJsZWRgIGZsYWcgYW5kIGEgbmV3IGZ1bmN0aW9uIGBtbHhzd19wY2lfY3FfbmFwaV9kaXNhYmxlYC4gVGhpcyBtb2RpZmllcyByZWFjaGFibGUgY29yZSBkcml2ZXIgbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIHRoZSB0ZWFyZG93biBwYXRocyBhcmUgcm9idXN0LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDEwNDc2YTM5NDA4MGMzZDNlNjI4MTBjZmViOGVmMGM0N2MwYTE4OGZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAyMiAwODozMTozMiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3BjaS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvcGNpLmNcbmluZGV4IDBkYTg1ZDM2NjQ3ZDkxLi5mZWViMzIxMzRkMmFhNiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3BjaS5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuY1xuQEAgLTg2LDYgKzg2LDcgQEAgc3RydWN0IG1seHN3X3BjaV9xdWV1ZSB7XG4gXHRcdFx0ZW51bSBtbHhzd19wY2lfY3FlX3YgdjtcbiBcdFx0XHRzdHJ1Y3QgbWx4c3dfcGNpX3F1ZXVlICpkcTtcbiBcdFx0XHRzdHJ1Y3QgbmFwaV9zdHJ1Y3QgbmFwaTtcbitcdFx0XHRib29sIG5hcGlfZW5hYmxlZDtcbiBcdFx0XHRzdHJ1Y3QgcGFnZV9wb29sICpwYWdlX3Bvb2w7XG4gXHRcdH0gY3E7XG4gXHRcdHN0cnVjdCB7XG5AQCAtOTg5LDYgKzk5MCwxNSBAQCBzdGF0aWMgdm9pZCBtbHhzd19wY2lfY3FfbmFwaV90ZWFyZG93bihzdHJ1Y3QgbWx4c3dfcGNpX3F1ZXVlICpxKVxuIFx0bmV0aWZfbmFwaV9kZWwoXHUwMDI2cS1cdTAwM2V1LmNxLm5hcGkpO1xuIH1cbiBcbitzdGF0aWMgdm9pZCBtbHhzd19wY2lfY3FfbmFwaV9kaXNhYmxlKHN0cnVjdCBtbHhzd19wY2lfcXVldWUgKnEpXG4re1xuK1x0aWYgKCFxLVx1MDAzZXUuY3EubmFwaV9lbmFibGVkKVxuK1x0XHRyZXR1cm47XG4rXG4rXHRuYXBpX2Rpc2FibGUoXHUwMDI2cS1cdTAwM2V1LmNxLm5hcGkpO1xuK1x0cS1cdTAwM2V1LmNxLm5hcGlfZW5hYmxlZCA9IGZhbHNlO1xuK31cbitcbiBzdGF0aWMgaW50IG1seHN3X3BjaV9jcV9wYWdlX3Bvb2xfaW5pdChzdHJ1Y3QgbWx4c3dfcGNpX3F1ZXVlICpxLFxuIFx0XHRcdFx0ICAgICAgIGVudW0gbWx4c3dfcGNpX2NxX3R5cGUgY3FfdHlwZSlcbiB7XG5AQCAtMTA2NCw2ICsxMDc0LDcgQEAgc3RhdGljIGludCBtbHhzd19wY2lfY3FfaW5pdChzdHJ1Y3QgbWx4c3dfcGNpICptbHhzd19wY2ksIGNoYXIgKm1ib3gsXG4gXHRcdGdvdG8gZXJyX3BhZ2VfcG9vbF9pbml0O1xuIFxuIFx0bmFwaV9lbmFibGUoXHUwMDI2cS1cdTAwM2V1LmNxLm5hcGkpO1xuK1x0cS1cdTAwM2V1LmNxLm5hcGlfZW5hYmxlZCA9IHRydWU7XG4gXHRtbHhzd19wY2lfcXVldWVfZG9vcmJlbGxfY29uc3VtZXJfcmluZyhtbHhzd19wY2ksIHEpO1xuIFx0bWx4c3dfcGNpX3F1ZXVlX2Rvb3JiZWxsX2FybV9jb25zdW1lcl9yaW5nKG1seHN3X3BjaSwgcSk7XG4gXHRyZXR1cm4gMDtcbkBAIC0xMDc4LDcgKzEwODksNyBAQCBzdGF0aWMgdm9pZCBtbHhzd19wY2lfY3FfZmluaShzdHJ1Y3QgbWx4c3dfcGNpICptbHhzd19wY2ksXG4ge1xuIFx0ZW51bSBtbHhzd19wY2lfY3FfdHlwZSBjcV90eXBlID0gbWx4c3dfcGNpX2NxX3R5cGUobWx4c3dfcGNpLCBxKTtcbiBcbi1cdG5hcGlfZGlzYWJsZShcdTAwMjZxLVx1MDAzZXUuY3EubmFwaSk7XG4rXHRtbHhzd19wY2lfY3FfbmFwaV9kaXNhYmxlKHEpO1xuIFx0bWx4c3dfcGNpX2NxX3BhZ2VfcG9vbF9maW5pKHEsIGNxX3R5cGUpO1xuIFx0bWx4c3dfcGNpX2NxX25hcGlfdGVhcmRvd24ocSk7XG4gXHRtbHhzd19jbWRfaHcyc3dfY3EobWx4c3dfcGNpLVx1MDAzZWNvcmUsIHEtXHUwMDNlbnVtKTtcbkBAIC0xNDM5LDYgKzE0NTAsMTQgQEAgc3RhdGljIGludCBtbHhzd19wY2lfYXFzX2luaXQoc3RydWN0IG1seHN3X3BjaSAqbWx4c3dfcGNpLCBjaGFyICptYm94KVxuIFxuIHN0YXRpYyB2b2lkIG1seHN3X3BjaV9hcXNfZmluaShzdHJ1Y3QgbWx4c3dfcGNpICptbHhzd19wY2kpXG4ge1xuK1x0c3RydWN0IG1seHN3X3BjaV9xdWV1ZV90eXBlX2dyb3VwICpxdWV1ZV9ncm91cDtcbitcdGludCBpO1xuK1xuK1x0cXVldWVfZ3JvdXAgPSBtbHhzd19wY2lfcXVldWVfdHlwZV9ncm91cF9nZXQobWx4c3dfcGNpLFxuK1x0XHRcdFx0XHRcdCAgICAgTUxYU1dfUENJX1FVRVVFX1RZUEVfQ1EpO1xuK1x0Zm9yIChpID0gMDsgaSBcdTAwM2MgcXVldWVfZ3JvdXAtXHUwMDNlY291bnQ7IGkrKylcbitcdFx0bWx4c3dfcGNpX2NxX25hcGlfZGlzYWJsZShcdTAwMjZxdWV1ZV9ncm91cC1cdTAwM2VxW2ldKTtcbitcbiBcdG1seHN3X3BjaV9xdWV1ZV9ncm91cF9maW5pKG1seHN3X3BjaSwgXHUwMDI2bWx4c3dfcGNpX3JkcV9vcHMpO1xuIFx0bWx4c3dfcGNpX3F1ZXVlX2dyb3VwX2ZpbmkobWx4c3dfcGNpLCBcdTAwMjZtbHhzd19wY2lfc2RxX29wcyk7XG4gXHRtbHhzd19wY2lfcXVldWVfZ3JvdXBfZmluaShtbHhzd19wY2ksIFx1MDAyNm1seHN3X3BjaV9jcV9vcHMpO1xuQEAgLTIwODksNiArMjEwOCw3IEBAIHN0YXRpYyB2b2lkIG1seHN3X3BjaV9maW5pKHZvaWQgKmJ1c19wcml2KVxuIFx0c3RydWN0IG1seHN3X3BjaSAqbWx4c3dfcGNpID0gYnVzX3ByaXY7XG4gXG4gXHRmcmVlX2lycShwY2lfaXJxX3ZlY3RvcihtbHhzd19wY2ktXHUwMDNlcGRldiwgMCksIG1seHN3X3BjaSk7XG4rXHR0YXNrbGV0X2tpbGwoXHUwMDI2bWx4c3dfcGNpX2VxX2dldChtbHhzd19wY2kpLVx1MDAzZXUuZXEudGFza2xldCk7XG4gXHRtbHhzd19wY2lfYXFzX2ZpbmkobWx4c3dfcGNpKTtcbiBcdG1seHN3X3BjaV9uYXBpX2RldnNfZmluaShtbHhzd19wY2kpO1xuIFx0bWx4c3dfcGNpX2Z3X2FyZWFfZmluaShtbHhzd19wY2kpO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMDg6MzE6MzMuODgzNDMwODlaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3NjQ0MTA5MDA0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIE1lbGxhbm94IFN3aXRjaCBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgdHdlYWtzIHRoZSBNZWxsYW5veCBzd2l0Y2ggZHJpdmVyLCBzcGVjaWZpY2FsbHkgYG1seHN3L3BjaS5jYC4gU2VlbXMgbGlrZSB0aGV5J3JlIGFkZHJlc3NpbmcgYSBwb3RlbnRpYWwgZG91YmxlIGBuYXBpX2Rpc2FibGVgIGlzc3VlIGJ5IGludHJvZHVjaW5nIGEgYG5hcGlfZW5hYmxlZGAgZmxhZyB3aXRoaW4gdGhlIGBtbHhzd19wY2lfcXVldWVgIHN0cnVjdHVyZS4gU21hcnQgbW92ZSwgdGhhdCBraW5kIG9mIHJhY2UgY29uZGl0aW9uIGNhbiBiZSBhIHBhaW4uIFRoZXkncmUgYWxzbyB0aHJvd2luZyBpbiBhIGB0YXNrbGV0X2tpbGxgIGNhbGwgZHVyaW5nIGBtbHhzd19wY2lfZmluaWAsIHByb2JhYmx5IGZvciBzb21lIGNsZWFuLXVwLiBBbGwgc3RhbmRhcmQgc3R1ZmYgZm9yIGEgZHJpdmVyIGxpa2UgdGhpcy5cblxuTXkgaW1tZWRpYXRlIHRob3VnaHQsIHRob3VnaCwgaXMgaG93IHRoaXMgZHJpdmVyIHBsYXlzIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIE1lbGxhbm94IHN3aXRjaGVzIGFyZSB0eXBpY2FsbHkgcGh5c2ljYWwgUENJIGRldmljZXMsIHJpZ2h0PyBUaGV5J3JlIGRlc2lnbmVkIGZvciBoaWdoLXBlcmZvcm1hbmNlIG5ldHdvcmtpbmcgb24gZGVkaWNhdGVkIGhhcmR3YXJlLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGVyZSdzIGFueSBRRU1VIGVtdWxhdGlvbiBmb3IgYG1seHN3YC4gSWYgdGhpcyBkcml2ZXIgaXMgcHVyZWx5IGhhcmR3YXJlLWRlcGVuZGVudCwgdGhlbiB0aGlzIHBhdGNoIG1pZ2h0IGhhdmUgbGltaXRlZCBpbXBhY3QgaW4gYSB2aXJ0dWFsaXplZCBzZXR1cC4gVGhlIG1haW4gdGhpbmcgaXMgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgaXMgcmVsZXZhbnQgdG8gbXkgY3VycmVudCB3b3JrLlxuXG5JJ2xsIGp1bXAgaW50byB0aGUga2VybmVsIGNvbmZpZ3MgYW5kIGRvIGEgcXVpY2sgc2VhcmNoIGZvciBgbWx4c3dgIHRvIHNlZSB3aGF0IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgYXZhaWxhYmxlLiBUaGF0IHNob3VsZCBnaXZlIG1lIGEgZ29vZCBoYW5kbGUgb24gaXRzIHVzYWdlIGFuZCBwb3NzaWJsZSB2aXJ0dWFsaXphdGlvbiBzY2VuYXJpb3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5NDgsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQwODozMTo0MS41Mjc1NDIyMzRaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODQ2NDIwMTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1MWFNXXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9LY29uZmlnLTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvS2NvbmZpZzo2OmNvbmZpZyBNTFhTV19DT1JFXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvS2NvbmZpZy03LVxcdHRyaXN0YXRlIFxcXCJNZWxsYW5veCBUZWNobm9sb2dpZXMgU3dpdGNoIEFTSUNzIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9LY29uZmlnLTE2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L0tjb25maWc6MTc6Y29uZmlnIE1MWFNXX0NPUkVfSFdNT05cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9LY29uZmlnLTE4LVxcdGJvb2wgXFxcIkhXTU9OIHN1cHBvcnQgZm9yIE1lbGxhbm94IFRlY2hub2xvZ2llcyBTd2l0Y2ggQVNJQ3NcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9LY29uZmlnLTI0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L0tjb25maWc6MjU6Y29uZmlnIE1MWFNXX0NPUkVfVEhFUk1BTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L0tjb25maWctMjYtXFx0Ym9vbCBcXFwiVGhlcm1hbCB6b25lIHN1cHBvcnQgZm9yIE1lbGxhbm94IFRlY2hub2xvZ2llcyBTd2l0Y2ggQVNJQ3NcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9LY29uZmlnLTMyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L0tjb25maWc6MzM6Y29uZmlnIE1MWFNXX1BDSVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L0tjb25maWctMzQtXFx0dHJpc3RhdGUgXFxcIlBDSSBidXMgaW1wbGVtZW50YXRpb24gZm9yIE1lbGxhbm94IFRlY2hub2xvZ2llcyBTd2l0Y2ggQVNJQ3NcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9LY29uZmlnLTQzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L0tjb25maWc6NDQ6Y29uZmlnIE1MWFNXX0kyQ1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L0tjb25maWctNDUtXFx0dHJpc3RhdGUgXFxcIkkyQyBidXMgaW1wbGVtZW50YXRpb24gZm9yIE1lbGxhbm94IFRlY2hub2xvZ2llcyBTd2l0Y2ggQVNJQ3NcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9LY29uZmlnLTUzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L0tjb25maWc6NTQ6Y29uZmlnIE1MWFNXX1NQRUNUUlVNXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvS2NvbmZpZy01NS1cXHR0cmlzdGF0ZSBcXFwiTWVsbGFub3ggVGVjaG5vbG9naWVzIFNwZWN0cnVtIGZhbWlseSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvS2NvbmZpZy03NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9LY29uZmlnOjc1OmNvbmZpZyBNTFhTV19TUEVDVFJVTV9EQ0JcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9LY29uZmlnLTc2LVxcdGJvb2wgXFxcIkRhdGEgQ2VudGVyIEJyaWRnaW5nIChEQ0IpIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9LY29uZmlnLTgyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L0tjb25maWc6ODM6Y29uZmlnIE1MWFNXX01JTklNQUxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9LY29uZmlnLTg0LVxcdHRyaXN0YXRlIFxcXCJNZWxsYW5veCBUZWNobm9sb2dpZXMgbWluaW1hbCBJMkMgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMDg6MzE6NDEuNjEyMTg5MzkzWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTIxNDQ5Mzg0OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE1lbGxhbm94IFRlY2hub2xvZ2llcyBTd2l0Y2ggQVNJQyBEcml2ZXIqKlxuXG5Pa2F5LCBzbyB0aGlzIGNvZGUgaXMgZGVmaW5pdGVseSB0aGUgZHJpdmVyIGZvciB0aGUgTWVsbGFub3ggc3dpdGNoIEFTSUNzLiBObyBhbWJpZ3VpdHkgdGhlcmUuIEdpdmVuIG15IGV4cGVyaWVuY2UsIGl0J3MgY2xlYXIgd2UncmUgZGVhbGluZyB3aXRoIGhhcmR3YXJlLXNwZWNpZmljIGNvZGUgaGVyZS4gTXkgZmlyc3QgaW5zdGluY3QsIGFzIGFsd2F5cywgaXMgdG8gdGhpbmsgYWJvdXQgdGVzdGluZy4gVGhlIHF1ZXN0aW9uIGlzOiBjYW4gd2Ugc2ltdWxhdGUgdGhpcz8gSXMgdGhlcmUgYSBzb2Z0d2FyZSBlbXVsYXRpb24gbGF5ZXIgYXZhaWxhYmxlPyBMZXQncyBxdWlja2x5IHNlZSBpZiB0aGVyZSdzIGFueSBgbmV0ZGV2c2ltYCBlcXVpdmFsZW50IGZvciBgbWx4c3dgLiBBaCwgbm8sIGBuZXRkZXZzaW1gIGl0c2VsZiBpcyBhIHN0YW5kYWxvbmUgdGhpbmcsIHNlcGFyYXRlIGZyb20gYG1seHN3YC4gT2theSwgc28gd2UncmUgbG9va2luZyBhdCBpbnRlcmFjdGluZyB3aXRoIHRoaXMgZHJpdmVyLiBUaGUgZm9jdXMgaGVyZSBpcyB0byB1bmRlcnN0YW5kIGEgY2VydGFpbiBsb2dpYyBmbG93LCBJIG5lZWQgdG8ga25vdyBpZiB3ZSBjYW4gcmVhY2ggc3BlY2lmaWMgZnVuY3Rpb25zIGluIG91ciBzaXR1YXRpb24uXG5cblRoZSBrZXkgaGVyZSBpcyB3aGV0aGVyIHdlIGNhbiByZWFjaCBhIGZ1bmN0aW9uIGxpa2UgYG1seHN3X3BjaV9maW5pYCBvciBzb21ldGhpbmcgcmVsYXRlZCBsaWtlIGBtbHhzd19wY2lfY3FfbmFwaV9kaXNhYmxlYCB3aXRob3V0IHRoZSBhY3R1YWwgaGFyZHdhcmUgcHJlc2VudC4gUGVyaGFwcyBieSBmYWtpbmcgc3BlY2lmaWMgY29uZGl0aW9ucywgdXNpbmcgbW9ja3MsIG9yIGZpbmRpbmcgYWx0ZXJuYXRpdmUgZW50cnkgcG9pbnRzLiBNeSBuZXh0IHN0ZXAgd2lsbCBiZSB0byBkaXZlIGludG8gYG1seHN3X3BjaV9wcm9iZWAgYXMgdGhlIG9idmlvdXMgZW50cnkgcG9pbnQuIEkgd2FudCB0byBzZWUgaG93IHRoZSBzeXN0ZW0gYnJpbmdzIHRoZSBoYXJkd2FyZSB1cC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDEzNywiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQwODozMTo0Ni44MjY2ODU4NzFaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQyNTczMTExLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1seHN3X3BjaV9wcm9iZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuYz0yNDIzPXN0YXRpYyB2b2lkIG1seHN3X3BjaV9jbWRfZmluaShzdHJ1Y3QgbWx4c3dfcGNpICptbHhzd19wY2kpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuYy0yNDI5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3BjaS5jOjI0MzA6c3RhdGljIGludCBtbHhzd19wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuYy0yNDMxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3BjaS5jPTI1NDg9aW50IG1seHN3X3BjaV9kcml2ZXJfcmVnaXN0ZXIoc3RydWN0IHBjaV9kcml2ZXIgKnBjaV9kcml2ZXIpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvcGNpLmMtMjU0OS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvcGNpLmM6MjU1MDpcXHRwY2lfZHJpdmVyLVxcdTAwM2Vwcm9iZSA9IG1seHN3X3BjaV9wcm9iZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuYy0yNTUxLVxcdHBjaV9kcml2ZXItXFx1MDAzZXJlbW92ZSA9IG1seHN3X3BjaV9yZW1vdmU7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDA4OjMxOjQ2Ljk2OTI2NDMwM1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwMzQ3ODQ4ODI2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBQQ0kgRHJpdmVyIFJlYWNoYWJpbGl0eSBmb3IgRnV6emluZyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgUENJIGRyaXZlciBjb2RlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIGl0J3MgcHJldHR5IHN0YW5kYXJkLiBUaGUgYHByb2JlYCBmdW5jdGlvbiwgd2hpY2ggaXMgY3J1Y2lhbCwgd29uJ3QgZXZlbiBiZSBjYWxsZWQgdW5sZXNzIHRoZXJlJ3MgYW4gYWN0dWFsLCBvciBhdCBsZWFzdCBlbXVsYXRlZCwgUENJIGRldmljZSB3aXRoIHRoZSByaWdodCB2ZW5kb3IgYW5kIGRldmljZSBJRCBwcmVzZW50LiBUaGF0J3MgdGhlIGJhc2VsaW5lIGFzc3VtcHRpb24uXG5cblRoZW4gSSBzdGFydGVkIGNvbnNpZGVyaW5nIGVtdWxhdGlvbiBwb3NzaWJpbGl0aWVzLiBJcyB0aGVyZSBhbnkgUUVNVSBzdXBwb3J0IGZvciBNZWxsYW5veCBTd2l0Y2ggQVNJQ3M/IE5vcGUsIFFFTVUgaXMgbG9hZGVkIHVwIHdpdGggYSBzdGFuZGFyZCBzZXQgb2YgZW11bGF0ZWQgTklDcyAoZTEwMDAsIHJ0bDgxMzksIHZpcnRpbywgZXRjLiksIGJ1dCBub3RoaW5nIHJlbGF0ZWQgdG8gdGhpcyBwYXJ0aWN1bGFyIHBpZWNlIG9mIGhhcmR3YXJlLiBUaGVyZWZvcmUsIGluIHRoZSB0cmFkaXRpb25hbCB2aXJ0dWFsaXphdGlvbiBzZXR1cCBvZiBHQ0Ugb3IgZXZlbiBRRU1VLCB0aGlzIGNvZGUncyB1bnJlYWNoYWJsZSwgb3IgYXQgbGVhc3QsIEkgdGhvdWdodCBzby5cblxuQnV0IHRoZW4sIHN5emJvdCBmb3VuZCBhIGJ1ZyBoZXJlLiBOb3cgKnRoYXQqIGdvdCBteSBhdHRlbnRpb24uIFwic3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XCIuIFdhaXQsIGNvdWxkIHN5emJvdCBzb21laG93IGJlIGZ1enppbmcgUENJIGRldmljZXM/IERvZXMgc3l6Ym90IHVzZSBhIG1lY2hhbmlzbSBsaWtlIGB2aGNpYCBmb3IgUENJPyBJdCdzIHRoZSBzdGFuZGFyZCBmb3IgVVNCLCBzbyB0aGF0IHdvdWxkbid0IHN1cnByaXNlIG1lLiBUaGUgaW1tZWRpYXRlIHRob3VnaHQgd2FzLCBkb2VzIHN5emthbGxlciBoYXZlIHNvbWUgYHN5el9wY2lfZGV2aWNlYCBwc2V1ZG8tc3lzY2FsbCB0aGF0IEkgaGF2ZW4ndCBzZWVuP1xuXG5TbywgSSBzdGFydGVkIHNlYXJjaGluZyB0byBmaWd1cmUgb3V0IGhvdyBzeXprYWxsZXIgY2FuIHJlYWNoIGl0LiBJIHN0YXJ0ZWQgdGhlIHByb2Nlc3Mgb2YgZWxpbWluYXRpb24uIFN5emthbGxlciBkb2Vzbid0IGhhdmUgYSBnZW5lcmljIGBzeXpfcGNpX2RldmljZWAgc3R5bGUgc3lzY2FsbC4gV2FpdCwgYnV0IGl0IGhhcyBgc3l6X2t2bV9zZXR1cF9jcHVgIHdoaWNoIGlzIGEgY2x1ZSB0aGF0IGl0IG1heSBiZSB1c2luZyBtb3JlIGNvbXBsZXggbWVjaGFuaXNtcy4gQWgsIGl0IGRvZXMgaGF2ZSBhIFBDSSBmdXp6ZXIhXG5cbkhvd2V2ZXIsIEkgcmVtaW5kZWQgbXlzZWxmIHRoYXQgdGhlIGRvY3VtZW50YXRpb24gc3RhdGVzOiBcIkltcG9ydGFudCBub3RlOiB0aGlzIHRvb2wgQ0FOTk9UIGJlIHVzZWQgdG8gc2VhcmNoIHN5emthbGxlciBzeXpsYW5nIGRlc2NyaXB0aW9ucyAoc3lzLyopIG9yIGV4cHJlc3Npb25zIGNvbnRhaW5pbmcgJ3N5el8nIHNpbmNlIHRoZXkgYXJlIHN5emthbGxlciBwc2V1ZG8tc3lzY2FsbHMsIGFuZCBub3QgcHJlc2VudCBpbiB0aGUgTGludXgga2VybmVsLlwiIE9rLCBzbyBpdCdzIG5vdCBkaXJlY3QuXG5cbkFscmlnaHQsIEkgc3dpdGNoZWQgZ2VhcnMgYWdhaW4uIERvZXMgc3l6a2FsbGVyIHNvbWVob3cgdXNlIGB2ZmlvYCBvciBpbmplY3QgUENJIGRldmljZXMgc29tZSBvdGhlciB3YXk/IEkgbmVlZCB0byBjaGVjay4gSXQncyB1c2luZyBzaW1pbGFyIHRlY2huaXF1ZXMgZm9yIG90aGVyIGtpbmRzIG9mIGRldmljZXMuIFRoZSBhbnN3ZXIgaXMgbm90IHN0cmFpZ2h0Zm9yd2FyZC4gRG9lcyBzeXprYWxsZXIgaGF2ZSBhIFBDSSBmdXp6ZXI/IFllcywgYW5kIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyEgU28gaXQncyBub3QgYHZmaW9gIG9yIGEgY3VzdG9tIFBDSSBkZXZpY2UgaW4gUUVNVS4gTm9wZSwgc3l6a2FsbGVyIG11c3QgaGF2ZSBzb21lIHdheSB0byBpbmplY3QgUENJIGRldmljZXMuXG5cblNvIGRvZXMgc3l6a2FsbGVyIGhhdmUgYHN5el9wY2lfZGV2aWNlYD8gSSd2ZSBnb3QgdG8gY2hlY2suIE1heWJlIHRoZXJlJ3Mgc29tZSBkb2N1bWVudGF0aW9uIG9yIGNvZGUgaW4gYERvY3VtZW50YXRpb24vYCBvciBgZHJpdmVycy9wY2kvYCB0aGF0J3Mgc3l6a2FsbGVyLXNwZWNpZmljIHRoYXQgd2lsbCBnaXZlIG1lIHRoZSBhbnN3ZXIuIEJ1dCwgaW4gZ2VuZXJhbCwgaWYgaXQncyBhIGhhcmR3YXJlIGRyaXZlciB3aXRob3V0IHNvZnR3YXJlIGVtdWxhdGlvbiwgaXQncyB1c3VhbGx5IHVucmVhY2hhYmxlLCBzbyBJIG5lZWQgdG8gY2hlY2sgdGhlIGtlcm5lbCBmb3IgUENJIGVtdWxhdGlvbiBzcGVjaWZpY2FsbHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ4OTgsIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMDg6MzE6NTcuMzE3MTE0ODM5WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI3NTcwOTA0NTcsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN5el9wY2lcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQwODozMjowMC4wNzQyMTc0MjZaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MzcxOTkyOTU4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIEZ1enppbmcgUG9zc2liaWxpdGllcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgaW5pdGlhbGx5LCBJIGRvbid0IHNlZSBhbnl0aGluZyBpbW1lZGlhdGVseSBqdW1waW5nIG91dCBhdCBtZSBhYm91dCBgc3l6X3BjaWAuIFdhaXQgYSBzZWNvbmQsIHdhc24ndCB0aGVyZSBzb21ldGhpbmcgYWJvdXQgYSBQQ0kgZnV6emVyPyBTeXprYWxsZXIgKmRvZXMqIGhhdmUgYSBQQ0kgZnV6emVyLCBidXQgSSB0aGluayBpdCBtaWdodCBiZSBpbXBsZW1lbnRlZCB2aWEgYSBRRU1VIGRldmljZSBvciBzb21ldGhpbmcgc2ltaWxhci5cblxuTm93LCBpZiB0aGlzIGlzIGEgKmhhcmR3YXJlKiBkcml2ZXIsIHRoYXQgcmFpc2VzIGEga2V5IHF1ZXN0aW9uOiBjYW4gd2UgZXZlbiBmdXp6IGl0IGVmZmVjdGl2ZWx5PyBSZWFkaW5nIHRoZXNlIGluc3RydWN0aW9ucywgdGhlIGtleSBwb2ludCBqdW1wcyBvdXQ6IFwiQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlXCIuIFRoYXQncyB0aGUgY3J1eCBvZiBpdC4gSWYgaXQncyBzaW1wbHkgdW5yZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBzZXR0aW5nLCBJJ20gZ29pbmcgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgLlxuXG5UaGUgYmlnIHF1ZXN0aW9uIG5vdyBpczogaXMgYG1seHN3YCByZWFjaGFibGUgd2l0aGluIFFFTVU/IExldCBtZSBtZW50YWxseSBzdGFydCBzZWFyY2hpbmcgZm9yIGBtbHhzd2AgaW4gdGhlIFFFTVUgc291cmNlIGNvZGUuLi4gT2theSwgc28gUUVNVSBkb2Vzbid0IGRpcmVjdGx5IGVtdWxhdGUgTWVsbGFub3ggc3dpdGNoZXMsIHRoYXQncyBjZXJ0YWluLiBJdCAqbWlnaHQqIGVtdWxhdGUgc29tZSBNZWxsYW5veCBOSUNzLCBidXQgZXZlbiB0aGVuLCBpdCdzIHByb2JhYmx5IHRocm91Z2ggc29tZSByZWNlbnQgYWRkaXRpb25zIG9yIGV4dGVybmFsIHByb2plY3RzLiBEZWZpbml0ZWx5IG5vdCBtbHhzdywgdGhlIE1lbGxhbm94IFN3aXRjaCBBU0lDcyBsaWtlIHRoZSBTcGVjdHJ1bSBsaW5lLlxuXG5Ib2xkIG9uLCBpcyB0aGVyZSBhIGR1bW15IGRyaXZlciBvciBzb21lIGtpbmQgb2Ygd2F5IHRvIGluc3RhbnRpYXRlIGl0IHdpdGhvdXQgdGhlIGFjdHVhbCBoYXJkd2FyZT8gTGV0IG1lIGRvdWJsZS1jaGVjayBpZiBgbWx4c3dgIGhhcyBhIGR1bW15IGJ1cyBvciBzb21ldGhpbmcgc2ltaWxhci4gSSBuZWVkIHRvIGludmVzdGlnYXRlIGlmIHRoZXJlJ3MgYW55IG1lY2hhbmlzbSBmb3IgYWJzdHJhY3RpbmcgdGhlIGhhcmR3YXJlIGRlcGVuZGVuY3kuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYxOTEsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMDg6MzI6MDYuNDQ2MjEzMDM0WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTU3ODczMjI3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1seHN3Xy4qX3Byb2JlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9jb3JlX2xpbmVjYXJkX2Rldi5jPTEyMj1zdGF0aWMgY29uc3Qgc3RydWN0IGRldmxpbmtfb3BzIG1seHN3X2xpbmVjYXJkX2Rldl9kZXZsaW5rX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmVfbGluZWNhcmRfZGV2LmMtMTI2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmVfbGluZWNhcmRfZGV2LmM6MTI3OnN0YXRpYyBpbnQgbWx4c3dfbGluZWNhcmRfYmRldl9wcm9iZShzdHJ1Y3QgYXV4aWxpYXJ5X2RldmljZSAqYWRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9jb3JlX2xpbmVjYXJkX2Rldi5jLTEyOC1cXHRcXHRcXHRcXHQgICAgIGNvbnN0IHN0cnVjdCBhdXhpbGlhcnlfZGV2aWNlX2lkICppZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmVfbGluZWNhcmRfZGV2LmM9MTcxPXN0YXRpYyBzdHJ1Y3QgYXV4aWxpYXJ5X2RyaXZlciBtbHhzd19saW5lY2FyZF9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvY29yZV9saW5lY2FyZF9kZXYuYy0xNzItXFx0Lm5hbWUgPSBNTFhTV19MSU5FQ0FSRF9ERVZfSURfTkFNRSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9jb3JlX2xpbmVjYXJkX2Rldi5jOjE3MzpcXHQucHJvYmUgPSBtbHhzd19saW5lY2FyZF9iZGV2X3Byb2JlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmVfbGluZWNhcmRfZGV2LmMtMTc0LVxcdC5yZW1vdmUgPSBtbHhzd19saW5lY2FyZF9iZGV2X3JlbW92ZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2kyYy5jPTYyND1zdGF0aWMgY29uc3Qgc3RydWN0IG1seHN3X2J1cyBtbHhzd19pMmNfYnVzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvaTJjLmMtNjMyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2kyYy5jOjYzMzpzdGF0aWMgaW50IG1seHN3X2kyY19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2kyYy5jLTYzNC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9pMmMuYz03NTA9aW50IG1seHN3X2kyY19kcml2ZXJfcmVnaXN0ZXIoc3RydWN0IGkyY19kcml2ZXIgKmkyY19kcml2ZXIpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvaTJjLmMtNzUxLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9pMmMuYzo3NTI6XFx0aTJjX2RyaXZlci1cXHUwMDNlcHJvYmUgPSBtbHhzd19pMmNfcHJvYmU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvaTJjLmMtNzUzLVxcdGkyY19kcml2ZXItXFx1MDAzZXJlbW92ZSA9IG1seHN3X2kyY19yZW1vdmU7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuYz0yNDIzPXN0YXRpYyB2b2lkIG1seHN3X3BjaV9jbWRfZmluaShzdHJ1Y3QgbWx4c3dfcGNpICptbHhzd19wY2kpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuYy0yNDI5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3BjaS5jOjI0MzA6c3RhdGljIGludCBtbHhzd19wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuYy0yNDMxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3BjaS5jPTI1NDg9aW50IG1seHN3X3BjaV9kcml2ZXJfcmVnaXN0ZXIoc3RydWN0IHBjaV9kcml2ZXIgKnBjaV9kcml2ZXIpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvcGNpLmMtMjU0OS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvcGNpLmM6MjU1MDpcXHRwY2lfZHJpdmVyLVxcdTAwM2Vwcm9iZSA9IG1seHN3X3BjaV9wcm9iZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuYy0yNTUxLVxcdHBjaV9kcml2ZXItXFx1MDAzZXJlbW92ZSA9IG1seHN3X3BjaV9yZW1vdmU7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9yb3V0ZXIuYz0yNjIxPXN0YXRpYyB2b2lkIG1seHN3X3NwX3JvdXRlcl9uZWlnaHNfdXBkYXRlX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fcm91dGVyLmMtMjYzNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9yb3V0ZXIuYzoyNjM3OnN0YXRpYyB2b2lkIG1seHN3X3NwX3JvdXRlcl9wcm9iZV91bnJlc29sdmVkX25leHRob3BzKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9yb3V0ZXIuYy0yNjM4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX3JvdXRlci5jLTI2NTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fcm91dGVyLmM6MjY1NzpcXHRtbHhzd19jb3JlX3NjaGVkdWxlX2R3KFxcdTAwMjZyb3V0ZXItXFx1MDAzZW5leHRob3BfcHJvYmVfZHcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fcm91dGVyLmMtMjY1OC1cXHRcXHRcXHQgICAgICAgTUxYU1dfU1BfVU5SRVNPTFZFRF9OSF9QUk9CRV9JTlRFUlZBTCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9yb3V0ZXIuYz0yOTQ2PXN0YXRpYyBpbnQgbWx4c3dfc3BfbmVpZ2hfaW5pdChzdHJ1Y3QgbWx4c3dfc3AgKm1seHN3X3NwKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fcm91dGVyLmMtMjk2Mi1cXHRcXHRcXHQgIG1seHN3X3NwX3JvdXRlcl9uZWlnaHNfdXBkYXRlX3dvcmspO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX3JvdXRlci5jOjI5NjM6XFx0SU5JVF9ERUxBWUVEX1dPUksoXFx1MDAyNm1seHN3X3NwLVxcdTAwM2Vyb3V0ZXItXFx1MDAzZW5leHRob3BfcHJvYmVfZHcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fcm91dGVyLmM6Mjk2NDpcXHRcXHRcXHQgIG1seHN3X3NwX3JvdXRlcl9wcm9iZV91bnJlc29sdmVkX25leHRob3BzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9yb3V0ZXIuYy0yOTY1LVxcdGF0b21pY19zZXQoXFx1MDAyNm1seHN3X3NwLVxcdTAwM2Vyb3V0ZXItXFx1MDAzZW5laWdoc191cGRhdGUubmVpZ2hfY291bnQsIDApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX3JvdXRlci5jLTI5NjYtXFx0bWx4c3dfY29yZV9zY2hlZHVsZV9kdyhcXHUwMDI2bWx4c3dfc3AtXFx1MDAzZXJvdXRlci1cXHUwMDNlbmVpZ2hzX3VwZGF0ZS5kdywgMCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fcm91dGVyLmM6Mjk2NzpcXHRtbHhzd19jb3JlX3NjaGVkdWxlX2R3KFxcdTAwMjZtbHhzd19zcC1cXHUwMDNlcm91dGVyLVxcdTAwM2VuZXh0aG9wX3Byb2JlX2R3LCAwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9yb3V0ZXIuYy0yOTY4LVxcdHJldHVybiAwO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fcm91dGVyLmM9Mjk3MT1zdGF0aWMgdm9pZCBtbHhzd19zcF9uZWlnaF9maW5pKHN0cnVjdCBtbHhzd19zcCAqbWx4c3dfc3ApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9yb3V0ZXIuYy0yOTczLVxcdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcXHUwMDI2bWx4c3dfc3AtXFx1MDAzZXJvdXRlci1cXHUwMDNlbmVpZ2hzX3VwZGF0ZS5kdyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fcm91dGVyLmM6Mjk3NDpcXHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXFx1MDAyNm1seHN3X3NwLVxcdTAwM2Vyb3V0ZXItXFx1MDAzZW5leHRob3BfcHJvYmVfZHcpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX3JvdXRlci5jLTI5NzUtXFx0cmhhc2h0YWJsZV9kZXN0cm95KFxcdTAwMjZtbHhzd19zcC1cXHUwMDNlcm91dGVyLVxcdTAwM2VuZWlnaF9odCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDA4OjMyOjA4LjAwNDA5MTczMVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4ODgxNzQwMTc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIFN5emthbGxlcidzIFBDSSBGdXp6aW5nIENhcGFiaWxpdGllcyoqXG5cbk9rYXksIHNvIEknbSB0cnlpbmcgdG8gZmlndXJlIG91dCBpZiB0aGlzIGRyaXZlciBpcyByZWFjaGFibGUgdmlhIHN5emthbGxlciBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBUaGUgaW5pdGlhbCB0aG91Z2h0IGlzLCBob3cgaXMgdGhlIGRyaXZlciBwcm9iZWQ/IFBDSSBvciBJMkMsIGxpa2VseS4gTm93LCB0aGUgYmlnIHF1ZXN0aW9uOiBjYW4gc3l6a2FsbGVyIGFjdHVhbGx5ICplbXVsYXRlKiBQQ0kgZGV2aWNlcz8gSSBrbm93IGl0IGRvZXNuJ3QgaGF2ZSBhIGZ1bGx5IGZsZXhpYmxlIFBDSSBlbXVsYXRvciwgZXNwZWNpYWxseSBub3Qgb25lIHRoYXQgbGV0cyB5b3UgZGVmaW5lIGFyYml0cmFyeSB2ZW5kb3IvZGV2aWNlIElEcyBlYXNpbHkuIFVubGVzcyBpdCdzIGxldmVyYWdpbmcgYHZmaW9gIHdpdGggYSByZWFsLCBvciBhdCBsZWFzdCBhICpkdW1teSosIGRldmljZS5cblxuV2FpdCBhIHNlY29uZCwgc3l6Ym90IHJlcG9ydGVkIGEgYnVnIGluIHRoaXMgY29kZSEgQW5kIHRoZXJlJ3MgYSBwYXRjaCB1bmRlciByZXZpZXcsIHJlbGF0ZWQgdG8gdGhpcyBpc3N1ZSEgVGhpcyBpcyBwcm9taXNpbmcsIHN5emJvdCBmb3VuZCBzb21ldGhpbmchIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGNoZWNrIGlmIHN5emthbGxlciBoYXMgYSB3YXkgdG8gZnV6eiBQQ0kgZGV2aWNlcyBpbiBnZW5lcmFsLiBJIHJlbWVtYmVyIHRoZXJlICppcyogYSBQQ0kgZnV6emVyLCB1c2luZyBgc3l6X3BjaV9kZXZpY2VgIG9yIGEgc2ltaWxhciBjb25zdHJ1Y3QsIHJpZ2h0PyBOb3BlLCB0aGlzIHByb21wdCByZW1pbmRlZCBtZTogdGhvc2UgXCJzeXpfXCIgY2FsbHMgYXJlbid0IHJlYWwga2VybmVsIGNhbGxzLCBzbyB0aGF0J3MgYSBkZWFkIGVuZC5cblxuSSAqdGhvdWdodCogdGhlcmUgd2FzIHJlY2VudCBQQ0kgZnV6emluZyBzdXBwb3J0IHdpdGggYHN5el9wY2lfZGV2aWNlYCwgbGlrZSB3aXRoIFVTQiBhbmQgYHZoY2lgLCBidXQgbm8sIG5vdCBxdWl0ZS4gVGhlIGltcGxlbWVudGF0aW9uIG11c3QgYmUgc29tZXdoZXJlIGVsc2UuIEJ1dCB3YWl0ISBJIHJlY2FsbCBzeXprYWxsZXIgKmRvZXMqIGhhdmUgYSBQQ0kgZnV6emVyIGFuZCBJIHRoaW5rIGl0J3MgZGVmaW5lZCBpbiBhIGBzeXMvbGludXgvcGNpLnR4dGAgb3Igc2ltaWxhciBmaWxlLiBJZiB0aGF0J3MgdGhlIGNhc2UsIHRoZW4gbWF5YmUgSSBjYW4gZmlndXJlIG91dCBob3cgdG8gcmVhY2ggYG1seHN3X3BjaV9wcm9iZWAuXG5cbk9rYXksIHNvIGlmIHN5emthbGxlciAqY2FuKiBmdXp6IFBDSSBkZXZpY2VzLCB0aGVuIHRoaXMgY29kZSAqaXMqIHJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBMZXQncyBhc3N1bWUgc3l6a2FsbGVyIGNhbiBkbyB0aGlzLiBUaGUgcHJvbXB0IGp1c3QgYnJvdWdodCB1cCB0aGUgY2hhbGxlbmdlIGFnYWluOiB1bnJlYWNoYWJsZSBjb2RlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gSWYgc3l6a2FsbGVyICpkb2VzKiBoYXZlIGEgUENJIGZ1enplciwgaXQgaGFzIHRvIHVzZSBzb21lIFFFTVUgZmVhdHVyZSAobGlrZSBgdmZpby11c2VyYCwgYGl2c2htZW1gLCBvciBhIGN1c3RvbSBRRU1VIGRldmljZSkgb3Iga2VybmVsIGZlYXR1cmUgKGBwY2lfc3R1YmAgb3IgYHZmaW9gKSB0byBpbmplY3QgUENJIGRldmljZXMuXG5cbk9rYXksIGlzIGl0IGEgY3VzdG9tIFFFTVUgZGV2aWNlPyBOby4gTWF5YmUgYHZmaW9gPyBUaGF0J3MgdHlwaWNhbGx5IGZvciB1c2Vyc3BhY2UgZHJpdmVycywgSSByZWNhbGwuIEkgdmFndWVseSByZW1lbWJlciBzb21ldGhpbmcgYWJvdXQgYSBgZWR1YCBkZXZpY2UsIGJ1dCB0aGF0J3Mgbm90IHJpZ2h0LiBOby4gSG1tLCBtYXliZSBgdmlydGlvYD8gSWYgc28sIHdoYXQgaXMgdGhlIGluamVjdGlvbiBtZWNoYW5pc20gaW4gdGhlIGtlcm5lbD8gSSBuZWVkIHRvIGNoZWNrIGZvciBhIGtlcm5lbCBpbmplY3Rpb24gbWVjaGFuaXNtIG9mIHNvcnRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NjgyLCJPdXRwdXRUb2tlbnMiOjI1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTU4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDA4OjMyOjE2Ljg4NTgzNDE0NloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjAxNjc5MjIzNSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGNpX2Z1enpcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQwODozMjoxOC45MDI2MzQ5NDFaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTU0MjA0MzI4MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBc3Nlc3NpbmcgdGhlIEZ1enppbmcgUG90ZW50aWFsIG9mIFRoaXMgUGF0Y2gqKlxuXG5Pa2F5LCBmaXJzdCB0aGluZ3MgZmlyc3QuIEkgbmVlZCB0byBxdWlja2x5IHJ1bGUgb3V0IHRoZSBvYnZpb3VzOiBpcyB0aGlzIHJlbGF0ZWQgdG8gYSBzdGFuZGFyZCBgc3l6X3BjaWAgaW50ZXJhY3Rpb24/IE5vLCBJJ3ZlIGFscmVhZHkgY29uZmlybWVkIHRoYXQncyBub3QgdGhlIGNhc2UuIFJpZ2h0LCBhbmQgSSByZW1lbWJlciBzeXprYWxsZXIgZG9lc24ndCBoYXZlIGEgYnVpbHQtaW4gUENJIGZ1enplciB0aGF0IGNhbiBqdXN0ICpjcmVhdGUqIGFueSBQQ0kgZGV2aWNlLiBTbywgd2hhdCB0cmlnZ2VyZWQgdGhpcyBidWc/IE15IGZpcnN0IHRob3VnaHQgd2FzIG1heWJlIHN5emJvdCBoaXQgdGhpcyBiZWNhdXNlIHNvbWVvbmUgcmFuIHN5emthbGxlciBvbiBhIHBoeXNpY2FsIG1hY2hpbmUgd2l0aCBhIE1lbGxhbm94IHN3aXRjaCwgYnV0IG5vLCBzeXpib3QncyBHQ0UgaW5zdGFuY2VzIGRvbid0IGhhdmUgdGhhdCBzb3J0IG9mIGhhcmR3YXJlLiBIbW1tLCB0aGVuIGRpZCBhbm90aGVyIGZ1enplciBmaW5kIHRoaXM/IE9yIHBlcmhhcHMgaXQgd2FzIGEgbWFudWFsbHkgd3JpdHRlbiBwYXRjaD8gXG5cbkFoLCBoZXJlJ3MgYSBjbHVlLiBJIHNlZSBcInN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1wiLiBPa2F5LCB0aGF0J3MgZ29vZCBpbmZvcm1hdGlvbi4gU28sIHN5ei1jbHVzdGVyIGlzIHRlc3RpbmcgdGhlIHBhdGNoLiBUaGUgY3J1Y2lhbCBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoaXMgYnVnIGNhbiBiZSB0cmlnZ2VyZWQgaW4gdGhlIEdDRSBlbnZpcm9ubWVudCBvciBRRU1VLiBJZiBpdCBjYW4ndCwgaXQncyBhIGRlYWQgZW5kIGFzIGZhciBhcyBmdXp6aW5nIGdvZXMuIEl0IHdvdWxkIGJlIGEgXCJXb3J0aEZ1enppbmc9ZmFsc2VcIiBzY2VuYXJpby4gTGV0IG1lIGRvdWJsZS1jaGVjay4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGVyZSdzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBhdmFpbGFibGUgZm9yIG1seHN3LlxuXG5cbiIsIklucHV0VG9rZW5zIjo5ODMzLCJPdXRwdXRUb2tlbnMiOjI1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDA4OjMyOjI0LjQ0NDY4MDgyMVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQ0MjM0NzM4OSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWx4c3cuKmVtdWxcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQwODozMjoyNi44ODcwMzQzM1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTYwMjc3NDk1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgc3VtbWFyeSwgcHJlc2VudGVkIGFzIGEgc3RyZWFtIG9mIHRob3VnaHQ6XG5cbioqQ2hlY2tpbmcgbWx4c3cgYW5kIG5ldGRldnNpbSBJbnRlZ3JhdGlvbioqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW4uIEZpcnN0IHRoaW5ncyBmaXJzdCwgSSBuZWVkIHRvIGludmVzdGlnYXRlIHNvbWV0aGluZyBzcGVjaWZpYy4gSSdtIGN1cmlvdXMgYWJvdXQgdGhlIGN1cnJlbnQgc3RhdGUgb2YgYWZmYWlycyByZWdhcmRpbmcgYG5ldGRldnNpbWAgYW5kIGl0cyBjb21wYXRpYmlsaXR5IHdpdGggbWx4c3cuIElzIHRoZXJlIGFueSBleGlzdGluZyBzdXBwb3J0PyBBcmUgdGhlcmUgYW55IGVmZm9ydHMgdW5kZXJ3YXkgdG8gaW50ZWdyYXRlIHRoZSB0d28/IFRoaXMgaXMgc29tZXRoaW5nIEkndmUgYmVlbiB0aGlua2luZyBhYm91dCBmb3IgYSB3aGlsZSwgYW5kIG5vdydzIHRoZSB0aW1lIHRvIHBpbiBkb3duIHdoZXJlIHRoaW5ncyBzdGFuZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgYG5ldGRldnNpbWAsIGFzIGEgdG9vbCBmb3IgbmV0d29yayBkZXZpY2Ugc2ltdWxhdGlvbiwgY2FuIGVmZmVjdGl2ZWx5IHdvcmsgd2l0aCB0aGUgbWx4c3cgc3dpdGNoIHBsYXRmb3JtLiBJZiB0aGVyZSdzIHN1cHBvcnQsIHdoYXQgYXJlIHRoZSBrZXkgZmVhdHVyZXMgaXQgZW5hYmxlcz8gSWYgbm90LCB3aGF0IHdvdWxkIGJlIHRoZSByb2FkYmxvY2tzIG9yIGxpbWl0YXRpb25zPyBUaGlzIGV4cGxvcmF0aW9uIGlzIGtleSBmb3IgdW5kZXJzdGFuZGluZyBob3cgd2UgY2FuIHRlc3QgYW5kIGRldmVsb3Agc29mdHdhcmUgZm9yIHRoZXNlIGRldmljZXMgaW4gYW4gZWZmaWNpZW50IG1hbm5lci5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAzMzMsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQwODozMjozMC44NDczMTQ4NzVaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzNTAyMzEzNSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWx4c3dcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvbmV0ZGV2c2ltL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMDg6MzI6MzAuOTgyMzU3MjlaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzk0NTYxMDE0MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHN1bW1hcnksIHByZXNlbnRlZCBhcyBhIHN0cmVhbSBvZiB0aG91Z2h0OlxuXG4qKkNoZWNraW5nIGZvciBQbGFjZWhvbGRlciBMb2dpYyBpbiBNTFhTVyoqXG5cbkFscmlnaHQsIGJlZm9yZSBkaXZpbmcgdG9vIGRlZXAsIEkgbmVlZCB0byB0YWtlIGEgcXVpY2sgc2FuaXR5IGNoZWNrLiBJJ3ZlIGdvdCB0byBlbnN1cmUgSSdtIG5vdCBvdmVybG9va2luZyBhbnl0aGluZyBvYnZpb3VzLCBvciBmYWxsaW5nIGludG8gYSB0cmFwIG9mIGFzc3VtaW5nIHNvbWV0aGluZydzIGFscmVhZHkgaGFuZGxlZC4gVGhlIG1vc3QgZWZmaWNpZW50IHdheSB0byBhcHByb2FjaCB0aGlzIHdvdWxkIGJlIHRvIGNoZWNrIGZvciBhbnkgdXNlIG9mIFwiZHVtbXlcIiBvciBcIm1vY2tcIiBjb2RlIHdpdGhpbiB0aGUgTUxYU1cgY29kZWJhc2UuIEkgd2FudCB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBwbGFjZWhvbGRlciBpbXBsZW1lbnRhdGlvbnMgb3IgdGVzdGluZyBzdHVicyB0aGF0IG1pZ2h0IGJlIHByZXNlbnQuIFRob3NlIGtleXdvcmRzIGFyZSB1c3VhbGx5IHN0cm9uZyBpbmRpY2F0b3JzIHRoYXQgSSBuZWVkIHRvIGludmVzdGlnYXRlIGZ1cnRoZXIuIEl0J3MgYSBxdWljayB3aW4gdG8gcnVsZSBvdXQgYW55IGV4aXN0aW5nLCBidWlsdC1pbiBzY2FmZm9sZGluZy4gU2F2ZXMgYSB0b24gb2YgaGVhZGFjaGUgbGF0ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwNTg2LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMDg6MzI6MzQuOTI3OTcwMjQyWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzgxNTYxMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkdW1teVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvY29yZV9hY2xfZmxleF9hY3Rpb25zLmM9NDA1PXN0cnVjdCBtbHhzd19hZmFfYmxvY2sgKm1seHN3X2FmYV9ibG9ja19jcmVhdGUoc3RydWN0IG1seHN3X2FmYSAqbWx4c3dfYWZhKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvY29yZV9hY2xfZmxleF9hY3Rpb25zLmMtNDE5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmVfYWNsX2ZsZXhfYWN0aW9ucy5jOjQyMDpcXHQvKiBJbiBjYXNlIHVzZXIgaW5zdHJ1Y3RzIHRvIGhhdmUgZHVtbXkgZmlyc3Qgc2V0LCB3ZSBsZWF2ZSBpdFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmVfYWNsX2ZsZXhfYWN0aW9ucy5jLTQyMS1cXHQgKiBlbXB0eSBoZXJlIGFuZCBjcmVhdGUgYW5vdGhlciwgcmVhbCwgc2V0IHJpZ2h0IGF3YXkuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvY29yZV9hY2xfZmxleF9hY3Rpb25zLmMtNDIyLVxcdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmVfYWNsX2ZsZXhfYWN0aW9ucy5jOjQyMzpcXHRpZiAobWx4c3dfYWZhLVxcdTAwM2VvcHMtXFx1MDAzZWR1bW15X2ZpcnN0X3NldCkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmVfYWNsX2ZsZXhfYWN0aW9ucy5jLTQyNC1cXHRcXHRibG9jay1cXHUwMDNlY3VyX3NldCA9IG1seHN3X2FmYV9zZXRfY3JlYXRlKGZhbHNlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmVfYWNsX2ZsZXhfYWN0aW9ucy5oPTE0PXN0cnVjdCBtbHhzd19hZmFfb3BzIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmVfYWNsX2ZsZXhfYWN0aW9ucy5oLTM4LVxcdFxcdFxcdCAgICBib29sIGluZ3Jlc3MpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmVfYWNsX2ZsZXhfYWN0aW9ucy5oOjM5OlxcdGJvb2wgZHVtbXlfZmlyc3Rfc2V0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmVfYWNsX2ZsZXhfYWN0aW9ucy5oLTQwLX07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuYz0xNDM9c3RhdGljIGludCBtbHhzd19wY2lfbmFwaV9kZXZzX2luaXQoc3RydWN0IG1seHN3X3BjaSAqbWx4c3dfcGNpKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvcGNpLmMtMTQ2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3BjaS5jOjE0NzpcXHRtbHhzd19wY2ktXFx1MDAzZW5hcGlfZGV2X3R4ID0gYWxsb2NfbmV0ZGV2X2R1bW15KDApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3BjaS5jLTE0OC1cXHRpZiAoIW1seHN3X3BjaS1cXHUwMDNlbmFwaV9kZXZfdHgpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuYy0xNTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvcGNpLmM6MTUzOlxcdG1seHN3X3BjaS1cXHUwMDNlbmFwaV9kZXZfcnggPSBhbGxvY19uZXRkZXZfZHVtbXkoMCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvcGNpLmMtMTU0LVxcdGlmICghbWx4c3dfcGNpLVxcdTAwM2VuYXBpX2Rldl9yeCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW0uaD0xMDc3PWludCBtbHhzd19zcF9hY2xfcnVsZV9nZXRfc3RhdHMoc3RydWN0IG1seHN3X3NwICptbHhzd19zcCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtLmgtMTA4Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bS5oOjEwODM6c3RydWN0IG1seHN3X3NwX2ZpZCAqbWx4c3dfc3BfYWNsX2R1bW15X2ZpZChzdHJ1Y3QgbWx4c3dfc3AgKm1seHN3X3NwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bS5oLTEwODQtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bS5oPTEzMDY9c3RydWN0IG1seHN3X3NwX2ZpZCAqbWx4c3dfc3BfZmlkX3JmaWRfZ2V0KHN0cnVjdCBtbHhzd19zcCAqbWx4c3dfc3AsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW0uaC0xMzA3LVxcdFxcdFxcdFxcdFxcdCAgIHUxNiByaWZfaW5kZXgpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtLmg6MTMwODpzdHJ1Y3QgbWx4c3dfc3BfZmlkICptbHhzd19zcF9maWRfZHVtbXlfZ2V0KHN0cnVjdCBtbHhzd19zcCAqbWx4c3dfc3ApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtLmgtMTMwOS12b2lkIG1seHN3X3NwX2ZpZF9wdXQoc3RydWN0IG1seHN3X3NwX2ZpZCAqZmlkKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2FjbC5jPTI0PXN0cnVjdCBtbHhzd19zcF9hY2wge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fYWNsLmMtMjYtXFx0c3RydWN0IG1seHN3X2FmayAqYWZrO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2FjbC5jOjI3OlxcdHN0cnVjdCBtbHhzd19zcF9maWQgKmR1bW15X2ZpZDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9hY2wuYy0yOC1cXHRzdHJ1Y3Qgcmhhc2h0YWJsZSBydWxlc2V0X2h0O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fYWNsLmM9ODc9c3RhdGljIGNvbnN0IHN0cnVjdCByaGFzaHRhYmxlX3BhcmFtcyBtbHhzd19zcF9hY2xfcnVsZV9odF9wYXJhbXMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9hY2wuYy05My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9hY2wuYzo5NDpzdHJ1Y3QgbWx4c3dfc3BfZmlkICptbHhzd19zcF9hY2xfZHVtbXlfZmlkKHN0cnVjdCBtbHhzd19zcCAqbWx4c3dfc3ApXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fYWNsLmMtOTUte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2FjbC5jOjk2OlxcdHJldHVybiBtbHhzd19zcC1cXHUwMDNlYWNsLVxcdTAwM2VkdW1teV9maWQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fYWNsLmMtOTctfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fYWNsLmM9MTA1Mj1pbnQgbWx4c3dfc3BfYWNsX2luaXQoc3RydWN0IG1seHN3X3NwICptbHhzd19zcClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2FjbC5jLTEwNzctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fYWNsLmM6MTA3ODpcXHRmaWQgPSBtbHhzd19zcF9maWRfZHVtbXlfZ2V0KG1seHN3X3NwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9hY2wuYy0xMDc5LVxcdGlmIChJU19FUlIoZmlkKSkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fYWNsLmMtMTA4Mi1cXHR9XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fYWNsLmM6MTA4MzpcXHRhY2wtXFx1MDAzZWR1bW15X2ZpZCA9IGZpZDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9hY2wuYy0xMDg0LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fYWNsLmM9MTExMD12b2lkIG1seHN3X3NwX2FjbF9maW5pKHN0cnVjdCBtbHhzd19zcCAqbWx4c3dfc3ApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9hY2wuYy0xMTE3LVxcdFdBUk5fT04oIWxpc3RfZW1wdHkoXFx1MDAyNmFjbC1cXHUwMDNlcnVsZXMpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9hY2wuYzoxMTE4OlxcdG1seHN3X3NwX2ZpZF9wdXQoYWNsLVxcdTAwM2VkdW1teV9maWQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2FjbC5jLTExMTktXFx0cmhhc2h0YWJsZV9kZXN0cm95KFxcdTAwMjZhY2wtXFx1MDAzZXJ1bGVzZXRfaHQpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fYWNsX2F0Y2FtLmM9NDQ9c3RydWN0IG1seHN3X3NwX2FjbF9hdGNhbV9yZWdpb25fZ2VuZXJpYyB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fYWNsX2F0Y2FtLmM6NDU6XFx0c3RydWN0IG1seHN3X3NwX2FjbF9hdGNhbV9sa2V5X2lkIGR1bW15X2xrZXlfaWQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fYWNsX2F0Y2FtLmMtNDYtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2FjbF9hdGNhbS5jPTczPW1seHN3X3NwX2FjbF9hdGNhbV9yZWdpb25fZ2VuZXJpY19pbml0KHN0cnVjdCBtbHhzd19zcF9hY2xfYXRjYW1fcmVnaW9uICphcmVnaW9uKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fYWNsX2F0Y2FtLmMtODAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fYWNsX2F0Y2FtLmM6ODE6XFx0cmVmY291bnRfc2V0KFxcdTAwMjZyZWdpb25fZ2VuZXJpYy1cXHUwMDNlZHVtbXlfbGtleV9pZC5yZWZjbnQsIDEpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2FjbF9hdGNhbS5jLTgyLVxcdGFyZWdpb24tXFx1MDAzZXByaXYgPSByZWdpb25fZ2VuZXJpYztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2FjbF9hdGNhbS5jPTk0PW1seHN3X3NwX2FjbF9hdGNhbV9nZW5lcmljX2xrZXlfaWRfZ2V0KHN0cnVjdCBtbHhzd19zcF9hY2xfYXRjYW1fcmVnaW9uICphcmVnaW9uLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fYWNsX2F0Y2FtLmMtOTktXFx0cmVnaW9uX2dlbmVyaWMgPSBhcmVnaW9uLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2FjbF9hdGNhbS5jOjEwMDpcXHRyZXR1cm4gXFx1MDAyNnJlZ2lvbl9nZW5lcmljLVxcdTAwM2VkdW1teV9sa2V5X2lkO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2FjbF9hdGNhbS5jLTEwMS19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9hY2xfZmxleF9hY3Rpb25zLmM9MjkwPWNvbnN0IHN0cnVjdCBtbHhzd19hZmFfb3BzIG1seHN3X3NwMl9hY3RfYWZhX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2FjbF9mbGV4X2FjdGlvbnMuYy0zMDMtXFx0LnNhbXBsZXJfZGVsXFx0XFx0PSBtbHhzd19zcDJfYWN0X3NhbXBsZXJfZGVsLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2FjbF9mbGV4X2FjdGlvbnMuYzozMDQ6XFx0LmR1bW15X2ZpcnN0X3NldFxcdD0gdHJ1ZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9hY2xfZmxleF9hY3Rpb25zLmMtMzA1LX07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9idWZmZXJzLmM9ODM3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbWx4c3dfc3Bfc2JfY20gbWx4c3dfc3AxX3NiX2Ntc19pbmdyZXNzW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9idWZmZXJzLmMtODQ1LVxcdE1MWFNXX1NQX1NCX0NNX0lORygwLCBNTFhTV19SRUdfU0JYWF9EWU5fTUFYX0JVRkZfTUlOKSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9idWZmZXJzLmM6ODQ2OlxcdE1MWFNXX1NQX1NCX0NNX0lORygwLCAwKSwgLyogZHVtbXksIHRoaXMgUEcgZG9lcyBub3QgZXhpc3QgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9idWZmZXJzLmMtODQ3LVxcdE1MWFNXX1NQX1NCX0NNKDEwMDAwLCA4LCBNTFhTV19TUF9TQl9QT09MX0lOR19DUFUpLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fYnVmZmVycy5jPTg1MD1zdGF0aWMgY29uc3Qgc3RydWN0IG1seHN3X3NwX3NiX2NtIG1seHN3X3NwMl9zYl9jbXNfaW5ncmVzc1tdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fYnVmZmVycy5jLTg1OC1cXHRNTFhTV19TUF9TQl9DTV9JTkcoMCwgTUxYU1dfUkVHX1NCWFhfRFlOX01BWF9CVUZGX01JTiksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fYnVmZmVycy5jOjg1OTpcXHRNTFhTV19TUF9TQl9DTV9JTkcoMCwgMCksIC8qIGR1bW15LCB0aGlzIFBHIGRvZXMgbm90IGV4aXN0ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fYnVmZmVycy5jLTg2MC1cXHRNTFhTV19TUF9TQl9DTSgxMDAwMCwgOCwgTUxYU1dfU1BfU0JfUE9PTF9JTkdfQ1BVKSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2ZpZC5jPTE2NDI9c3RhdGljIGNvbnN0IHN0cnVjdCBtbHhzd19zcF9maWRfb3BzIG1seHN3X3NwX2ZpZF9yZmlkX29wc19jZmYgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYy0xNjYxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2ZpZC5jOjE2NjI6c3RhdGljIGludCBtbHhzd19zcF9maWRfZHVtbXlfc2V0dXAoc3RydWN0IG1seHN3X3NwX2ZpZCAqZmlkLCBjb25zdCB2b2lkICphcmcpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmlkLmMtMTY2My17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYy0xNjY3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2ZpZC5jOjE2Njg6c3RhdGljIGludCBtbHhzd19zcF9maWRfZHVtbXlfY29uZmlndXJlKHN0cnVjdCBtbHhzd19zcF9maWQgKmZpZClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYy0xNjY5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2ZpZC5jLTE2NzItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmlkLmM6MTY3MzpzdGF0aWMgdm9pZCBtbHhzd19zcF9maWRfZHVtbXlfZGVjb25maWd1cmUoc3RydWN0IG1seHN3X3NwX2ZpZCAqZmlkKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2ZpZC5jLTE2NzQte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmlkLmMtMTY3Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYzoxNjc4OnN0YXRpYyBpbnQgbWx4c3dfc3BfZmlkX2R1bW15X2luZGV4X2FsbG9jKHN0cnVjdCBtbHhzd19zcF9maWQgKmZpZCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYy0xNjc5LVxcdFxcdFxcdFxcdFxcdCAgY29uc3Qgdm9pZCAqYXJnLCB1MTYgKnBfZmlkX2luZGV4KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmlkLmMtMTY4NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYzoxNjg2OnN0YXRpYyBib29sIG1seHN3X3NwX2ZpZF9kdW1teV9jb21wYXJlKGNvbnN0IHN0cnVjdCBtbHhzd19zcF9maWQgKmZpZCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYy0xNjg3LVxcdFxcdFxcdFxcdCAgICAgICBjb25zdCB2b2lkICphcmcpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYy0xNjkxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2ZpZC5jOjE2OTI6c3RhdGljIGludCBtbHhzd19zcF9maWRfZHVtbXlfdm5pX3NldChzdHJ1Y3QgbWx4c3dfc3BfZmlkICpmaWQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmlkLmMtMTY5My17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYy0xNjk2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2ZpZC5jOjE2OTc6c3RhdGljIHZvaWQgbWx4c3dfc3BfZmlkX2R1bW15X3ZuaV9jbGVhcihzdHJ1Y3QgbWx4c3dfc3BfZmlkICpmaWQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmlkLmMtMTY5OC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYy0xNzAxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2ZpZC5jOjE3MDI6c3RhdGljIGludCBtbHhzd19zcF9maWRfZHVtbXlfbnZlX2Zsb29kX2luZGV4X3NldChzdHJ1Y3QgbWx4c3dfc3BfZmlkICpmaWQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmlkLmMtMTcwMy17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYy0xNzA2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2ZpZC5jOjE3MDc6c3RhdGljIHZvaWQgbWx4c3dfc3BfZmlkX2R1bW15X252ZV9mbG9vZF9pbmRleF9jbGVhcihzdHJ1Y3QgbWx4c3dfc3BfZmlkICpmaWQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmlkLmMtMTcwOC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYy0xNzExLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2ZpZC5jOjE3MTI6c3RhdGljIGNvbnN0IHN0cnVjdCBtbHhzd19zcF9maWRfb3BzIG1seHN3X3NwX2ZpZF9kdW1teV9vcHMgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmlkLmM6MTcxMzpcXHQuc2V0dXBcXHRcXHRcXHQ9IG1seHN3X3NwX2ZpZF9kdW1teV9zZXR1cCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYzoxNzE0OlxcdC5jb25maWd1cmVcXHRcXHQ9IG1seHN3X3NwX2ZpZF9kdW1teV9jb25maWd1cmUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmlkLmM6MTcxNTpcXHQuZGVjb25maWd1cmVcXHRcXHQ9IG1seHN3X3NwX2ZpZF9kdW1teV9kZWNvbmZpZ3VyZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYzoxNzE2OlxcdC5pbmRleF9hbGxvY1xcdFxcdD0gbWx4c3dfc3BfZmlkX2R1bW15X2luZGV4X2FsbG9jLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2ZpZC5jOjE3MTc6XFx0LmNvbXBhcmVcXHRcXHQ9IG1seHN3X3NwX2ZpZF9kdW1teV9jb21wYXJlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2ZpZC5jOjE3MTg6XFx0LnZuaV9zZXQgICAgICAgICAgICAgICAgPSBtbHhzd19zcF9maWRfZHVtbXlfdm5pX3NldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYzoxNzE5OlxcdC52bmlfY2xlYXJcXHRcXHQ9IG1seHN3X3NwX2ZpZF9kdW1teV92bmlfY2xlYXIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmlkLmM6MTcyMDpcXHQubnZlX2Zsb29kX2luZGV4X3NldFxcdD0gbWx4c3dfc3BfZmlkX2R1bW15X252ZV9mbG9vZF9pbmRleF9zZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmlkLmM6MTcyMTpcXHQubnZlX2Zsb29kX2luZGV4X2NsZWFyXFx0PSBtbHhzd19zcF9maWRfZHVtbXlfbnZlX2Zsb29kX2luZGV4X2NsZWFyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2ZpZC5jLTE3MjItXFx0LmZpZF9wYWNrXFx0XFx0PSBtbHhzd19zcF9maWRfcGFjayxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2ZpZC5jPTE4MjY9c3RhdGljIGNvbnN0IHN0cnVjdCBtbHhzd19zcF9maWRfb3BzIG1seHN3X3NwX2ZpZF84MDIxcV9vcHNfY2ZmID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmlkLmMtMTg1NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYzoxODU1Oi8qIFRoZXJlIGlzIG9uZSBkdW1teSBGSUQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYy0xODU2LSNkZWZpbmUgTUxYU1dfU1BfRklEX0RVTU1ZXFx0XFx0KE1MWFNXX1NQX0ZJRF84MDIxRF9FTkQgKyAxKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmlkLmM9MTg3Nj1zdGF0aWMgY29uc3Qgc3RydWN0IG1seHN3X3NwX2ZpZF9mYW1pbHkgbWx4c3dfc3AxX2ZpZF84MDIxZF9mYW1pbHkgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYy0xODg3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2ZpZC5jOjE4ODg6c3RhdGljIGNvbnN0IHN0cnVjdCBtbHhzd19zcF9maWRfZmFtaWx5IG1seHN3X3NwMV9maWRfZHVtbXlfZmFtaWx5ID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2ZpZC5jLTE4ODktXFx0LnR5cGVcXHRcXHRcXHQ9IE1MWFNXX1NQX0ZJRF9UWVBFX0RVTU1ZLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmlkLmMtMTg5Mi1cXHQuZW5kX2luZGV4XFx0XFx0PSBNTFhTV19TUF9GSURfRFVNTVksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmlkLmM6MTg5MzpcXHQub3BzXFx0XFx0XFx0PSBcXHUwMDI2bWx4c3dfc3BfZmlkX2R1bW15X29wcyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYy0xODk0LVxcdC5zbXBlX2luZGV4X3ZhbGlkICAgICAgID0gZmFsc2UsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYz0xOTA4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbWx4c3dfc3BfZmlkX2ZhbWlseSAqbWx4c3dfc3AxX2ZpZF9mYW1pbHlfYXJyW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYy0xOTEwLVxcdFtNTFhTV19TUF9GSURfVFlQRV84MDIxRF1cXHQ9IFxcdTAwMjZtbHhzd19zcDFfZmlkXzgwMjFkX2ZhbWlseSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYzoxOTExOlxcdFtNTFhTV19TUF9GSURfVFlQRV9EVU1NWV1cXHQ9IFxcdTAwMjZtbHhzd19zcDFfZmlkX2R1bW15X2ZhbWlseSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYy0xOTEyLVxcdFtNTFhTV19TUF9GSURfVFlQRV9SRklEXVxcdD0gXFx1MDAyNm1seHN3X3NwX2ZpZF9yZmlkX2ZhbWlseV9jdGwsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYz0xOTI4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbWx4c3dfc3BfZmlkX2ZhbWlseSBtbHhzd19zcDJfZmlkXzgwMjFkX2ZhbWlseV9jdGwgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYy0xOTM5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2ZpZC5jOjE5NDA6c3RhdGljIGNvbnN0IHN0cnVjdCBtbHhzd19zcF9maWRfZmFtaWx5IG1seHN3X3NwMl9maWRfZHVtbXlfZmFtaWx5ID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2ZpZC5jLTE5NDEtXFx0LnR5cGVcXHRcXHRcXHQ9IE1MWFNXX1NQX0ZJRF9UWVBFX0RVTU1ZLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmlkLmMtMTk0NC1cXHQuZW5kX2luZGV4XFx0XFx0PSBNTFhTV19TUF9GSURfRFVNTVksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmlkLmM6MTk0NTpcXHQub3BzXFx0XFx0XFx0PSBcXHUwMDI2bWx4c3dfc3BfZmlkX2R1bW15X29wcyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYy0xOTQ2LVxcdC5zbXBlX2luZGV4X3ZhbGlkICAgICAgID0gZmFsc2UsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYz0xOTQ5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbWx4c3dfc3BfZmlkX2ZhbWlseSAqbWx4c3dfc3AyX2ZpZF9mYW1pbHlfYXJyX2N0bFtdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmlkLmMtMTk1MS1cXHRbTUxYU1dfU1BfRklEX1RZUEVfODAyMURdXFx0PSBcXHUwMDI2bWx4c3dfc3AyX2ZpZF84MDIxZF9mYW1pbHlfY3RsLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2ZpZC5jOjE5NTI6XFx0W01MWFNXX1NQX0ZJRF9UWVBFX0RVTU1ZXVxcdD0gXFx1MDAyNm1seHN3X3NwMl9maWRfZHVtbXlfZmFtaWx5LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2ZpZC5jLTE5NTMtXFx0W01MWFNXX1NQX0ZJRF9UWVBFX1JGSURdXFx0PSBcXHUwMDI2bWx4c3dfc3BfZmlkX3JmaWRfZmFtaWx5X2N0bCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2ZpZC5jPTE5ODk9c3RhdGljIGNvbnN0IHN0cnVjdCBtbHhzd19zcF9maWRfZmFtaWx5ICptbHhzd19zcDJfZmlkX2ZhbWlseV9hcnJfY2ZmW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9maWQuYy0xOTkxLVxcdFtNTFhTV19TUF9GSURfVFlQRV84MDIxRF1cXHQ9IFxcdTAwMjZtbHhzd19zcDJfZmlkXzgwMjFkX2ZhbWlseV9jZmYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmlkLmM6MTk5MjpcXHRbTUxYU1dfU1BfRklEX1RZUEVfRFVNTVldXFx0PSBcXHUwMDI2bWx4c3dfc3AyX2ZpZF9kdW1teV9mYW1pbHksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmlkLmMtMTk5My1cXHRbTUxYU1dfU1BfRklEX1RZUEVfUkZJRF1cXHQ9IFxcdTAwMjZtbHhzd19zcF9maWRfcmZpZF9mYW1pbHlfY2ZmLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmlkLmM9MjExMT1zdHJ1Y3QgbWx4c3dfc3BfZmlkICptbHhzd19zcF9maWRfcmZpZF9nZXQoc3RydWN0IG1seHN3X3NwICptbHhzd19zcCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2ZpZC5jLTIxMTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmlkLmM6MjExNzpzdHJ1Y3QgbWx4c3dfc3BfZmlkICptbHhzd19zcF9maWRfZHVtbXlfZ2V0KHN0cnVjdCBtbHhzd19zcCAqbWx4c3dfc3ApXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmlkLmMtMjExOC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9mbG93ZXIuYz01OD1zdGF0aWMgaW50IG1seHN3X3NwX2Zsb3dlcl9wYXJzZV9hY3Rpb25zKHN0cnVjdCBtbHhzd19zcCAqbWx4c3dfc3AsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV9mbG93ZXIuYy0xNzItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fZmxvd2VyLmM6MTczOlxcdFxcdFxcdGZpZCA9IG1seHN3X3NwX2FjbF9kdW1teV9maWQobWx4c3dfc3ApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX2Zsb3dlci5jLTE3NC1cXHRcXHRcXHRmaWRfaW5kZXggPSBtbHhzd19zcF9maWRfaW5kZXgoZmlkKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX3RyYXAuYz0xMjMyPXN0YXRpYyBpbnQgbWx4c3dfc3BfdHJhcF9jcHVfcG9saWNlcnNfc2V0KHN0cnVjdCBtbHhzd19zcCAqbWx4c3dfc3ApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV90cmFwLmMtMTIzOC1cXHQvKiBUaGUgcHVycG9zZSBvZiBcXFwidGhpblxcXCIgcG9saWNlciBpcyB0byBkcm9wIGFzIG1hbnkgcGFja2V0c1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX3RyYXAuYzoxMjM5OlxcdCAqIGFzIHBvc3NpYmxlLiBUaGUgZHVtbXkgZ3JvdXAgaXMgdXNpbmcgaXQuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fdHJhcC5jLTEyNDAtXFx0ICovXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV90cmFwLmMtMTI1MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bV90cmFwLmM6MTI1MjpzdGF0aWMgaW50IG1seHN3X3NwX3RyYXBfZHVtbXlfZ3JvdXBfaW5pdChzdHJ1Y3QgbWx4c3dfc3AgKm1seHN3X3NwKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX3RyYXAuYy0xMjUzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX3RyYXAuYz0xNTI4PWludCBtbHhzd19zcF9kZXZsaW5rX3RyYXBzX2luaXQoc3RydWN0IG1seHN3X3NwICptbHhzd19zcClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX3RyYXAuYy0xNTM1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX3RyYXAuYzoxNTM2OlxcdGVyciA9IG1seHN3X3NwX3RyYXBfZHVtbXlfZ3JvdXBfaW5pdChtbHhzd19zcCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fdHJhcC5jLTE1MzctXFx0aWYgKGVycilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMDg6MzI6MzQuOTg1NzkxODQ0WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjk0NzM0Mjg1OTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBtbHhzdyBEcml2ZXIgYW5kIFN5emthbGxlcidzIFBvdGVudGlhbCBmb3IgRnV6emluZyoqXG5cbk9rYXksIHNvIHRoZSBgbWx4c3dgIGRyaXZlciBpbml0aWFsaXplcyBkdW1teSBuZXQgZGV2aWNlcyBpbnRlcm5hbGx5IGZvciBOQVBJLiBUaGF0J3MganVzdCBzdGFuZGFyZCBkcml2ZXIgc3R1ZmY7IGl0IGRvZXNuJ3QgbWFrZSB0aGUgZHJpdmVyIGl0c2VsZiBhIGR1bW15LiBJdCBzdGlsbCBuZWVkcyBhIFBDSSBkZXZpY2UgdG8gcHJvYmUuIE5vdywgbGV0J3MgdGhpbmsgYWJvdXQgc3l6a2FsbGVyLiBIbW0sIHdhaXQsIGRvZXMgc3l6a2FsbGVyIGhhdmUgYSBgc3l6X3BjaV9kZXZpY2VgIHBzZXVkby1zeXNjYWxsPyBObywgYWNjb3JkaW5nIHRvIHRoZSBwcm9tcHQsIGl0IGNhbid0IGhhbmRsZSB0aG9zZSBzeXprYWxsZXIgc3BlY2lmaWMgY2FsbHMuIFRoaXMgaW1wbGllcyBpdCBtaWdodCBiZSBhYmxlIHRvIGZ1enogUENJIGRldmljZXMgaW4gc29tZSBjYXBhY2l0eS5cblxuQnV0IHRoZW4gdGhlcmUncyB0aGF0IGNhdmVhdCBhYm91dCBjb2RlIHBhdGhzIGJlaW5nIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdpdGggZW11bGF0ZWQgaGFyZHdhcmUuIElmIHN5emthbGxlciAqZG9lcyogaGF2ZSBhIFBDSSBmdXp6ZXIsIGl0J2QgcHJvYmFibHkgbmVlZCBzb21lIFFFTVUgZmVhdHVyZS4gSG93ZXZlciwgUUVNVSBkb2Vzbid0IGVtdWxhdGUgTWVsbGFub3ggc3dpdGNoZXMsIGFzIGZhciBhcyBJIGtub3cuIFNvLi4uIGRvZXMgc3l6a2FsbGVyIGFjdHVhbGx5ICpoYXZlKiBhIFBDSSBmdXp6ZXI/IEl0J3MgdGltZSB0byBpbnZlc3RpZ2F0ZS5cblxuSSBzaG91bGQgY2hlY2sgZm9yIHRoaW5ncyBsaWtlIGBDT05GSUdfUENJX1NUVUJgIG9yIGBDT05GSUdfVkZJT2AgdGhhdCBzeXprYWxsZXIgbWlnaHQgYmUgdXNpbmcuIExldCdzIHNlZS4uLiBzeXprYWxsZXIgdXNlcyBgc3l6X2t2bV9zZXR1cF9jcHVgIGZvciBLVk0sIGBzeXpfdXNiX2Nvbm5lY3RgIGZvciBVU0IsIGBzeXpfODAyMTFfaW5qZWN0X2ZyYW1lYCBmb3Igd2lmaS4gT2theSwgYnV0IGRvZXMgaXQgaGF2ZSBgc3l6X3BjaV9kZXZpY2VgPyBJJ20gYmV0dGluZyBuby4gSSBkb24ndCB0aGluayBpdCBoYXMgYSBnZW5lcmljIFBDSSBmdXp6ZXIgdGhhdCBjYW4gaW5zdGFudGlhdGUgYXJiaXRyYXJ5IFBDSSBkZXZpY2VzLlxuXG5IbW0sIGJ1dCB3YWl0LCBtYXliZSBpdCBkb2VzPyBJJ20gZ2V0dGluZyBhaGVhZCBvZiBteXNlbGYsIGxldCdzIHJlLWV2YWx1YXRlLiBMZXQgbWUgY2hhbmdlIHRyYWNrcy4gTGV0J3MgdHJ5IGZpZ3VyaW5nIG91dCBpZiB0aGVyZSdzIGEgd2F5IHRvIHRyaWdnZXIgYG1seHN3X3BjaV9wcm9iZWAgZnJvbSB1c2Vyc3BhY2UuIENhbiB3ZSB1c2UgYG5ldGRldnNpbWA/IE5vLCB0aGF0J3MgYSBzZXBhcmF0ZSBkcml2ZXIsIG5vdCBhIHdheSB0byBlbXVsYXRlLiBDYW4gd2UgdXNlIGBkZXZsaW5rYCB0byBpbnN0YW50aWF0ZSBtbHhzdz8gVGhhdCBzZWVtcyBsaWtlIHRoZSBtb3N0IGxpa2VseSBwYXRoLiBUaW1lIHRvIGV4YW1pbmUgdGhlIGBkZXZsaW5rYCBvcGVyYXRpb25zIHdpdGhpbiBgbWx4c3dgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzY4NiwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ4OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQwODozMjo0NC40NTkyMjM4MDNaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY5NjQ3NjI2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRldmxpbmtfb3BzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9jb3JlLmM9MTcyMT1tbHhzd19kZXZsaW5rX3RyYXBfcG9saWNlcl9jb3VudGVyX2dldChzdHJ1Y3QgZGV2bGluayAqZGV2bGluayxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmUuYy0xNzMzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmUuYzoxNzM0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgZGV2bGlua19vcHMgbWx4c3dfZGV2bGlua19vcHMgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvY29yZS5jLTE3MzUtXFx0LnJlbG9hZF9hY3Rpb25zXFx0XFx0PSBCSVQoREVWTElOS19SRUxPQURfQUNUSU9OX0RSSVZFUl9SRUlOSVQpIHxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmUuYz0yMDk1PV9fbWx4c3dfY29yZV9idXNfZGV2aWNlX3JlZ2lzdGVyKGNvbnN0IHN0cnVjdCBtbHhzd19idXNfaW5mbyAqbWx4c3dfYnVzX2luZm8sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9jb3JlLmMtMjExMy1cXHRcXHRhbGxvY19zaXplID0gc2l6ZW9mKCptbHhzd19jb3JlKSArIG1seHN3X2RyaXZlci1cXHUwMDNlcHJpdl9zaXplO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmUuYzoyMTE0OlxcdFxcdGRldmxpbmsgPSBkZXZsaW5rX2FsbG9jKFxcdTAwMjZtbHhzd19kZXZsaW5rX29wcywgYWxsb2Nfc2l6ZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9jb3JlLmMtMjExNS1cXHRcXHRcXHRcXHRcXHRtbHhzd19idXNfaW5mby1cXHUwMDNlZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmVfbGluZWNhcmRfZGV2LmM9MTExPW1seHN3X2xpbmVjYXJkX2Rldl9kZXZsaW5rX2ZsYXNoX3VwZGF0ZShzdHJ1Y3QgZGV2bGluayAqZGV2bGluayxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmVfbGluZWNhcmRfZGV2LmMtMTIxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmVfbGluZWNhcmRfZGV2LmM6MTIyOnN0YXRpYyBjb25zdCBzdHJ1Y3QgZGV2bGlua19vcHMgbWx4c3dfbGluZWNhcmRfZGV2X2Rldmxpbmtfb3BzID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmVfbGluZWNhcmRfZGV2LmMtMTIzLVxcdC5pbmZvX2dldFxcdFxcdFxcdD0gbWx4c3dfbGluZWNhcmRfZGV2X2RldmxpbmtfaW5mb19nZXQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9jb3JlX2xpbmVjYXJkX2Rldi5jPTEyNz1zdGF0aWMgaW50IG1seHN3X2xpbmVjYXJkX2JkZXZfcHJvYmUoc3RydWN0IGF1eGlsaWFyeV9kZXZpY2UgKmFkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9jb3JlX2xpbmVjYXJkX2Rldi5jLTEzNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9jb3JlX2xpbmVjYXJkX2Rldi5jOjEzNzpcXHRkZXZsaW5rID0gZGV2bGlua19hbGxvYyhcXHUwMDI2bWx4c3dfbGluZWNhcmRfZGV2X2Rldmxpbmtfb3BzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmVfbGluZWNhcmRfZGV2LmMtMTM4LVxcdFxcdFxcdFxcdHNpemVvZigqbGluZWNhcmRfZGV2KSwgXFx1MDAyNmFkZXYtXFx1MDAzZWRldik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDA4OjMyOjQ0LjUyODg3Njg4OVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MDQwNjY2MDk5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkRlYnVnZ2luZyBhIFBvdGVudGlhbCBtbHhzdyBEcml2ZXIgSXNzdWUqKlxuXG5Pa2F5LCBzbyBEZXZsaW5rIGlzbid0IGFib3V0IGNyZWF0aW5nIG5ldyBkZXZpY2VzLCBpdCdzIGFib3V0IG1hbmFnaW5nIGV4aXN0aW5nIG9uZXMuIEhtbSwgYnV0IHRoZW4uLi4gd2FzIHRoYXQgYSBzeXpib3QgcmVwb3J0IGFib3V0IGEgYnVnIGluIGBtbHhzd19wY2lfY3FfbmFwaV90ZWFyZG93bmA/IFRoYXQgc291bmRzIGltcG9ydGFudC4gTGV0IG1lIGxvb2sgZm9yIHN5emJvdCByZXBvcnRzIHJlbGF0ZWQgdG8gYG1seHN3YC4gQ3JhcCwgbm8gaW50ZXJuZXQuIE9rYXksIHBsYW4gQjogSSBjYW4gc2VhcmNoIHRoZSBrZXJuZWwgc291cmNlIGxvY2FsbHkgZm9yIHRoYXQgZnVuY3Rpb24sIG9yIG1heWJlIGBtbHhzd19wY2lfY3FfbmFwaV9kaXNhYmxlYC4gV2FpdCBhIHNlY29uZOKApiB0aGUgcGF0Y2ggSSdtIGxvb2tpbmcgZm9yIGlzIGFjdHVhbGx5IGFscmVhZHkgYXBwbGllZCBpbiBteSB3b3Jrc3BhY2UuXG5cbkFscmlnaHQsIGlmIHRoZSBwYXRjaCBpcyBhbHJlYWR5IGFwcGxpZWQsIGhvdyBlbHNlIGNvdWxkIHRoYXQgY29kZSBiZSBoaXQ/IElzIHRoZXJlIGFub3RoZXIgd2F5IHRvIGdldCB0byB0aGF0IGNvZGU/IFBlcmhhcHMgYG1seHN3YCBpcyBhIHBsYXRmb3JtIGRldmljZSBzb21ldGltZXM/IE5vLCBJJ20gcHJldHR5IHN1cmUgaXQncyBQQ0kgYW5kIEkyQywgZ2VuZXJhbGx5LlxuXG5XYWl0IGEgc2Vjb25kLCBzeXprYWxsZXIgaGFzIGEgUENJIGZ1enplciwgcmlnaHQ/IERvZXMgaXQgdXNlIHNvbWV0aGluZyBsaWtlIGBzeXpfcGNpX2RldmljZWA/IE5vLCB3YWl0LCBzeXprYWxsZXIgdXNlcyBgdmhjaWAgZm9yIFVTQi4gRm9yIFBDSSwgSSB0aG91Z2h0IG1heWJlIGl0IHVzZXMgYHZmaW9gPyBOb3BlLCBgdmZpb2AgbGV0cyB1c2Vyc3BhY2UgZHJpdmUgYSByZWFsIFBDSSBkZXZpY2UsIGl0IGRvZXNuJ3QgcmVhbGx5IGxldCB5b3UgKmluamVjdCogYSBQQ0kgZGV2aWNlIGludG8gdGhlIGtlcm5lbC4gXG5cbkFoLCB3YWl0ISBJIHJlY2FsbCByZWFkaW5nIHRoYXQgdGhlcmUgd2FzIGEgUENJIGZ1enplciBhZGRlZCB0byBzeXprYWxsZXIgcmVjZW50bHkuIERvZXMgaXQgdXNlIGEgY3VzdG9tIFFFTVUgZGV2aWNlLCBvciBkaWQgaXQgbGV2ZXJhZ2UgdGhlIGBwY2lfZW5kcG9pbnRgIGZyYW1ld29yaz8gT2theSwgdGltZSB0byBzZWUgaWYgdGhlcmUncyBhbnkgUENJIGluamVjdGlvbiBjb2RlIHdpdGhpbiB0aGUga2VybmVsIGl0c2VsZi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTkzOTUsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyODksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMDg6MzI6NTAuNTY5NTQ1Mjk4WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDA1ODAxNDcwLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwY2lfaW5qZWN0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMDg6MzI6NTIuNTc1MzU0NTk4WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY0MTA3OTQ4NjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIG15c2VsZjpcblxuKipJbnZlc3RpZ2F0aW5nIFBDSSBEcml2ZXIgSW1wbGVtZW50YXRpb25zKipcblxuT2theSwgc28gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgUENJIGRyaXZlciBsYW5kc2NhcGUsIHBhcnRpY3VsYXJseSBhbnkgZXhhbXBsZXMgdGhhdCBtaWdodCBiZSB1c2VmdWwgZm9yIHRlc3Rpbmcgb3Igc2VydmUgYXMgZHVtbXkgaW1wbGVtZW50YXRpb25zLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGhlYWQgc3RyYWlnaHQgdG8gdGhlIHNvdXJjZS4gTGV0J3Mgc2VlLi4uIHRoZSBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IHdvdWxkIGJlIHdpdGhpbiB0aGUga2VybmVsJ3Mgc291cmNlIGNvZGUuIEknbGwgbmVlZCB0byBuYXZpZ2F0ZSB0byB0aGUgYGRyaXZlcnMvcGNpL2AgZGlyZWN0b3J5LiBUaGF0IGRpcmVjdG9yeSBpcyB0eXBpY2FsbHkgdGhlIGNlbnRyYWwgcmVwb3NpdG9yeSBmb3IgUENJLXJlbGF0ZWQgZHJpdmVycy4gSXQgc2hvdWxkIGhvdXNlIHRoZSBjb3JlIFBDSSBkcml2ZXIgY29kZSwgYXMgd2VsbCBhcyBhbnkgc3ViLWRyaXZlcnMgdGhhdCBoYW5kbGUgc3BlY2lmaWMgUENJIGRldmljZXMuIE15IHNwZWNpZmljIGdvYWwgaXMgdG8gaWRlbnRpZnkgYW5kIGV4YW1pbmUgYW55IGRyaXZlcnMgaW4gdGhhdCBkaXJlY3Rvcnkgd2hpY2ggbWlnaHQgYmUgaW50ZW50aW9uYWxseSBzaW1wbGUsIGRlc2lnbmVkIGZvciB0ZXN0aW5nIHRoZSBQQ0kgY29yZSBmdW5jdGlvbmFsaXR5LCBvciBzZXJ2aW5nIGFzIGEgdGVtcGxhdGUgdGhhdCBjb3VsZCBhY3QgYXMgYSAnZHVtbXknIGRyaXZlci4gSXQncyBvZnRlbiB1c2VmdWwgdG8gaGF2ZSBhIHNldCBvZiBtaW5pbWFsIGV4YW1wbGVzIHRvIGxlYXJuIHRoZSBrZXkgQVBJIGNhbGxzLCBhbmQgZm9yIHJhcGlkIHByb3RvdHlwaW5nLiBIb3BlZnVsbHksIHRoZXJlIGFyZSBzb21lIHdlbGwtY29tbWVudGVkIHRlc3QgZHJpdmVycyB0aGF0IGNsZWFybHkgaWxsdXN0cmF0ZSBob3cgdG8gaW50ZXJhY3Qgd2l0aCB0aGUgUENJIHN1YnN5c3RlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjAwNzcsIk91dHB1dFRva2VucyI6MjYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQwODozMjo1OC45ODYxNTE5NzlaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyNjMxNTgwOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkdW1teVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3BjaS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvcGNpLWRyYTd4eC5jPTE5MD1zdGF0aWMgaW50IGRyYTd4eF9wY2llX2ludHhfbWFwKHN0cnVjdCBpcnFfZG9tYWluICpkb21haW4sIHVuc2lnbmVkIGludCBpcnEsXFxuLS1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2ktZHJhN3h4LmMtMTkyLXtcXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2ktZHJhN3h4LmM6MTkzOlxcdGlycV9zZXRfY2hpcF9hbmRfaGFuZGxlcihpcnEsIFxcdTAwMjZkdW1teV9pcnFfY2hpcCwgaGFuZGxlX3NpbXBsZV9pcnEpO1xcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL3BjaS1kcmE3eHguYy0xOTQtXFx0aXJxX3NldF9jaGlwX2RhdGEoaXJxLCBkb21haW4tXFx1MDAzZWhvc3RfZGF0YSk7XFxuLS1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2ktaW14Ni5jPTE0ODE9c3RhdGljIHZvaWQgaW14X3BjaWVfaG9zdF9wb3N0X2luaXQoc3RydWN0IGR3X3BjaWVfcnAgKnBwKVxcbi0tXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvcGNpLWlteDYuYy0xNTE1LSAqIHJlZ2lzdGVyIGlzIHJlc2VydmVkLCBzbyB0aGUgZ2VuZXJpYyBEV0MgaW1wbGVtZW50YXRpb24gb2Ygc2VuZGluZyB0aGVcXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2ktaW14Ni5jOjE1MTY6ICogUE1FX1R1cm5fT2ZmIG1lc3NhZ2UgdXNpbmcgYSBkdW1teSBNTUlPIHdyaXRlIGNhbm5vdCBiZSB1c2VkLlxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL3BjaS1pbXg2LmMtMTUxNy0gKi9cXG4tLVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL3BjaWUtZGVzaWdud2FyZS1ob3N0LmM9MTE4Nz1zdGF0aWMgaW50IGR3X3BjaWVfcG1lX3R1cm5fb2ZmKHN0cnVjdCBkd19wY2llICpwY2kpXFxuLS1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2llLWRlc2lnbndhcmUtaG9zdC5jLTEyMTQtXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvcGNpZS1kZXNpZ253YXJlLWhvc3QuYzoxMjE1OlxcdC8qIEEgZHVtbXkgd3JpdGUgaXMgY29udmVydGVkIHRvIGEgTXNnIFRMUCAqL1xcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL3BjaWUtZGVzaWdud2FyZS1ob3N0LmMtMTIxNi1cXHR3cml0ZWwoMCwgbWVtKTtcXG4tLVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvbW9iaXZlaWwvcGNpZS1tb2JpdmVpbC1ob3N0LmM9ODM9c3RhdGljIHZvaWQgbW9iaXZlaWxfcGNpZV9pc3Ioc3RydWN0IGlycV9kZXNjICpkZXNjKVxcbi0tXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9tb2JpdmVpbC9wY2llLW1vYml2ZWlsLWhvc3QuYy0xNDUtXFx0XFx0ICogZnJvbSBNU0kgaGFyZHdhcmUgRklGTy4gU28ga2VlcGluZyB0aGVzZSBmb2xsb3dpbmdcXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL21vYml2ZWlsL3BjaWUtbW9iaXZlaWwtaG9zdC5jOjE0NjpcXHRcXHQgKiB0d28gZHVtbXkgcmVhZHMuXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9tb2JpdmVpbC9wY2llLW1vYml2ZWlsLWhvc3QuYy0xNDctXFx0XFx0ICovXFxuLS1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaS1oeXBlcnYuYz0xNzUxPXN0YXRpYyB1MzIgaHZfY29tcG9zZV9tc2lfcmVxX3YxKFxcbi0tXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2ktaHlwZXJ2LmMtMTc2MS1cXHQvKlxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpLWh5cGVydi5jOjE3NjI6XFx0ICogQ3JlYXRlIE1TSSB3LyBkdW1teSB2Q1BVIHNldCwgb3ZlcndyaXR0ZW4gYnkgc3Vic2VxdWVudCByZXRhcmdldCBpblxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpLWh5cGVydi5jLTE3NjMtXFx0ICogaHZfaXJxX3VubWFzaygpLlxcbi0tXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2ktaHlwZXJ2LmMtMTc3MS0gKiBUaGUgdkNQVSBzZWxlY3RlZCBieSBodl9jb21wb3NlX211bHRpX21zaV9yZXFfZ2V0X2NwdSgpIGFuZFxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpLWh5cGVydi5jOjE3NzI6ICogaHZfY29tcG9zZV9tc2lfcmVxX2dldF9jcHUoKSBpcyBhIFxcXCJkdW1teVxcXCIgdkNQVSBiZWNhdXNlIHRoZSBmaW5hbCB2Q1BVIHRvIGJlXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2ktaHlwZXJ2LmMtMTc3My0gKiBpbnRlcnJ1cHRlZCBpcyBzcGVjaWZpZWQgbGF0ZXIgaW4gaHZfaXJxX3VubWFzaygpIGFuZCBjb21tdW5pY2F0ZWQgdG8gSHlwZXItVlxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpLWh5cGVydi5jOjE3NzQ6ICogdmlhIHRoZSBIVkNBTExfUkVUQVJHRVRfSU5URVJSVVBUIGh5cGVyY2FsbC4gQnV0IHRoZSBjaG9pY2Ugb2YgZHVtbXkgdkNQVSBpc1xcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpLWh5cGVydi5jLTE3NzUtICogbm90IGlycmVsZXZhbnQgYmVjYXVzZSBIeXBlci1WIGNob29zZXMgdGhlIHBoeXNpY2FsIENQVSB0byBoYW5kbGUgdGhlXFxuLS1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaS1oeXBlcnYuYy0xNzc4LSAqIGJ1dCBhc3NpZ25pbmcgdG9vIG1hbnkgdlBDSSBkZXZpY2UgaW50ZXJydXB0cyB0byB0aGUgc2FtZSBwQ1BVIGNhbiBjYXVzZSBhXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2ktaHlwZXJ2LmM6MTc3OTogKiBwZXJmb3JtYW5jZSBib3R0bGVuZWNrLiBTbyB3ZSBzcHJlYWQgb3V0IHRoZSBkdW1teSB2Q1BVcyB0byBpbmZsdWVuY2UgSHlwZXItVlxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpLWh5cGVydi5jLTE3ODAtICogdG8gc3ByZWFkIG91dCB0aGUgcENQVXMgdGhhdCBpdCBzZWxlY3RzLlxcbi0tXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2ktaHlwZXJ2LmMtMTc4Mi0gKiBGb3IgdGhlIHNpbmdsZS1NU0kgYW5kIE1TSS1YIGNhc2VzLCBpdCdzIE9LIGZvciBodl9jb21wb3NlX21zaV9yZXFfZ2V0X2NwdSgpXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2ktaHlwZXJ2LmM6MTc4MzogKiB0byBhbHdheXMgcmV0dXJuIHRoZSBzYW1lIGR1bW15IHZDUFUsIGJlY2F1c2UgYSBzZWNvbmQgY2FsbCB0b1xcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpLWh5cGVydi5jLTE3ODQtICogaHZfY29tcG9zZV9tc2lfbXNnKCkgY29udGFpbnMgdGhlIFxcXCJyZWFsXFxcIiB2Q1BVLCBjYXVzaW5nIEh5cGVyLVYgdG8gY2hvb3NlIGFcXG4tLVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpLWh5cGVydi5jLTE3ODYtICogaHZfY29tcG9zZV9tc2lfbXNnKCkgZXhpdHMgd2l0aG91dCBzZW5kaW5nIGEgbWVzc2FnZSB0byB0aGUgdlBDSSBWU1AsIHNvIHRoZVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpLWh5cGVydi5jOjE3ODc6ICogb3JpZ2luYWwgZHVtbXkgdkNQVSBpcyB1c2VkLiBUaGlzIGR1bW15IHZDUFUgbXVzdCBiZSByb3VuZC1yb2JpbidlZCBzbyB0aGF0XFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2ktaHlwZXJ2LmMtMTc4OC0gKiB0aGUgcENQVXMgYXJlIHNwcmVhZCBvdXQuIEFsbCBpbnRlcnJ1cHRzIGZvciBhIG11bHRpLU1TSSBkZXZpY2UgZW5kIHVwIHVzaW5nXFxuLS1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaS1oeXBlcnYuYy0xNzk0LSAqIGVuaGFuY2VtZW50IGlzIHBsYW5uZWQgZm9yIGEgZnV0dXJlIHZlcnNpb24uIFdpdGggdGhhdCBlbmhhbmNlbWVudCwgdGhlXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2ktaHlwZXJ2LmM6MTc5NTogKiBkdW1teSB2Q1BVIHNlbGVjdGlvbiB3b24ndCBtYXR0ZXIsIGFuZCBpbnRlcnJ1cHRzIGZvciB0aGUgc2FtZSBtdWx0aS1NU0lcXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaS1oeXBlcnYuYy0xNzk2LSAqIGRldmljZSB3aWxsIGJlIHNwcmVhZCBhY3Jvc3MgbXVsdGlwbGUgcENQVXMuXFxuLS1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaS1oeXBlcnYuYy0xNzk5LS8qXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2ktaHlwZXJ2LmM6MTgwMDogKiBDcmVhdGUgTVNJIHcvIGR1bW15IHZDUFUgc2V0IHRhcmdldGluZyBqdXN0IG9uZSB2Q1BVLCBvdmVyd3JpdHRlblxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpLWh5cGVydi5jLTE4MDEtICogYnkgc3Vic2VxdWVudCByZXRhcmdldCBpbiBodl9pcnFfdW5tYXNrKCkuXFxuLS1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaS1oeXBlcnYuYz0xODAzPXN0YXRpYyBpbnQgaHZfY29tcG9zZV9tc2lfcmVxX2dldF9jcHUoY29uc3Qgc3RydWN0IGNwdW1hc2sgKmFmZmluaXR5KVxcbi0tXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2ktaHlwZXJ2LmMtMTgwOC0vKlxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpLWh5cGVydi5jOjE4MDk6ICogTWFrZSBzdXJlIHRoZSBkdW1teSB2Q1BVIHZhbHVlcyBmb3IgbXVsdGktTVNJIGRvbid0IGFsbCBwb2ludCB0byB2Q1BVMC5cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaS1oeXBlcnYuYy0xODEwLSAqL1xcbi0tXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2ktaHlwZXJ2LmM9MTg3NT1zdGF0aWMgdm9pZCBodl9jb21wb3NlX21zaV9tc2coc3RydWN0IGlycV9kYXRhICpkYXRhLCBzdHJ1Y3QgbXNpX21zZyAqbXNnKVxcbi0tXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2ktaHlwZXJ2LmMtMTk1Ni1cXHRcXHQvKlxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpLWh5cGVydi5jOjE5NTc6XFx0XFx0ICogVGhlIHZlY3RvciB3ZSBzZWxlY3QgaGVyZSBpcyBhIGR1bW15IHZhbHVlLiAgVGhlIGNvcnJlY3RcXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaS1oeXBlcnYuYy0xOTU4LVxcdFxcdCAqIHZhbHVlIGdldHMgc2VudCB0byB0aGUgaHlwZXJ2aXNvciBpbiB1bm1hc2soKS4gIFRoaXMgbmVlZHNcXG4tLVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpZS1hbHRlcmEuYz0zNjY9c3RhdGljIHZvaWQgczEwX3RscF93cml0ZV9wYWNrZXQoc3RydWN0IGFsdGVyYV9wY2llICpwY2llLCB1MzIgKmhlYWRlcnMsXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2llLWFsdGVyYS5jOjM2NzpcXHRcXHRcXHRcXHQgdTMyIGRhdGEsIGJvb2wgZHVtbXkpXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2llLWFsdGVyYS5jLTM2OC17XFxuLS1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaWUtYWx0ZXJhLmM9Nzg2PXN0YXRpYyBpbnQgYWx0ZXJhX3BjaWVfaW50eF9tYXAoc3RydWN0IGlycV9kb21haW4gKmRvbWFpbiwgdW5zaWduZWQgaW50IGlycSxcXG4tLVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpZS1hbHRlcmEuYy03ODgte1xcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpZS1hbHRlcmEuYzo3ODk6XFx0aXJxX3NldF9jaGlwX2FuZF9oYW5kbGVyKGlycSwgXFx1MDAyNmR1bW15X2lycV9jaGlwLCBoYW5kbGVfc2ltcGxlX2lycSk7XFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2llLWFsdGVyYS5jLTc5MC1cXHRpcnFfc2V0X2NoaXBfZGF0YShpcnEsIGRvbWFpbi1cXHUwMDNlaG9zdF9kYXRhKTtcXG4tLVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpZS1tZWRpYXRlay5jPTU1ND1zdGF0aWMgaW50IG10a19wY2llX2ludHhfbWFwKHN0cnVjdCBpcnFfZG9tYWluICpkb21haW4sIHVuc2lnbmVkIGludCBpcnEsXFxuLS1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaWUtbWVkaWF0ZWsuYy01NTYte1xcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpZS1tZWRpYXRlay5jOjU1NzpcXHRpcnFfc2V0X2NoaXBfYW5kX2hhbmRsZXIoaXJxLCBcXHUwMDI2ZHVtbXlfaXJxX2NoaXAsIGhhbmRsZV9zaW1wbGVfaXJxKTtcXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaWUtbWVkaWF0ZWsuYy01NTgtXFx0aXJxX3NldF9jaGlwX2RhdGEoaXJxLCBkb21haW4tXFx1MDAzZWhvc3RfZGF0YSk7XFxuLS1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaWUtcm9ja2NoaXAtZXAuYz02NTI9c3RhdGljIGludCByb2NrY2hpcF9wY2llX2VwX3NldHVwX2lycShzdHJ1Y3QgcGNpX2VwYyAqZXBjKVxcbi0tXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2llLXJvY2tjaGlwLWVwLmMtNjc0LVxcdCAqIGlzIGhpZ2ggYW5kIHdpbGwgdHJpZ2dlciB0aGUgcGVyc3RfaXJxIGhhbmRsZXIuIFNvIHRyZWF0IHRoaXMgaW5pdGlhbFxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpZS1yb2NrY2hpcC1lcC5jOjY3NTpcXHQgKiBJUlEgYXMgYSBkdW1teSBvbmUgYnkgZmFraW5nIHRoZSBob3N0IGFzc2VydGluZyBQRVJTVCMuXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2llLXJvY2tjaGlwLWVwLmMtNjc2LVxcdCAqL1xcbi0tXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2llLXJvY2tjaGlwLWhvc3QuYz02Njk9c3RhdGljIGludCByb2NrY2hpcF9wY2llX2ludHhfbWFwKHN0cnVjdCBpcnFfZG9tYWluICpkb21haW4sIHVuc2lnbmVkIGludCBpcnEsXFxuLS1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaWUtcm9ja2NoaXAtaG9zdC5jLTY3MS17XFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2llLXJvY2tjaGlwLWhvc3QuYzo2NzI6XFx0aXJxX3NldF9jaGlwX2FuZF9oYW5kbGVyKGlycSwgXFx1MDAyNmR1bW15X2lycV9jaGlwLCBoYW5kbGVfc2ltcGxlX2lycSk7XFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2llLXJvY2tjaGlwLWhvc3QuYy02NzMtXFx0aXJxX3NldF9jaGlwX2RhdGEoaXJxLCBkb21haW4tXFx1MDAzZWhvc3RfZGF0YSk7XFxuLS1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaWUteGlsaW54LmM9MzIxPXN0YXRpYyBpbnQgeGlsaW54X3BjaWVfaW50eF9tYXAoc3RydWN0IGlycV9kb21haW4gKmRvbWFpbiwgdW5zaWduZWQgaW50IGlycSxcXG4tLVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpZS14aWxpbnguYy0zMjMte1xcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpZS14aWxpbnguYzozMjQ6XFx0aXJxX3NldF9jaGlwX2FuZF9oYW5kbGVyKGlycSwgXFx1MDAyNmR1bW15X2lycV9jaGlwLCBoYW5kbGVfc2ltcGxlX2lycSk7XFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2llLXhpbGlueC5jLTMyNS1cXHRpcnFfc2V0X2NoaXBfZGF0YShpcnEsIGRvbWFpbi1cXHUwMDNlaG9zdF9kYXRhKTtcXG4tLVxcbmRyaXZlcnMvcGNpL3BjaS1kcml2ZXIuYz0xMzY9c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICpwY2lfbWF0Y2hfZGV2aWNlKHN0cnVjdCBwY2lfZHJpdmVyICpkcnYsXFxuLS1cXG5kcml2ZXJzL3BjaS9wY2ktZHJpdmVyLmMtMTc1LVxcbmRyaXZlcnMvcGNpL3BjaS1kcml2ZXIuYzoxNzY6XFx0LyogZHJpdmVyX292ZXJyaWRlIHdpbGwgYWx3YXlzIG1hdGNoLCBzZW5kIGEgZHVtbXkgaWQgKi9cXG5kcml2ZXJzL3BjaS9wY2ktZHJpdmVyLmMtMTc3LVxcdGlmIChyZXQgXFx1MDAzZSAwKVxcbi0tXFxuZHJpdmVycy9wY2kvcHdyY3RybC9wY2ktcHdyY3RybC10Yzk1NjMuYz01MzM9c3RhdGljIGludCB0Yzk1NjNfcHdyY3RybF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9wY2kvcHdyY3RybC9wY2ktcHdyY3RybC10Yzk1NjMuYy01NTUtXFxuZHJpdmVycy9wY2kvcHdyY3RybC9wY2ktcHdyY3RybC10Yzk1NjMuYzo1NTY6XFx0dGM5NTYzLVxcdTAwM2VjbGllbnQgPSBpMmNfbmV3X2R1bW15X2RldmljZSh0Yzk1NjMtXFx1MDAzZWFkYXB0ZXIsIGFkZHIpO1xcbmRyaXZlcnMvcGNpL3B3cmN0cmwvcGNpLXB3cmN0cmwtdGM5NTYzLmMtNTU3LVxcdGlmIChJU19FUlIodGM5NTYzLVxcdTAwM2VjbGllbnQpKSB7XFxuLS1cXG5kcml2ZXJzL3BjaS9zZXR1cC1idXMuYz01Nzc9c3RhdGljIHZvaWQgX19hc3NpZ25fcmVzb3VyY2VzX3NvcnRlZChzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkLFxcbi0tXFxuZHJpdmVycy9wY2kvc2V0dXAtYnVzLmMtNjA1LVxcdExJU1RfSEVBRChsb2NhbF9mYWlsX2hlYWQpO1xcbmRyaXZlcnMvcGNpL3NldHVwLWJ1cy5jOjYwNjpcXHRMSVNUX0hFQUQoZHVtbXlfaGVhZCk7XFxuZHJpdmVycy9wY2kvc2V0dXAtYnVzLmMtNjA3LVxcdHN0cnVjdCBwY2lfZGV2X3Jlc291cmNlICpzYXZlX3JlcztcXG4tLVxcbmRyaXZlcnMvcGNpL3NldHVwLWJ1cy5jLTYxNC1cXHRpZiAoIXJlYWxsb2NfaGVhZClcXG5kcml2ZXJzL3BjaS9zZXR1cC1idXMuYzo2MTU6XFx0XFx0cmVhbGxvY19oZWFkID0gXFx1MDAyNmR1bW15X2hlYWQ7XFxuZHJpdmVycy9wY2kvc2V0dXAtYnVzLmMtNjE2LVxcbi0tXFxuZHJpdmVycy9wY2kvdmdhYXJiLmM9MTY3PWludCB2Z2FfcmVtb3ZlX3ZnYWNvbihzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG4tLVxcbmRyaXZlcnMvcGNpL3ZnYWFyYi5jLTE3Ni1cXHRpZiAoY29uX2lzX2JvdW5kKFxcdTAwMjZ2Z2FfY29uKSlcXG5kcml2ZXJzL3BjaS92Z2FhcmIuYzoxNzc6XFx0XFx0cmV0ID0gZG9fdGFrZV9vdmVyX2NvbnNvbGUoXFx1MDAyNmR1bW15X2NvbiwgMCxcXG5kcml2ZXJzL3BjaS92Z2FhcmIuYy0xNzgtXFx0XFx0XFx0XFx0XFx0ICAgTUFYX05SX0NPTlNPTEVTIC0gMSwgMSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDA4OjMyOjU5LjExMjQ3NDIxN1oiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NjE1OTM2MDgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTWVsbGFub3ggU3dpdGNoIEJ1ZyBSZXBvcnQqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGBtbHhzd19wY2lfY3FfbmFwaV90ZWFyZG93bmAgYnVnIHJlcG9ydCwgYW5kIHNvbWV0aGluZyBkb2Vzbid0IHF1aXRlIGFkZCB1cC4gSSBrbm93IHN5emthbGxlciBkb2Vzbid0IGhhdmUgYSBnZW5lcmljIFBDSSBpbmplY3Rpb24gbWVjaGFuaXNtIGluIHRoZSBrZXJuZWw7IHRoYXQncyBqdXN0IG5vdCBob3cgaXQgd29ya3MuIEFuZCwgc3l6a2FsbGVyIHVzdWFsbHkgcnVucyBvbiBHQ0UuIEdDRSBkb2VzIGhhdmUgdmlydHVhbCBQQ0kgZGV2aWNlcywgdGhpbmdzIGxpa2UgdmlydGlvLW5ldCBhbmQgdmlydGlvLWJsaywgYnV0ICpkZWZpbml0ZWx5KiBub3QgTWVsbGFub3ggU3dpdGNoIEFTSUNzLiBTbywgaG93IHRoZSBoZWNrIGRpZCBzeXpib3QgZmluZCBhIGJ1ZyBzcGVjaWZpY2FsbHkgaW4gdGhhdCBkcml2ZXI/IFRoaXMgc21lbGxzIGZpc2h5LlxuXG5IYW5nIG9uLi4uIFwic3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3LlwiIEFoLCBzbyB0aGUgc3l6LWNsdXN0ZXIgaXMgdGVzdGluZyBhIHBhdGNoIHJlbGF0ZWQgdG8gdGhpcy4gT2theSwgc28gcGVyaGFwcyBhbm90aGVyIGZ1enplciBmb3VuZCBpdCwgYW5kIGl0J3MgYmVpbmcgdGVzdGVkIHdpdGggc3l6a2FsbGVyICpub3cqLCBvciBtYXliZSBpdCdzIGEgbWFudWFsIHBhdGNoIGJlaW5nIGV4cGxvcmVkP1xuXG5JZiB0aGlzIGlzIHRydWx5IHVucmVhY2hhYmxlIGluIEdDRSBvciBzdGFuZGFyZCBRRU1VIGNvbmZpZ3VyYXRpb25zLCB0aGVuIEkgbmVlZCB0byBtYXJrIHRoaXMgYXMgYFdvcnRoRnV6emluZz1mYWxzZWAuIEl0J3MgYSB3YXN0ZSBvZiByZXNvdXJjZXMgdG8gZnV6eiBzb21ldGhpbmcgdGhhdCBpcyBjb21wbGV0ZWx5IGluYWNjZXNzaWJsZS5cblxuT2theSwgbGV0J3Mgc3RlcCBiYWNrIGFuZCBjb25zaWRlcjogaXMgdGhlcmUgKmFueSogY2hhbmNlIHRoZSBgbWx4c3dgIGRyaXZlciBpcyByZWFjaGFibGUgd2l0aGluIGEgc3RhbmRhcmQgc2V0dXA/IEkgYWxyZWFkeSBjaGVja2VkIGBuZXRkZXZzaW1gIGFuZCBjYW1lIHVwIGVtcHR5LiBNYXliZSBzb21ldGhpbmcgc2ltaWxhcj8gTm8gZGljZS4gUmlnaHQsIHdoYXQgYWJvdXQgYGRldmxpbmtgPyBDb3VsZCBgbWx4c3dgIGJlIGluc3RhbnRpYXRlZCB2aWEgYGRldmxpbmtgIHNvbWVob3c/IENoZWNraW5nIHRoZSBgZGV2bGlua19vcHNgLCBhbmQgaXQgZG9lc24ndCBhcHBlYXIgdGhlcmUncyBhIHN0cmFpZ2h0Zm9yd2FyZCB3YXkgdG8gaW5zdGFudGlhdGUgYSBkZXZpY2UuXG5cbldhaXQsIGxvb2tpbmcgZGVlcGVyIGludG8gdGhlIGRyaXZlcidzIGNvZGUsIGBtbHhzd19jb3JlX2J1c19kZXZpY2VfcmVnaXN0ZXJgIGlzIGNhbGxlZCBieSBgbWx4c3dfcGNpX3Byb2JlYCBhbmQgYG1seHN3X2kyY19wcm9iZWAuIElzIHRoZXJlICphbm90aGVyKiBjYWxsZXIgb2YgdGhhdCBmdW5jdGlvbiB0aGF0IGNvdWxkIHRyaWdnZXIgdGhlIGlzc3VlPyBJIG5lZWQgdG8gY2hlY2suIFRoaXMgaXMgdGhlIGtleS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjM3NDAsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMDg6MzM6MDUuNzI4NDEzNjA4WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTIxMzIwMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtbHhzd19jb3JlX2J1c19kZXZpY2VfcmVnaXN0ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmUuYz0xNTkzPW1seHN3X2RldmxpbmtfY29yZV9idXNfZGV2aWNlX3JlbG9hZF91cChzdHJ1Y3QgZGV2bGluayAqZGV2bGluaywgZW51bSBkZXZsaW5rX3JlbG9hZF9hY3Rpb24gYWN0aW9uLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvY29yZS5jLTE2MDEtXFx0XFx0XFx0ICAgICBCSVQoREVWTElOS19SRUxPQURfQUNUSU9OX0ZXX0FDVElWQVRFKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9jb3JlLmM6MTYwMjpcXHRlcnIgPSBtbHhzd19jb3JlX2J1c19kZXZpY2VfcmVnaXN0ZXIobWx4c3dfY29yZS1cXHUwMDNlYnVzX2luZm8sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvY29yZS5jLTE2MDMtXFx0XFx0XFx0XFx0XFx0ICAgICBtbHhzd19jb3JlLVxcdTAwM2VidXMsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9jb3JlLmM9MjA5ND1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvY29yZS5jOjIwOTU6X19tbHhzd19jb3JlX2J1c19kZXZpY2VfcmVnaXN0ZXIoY29uc3Qgc3RydWN0IG1seHN3X2J1c19pbmZvICptbHhzd19idXNfaW5mbyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9jb3JlLmMtMjA5Ni1cXHRcXHRcXHRcXHQgY29uc3Qgc3RydWN0IG1seHN3X2J1cyAqbWx4c3dfYnVzLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvY29yZS5jLTIyNDUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvY29yZS5jOjIyNDY6aW50IG1seHN3X2NvcmVfYnVzX2RldmljZV9yZWdpc3Rlcihjb25zdCBzdHJ1Y3QgbWx4c3dfYnVzX2luZm8gKm1seHN3X2J1c19pbmZvLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmUuYy0yMjQ3LVxcdFxcdFxcdFxcdCAgIGNvbnN0IHN0cnVjdCBtbHhzd19idXMgKm1seHN3X2J1cyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmUuYy0yMjU1LWFnYWluOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmUuYzoyMjU2OlxcdGVyciA9IF9fbWx4c3dfY29yZV9idXNfZGV2aWNlX3JlZ2lzdGVyKG1seHN3X2J1c19pbmZvLCBtbHhzd19idXMsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvY29yZS5jLTIyNTctXFx0XFx0XFx0XFx0XFx0ICAgICAgIGJ1c19wcml2LCByZWxvYWQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9jb3JlLmMtMjI1OS1cXHQvKiAtRUFHQUlOIGlzIHJldHVybmVkIGluIGNhc2UgdGhlIEZXIHdhcyB1cGRhdGVkLiBGVyBuZWVkc1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmUuYzoyMjYwOlxcdCAqIGEgcmVzZXQsIHNvIGxldHMgdHJ5IHRvIGNhbGwgX19tbHhzd19jb3JlX2J1c19kZXZpY2VfcmVnaXN0ZXIoKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmUuYy0yMjYxLVxcdCAqIGFnYWluLlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvY29yZS5jLTIyNjktfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmUuYzoyMjcwOkVYUE9SVF9TWU1CT0wobWx4c3dfY29yZV9idXNfZGV2aWNlX3JlZ2lzdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9jb3JlLmMtMjI3MS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmUuaD01OD1pbnQgbWx4c3dfY29yZV9md19mbGFzaChzdHJ1Y3QgbWx4c3dfY29yZSAqbWx4c3dfY29yZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmUuaC02Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9jb3JlLmg6NjM6aW50IG1seHN3X2NvcmVfYnVzX2RldmljZV9yZWdpc3Rlcihjb25zdCBzdHJ1Y3QgbWx4c3dfYnVzX2luZm8gKm1seHN3X2J1c19pbmZvLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2NvcmUuaC02NC1cXHRcXHRcXHRcXHQgICBjb25zdCBzdHJ1Y3QgbWx4c3dfYnVzICptbHhzd19idXMsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9pMmMuYz02MzM9c3RhdGljIGludCBtbHhzd19pMmNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2kyYy5jLTcyMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9pMmMuYzo3MjI6XFx0ZXJyID0gbWx4c3dfY29yZV9idXNfZGV2aWNlX3JlZ2lzdGVyKFxcdTAwMjZtbHhzd19pMmMtXFx1MDAzZWJ1c19pbmZvLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2kyYy5jLTcyMy1cXHRcXHRcXHRcXHRcXHQgICAgIFxcdTAwMjZtbHhzd19pMmNfYnVzLCBtbHhzd19pMmMsIGZhbHNlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvcGNpLmM9MjQzMD1zdGF0aWMgaW50IG1seHN3X3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvcGNpLmMtMjQ4OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuYzoyNDg5OlxcdGVyciA9IG1seHN3X2NvcmVfYnVzX2RldmljZV9yZWdpc3RlcihcXHUwMDI2bWx4c3dfcGNpLVxcdTAwM2VidXNfaW5mbyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuYy0yNDkwLVxcdFxcdFxcdFxcdFxcdCAgICAgXFx1MDAyNm1seHN3X3BjaV9idXMsIG1seHN3X3BjaSwgZmFsc2UsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuYz0yNTMzPXN0YXRpYyB2b2lkIG1seHN3X3BjaV9yZXNldF9kb25lKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvcGNpLmMtMjUzNy1cXHRtbHhzd19wY2ktXFx1MDAzZXNraXBfcmVzZXQgPSB0cnVlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3BjaS5jOjI1Mzg6XFx0bWx4c3dfY29yZV9idXNfZGV2aWNlX3JlZ2lzdGVyKFxcdTAwMjZtbHhzd19wY2ktXFx1MDAzZWJ1c19pbmZvLCBcXHUwMDI2bWx4c3dfcGNpX2J1cyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuYy0yNTM5LVxcdFxcdFxcdFxcdCAgICAgICBtbHhzd19wY2ksIGZhbHNlLCBOVUxMLCBOVUxMKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMDg6MzM6MDUuNzg3NjMyNzk5WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU5MDM0MzkzMDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW52ZXN0aWdhdGlvbiBpbnRvIERyaXZlciBJbnN0YW50aWF0aW9uKipcblxuT2theSwgc28gdGhpcyBkcml2ZXIncyBwcm9iZSBmdW5jdGlvbiBzZWVtcyB0byBvbmx5IGJlIGNhbGxlZCBieSBQQ0kgYW5kIEkyQyBwcm9iZXMsIHdoaWNoIG1lYW5zIHdpdGhvdXQgYSBwaHlzaWNhbCBQQ0kgb3IgSTJDIGRldmljZSBwcmVzZW50LCBpdCdzIG5vdCBnb2luZyB0byBnZXQgbG9hZGVkLiBNeSBmaXJzdCB0aG91Z2h0IGlzIHdoZXRoZXIgU3l6a2FsbGVyIGNhbiBldmVuIGhlbHAgaGVyZS4gQ2FuIGl0IGluc3RhbnRpYXRlIGEgZHVtbXkgSTJDIGRldmljZT8gRG9lcyBTeXprYWxsZXIgaGF2ZSBzb21ldGhpbmcgbGlrZSBhIGBzeXpfaTJjX3NldHVwYCBjYWxsPyBMZXQgbWUgcXVpY2tseSBjaGVjayBpZiBTeXprYWxsZXIgc3VwcG9ydHMgSTJDIGZ1enppbmcuLi4gTm9wZS4gVXN1YWxseSBJMkMgZGV2aWNlcyBjb21lIHVwIHRocm91Z2ggZGV2aWNlIHRyZWVzLCBBQ1BJIG9yIGJ5IHdyaXRpbmcgdG8gYC9zeXMvYnVzL2kyYy9kZXZpY2VzL2kyYy0qL25ld19kZXZpY2VgLlxuXG5XYWl0IGEgbWludXRlLi4uIHRoYXQgYC9zeXMvYnVzL2kyYy9kZXZpY2VzL2kyYy0qL25ld19kZXZpY2VgIHdyaXRlLi4uIHRoYXQgKmNvdWxkKiBpbnN0YW50aWF0ZSBhbiBJMkMgZGV2aWNlLCBjb3VsZG4ndCBpdD8gT2theSwgdGhhdCdzIHByb21pc2luZy4gTm93LCB0byBzZWUgaWYgdGhlcmUncyBhbnkgSTJDIGRyaXZlciBJIGNhbiBsZXZlcmFnZS4gTGV0IG1lIHNlZSBpZiB0aGUgYG1seHN3YCBkcml2ZXJzIGhhdmUgYW4gSTJDIGRyaXZlci4gQWgsIHllcyEgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2kyYy5jYCBleGlzdHMuIEV4Y2VsbGVudC4gQ2FuIFN5emthbGxlciBub3cgdXNlIHRoaXMgdG8gaW5zdGFudGlhdGUgaXQgdGhyb3VnaCB0aGUgYG5ld19kZXZpY2VgIGludGVyZmFjZT8gSSB3aWxsIG5vdyBpbnZlc3RpZ2F0ZSBgbWx4c3dfaTJjX2RyaXZlcmAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1OTQ5LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDA4OjMzOjExLjY5MTA3NDU0NVoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjUxNjU5OTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWx4c3dfaTJjX2RyaXZlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvaTJjLmM9NzQxPXN0YXRpYyB2b2lkIG1seHN3X2kyY19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2kyYy5jLTc0OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9pMmMuYzo3NTA6aW50IG1seHN3X2kyY19kcml2ZXJfcmVnaXN0ZXIoc3RydWN0IGkyY19kcml2ZXIgKmkyY19kcml2ZXIpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvaTJjLmMtNzUxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2kyYy5jLTc1NS19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvaTJjLmM6NzU2OkVYUE9SVF9TWU1CT0wobWx4c3dfaTJjX2RyaXZlcl9yZWdpc3Rlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvaTJjLmMtNzU3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2kyYy5jOjc1ODp2b2lkIG1seHN3X2kyY19kcml2ZXJfdW5yZWdpc3RlcihzdHJ1Y3QgaTJjX2RyaXZlciAqaTJjX2RyaXZlcilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9pMmMuYy03NTkte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvaTJjLmMtNzYxLX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9pMmMuYzo3NjI6RVhQT1JUX1NZTUJPTChtbHhzd19pMmNfZHJpdmVyX3VucmVnaXN0ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2kyYy5jLTc2My1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2kyYy5oLTEwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2kyYy5oOjExOmludCBtbHhzd19pMmNfZHJpdmVyX3JlZ2lzdGVyKHN0cnVjdCBpMmNfZHJpdmVyICppMmNfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9pMmMuaDoxMjp2b2lkIG1seHN3X2kyY19kcml2ZXJfdW5yZWdpc3RlcihzdHJ1Y3QgaTJjX2RyaXZlciAqaTJjX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvaTJjLmgtMTMtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9pMmMuaD0xNj1zdGF0aWMgaW5saW5lIGludFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2kyYy5oOjE3Om1seHN3X2kyY19kcml2ZXJfcmVnaXN0ZXIoc3RydWN0IGkyY19kcml2ZXIgKmkyY19kcml2ZXIpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvaTJjLmgtMTgte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvaTJjLmg9MjI9c3RhdGljIGlubGluZSB2b2lkXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvaTJjLmg6MjM6bWx4c3dfaTJjX2RyaXZlcl91bnJlZ2lzdGVyKHN0cnVjdCBpMmNfZHJpdmVyICppMmNfZHJpdmVyKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2kyYy5oLTI0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L21pbmltYWwuYz03MjQ9c3RhdGljIGludCBfX2luaXQgbWx4c3dfbV9tb2R1bGVfaW5pdCh2b2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvbWluaW1hbC5jLTczMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9taW5pbWFsLmM6NzMyOlxcdGVyciA9IG1seHN3X2kyY19kcml2ZXJfcmVnaXN0ZXIoXFx1MDAyNm1seHN3X21faTJjX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvbWluaW1hbC5jLTczMy1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvbWluaW1hbC5jPTc0ND1zdGF0aWMgdm9pZCBfX2V4aXQgbWx4c3dfbV9tb2R1bGVfZXhpdCh2b2lkKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L21pbmltYWwuYy03NDUte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L21pbmltYWwuYzo3NDY6XFx0bWx4c3dfaTJjX2RyaXZlcl91bnJlZ2lzdGVyKFxcdTAwMjZtbHhzd19tX2kyY19kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L21pbmltYWwuYy03NDctXFx0bWx4c3dfY29yZV9kcml2ZXJfdW5yZWdpc3RlcihcXHUwMDI2bWx4c3dfbV9kcml2ZXIpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQwODozMzoxMS43NTYyNTg0OTNaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTI5NzUxMTE0NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBhdGNoJ3MgUmVhY2hhYmlsaXR5IGFuZCBGdXp6aW5nIFBvdGVudGlhbCoqXG5cbk9rYXksIHNvIHRoZSBwYXRjaCBpcyBkZWZpbml0ZWx5IGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuY2AsIHdoaWNoIGZvY3VzZXMgbXkgYXR0ZW50aW9uLiBJIGltbWVkaWF0ZWx5IHRoaW5rIHRoYXQgdGhlIEkyQyBkcml2ZXIsIHdoaWNoIHVzZXMgYG1seHN3X2kyY19idXNgLCBpc24ndCBnb2luZyB0byBiZSByZWxldmFudCBoZXJlIGJlY2F1c2UgaXQgZG9lc24ndCBldmVuIGNhbGwgdGhlIGBtbHhzd19wY2lfY3FfbmFwaV9kaXNhYmxlYCBmdW5jdGlvbiB0aGF0IHRoZSBwYXRjaCBtb2RpZmllcy4gVGhlIHBhdGNoIGlzIHRvdWNoaW5nIGBtbHhzd19wY2lfY3FfbmFwaV9kaXNhYmxlYCBhbmQgYG1seHN3X3BjaV9maW5pYCB3aXRoaW4gdGhlIFBDSSBjb2RlLCBzbyBpZiBJMkMgKmNvdWxkKiBiZSBpbnN0YW50aWF0ZWQsIGl0IHN0aWxsIHdvdWxkbid0IGhpdCB0aGUgdGFyZ2V0IG9mIHRoZSBwYXRjaC5cblxuVGhlIG5leHQgcXVlc3Rpb24gaXMsIGNhbiBJIGluc3RhbnRpYXRlIGEgUENJIGRldmljZSBmcm9tIHVzZXJzcGFjZT8gR2VuZXJhbGx5LCBuby4gVW5sZXNzLi4uIHdhaXQsIGRvZXNuJ3Qgc3l6a2FsbGVyIGhhdmUgc29tZSB0cmlja2VyeT8gSSByZW1lbWJlciBoZWFyaW5nIHRoZXkgdXNlIHNvbWUgY3VzdG9tIFBDSSBpbmplY3Rpb24gbWV0aG9kcy4gT2theSwgSSBuZWVkIHRvIGtub3cuXG5cbkknbSB0cnlpbmcgdG8gc2VhcmNoIGZvciBzb21ldGhpbmcgbGlrZSBgc3l6X3BjaWAgd2l0aGluIHRoZSBzeXprYWxsZXIgc291cmNlLCBidXQgSSBjYW4ndC4gSSBkb24ndCBoYXZlIHRoZSBzb3VyY2UgaGFuZHkuIEJ1dCBoZXksIGl0IGhhcyB0aGUgYHN5el9wY2lfZGV2aWNlYCBwc2V1ZG8tc3lzY2FsbCwgd2hpY2ggbWVhbnMgaXQgZGVmaW5pdGVseSBoYW5kbGVzIFBDSSBkZXZpY2VzLiBUaGF0IHBzZXVkby1zeXNjYWxsIGltcGxpZXMgdGhhdCBzeXprYWxsZXIgKmRvZXMqIGluZGVlZCBoYXZlIGl0cyBvd24gcHNldWRvLXN5c2NhbGxzIHN0YXJ0aW5nIHdpdGggYHN5el9gLiBJZiBzeXprYWxsZXIgaGFzIGEgUENJIGZ1enplciwgaXQgY2FuIGluamVjdCBQQ0kgZGV2aWNlcywgdGhlbiBJJ20gaW4gYnVzaW5lc3MuXG5cblNvLCBob3cgZG9lcyBzeXprYWxsZXIgZG8gdGhhdCBpbmplY3Rpb24/IElzIGl0IHVzaW5nIGB2ZmlvYCwgYHBjaV9lbmRwb2ludGAsIG9yIG1heWJlIGEgY3VzdG9tIFFFTVUgZGV2aWNlPyBUaGF0J3MgdGhlIGtleS4gSWYgc3l6a2FsbGVyIGNhbiBpbmplY3QgUENJIGRldmljZXMsIHRoZW4gYG1seHN3X3BjaV9wcm9iZWAgKmlzKiByZWFjaGFibGUsIGF0IGxlYXN0IHdpdGhpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBMZXQncyBhc3N1bWUgdGhhdCBzeXprYWxsZXIgKmNhbiogZnV6eiBQQ0kgZGV2aWNlcy5cblxuSWYgdGhhdCdzIHRoZSBjYXNlLCBhbmQgdGhlIHBhdGNoIG1vZGlmaWVzIGBtbHhzd19wY2lfY3FfbmFwaV9kaXNhYmxlYCBhbmQgYG1seHN3X3BjaV9maW5pYCwgdGhlbiBmdXp6aW5nIHRoaXMgc2VlbXMgd29ydGh3aGlsZS4gSXQgZml4ZXMgYSBkb3VibGUgYG5hcGlfZGlzYWJsZWAgYW5kIGEgbWlzc2luZyBgdGFza2xldF9raWxsYC4gVGhhdCdzIGltcG9ydGFudC5cblxuTm93LCBsZXQncyBsaXN0IG91dCB3aGF0J3MgbW9kaWZpZWQgaGVyZSB0byBzZWUgaWYgdGhlcmUgaXMgcG90ZW50aWFsIGZvciBhIG5pY2UgZnV6ei10YXJnZXQ6XG4qICAgYG1seHN3X3BjaV9jcV9uYXBpX2Rpc2FibGVgXG4qICAgYG1seHN3X3BjaV9jcV9pbml0YFxuKiAgIGBtbHhzd19wY2lfY3FfZmluaWBcbiogICBgbWx4c3dfcGNpX2Fxc19maW5pYFxuKiAgIGBtbHhzd19wY2lfZmluaWBcblxuTmV4dCwgSSBuZWVkIHRvIGNoZWNrIHRoZSBjb25maWdzIHJlcXVpcmVkOlxuKiAgIGBDT05GSUdfTUxYU1dfUENJYFxuKiAgIGBDT05GSUdfTUxYU1dfQ09SRWBcblxuQXJlIHRoZXJlIGFueSBvdGhlciBpbXBvcnRhbnQgY29uZmlncz9cblxuXG4iLCJJbnB1dFRva2VucyI6Mjc1NzMsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMDg6MzM6MjEuMDUzNzcyMzc3WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NjUxNjMwNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTUxYU1dfUENJXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9LY29uZmlnPTI1PWNvbmZpZyBNTFhTV19DT1JFX1RIRVJNQUxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L0tjb25maWctMzItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvS2NvbmZpZzozMzpjb25maWcgTUxYU1dfUENJXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvS2NvbmZpZy0zNC1cXHR0cmlzdGF0ZSBcXFwiUENJIGJ1cyBpbXBsZW1lbnRhdGlvbiBmb3IgTWVsbGFub3ggVGVjaG5vbG9naWVzIFN3aXRjaCBBU0lDc1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMDg6MzM6MjEuMTIwMjk2OTE1WiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyODg5MzkwNjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSdtIGFuIGV4cGVydCBpbiB0aGlzIGZpZWxkLCBwcmVzZW50ZWQgYXMgYSBmaXJzdC1wZXJzb24gc3VtbWFyeTpcblxuKipEaWdnaW5nIGludG8gdGhlIE1lbGxhbm94IEtjb25maWcqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgdGFzayBhdCBoYW5kIGxpa2VseSBpbnZvbHZlcyBjb25maWd1cmluZyBvciB0cm91Ymxlc2hvb3Rpbmcgc29tZXRoaW5nIHJlbGF0ZWQgdG8gTWVsbGFub3ggbmV0d29yayBkcml2ZXJzLCBzcGVjaWZpY2FsbHkgdGhlIG9uZXMgY29ubmVjdGVkIHZpYSBQQ0kuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGNoZWNrIHRoZSBgS2NvbmZpZ2AgZmlsZSB3aXRoaW4gdGhlIE1lbGxhbm94IGRyaXZlciBkaXJlY3RvcnksIGFuZCB0aGF0IHBhdGggaXMgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L0tjb25maWdgLiBgS2NvbmZpZ2AgZmlsZXMgYXJlIHRoZSBicmVhZCBhbmQgYnV0dGVyIGZvciBrZXJuZWwgY29uZmlndXJhdGlvbiwgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIGFsbCB0aGUgY29tcGlsZS10aW1lIG9wdGlvbnMuIEkgd2FudCB0byBzZWUgaG93IGBNTFhTV19QQ0lgIGlzIGRlZmluZWQsIHdoYXQgZGVwZW5kZW5jaWVzIGl0IGhhcywgYW5kIHBlcmhhcHMgd2hhdCBpdCBlbmFibGVzIG9yIGRpc2FibGVzLiBUaGlzIGlzIHRoZSBsb2dpY2FsIGZpcnN0IHN0ZXA7IHRoaXMgd2lsbCB0ZWxsIG1lIHdoYXQgdGhlIGJ1aWxkIHN5c3RlbSBuZWVkcyB0byBrbm93IGFib3V0IHRoZSBmZWF0dXJlLCBob3cgdG8gZW5hYmxlIGl0IGFuZCB3aGF0IGVsc2UgSSBuZWVkIHRvIHRoaW5rIGFib3V0LiBJdOKAmXMgd2hlcmUgYWxsIHRoZSBmdW5kYW1lbnRhbCBvcHRpb25zIGFuZCBkZXBlbmRlbmNpZXMgZm9yIHRoZXNlIGRyaXZlcnMgYXJlIGxhaWQgb3V0LiBJ4oCZbSB0aGlua2luZyBJIHdpbGwgZmluZCBjbHVlcyBhcyB0byB3aGV0aGVyIHRoZSBjb25maWd1cmF0aW9uIGlzIGVuYWJsZWQsIGlmIHRoZXJlIGlzIGEgY29uZmxpY3QsIG9yIGEgZGVwZW5kZW5jeSBpcyBtaXNzaW5nLiBMZXTigJlzIGdldCB0byBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjg5MzgsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQwODozMzoyNS40MDkyMzg4MjFaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Njc3OTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAzMCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAzMDpcXHRcXHQgU2F5IFkgaGVyZSBpZiB5b3Ugd2FudCB0byBhdXRvbWF0aWNhbGx5IGNvbnRyb2wgZmFucyBzcGVlZCBhY2NvcmRpbmdcXG4gIDMxOlxcdFxcdCBhbWJpZW50IHRlbXBlcmF0dXJlIHJlcG9ydGVkIGJ5IEFTSUMuXFxuICAzMjpcXHRcXG4gIDMzOlxcdGNvbmZpZyBNTFhTV19QQ0lcXG4gIDM0OlxcdFxcdHRyaXN0YXRlIFxcXCJQQ0kgYnVzIGltcGxlbWVudGF0aW9uIGZvciBNZWxsYW5veCBUZWNobm9sb2dpZXMgU3dpdGNoIEFTSUNzXFxcIlxcbiAgMzU6XFx0XFx0ZGVwZW5kcyBvbiBQQ0kgXFx1MDAyNlxcdTAwMjYgSEFTX0lPTUVNIFxcdTAwMjZcXHUwMDI2IE1MWFNXX0NPUkVcXG4gIDM2OlxcdFxcdHNlbGVjdCBQQUdFX1BPT0xcXG4gIDM3OlxcdFxcdGRlZmF1bHQgbVxcbiAgMzg6XFx0XFx0aGVscFxcbiAgMzk6XFx0XFx0ICBUaGlzIGlzIFBDSSBidXMgaW1wbGVtZW50YXRpb24gZm9yIE1lbGxhbm94IFRlY2hub2xvZ2llcyBTd2l0Y2ggQVNJQ3MuXFxuICA0MDpcXHRcXG4gIDQxOlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlXFxuICA0MjpcXHRcXHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBtbHhzd19wY2kuXFxuICA0MzpcXHRcXG4gIDQ0OlxcdGNvbmZpZyBNTFhTV19JMkNcXG4gIDQ1OlxcdFxcdHRyaXN0YXRlIFxcXCJJMkMgYnVzIGltcGxlbWVudGF0aW9uIGZvciBNZWxsYW5veCBUZWNobm9sb2dpZXMgU3dpdGNoIEFTSUNzXFxcIlxcbiAgNDY6XFx0XFx0ZGVwZW5kcyBvbiBJMkMgXFx1MDAyNlxcdTAwMjYgTUxYU1dfQ09SRVxcbiAgNDc6XFx0XFx0ZGVmYXVsdCBtXFxuICA0ODpcXHRcXHRoZWxwXFxuICA0OTpcXHRcXHQgIFRoaXMgaXMgSTJDIGJ1cyBpbXBsZW1lbnRhdGlvbiBmb3IgTWVsbGFub3ggVGVjaG5vbG9naWVzIFN3aXRjaCBBU0lDcy5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMDg6MzM6MjUuNDA5MzA3OTExWiIsIlNlcSI6MzMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ4NDg5Mjg2OTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQ29uZmlndXJhdGlvbiBDaGVjayoqXG5cbk9rYXksIHNvIEknbSBmb2N1c2luZyBvbiB0aGUgYE1MWFNXYCBkcml2ZXIgaGVyZSwgYW5kIEkgbmVlZCB0byBtYWtlIHN1cmUgSSd2ZSBnb3QgdGhlIGVzc2VudGlhbHMgZW5hYmxlZC4gUmlnaHQsIGBNTFhTV19QQ0lgIGFuZCBgTUxYU1dfQ09SRWAgYXJlIHRoZSBrZXkgY29tcG9uZW50cy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBib3RoIGFyZSBzZXQgdG8gZW5hYmxlZC4gV2FpdCBhIHNlY29uZCwgcXVpY2sgbWVudGFsIGNoZWNrLi4uIGBNTFhTV19QQ0lgIGluaGVyZW50bHkgZGVwZW5kcyBvbiBgTUxYU1dfQ09SRWAsIHNvIHRoYXQncyBnb29kLiBOb3csIGJlZm9yZSBJIG1vdmUgb24sIEkgc2hvdWxkIHF1aWNrbHkgdmVyaWZ5IGlmIHRoZXJlIGFyZSBhbnkgZHJpdmVyLXNwZWNpZmljIGNvbmZpZ3MgdG8gY29uc2lkZXIuIEZvciBleGFtcGxlLCBpcyB0aGVyZSBhIGBNTFhTV19TUEVDVFJVTWAgb3B0aW9uIEkgbmVlZCB0byBiZSBhd2FyZSBvZj8gQmVzdCB0byBiZSB0aG9yb3VnaCwgZXNwZWNpYWxseSB3aGVuIGRlYWxpbmcgd2l0aCB0aGlzIGxldmVsIG9mIGhhcmR3YXJlIGludGVyYWN0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTU1OCwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjcxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMDg6MzM6MzAuMjU4MjM5NjI2WiIsIlNlcSI6MzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY5NTIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogNTAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgNTA6XFx0XFxuICA1MTpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxcbiAgNTI6XFx0XFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgbWx4c3dfaTJjLlxcbiAgNTM6XFx0XFxuICA1NDpcXHRjb25maWcgTUxYU1dfU1BFQ1RSVU1cXG4gIDU1OlxcdFxcdHRyaXN0YXRlIFxcXCJNZWxsYW5veCBUZWNobm9sb2dpZXMgU3BlY3RydW0gZmFtaWx5IHN1cHBvcnRcXFwiXFxuICA1NjpcXHRcXHRkZXBlbmRzIG9uIE1MWFNXX0NPUkUgXFx1MDAyNlxcdTAwMjYgTUxYU1dfUENJIFxcdTAwMjZcXHUwMDI2IE5FVF9TV0lUQ0hERVYgXFx1MDAyNlxcdTAwMjYgVkxBTl84MDIxUVxcbiAgNTc6XFx0XFx0ZGVwZW5kcyBvbiBQU0FNUExFIHx8IFBTQU1QTEU9blxcbiAgNTg6XFx0XFx0ZGVwZW5kcyBvbiBCUklER0UgfHwgQlJJREdFPW5cXG4gIDU5OlxcdFxcdGRlcGVuZHMgb24gTkVUX0lQR1JFIHx8IE5FVF9JUEdSRT1uXFxuICA2MDpcXHRcXHRkZXBlbmRzIG9uIElQVjZfR1JFIHx8IElQVjZfR1JFPW5cXG4gIDYxOlxcdFxcdGRlcGVuZHMgb24gVlhMQU4gfHwgVlhMQU49blxcbiAgNjI6XFx0XFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxcbiAgNjM6XFx0XFx0c2VsZWN0IEdFTkVSSUNfQUxMT0NBVE9SXFxuICA2NDpcXHRcXHRzZWxlY3QgUEFSTUFOXFxuICA2NTpcXHRcXHRzZWxlY3QgT0JKQUdHXFxuICA2NjpcXHRcXHRzZWxlY3QgTkVUX1BUUF9DTEFTU0lGWSBpZiBQVFBfMTU4OF9DTE9DS1xcbiAgNjc6XFx0XFx0ZGVmYXVsdCBtXFxuICA2ODpcXHRcXHRoZWxwXFxuICA2OTpcXHRcXHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIE1lbGxhbm94IFRlY2hub2xvZ2llc1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQwODozMzozMC4yNTgzMTIwMDZaIiwiU2VxIjozNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODA5NDE3MjU4NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIHRoZSBEZXBlbmRlbmN5IFN0cnVjdHVyZSBvZiBNTFhTVyBEcml2ZXJzKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGUga2VybmVsIGJ1aWxkIGNvbmZpZ3VyYXRpb24sIHNwZWNpZmljYWxseSB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gYE1MWFNXX1NQRUNUUlVNYCBhbmQgYE1MWFNXX1BDSWAuIE15IHVuZGVyc3RhbmRpbmcgaXMgdGhhdCBgTUxYU1dfU1BFQ1RSVU1gICpkZXBlbmRzKiBvbiBgTUxYU1dfUENJYC4gVGhhdCBtYWtlcyBzZW5zZTsgU3BlY3RydW0gZGV2aWNlcyBsaWtlbHkgcmVseSBvbiBQQ0kgZm9yIHRoZWlyIGNvbW11bmljYXRpb24uXG5cbk5vdywgaGVyZSdzIHRoZSBxdWVzdGlvbiB0aGF0J3MgbmFnZ2luZyBhdCBtZTogSWYgSSBzaW1wbHkgZW5hYmxlIGBNTFhTV19QQ0lgLCBJICprbm93KiBpdCBidWlsZHMgYG1seHN3X3BjaS5rb2AuIEJ1dCB3aGF0IGV4YWN0bHkgZG9lcyB0aGF0IG1vZHVsZSAqZG8qIGluIHRoZSBhYnNlbmNlIG9mIGEgbW9yZSBzcGVjaWZpYyBkcml2ZXIsIGxpa2UgYE1MWFNXX1NQRUNUUlVNYCwgdGhhdCBsZXZlcmFnZXMgaXRzIGZ1bmN0aW9uYWxpdHk/IElzIGl0IGp1c3QgYSBwbGFjZWhvbGRlciwgb3IgZG9lcyBpdCBwZXJmb3JtIHNvbWUgZXNzZW50aWFsIGluaXRpYWxpemF0aW9uIG9yIHByb2Jpbmcgb24gaXRzIG93bj8gSXQgc2VlbXMgbGlrZSBpdCBtdXN0IGRvICpzb21ldGhpbmcqIHNpbmNlIGl0IGV4aXN0cy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgaXQncyBwYXNzaXZlIHdpdGhvdXQgYE1MWFNXX1NQRUNUUlVNYCwgb3IgYWN0aXZlLlxuXG5UaGUgbW9zdCBsb2dpY2FsIG5leHQgc3RlcCBpcyB0byBleGFtaW5lIHRoZSBgbWx4c3dfcGNpX3Byb2JlYCBmdW5jdGlvbi4gSSBzaG91bGQgYmUgYWJsZSB0byBkZXRlcm1pbmUgaXRzIGJlaGF2aW9yIHdpdGggb3Igd2l0aG91dCB0aGUgU3BlY3RydW0gZHJpdmVyIGJlaW5nIGFjdGl2YXRlZC4gVGhhdCB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiB3aGF0IGFjdHVhbGx5IGhhcHBlbnMgd2hlbiBvbmx5IGBNTFhTV19QQ0lgIGlzIGVuYWJsZWQuIFRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBjb2RlLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwMTQ4LCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQwODozMzozOC4zNTI0ODc4MDNaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5NjAzMTUxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1seHN3X3BjaV9wcm9iZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuYz0yNDIzPXN0YXRpYyB2b2lkIG1seHN3X3BjaV9jbWRfZmluaShzdHJ1Y3QgbWx4c3dfcGNpICptbHhzd19wY2kpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuYy0yNDI5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3BjaS5jOjI0MzA6c3RhdGljIGludCBtbHhzd19wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuYy0yNDMxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3BjaS5jPTI1NDg9aW50IG1seHN3X3BjaV9kcml2ZXJfcmVnaXN0ZXIoc3RydWN0IHBjaV9kcml2ZXIgKnBjaV9kcml2ZXIpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvcGNpLmMtMjU0OS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvcGNpLmM6MjU1MDpcXHRwY2lfZHJpdmVyLVxcdTAwM2Vwcm9iZSA9IG1seHN3X3BjaV9wcm9iZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuYy0yNTUxLVxcdHBjaV9kcml2ZXItXFx1MDAzZXJlbW92ZSA9IG1seHN3X3BjaV9yZW1vdmU7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDA4OjMzOjM4LjQxMjA5OTc5NFoiLCJTZXEiOjM3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDAzMzI3NDU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6XG5cbioqRGVidWdnaW5nIE1MWFNXIERyaXZlciBSZWdpc3RyYXRpb24qKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0J3MgcmVzcG9uc2libGUgZm9yIGNhbGxpbmcgYG1seHN3X3BjaV9kcml2ZXJfcmVnaXN0ZXJgLiBJJ20gc3RhcnRpbmcgYXQgdGhlIHJlZ2lzdHJhdGlvbiBwb2ludCBiZWNhdXNlIHRoYXQncyB0aGUgb2J2aW91cyBlbnRyeSBwb2ludCB0byB0cmFjZSBiYWNrIGZyb20uIFRoaXMgaXMgYSBjb21tb24gZGVidWdnaW5nIHRlY2huaXF1ZSAtIHVuZGVyc3RhbmQgdGhlIGVuZCBnb2FsLCB0aGVuIHdvcmsgYmFja3dhcmQgdG8gZGV0ZXJtaW5lIHRoZSB1cHN0cmVhbSBvcmlnaW4uIEknbGwgbmVlZCB0byBnbyB0aHJvdWdoIHRoZSBjb2RlLCBwcm9iYWJseSB1c2luZyBhIHRvb2wgbGlrZSBgZ2l0IGdyZXBgIG9yIGEgc2ltaWxhciBjb2RlIHNlYXJjaCwgYW5kIGZpbmQgYWxsIGluc3RhbmNlcyBvZiB0aGUgZnVuY3Rpb24gY2FsbC4gSSdtIGV4cGVjdGluZyB0aGlzIHdpbGwgZWl0aGVyIGJlIHdpdGhpbiB0aGUgUENJIHN1YnN5c3RlbSBpbml0aWFsaXphdGlvbiBvciBwZXJoYXBzIHNvbWUgc29ydCBvZiBtb2R1bGUgbG9hZGluZyBtZWNoYW5pc20gc3BlY2lmaWMgdG8gTUxYU1cgZGV2aWNlcy4gSXQgY291bGQgZXZlbiBiZSB0cmlnZ2VyZWQgYnkgYSBob3RwbHVnIGV2ZW50LiBJJ20gcmVhZHkgdG8gZGlnIGludG8gdGhlIGtlcm5lbCBzb3VyY2UgYW5kIGlkZW50aWZ5IHRoZSBjYWxsaW5nIGNvbnRleHQsIHdoaWNoIHdpbGwgZ2l2ZSBtZSBjcml0aWNhbCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZHJpdmVyJ3MgaW5zdGFudGlhdGlvbiBwcm9jZXNzLiBUaGUgZ29hbCBpcyB0byBkZXRlcm1pbmUgdGhlIHNlcXVlbmNlIG9mIGV2ZW50cyBsZWFkaW5nIHVwIHRvIGRyaXZlciByZWdpc3RyYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwODkwLCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMDg6MzM6NDIuNDE1NDMwNjY4WiIsIlNlcSI6MzgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjE3MDE0MTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWx4c3dfcGNpX2RyaXZlcl9yZWdpc3RlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvcGNpLmM9MjU0Mz1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9lcnJvcl9oYW5kbGVycyBtbHhzd19wY2lfZXJyX2hhbmRsZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuYy0yNTQ3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3BjaS5jOjI1NDg6aW50IG1seHN3X3BjaV9kcml2ZXJfcmVnaXN0ZXIoc3RydWN0IHBjaV9kcml2ZXIgKnBjaV9kcml2ZXIpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvcGNpLmMtMjU0OS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuYy0yNTU1LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuYzoyNTU2OkVYUE9SVF9TWU1CT0wobWx4c3dfcGNpX2RyaXZlcl9yZWdpc3Rlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvcGNpLmMtMjU1Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3BjaS5oLTE1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3BjaS5oOjE2OmludCBtbHhzd19wY2lfZHJpdmVyX3JlZ2lzdGVyKHN0cnVjdCBwY2lfZHJpdmVyICpwY2lfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuaC0xNy12b2lkIG1seHN3X3BjaV9kcml2ZXJfdW5yZWdpc3RlcihzdHJ1Y3QgcGNpX2RyaXZlciAqcGNpX2RyaXZlcik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuaD0yMT1zdGF0aWMgaW5saW5lIGludFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3BjaS5oOjIyOm1seHN3X3BjaV9kcml2ZXJfcmVnaXN0ZXIoc3RydWN0IHBjaV9kcml2ZXIgKnBjaV9kcml2ZXIpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvcGNpLmgtMjMte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW0uYz01MzE5PXN0YXRpYyBpbnQgX19pbml0IG1seHN3X3NwX21vZHVsZV9pbml0KHZvaWQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bS5jLTUzMzgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW0uYzo1MzM5OlxcdGVyciA9IG1seHN3X3BjaV9kcml2ZXJfcmVnaXN0ZXIoXFx1MDAyNm1seHN3X3NwMV9wY2lfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bS5jLTUzNDAtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtLmMtNTM0Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bS5jOjUzNDM6XFx0ZXJyID0gbWx4c3dfcGNpX2RyaXZlcl9yZWdpc3RlcihcXHUwMDI2bWx4c3dfc3AyX3BjaV9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtLmMtNTM0NC1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW0uYy01MzQ2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtLmM6NTM0NzpcXHRlcnIgPSBtbHhzd19wY2lfZHJpdmVyX3JlZ2lzdGVyKFxcdTAwMjZtbHhzd19zcDNfcGNpX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW0uYy01MzQ4LVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bS5jLTUzNTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW0uYzo1MzUxOlxcdGVyciA9IG1seHN3X3BjaV9kcml2ZXJfcmVnaXN0ZXIoXFx1MDAyNm1seHN3X3NwNF9wY2lfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9zcGVjdHJ1bS5jLTUzNTItXFx0aWYgKGVycilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMDg6MzM6NDIuNjM3MTM2NDcxWiIsIlNlcSI6MzksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjExMjQyNTc3NzEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgUmVhY2hhYmlsaXR5IGFuZCBGdW5jdGlvbiBQcmlvcml0aXphdGlvbiBmb3IgTUxYU1dfU1BFQ1RSVU0qKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGlzIGBNTFhTV19TUEVDVFJVTWAgZHJpdmVyIGlzIHJlYWNoYWJsZSBmb3IgZnV6emluZy4gSXQncyB0aGUga2V5IHRvIHJlZ2lzdGVyaW5nIHRoZSBQQ0kgZHJpdmVycywgYnV0IHdhaXQsIHRoZXJlJ3MgYWxzbyBgTUxYU1dfTUlOSU1BTGA/IE5vcGUsIHRoYXQncyBqdXN0IGZvciBJMkMsIHNvIG5vdCByZWxldmFudCBoZXJlLiBMZXQncyBjaGVjayB0aGUgY29uZmlncyBmb3IgYE1MWFNXX1NQRUNUUlVNYC4gSXQgZGVwZW5kcyBvbiBgTUxYU1dfQ09SRWAsIGBNTFhTV19QQ0lgLCBgTkVUX1NXSVRDSERFVmAsIGFuZCBgVkxBTl84MDIxUWAg4oCTIHNvIGVuYWJsaW5nIGBNTFhTV19TUEVDVFJVTWAgc2hvdWxkIGJlIHRoZSB3YXkgdG8gZ28uXG5cblRoZSBiaWcgcXVlc3Rpb24gaXMgd2hldGhlciB0aGlzIGNvZGUgaXMgYWNjZXNzaWJsZSBpbiBhIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnQuIElmIHN5emthbGxlciBoYXMgYSBQQ0kgZnV6emVyLCB3ZSdyZSBpbiBidXNpbmVzcy4gQW5kIHllcywgaXQgZG9lcyEgSSByZW1lbWJlciB0aGF0IHJlY2VudGx5IGFkZGVkIFBDSSBmdXp6ZXIsIEkgdGhpbmsgaXQgdXNlcyBgdmZpb2Agb3IgYSBjdXN0b20gUUVNVSBkZXZpY2UuIFdhaXQsIGl0IHVzZXMgdGhlIGBwY2lfZW5kcG9pbnRgIGZyYW1ld29yaz8gTm8sIHdhaXQhIEkgbmVlZCB0byBiZSBjYXJlZnVsIHdpdGggYW55IHBzZXVkby1zeXNjYWxscyBsaWtlIGBzeXpfcGNpX2RldmljZWAuIEFoLCB0aGlzIGlzIGEgZ29vZCByZW1pbmRlci4gSSBjYW4ndCBzZWFyY2ggZm9yIHN5emthbGxlciBwc2V1ZG8tc3lzY2FsbHMgZGlyZWN0bHkgaW4gdGhlIGtlcm5lbCBjb2RlLCBzbyBJIG5lZWQgdG8gdGhpbmsgY2FyZWZ1bGx5IGFib3V0IGhvdyBzeXprYWxsZXIgb3BlcmF0ZXMuXG5cblNpbmNlIHN5emthbGxlciAqY2FuKiBmdXp6IFBDSSBkZXZpY2VzLCB0aGF0IG1lYW5zIGBtbHhzd19wY2lfcHJvYmVgIHNob3VsZCBiZSByZWFjaGFibGUuIEknbSBnb2luZyB0byBhc3N1bWUgaXQgaXMgYW5kIHJldHVybiBgV29ydGhGdXp6aW5nPXRydWVgLlxuXG5Ob3csIGxldCdzIGxvb2sgYXQgdGhlIGZ1bmN0aW9ucyB0aGVtc2VsdmVzLiBJIG5lZWQgdG8gcHJpb3JpdGl6ZSBmdW5jdGlvbnMgdG8gZm9jdXMgZnV6emluZyBlZmZvcnRzLiBUaGUgcGF0Y2ggc2VlbXMgdG8gbW9kaWZ5IHRoZXNlIGZ1bmN0aW9uczpcblxuKiAgIGBtbHhzd19wY2lfY3FfbmFwaV9kaXNhYmxlYFxuKiAgIGBtbHhzd19wY2lfY3FfaW5pdGBcbiogICBgbWx4c3dfcGNpX2NxX2ZpbmlgXG4qICAgYG1seHN3X3BjaV9hcXNfZmluaWBcbiogICBgbWx4c3dfcGNpX2ZpbmlgXG5cbmBtbHhzd19wY2lfY3FfbmFwaV9kaXNhYmxlYCBpcyBuZXcuIExldCdzIGRpZyBkZWVwZXIgYW5kIHNlZSBpZiBpdCdzIGEgaG90IHBhdGguIE5vcGUsIGl0J3MgY2FsbGVkIGR1cmluZyB0ZWFyZG93biBvciBgZmluaWAsIG5vdCBhIGhvdCBwYXRoLiBgbWx4c3dfcGNpX2NxX2luaXRgIGlzIGNhbGxlZCBkdXJpbmcgaW5pdC4gYG1seHN3X3BjaV9jcV9maW5pYCwgYG1seHN3X3BjaV9hcXNfZmluaWAsIGFuZCBgbWx4c3dfcGNpX2ZpbmlgIGFyZSBjYWxsZWQgZHVyaW5nIGBmaW5pYC5cblxuTG9va3MgbGlrZSB0aGUgcGF0Y2ggYWxzbyB0b3VjaGVzIGBtbHhzd19wY2lfY3FfbmFwaV90ZWFyZG93bmAsIHdoaWNoLCB3aGlsZSBub3QgbW9kaWZpZWQsIGlzIHN0aWxsIGNhbGxlZC4gVGhlIHBhdGNoIG1vZGlmaWVzOiBgbWx4c3dfcGNpX2NxX25hcGlfZGlzYWJsZWAgKG5ldyksIGBtbHhzd19wY2lfY3FfaW5pdGAsIGBtbHhzd19wY2lfY3FfZmluaWAsIGBtbHhzd19wY2lfYXFzX2ZpbmlgLCBhbmQgYG1seHN3X3BjaV9maW5pYC4gT2theSwgbGV0J3Mgc3RhcnQgd2l0aCBhIGNsb3NlIGxvb2sgYXQgYG1seHN3X3BjaV9jcV9uYXBpX2Rpc2FibGVgIGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuY2AuIEkgaGF2ZSBhIGdvb2QgaWRlYSBvZiB3aGVyZSB0byBiZWdpbiBteSBmdXp6aW5nIGNhbXBhaWduLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMjA3NywiT3V0cHV0VG9rZW5zIjo1MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjcyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQwODozMzo1My44Nzk3MTc3MjRaIiwiU2VxIjo0MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0ODE0MDMxNTQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWx4c3dfcGNpX2NxX25hcGlfZGlzYWJsZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuYz05ODg9c3RhdGljIHZvaWQgbWx4c3dfcGNpX2NxX25hcGlfdGVhcmRvd24oc3RydWN0IG1seHN3X3BjaV9xdWV1ZSAqcSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3BjaS5jLTk5Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuYzo5OTM6c3RhdGljIHZvaWQgbWx4c3dfcGNpX2NxX25hcGlfZGlzYWJsZShzdHJ1Y3QgbWx4c3dfcGNpX3F1ZXVlICpxKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3BjaS5jLTk5NC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuYz0xMDg3PXN0YXRpYyB2b2lkIG1seHN3X3BjaV9jcV9maW5pKHN0cnVjdCBtbHhzd19wY2kgKm1seHN3X3BjaSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3BjaS5jLTEwOTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvcGNpLmM6MTA5MjpcXHRtbHhzd19wY2lfY3FfbmFwaV9kaXNhYmxlKHEpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3BjaS5jLTEwOTMtXFx0bWx4c3dfcGNpX2NxX3BhZ2VfcG9vbF9maW5pKHEsIGNxX3R5cGUpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvcGNpLmM9MTQ1MT1zdGF0aWMgdm9pZCBtbHhzd19wY2lfYXFzX2Zpbmkoc3RydWN0IG1seHN3X3BjaSAqbWx4c3dfcGNpKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvcGNpLmMtMTQ1OC1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgcXVldWVfZ3JvdXAtXFx1MDAzZWNvdW50OyBpKyspXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvcGNpLmM6MTQ1OTpcXHRcXHRtbHhzd19wY2lfY3FfbmFwaV9kaXNhYmxlKFxcdTAwMjZxdWV1ZV9ncm91cC1cXHUwMDNlcVtpXSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvcGNpLmMtMTQ2MC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMDg6MzM6NTUuMzYxMTI3NjM4WiIsIlNlcSI6NDEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEzODU0ODIyNTYxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5c2lzIG9mIE1lbGxhbm94IFN3aXRjaCBQQ0kgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBiZWVuIHRhc2tlZCB3aXRoIGFzc2Vzc2luZyB0aGlzIE1lbGxhbm94IHN3aXRjaCBQQ0kgZHJpdmVyIHBhdGNoLiBNeSBpbml0aWFsIGZvY3VzIGhhcyBsYW5kZWQgb24gaWRlbnRpZnlpbmcgdGhlIGtleSBmdW5jdGlvbnMgYW5kIGNvbmZpZ3VyYXRpb25zIGltcGFjdGVkLiBTcGVjaWZpY2FsbHksIHRoZSBmdW5jdGlvbnMgSSBuZWVkIHRvIGtlZXAgaW4gbWluZCBhcmUgYG1seHN3X3BjaV9jcV9uYXBpX2Rpc2FibGVgLCBgbWx4c3dfcGNpX2NxX2luaXRgLCBgbWx4c3dfcGNpX2NxX2ZpbmlgLCBgbWx4c3dfcGNpX2Fxc19maW5pYCwgYW5kIGBtbHhzd19wY2lfZmluaWAuXG5cblJlZ2FyZGluZyBjb25maWd1cmF0aW9ucywgaXQgbG9va3MgbGlrZSBgTUxYU1dfQ09SRWAsIGBNTFhTV19QQ0lgLCBhbmQgYE1MWFNXX1NQRUNUUlVNYCBhcmUgdGhlIGNyaXRpY2FsIG9uZXMuIEhvbGQgb24gdGhvdWdoLCBzaW5jZSBgTUxYU1dfU1BFQ1RSVU1gIGRlcGVuZHMgb24gYE5FVF9TV0lUQ0hERVZgIGFuZCBgVkxBTl84MDIxUWAsIEknbGwganVzdCBzdGljayB0byBsaXN0aW5nIGBNTFhTV19TUEVDVFJVTWAsIGBNTFhTV19QQ0lgLCBhbmQgYE1MWFNXX0NPUkVgIGFzIHRoZSBjb3JlIHJlcXVpcmVkIGNvbmZpZ3VyYXRpb25zLiBJdCBzZWVtcyBgTUxYU1dfTUlOSU1BTGAgaXMgcmVsZXZhbnQsIGJ1dCBpdCdzIHNwZWNpZmljYWxseSBmb3IgSTJDLW9ubHkgY29uZmlndXJhdGlvbnMsIHNvIHRoYXQncyBub3Qgc29tZXRoaW5nIEknbGwgbmVlZCB0byB3b3JyeSBhYm91dC5cblxuTm93LCBsZXQncyB2ZXJpZnkgaWYgYG1seHN3X3BjaV9jcV9uYXBpX2Rpc2FibGVgIGlzIHRoZSBvbmx5IGZ1bmN0aW9uIHRoYXQncyBiZWluZyBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2guIEluZGVlZCwgaXQgYXBwZWFycyB0byBiZSB0aGUgb25seSBvbmUuIEV4YW1pbmluZyB0aGUgcGF0Y2ggaXRzZWxmLCBpdCdzIGNsZWFyIHRoYXQgdGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLiBJdCBhZGRzIGEgYG5hcGlfZW5hYmxlZGAgYm9vbGVhbiBmbGFnIHRvIHByZXZlbnQgYSBwb3RlbnRpYWwgZG91YmxlIGBuYXBpX2Rpc2FibGVgIGNhbGwgYW5kIGEgYHRhc2tsZXRfa2lsbGAgdG8gbWl0aWdhdGUgcG9zc2libGUgdXNlLWFmdGVyLWZyZWUgb3Igc2ltaWxhciBpc3N1ZXMgZHVyaW5nIHRlYXJkb3duLlxuXG5UaGUgYmlnIHF1ZXN0aW9uIG5vdyBpcyB3aGV0aGVyIHN5emthbGxlciBjYW4gcmVhY2ggYW5kIGZ1enogdGhpcyBjb2RlLiBTaW5jZSB0aGlzIGlzIGEgUENJIGRyaXZlciwgYW5kIHN5emthbGxlciBkb2VzIHN1cHBvcnQgUENJIGZ1enppbmcsIHJlZ2FyZGxlc3Mgb2YgdGhlIGV4YWN0IGltcGxlbWVudGF0aW9uIGRldGFpbHMgKHdoZXRoZXIgaXQgdXNlcyBgdmZpb2Agb3IgYSBjdXN0b20gUUVNVSBkZXZpY2UpLCB0aGlzIGNvZGUgcGF0aCBpcyBkZWZpbml0ZWx5IHJlYWNoYWJsZS4gVGhlcmVmb3JlLCBJIGNhbiBjb25maWRlbnRseSBzdGF0ZSB0aGF0IHRoaXMgaXMgd29ydGggZnV6emluZy5cblxuTXkgcmVhc29uaW5nIGJvaWxzIGRvd24gdG8gdGhpczogdGhlIHBhdGNoIGFkZHJlc3NlcyBjcml0aWNhbCBpc3N1ZXMgcmVsYXRlZCB0byB0aGUgdGVhcmRvd24gcHJvY2VzcyBvZiB0aGUgTWVsbGFub3ggc3dpdGNoIFBDSSBkcml2ZXIsIGluY2x1ZGluZyBwcmV2ZW50aW5nIGEgZG91YmxlIGBuYXBpX2Rpc2FibGVgIGFuZCBlbnN1cmluZyBwcm9wZXIgY2xlYW51cCB3aXRoIGB0YXNrbGV0X2tpbGxgLiBTaW5jZSB0aGlzIGludm9sdmVzIGNvZGUgcGF0aHMgdGhhdCBhcmUgbm9ybWFsbHkgdXNlZCBhbmQgY2FuIGJlIHJlYWNoZWQgKGFzc3VtaW5nIFBDSSBmdXp6aW5nIGlzIGF2YWlsYWJsZSksIGl0IHJlcXVpcmVzIGZ1enplciBzY3J1dGlueSB0byBlbnN1cmUgcm9idXN0IHRlYXJkb3duIGhhbmRsaW5nLiBJIHRoaW5rIGBNTFhTV19TUEVDVFJVTWAsIGBNTFhTV19QQ0lgLCBhbmQgYE1MWFNXX0NPUkVgIHNob3VsZCBiZSBzdWZmaWNpZW50IGNvbmZpZ3VyYXRpb25zIHRvIHRlc3QgdGhpcy5cblxuQWxyaWdodCwgdGltZSB0byB3cmFwIHRoaXMgdXAgYW5kIG1vdmUgb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0MDcyLCJPdXRwdXRUb2tlbnMiOjIwMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg3NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQwODozNDowOS4yMTYxNTkwMzhaIiwiU2VxIjo0MiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NzIwNDE2MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUxYU1dfQ09SRVwiLFxuICAgIFwiTUxYU1dfUENJXCIsXG4gICAgXCJNTFhTV19TUEVDVFJVTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm1seHN3X3BjaV9jcV9uYXBpX2Rpc2FibGVcIixcbiAgICBcIm1seHN3X3BjaV9jcV9pbml0XCIsXG4gICAgXCJtbHhzd19wY2lfY3FfZmluaVwiLFxuICAgIFwibWx4c3dfcGNpX2Fxc19maW5pXCIsXG4gICAgXCJtbHhzd19wY2lfZmluaVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgZG91YmxlIGBuYXBpX2Rpc2FibGVgIGFuZCBhIG1pc3NpbmcgYHRhc2tsZXRfa2lsbGAgZHVyaW5nIHRoZSB0ZWFyZG93biBvZiB0aGUgTWVsbGFub3ggc3dpdGNoIFBDSSBkcml2ZXIgKGBtbHhzd2ApLiBJdCBhZGRzIGEgYG5hcGlfZW5hYmxlZGAgZmxhZyBhbmQgYSBuZXcgZnVuY3Rpb24gYG1seHN3X3BjaV9jcV9uYXBpX2Rpc2FibGVgLiBUaGlzIG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGRyaXZlciBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgdGhlIHRlYXJkb3duIHBhdGhzIGFyZSByb2J1c3QuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUxYU1dfQ09SRVwiLFxuICAgIFwiTUxYU1dfUENJXCIsXG4gICAgXCJNTFhTV19TUEVDVFJVTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm1seHN3X3BjaV9jcV9uYXBpX2Rpc2FibGVcIixcbiAgICBcIm1seHN3X3BjaV9jcV9pbml0XCIsXG4gICAgXCJtbHhzd19wY2lfY3FfZmluaVwiLFxuICAgIFwibWx4c3dfcGNpX2Fxc19maW5pXCIsXG4gICAgXCJtbHhzd19wY2lfZmluaVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgZG91YmxlIGBuYXBpX2Rpc2FibGVgIGFuZCBhIG1pc3NpbmcgYHRhc2tsZXRfa2lsbGAgZHVyaW5nIHRoZSB0ZWFyZG93biBvZiB0aGUgTWVsbGFub3ggc3dpdGNoIFBDSSBkcml2ZXIgKGBtbHhzd2ApLiBJdCBhZGRzIGEgYG5hcGlfZW5hYmxlZGAgZmxhZyBhbmQgYSBuZXcgZnVuY3Rpb24gYG1seHN3X3BjaV9jcV9uYXBpX2Rpc2FibGVgLiBUaGlzIG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGRyaXZlciBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgdGhlIHRlYXJkb3duIHBhdGhzIGFyZSByb2J1c3QuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowq9547[1] Phase: Succeeded StartedAt: 2026-07-22 08:34:20 +0000 UTC FinishedAt: 2026-07-22 08:34:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq9547[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-22 08:34:20 +0000 UTC FinishedAt: 2026-07-22 08:34:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq9547[2] Phase: Succeeded StartedAt: 2026-07-22 08:34:20 +0000 UTC FinishedAt: 2026-07-22 11:43:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq9547[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e1a9d3cc11829c5414a75eb39c704f461936eb24","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLXSW_CORE","MLXSW_PCI","MLXSW_SPECTRUM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mlxsw_pci_cq_napi_disable","mlxsw_pci_cq_init","mlxsw_pci_cq_fini","mlxsw_pci_aqs_fini","mlxsw_pci_fini"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e1a9d3cc11829c5414a75eb39c704f461936eb24","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLXSW_CORE","MLXSW_PCI","MLXSW_SPECTRUM"],"series_id":"584f3ff7-c185-46ec-a0f8-51ed34cff25d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-22 08:34:20 +0000 UTC FinishedAt: 2026-07-22 11:43:27 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"e1a9d3cc11829c5414a75eb39c704f461936eb24","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLXSW_CORE","MLXSW_PCI","MLXSW_SPECTRUM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mlxsw_pci_cq_napi_disable","mlxsw_pci_cq_init","mlxsw_pci_cq_fini","mlxsw_pci_aqs_fini","mlxsw_pci_fini"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"e1a9d3cc11829c5414a75eb39c704f461936eb24","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLXSW_CORE","MLXSW_PCI","MLXSW_SPECTRUM"],"series_id":"584f3ff7-c185-46ec-a0f8-51ed34cff25d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowq9547[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e1a9d3cc11829c5414a75eb39c704f461936eb24","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLXSW_CORE","MLXSW_PCI","MLXSW_SPECTRUM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mlxsw_pci_cq_napi_disable","mlxsw_pci_cq_init","mlxsw_pci_cq_fini","mlxsw_pci_aqs_fini","mlxsw_pci_fini"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e1a9d3cc11829c5414a75eb39c704f461936eb24","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLXSW_CORE","MLXSW_PCI","MLXSW_SPECTRUM"],"series_id":"584f3ff7-c185-46ec-a0f8-51ed34cff25d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-22 08:34:20 +0000 UTC FinishedAt: 2026-07-22 08:34:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq9547[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e1a9d3cc11829c5414a75eb39c704f461936eb24","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLXSW_CORE","MLXSW_PCI","MLXSW_SPECTRUM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mlxsw_pci_cq_napi_disable","mlxsw_pci_cq_init","mlxsw_pci_cq_fini","mlxsw_pci_aqs_fini","mlxsw_pci_fini"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e1a9d3cc11829c5414a75eb39c704f461936eb24","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLXSW_CORE","MLXSW_PCI","MLXSW_SPECTRUM"],"series_id":"584f3ff7-c185-46ec-a0f8-51ed34cff25d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-22 08:34:20 +0000 UTC FinishedAt: 2026-07-22 08:34:27 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"e1a9d3cc11829c5414a75eb39c704f461936eb24","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLXSW_CORE","MLXSW_PCI","MLXSW_SPECTRUM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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-workflowq9547/series-workflowq9547-convert-artifact-3674842847/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowq9547[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e1a9d3cc11829c5414a75eb39c704f461936eb24","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLXSW_CORE","MLXSW_PCI","MLXSW_SPECTRUM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mlxsw_pci_cq_napi_disable","mlxsw_pci_cq_init","mlxsw_pci_cq_fini","mlxsw_pci_aqs_fini","mlxsw_pci_fini"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e1a9d3cc11829c5414a75eb39c704f461936eb24","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLXSW_CORE","MLXSW_PCI","MLXSW_SPECTRUM"],"series_id":"584f3ff7-c185-46ec-a0f8-51ed34cff25d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-22 08:34:31 +0000 UTC FinishedAt: 2026-07-22 09:31:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq9547[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e1a9d3cc11829c5414a75eb39c704f461936eb24","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLXSW_CORE","MLXSW_PCI","MLXSW_SPECTRUM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mlxsw_pci_cq_napi_disable","mlxsw_pci_cq_init","mlxsw_pci_cq_fini","mlxsw_pci_aqs_fini","mlxsw_pci_fini"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e1a9d3cc11829c5414a75eb39c704f461936eb24","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLXSW_CORE","MLXSW_PCI","MLXSW_SPECTRUM"],"series_id":"584f3ff7-c185-46ec-a0f8-51ed34cff25d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-22 08:34:31 +0000 UTC FinishedAt: 2026-07-22 09:31:36 +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:*0d6eff05-58df-4058-a9e8-1cd10ba5604c,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-workflowq9547/series-workflowq9547-convert-artifact-3674842847/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": "f55d19b7-20e8-44b3-a960-c2c9020448eb", "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-workflowq9547/series-workflowq9547-build-action-1746701285/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowq9547[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e1a9d3cc11829c5414a75eb39c704f461936eb24","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLXSW_CORE","MLXSW_PCI","MLXSW_SPECTRUM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mlxsw_pci_cq_napi_disable","mlxsw_pci_cq_init","mlxsw_pci_cq_fini","mlxsw_pci_aqs_fini","mlxsw_pci_fini"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e1a9d3cc11829c5414a75eb39c704f461936eb24","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLXSW_CORE","MLXSW_PCI","MLXSW_SPECTRUM"],"series_id":"584f3ff7-c185-46ec-a0f8-51ed34cff25d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-22 08:34:31 +0000 UTC FinishedAt: 2026-07-22 09:31:26 +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:*0d6eff05-58df-4058-a9e8-1cd10ba5604c,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-workflowq9547/series-workflowq9547-convert-artifact-3674842847/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": "f55d19b7-20e8-44b3-a960-c2c9020448eb", "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-workflowq9547/series-workflowq9547-build-action-1746701285/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowq9547[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e1a9d3cc11829c5414a75eb39c704f461936eb24","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLXSW_CORE","MLXSW_PCI","MLXSW_SPECTRUM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mlxsw_pci_cq_napi_disable","mlxsw_pci_cq_init","mlxsw_pci_cq_fini","mlxsw_pci_aqs_fini","mlxsw_pci_fini"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e1a9d3cc11829c5414a75eb39c704f461936eb24","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLXSW_CORE","MLXSW_PCI","MLXSW_SPECTRUM"],"series_id":"584f3ff7-c185-46ec-a0f8-51ed34cff25d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-22 09:31:36 +0000 UTC FinishedAt: 2026-07-22 09:31:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq9547[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e1a9d3cc11829c5414a75eb39c704f461936eb24","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLXSW_CORE","MLXSW_PCI","MLXSW_SPECTRUM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mlxsw_pci_cq_napi_disable","mlxsw_pci_cq_init","mlxsw_pci_cq_fini","mlxsw_pci_aqs_fini","mlxsw_pci_fini"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e1a9d3cc11829c5414a75eb39c704f461936eb24","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLXSW_CORE","MLXSW_PCI","MLXSW_SPECTRUM"],"series_id":"584f3ff7-c185-46ec-a0f8-51ed34cff25d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-22 09:31:36 +0000 UTC FinishedAt: 2026-07-22 09:31:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq9547[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e1a9d3cc11829c5414a75eb39c704f461936eb24","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLXSW_CORE","MLXSW_PCI","MLXSW_SPECTRUM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mlxsw_pci_cq_napi_disable","mlxsw_pci_cq_init","mlxsw_pci_cq_fini","mlxsw_pci_aqs_fini","mlxsw_pci_fini"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e1a9d3cc11829c5414a75eb39c704f461936eb24","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLXSW_CORE","MLXSW_PCI","MLXSW_SPECTRUM"],"series_id":"584f3ff7-c185-46ec-a0f8-51ed34cff25d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-22 09:31:36 +0000 UTC FinishedAt: 2026-07-22 09:31:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq9547[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e1a9d3cc11829c5414a75eb39c704f461936eb24","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLXSW_CORE","MLXSW_PCI","MLXSW_SPECTRUM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mlxsw_pci_cq_napi_disable","mlxsw_pci_cq_init","mlxsw_pci_cq_fini","mlxsw_pci_aqs_fini","mlxsw_pci_fini"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e1a9d3cc11829c5414a75eb39c704f461936eb24","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLXSW_CORE","MLXSW_PCI","MLXSW_SPECTRUM"],"series_id":"584f3ff7-c185-46ec-a0f8-51ed34cff25d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-22 09:31:36 +0000 UTC FinishedAt: 2026-07-22 09:31:44 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"e1a9d3cc11829c5414a75eb39c704f461936eb24","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLXSW_CORE","MLXSW_PCI","MLXSW_SPECTRUM"],"series_id":"584f3ff7-c185-46ec-a0f8-51ed34cff25d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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-workflowq9547/series-workflowq9547-convert-artifact-2619244654/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowq9547[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e1a9d3cc11829c5414a75eb39c704f461936eb24","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLXSW_CORE","MLXSW_PCI","MLXSW_SPECTRUM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mlxsw_pci_cq_napi_disable","mlxsw_pci_cq_init","mlxsw_pci_cq_fini","mlxsw_pci_aqs_fini","mlxsw_pci_fini"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e1a9d3cc11829c5414a75eb39c704f461936eb24","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLXSW_CORE","MLXSW_PCI","MLXSW_SPECTRUM"],"series_id":"584f3ff7-c185-46ec-a0f8-51ed34cff25d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-22 09:31:46 +0000 UTC FinishedAt: 2026-07-22 09:34:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq9547[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e1a9d3cc11829c5414a75eb39c704f461936eb24","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLXSW_CORE","MLXSW_PCI","MLXSW_SPECTRUM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mlxsw_pci_cq_napi_disable","mlxsw_pci_cq_init","mlxsw_pci_cq_fini","mlxsw_pci_aqs_fini","mlxsw_pci_fini"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e1a9d3cc11829c5414a75eb39c704f461936eb24","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLXSW_CORE","MLXSW_PCI","MLXSW_SPECTRUM"],"series_id":"584f3ff7-c185-46ec-a0f8-51ed34cff25d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-22 09:31:46 +0000 UTC FinishedAt: 2026-07-22 09:34:06 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*f55d19b7-20e8-44b3-a960-c2c9020448eb,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-workflowq9547/series-workflowq9547-build-action-1746701285/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-workflowq9547[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e1a9d3cc11829c5414a75eb39c704f461936eb24","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLXSW_CORE","MLXSW_PCI","MLXSW_SPECTRUM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mlxsw_pci_cq_napi_disable","mlxsw_pci_cq_init","mlxsw_pci_cq_fini","mlxsw_pci_aqs_fini","mlxsw_pci_fini"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e1a9d3cc11829c5414a75eb39c704f461936eb24","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLXSW_CORE","MLXSW_PCI","MLXSW_SPECTRUM"],"series_id":"584f3ff7-c185-46ec-a0f8-51ed34cff25d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-22 09:34:16 +0000 UTC FinishedAt: 2026-07-22 09:34:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq9547[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e1a9d3cc11829c5414a75eb39c704f461936eb24","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLXSW_CORE","MLXSW_PCI","MLXSW_SPECTRUM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mlxsw_pci_cq_napi_disable","mlxsw_pci_cq_init","mlxsw_pci_cq_fini","mlxsw_pci_aqs_fini","mlxsw_pci_fini"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e1a9d3cc11829c5414a75eb39c704f461936eb24","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLXSW_CORE","MLXSW_PCI","MLXSW_SPECTRUM"],"series_id":"584f3ff7-c185-46ec-a0f8-51ed34cff25d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-22 09:34:16 +0000 UTC FinishedAt: 2026-07-22 09:34:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq9547[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e1a9d3cc11829c5414a75eb39c704f461936eb24","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLXSW_CORE","MLXSW_PCI","MLXSW_SPECTRUM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mlxsw_pci_cq_napi_disable","mlxsw_pci_cq_init","mlxsw_pci_cq_fini","mlxsw_pci_aqs_fini","mlxsw_pci_fini"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e1a9d3cc11829c5414a75eb39c704f461936eb24","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLXSW_CORE","MLXSW_PCI","MLXSW_SPECTRUM"],"series_id":"584f3ff7-c185-46ec-a0f8-51ed34cff25d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-22 09:34:16 +0000 UTC FinishedAt: 2026-07-22 10:49:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq9547[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e1a9d3cc11829c5414a75eb39c704f461936eb24","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLXSW_CORE","MLXSW_PCI","MLXSW_SPECTRUM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mlxsw_pci_cq_napi_disable","mlxsw_pci_cq_init","mlxsw_pci_cq_fini","mlxsw_pci_aqs_fini","mlxsw_pci_fini"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e1a9d3cc11829c5414a75eb39c704f461936eb24","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLXSW_CORE","MLXSW_PCI","MLXSW_SPECTRUM"],"series_id":"584f3ff7-c185-46ec-a0f8-51ed34cff25d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-22 09:34:16 +0000 UTC FinishedAt: 2026-07-22 10:49:11 +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:*0d6eff05-58df-4058-a9e8-1cd10ba5604c,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-workflowq9547/series-workflowq9547-convert-artifact-2619244654/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": "47ee3321-71ba-469d-83b1-340fa56c7270", "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-workflowq9547/series-workflowq9547-build-action-2454212994/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowq9547[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e1a9d3cc11829c5414a75eb39c704f461936eb24","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLXSW_CORE","MLXSW_PCI","MLXSW_SPECTRUM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mlxsw_pci_cq_napi_disable","mlxsw_pci_cq_init","mlxsw_pci_cq_fini","mlxsw_pci_aqs_fini","mlxsw_pci_fini"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e1a9d3cc11829c5414a75eb39c704f461936eb24","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLXSW_CORE","MLXSW_PCI","MLXSW_SPECTRUM"],"series_id":"584f3ff7-c185-46ec-a0f8-51ed34cff25d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-22 09:34:16 +0000 UTC FinishedAt: 2026-07-22 10:49:01 +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:*0d6eff05-58df-4058-a9e8-1cd10ba5604c,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-workflowq9547/series-workflowq9547-convert-artifact-2619244654/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": "47ee3321-71ba-469d-83b1-340fa56c7270", "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-workflowq9547/series-workflowq9547-build-action-2454212994/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowq9547[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e1a9d3cc11829c5414a75eb39c704f461936eb24","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLXSW_CORE","MLXSW_PCI","MLXSW_SPECTRUM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mlxsw_pci_cq_napi_disable","mlxsw_pci_cq_init","mlxsw_pci_cq_fini","mlxsw_pci_aqs_fini","mlxsw_pci_fini"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e1a9d3cc11829c5414a75eb39c704f461936eb24","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLXSW_CORE","MLXSW_PCI","MLXSW_SPECTRUM"],"series_id":"584f3ff7-c185-46ec-a0f8-51ed34cff25d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-22 10:49:11 +0000 UTC FinishedAt: 2026-07-22 10:49:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq9547[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e1a9d3cc11829c5414a75eb39c704f461936eb24","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLXSW_CORE","MLXSW_PCI","MLXSW_SPECTRUM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mlxsw_pci_cq_napi_disable","mlxsw_pci_cq_init","mlxsw_pci_cq_fini","mlxsw_pci_aqs_fini","mlxsw_pci_fini"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e1a9d3cc11829c5414a75eb39c704f461936eb24","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLXSW_CORE","MLXSW_PCI","MLXSW_SPECTRUM"],"series_id":"584f3ff7-c185-46ec-a0f8-51ed34cff25d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-22 10:49:11 +0000 UTC FinishedAt: 2026-07-22 10:49:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq9547[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e1a9d3cc11829c5414a75eb39c704f461936eb24","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLXSW_CORE","MLXSW_PCI","MLXSW_SPECTRUM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mlxsw_pci_cq_napi_disable","mlxsw_pci_cq_init","mlxsw_pci_cq_fini","mlxsw_pci_aqs_fini","mlxsw_pci_fini"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e1a9d3cc11829c5414a75eb39c704f461936eb24","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLXSW_CORE","MLXSW_PCI","MLXSW_SPECTRUM"],"series_id":"584f3ff7-c185-46ec-a0f8-51ed34cff25d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-22 10:49:11 +0000 UTC FinishedAt: 2026-07-22 10:51:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq9547[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e1a9d3cc11829c5414a75eb39c704f461936eb24","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLXSW_CORE","MLXSW_PCI","MLXSW_SPECTRUM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mlxsw_pci_cq_napi_disable","mlxsw_pci_cq_init","mlxsw_pci_cq_fini","mlxsw_pci_aqs_fini","mlxsw_pci_fini"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e1a9d3cc11829c5414a75eb39c704f461936eb24","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLXSW_CORE","MLXSW_PCI","MLXSW_SPECTRUM"],"series_id":"584f3ff7-c185-46ec-a0f8-51ed34cff25d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-22 10:49:11 +0000 UTC FinishedAt: 2026-07-22 10:50:50 +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:*47ee3321-71ba-469d-83b1-340fa56c7270,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-workflowq9547/series-workflowq9547-build-action-2454212994/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-workflowq9547[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e1a9d3cc11829c5414a75eb39c704f461936eb24","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLXSW_CORE","MLXSW_PCI","MLXSW_SPECTRUM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mlxsw_pci_cq_napi_disable","mlxsw_pci_cq_init","mlxsw_pci_cq_fini","mlxsw_pci_aqs_fini","mlxsw_pci_fini"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e1a9d3cc11829c5414a75eb39c704f461936eb24","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLXSW_CORE","MLXSW_PCI","MLXSW_SPECTRUM"],"series_id":"584f3ff7-c185-46ec-a0f8-51ed34cff25d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-22 10:51:00 +0000 UTC FinishedAt: 2026-07-22 11:43:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq9547[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e1a9d3cc11829c5414a75eb39c704f461936eb24","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLXSW_CORE","MLXSW_PCI","MLXSW_SPECTRUM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mlxsw_pci_cq_napi_disable","mlxsw_pci_cq_init","mlxsw_pci_cq_fini","mlxsw_pci_aqs_fini","mlxsw_pci_fini"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e1a9d3cc11829c5414a75eb39c704f461936eb24","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLXSW_CORE","MLXSW_PCI","MLXSW_SPECTRUM"],"series_id":"584f3ff7-c185-46ec-a0f8-51ed34cff25d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-22 10:51:00 +0000 UTC FinishedAt: 2026-07-22 11:43:27 +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-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mlxsw_pci_cq_napi_disable","mlxsw_pci_cq_init","mlxsw_pci_cq_fini","mlxsw_pci_aqs_fini","mlxsw_pci_fini"],"skip_cover_check":false},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:*f55d19b7-20e8-44b3-a960-c2c9020448eb,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*47ee3321-71ba-469d-83b1-340fa56c7270,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-workflowq9547/series-workflowq9547-build-action-1746701285/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-workflowq9547/series-workflowq9547-build-action-2454212994/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowq9547[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e1a9d3cc11829c5414a75eb39c704f461936eb24","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLXSW_CORE","MLXSW_PCI","MLXSW_SPECTRUM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mlxsw_pci_cq_napi_disable","mlxsw_pci_cq_init","mlxsw_pci_cq_fini","mlxsw_pci_aqs_fini","mlxsw_pci_fini"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e1a9d3cc11829c5414a75eb39c704f461936eb24","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLXSW_CORE","MLXSW_PCI","MLXSW_SPECTRUM"],"series_id":"584f3ff7-c185-46ec-a0f8-51ed34cff25d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-22 10:51:00 +0000 UTC FinishedAt: 2026-07-22 10:51:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq9547[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e1a9d3cc11829c5414a75eb39c704f461936eb24","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLXSW_CORE","MLXSW_PCI","MLXSW_SPECTRUM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mlxsw_pci_cq_napi_disable","mlxsw_pci_cq_init","mlxsw_pci_cq_fini","mlxsw_pci_aqs_fini","mlxsw_pci_fini"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e1a9d3cc11829c5414a75eb39c704f461936eb24","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLXSW_CORE","MLXSW_PCI","MLXSW_SPECTRUM"],"series_id":"584f3ff7-c185-46ec-a0f8-51ed34cff25d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-22 10:51:00 +0000 UTC FinishedAt: 2026-07-22 10:51:05 +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-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mlxsw_pci_cq_napi_disable","mlxsw_pci_cq_init","mlxsw_pci_cq_fini","mlxsw_pci_aqs_fini","mlxsw_pci_fini"],"skip_cover_check":false},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-workflowq9547/series-workflowq9547-convert-artifact-2467616787/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowq9547[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e1a9d3cc11829c5414a75eb39c704f461936eb24","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLXSW_CORE","MLXSW_PCI","MLXSW_SPECTRUM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mlxsw_pci_cq_napi_disable","mlxsw_pci_cq_init","mlxsw_pci_cq_fini","mlxsw_pci_aqs_fini","mlxsw_pci_fini"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e1a9d3cc11829c5414a75eb39c704f461936eb24","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLXSW_CORE","MLXSW_PCI","MLXSW_SPECTRUM"],"series_id":"584f3ff7-c185-46ec-a0f8-51ed34cff25d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-22 10:51:00 +0000 UTC FinishedAt: 2026-07-22 10:51:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq9547[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e1a9d3cc11829c5414a75eb39c704f461936eb24","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLXSW_CORE","MLXSW_PCI","MLXSW_SPECTRUM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mlxsw_pci_cq_napi_disable","mlxsw_pci_cq_init","mlxsw_pci_cq_fini","mlxsw_pci_aqs_fini","mlxsw_pci_fini"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e1a9d3cc11829c5414a75eb39c704f461936eb24","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLXSW_CORE","MLXSW_PCI","MLXSW_SPECTRUM"],"series_id":"584f3ff7-c185-46ec-a0f8-51ed34cff25d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-22 10:51:00 +0000 UTC FinishedAt: 2026-07-22 10:51:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq9547[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e1a9d3cc11829c5414a75eb39c704f461936eb24","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLXSW_CORE","MLXSW_PCI","MLXSW_SPECTRUM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mlxsw_pci_cq_napi_disable","mlxsw_pci_cq_init","mlxsw_pci_cq_fini","mlxsw_pci_aqs_fini","mlxsw_pci_fini"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e1a9d3cc11829c5414a75eb39c704f461936eb24","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLXSW_CORE","MLXSW_PCI","MLXSW_SPECTRUM"],"series_id":"584f3ff7-c185-46ec-a0f8-51ed34cff25d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-22 10:51:00 +0000 UTC FinishedAt: 2026-07-22 10:51:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq9547[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e1a9d3cc11829c5414a75eb39c704f461936eb24","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLXSW_CORE","MLXSW_PCI","MLXSW_SPECTRUM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mlxsw_pci_cq_napi_disable","mlxsw_pci_cq_init","mlxsw_pci_cq_fini","mlxsw_pci_aqs_fini","mlxsw_pci_fini"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e1a9d3cc11829c5414a75eb39c704f461936eb24","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLXSW_CORE","MLXSW_PCI","MLXSW_SPECTRUM"],"series_id":"584f3ff7-c185-46ec-a0f8-51ed34cff25d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-22 10:51:10 +0000 UTC FinishedAt: 2026-07-22 11:43:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq9547[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e1a9d3cc11829c5414a75eb39c704f461936eb24","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLXSW_CORE","MLXSW_PCI","MLXSW_SPECTRUM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mlxsw_pci_cq_napi_disable","mlxsw_pci_cq_init","mlxsw_pci_cq_fini","mlxsw_pci_aqs_fini","mlxsw_pci_fini"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e1a9d3cc11829c5414a75eb39c704f461936eb24","config_name":"upstream-apparmor-kasan.config","enable_configs":["MLXSW_CORE","MLXSW_PCI","MLXSW_SPECTRUM"],"series_id":"584f3ff7-c185-46ec-a0f8-51ed34cff25d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-22 10:51:10 +0000 UTC FinishedAt: 2026-07-22 11:43:16 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*f55d19b7-20e8-44b3-a960-c2c9020448eb,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*47ee3321-71ba-469d-83b1-340fa56c7270,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-workflowq9547/series-workflowq9547-build-action-1746701285/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-workflowq9547/series-workflowq9547-build-action-2454212994/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-workflowq9547/series-workflowq9547-convert-artifact-2467616787/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,}