PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMCBUcmFuc2l0aW9uYWwvL0VOIj4KPCEtLSBzYXZlZCBmcm9tIHVybD0oMDA2MylodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2dyYXBoL2RvYy9jdXRoaWxsX21ja2VlX29yZGVyaW5nLmh0bWwgLS0+CjxIVE1MPjxIRUFEPjxUSVRMRT5Cb29zdCBHcmFwaCBMaWJyYXJ5OiBTbG9hbiBPcmRlcmluZzwvVElUTEU+CjxNRVRBIGh0dHAtZXF1aXY9Q29udGVudC1UeXBlIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD13aW5kb3dzLTEyNTIiPjwhLS0KICAtLSBDb3B5cmlnaHQgKGMpIEplcmVteSBTaWVrIDIwMDAKICAtLQogIC0tIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KICAtLSAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0CiAgLS0gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQogIC0tPgo8TUVUQSBjb250ZW50PSJNU0hUTUwgNi4wMC4yNzE1LjQwMCIgbmFtZT1HRU5FUkFUT1I+PC9IRUFEPgo8Qk9EWSB0ZXh0PSMwMDAwMDAgdkxpbms9IzU1MWE4YiBhTGluaz0jZmYwMDAwIGxpbms9IzAwMDBlZSBiZ0NvbG9yPSNmZmZmZmY+CjxJTUcgU1JDPSIuLi8uLi8uLi9ib29zdC5wbmciIAogICAgIEFMVD0iQysrIEJvb3N0IiB3aWR0aD0iMjc3IiBoZWlnaHQ9Ijg2Ij4gPEJSPgo8SDE+PEEgbmFtZT1zZWM6YmZzPjwvYT48dHQ+c2xvYW5fb3JkZXJpbmc8L3R0PjwvSDE+CjxQPgo8RElWIGFsaWduPWxlZnQ+CjxUQUJMRSBjZWxsUGFkZGluZz0zIGJvcmRlcj0xPgogIDxUQk9EWT4KICA8VFI+CiAgICA8VEggYWxpZ249bGVmdD48Qj5HcmFwaHM6PC9CPjwvVEg+CiAgICA8VEQgYWxpZ249bGVmdD51bmRpcmVjdGVkPC9URD48L1RSPgogIDxUUj4KICAgIDxUSCBhbGlnbj1sZWZ0PjxCPlByb3BlcnRpZXM6PC9CPjwvVEg+CiAgICAgIDxURCBhbGlnbj1sZWZ0PmNvbG9yLCBkZWdyZWUsIGN1cnJlbnRfZGVncmVlLCBwcmlvcml0eTwvVEQ+CiAgICA8L1RSPgogIDxUUj4KICAgIDxUSCBhbGlnbj1sZWZ0PjxCPkNvbXBsZXhpdHk6PC9CPjwvVEg+CiAgICA8VEQgYWxpZ249bGVmdD50aW1lOiA8ST5PKGxvZyhtKXxFfCk8L0k+IHdoZXJlIDxJPm0gPSBtYXggeyBkZWdyZWUodikgfCB2IAogICAgICBpbiBWIH08L0k+IDwvVEQ+PC9UUj48L1RCT0RZPjwvVEFCTEU+PC9ESVY+CjxQUkU+ICAoMSkKICB0ZW1wbGF0ZSAmbHQ7Y2xhc3MgR3JhcGgsIGNsYXNzIE91dHB1dEl0ZXJhdG9yLAogICAgICAgICAgICAgICAgICBjbGFzcyBDb2xvck1hcCwgY2xhc3MgRGVncmVlTWFwLCAKICAgICAgICAgICAgICAgICAgY2xhc3MgUHJpb3JpdHlNYXAsIGNsYXNzIFdlaWdodCZndDsKICBPdXRwdXRJdGVyYXRvcgogIHNsb2FuX29yZGVyaW5nKEdyYXBoJmFtcDsgZywKICAgICAgICAgICAgICAgICB0eXBlbmFtZSBncmFwaF90cmFpdHMmbHQ7R3JhcGgmZ3Q7Ojp2ZXJ0ZXhfZGVzY3JpcHRvciBzLAogICAgICAgICAgICAgICAgIHR5cGVuYW1lIGdyYXBoX3RyYWl0cyZsdDtHcmFwaCZndDs6OnZlcnRleF9kZXNjcmlwdG9yIGUsCiAgICAgICAgICAgICAgICAgT3V0cHV0SXRlcmF0b3IgcGVybXV0YXRpb24sIAogICAgICAgICAgICAgICAgIENvbG9yTWFwIGNvbG9yLCAKICAgICAgICAgICAgICAgICBEZWdyZWVNYXAgZGVncmVlLCAKICAgICAgICAgICAgICAgICBQcmlvcml0eU1hcCBwcmlvcml0eSwgCiAgICAgICAgICAgICAgICAgV2VpZ2h0IFcxLCAKICAgICAgICAgICAgICAgICBXZWlnaHQgVzIgKQoKICAoMikKICAgdGVtcGxhdGUgJmx0O2NsYXNzIEdyYXBoLCBjbGFzcyBPdXRwdXRJdGVyYXRvciwKICAgICAgICAgICAgICAgICAgY2xhc3MgQ29sb3JNYXAsIGNsYXNzIERlZ3JlZU1hcCwgCiAgICAgICAgICAgICAgICAgIGNsYXNzIFByaW9yaXR5TWFwLCBjbGFzcyBXZWlnaHQmZ3Q7CiAgT3V0cHV0SXRlcmF0b3IKICBzbG9hbl9vcmRlcmluZyhHcmFwaCZhbXA7IGcsCiAgICAgICAgICAgICAgICAgT3V0cHV0SXRlcmF0b3IgcGVybXV0YXRpb24sIAogICAgICAgICAgICAgICAgIENvbG9yTWFwIGNvbG9yLCAKICAgICAgICAgICAgICAgICBEZWdyZWVNYXAgZGVncmVlLCAKICAgICAgICAgICAgICAgICBQcmlvcml0eU1hcCBwcmlvcml0eSwgCiAgICAgICAgICAgICAgICAgV2VpZ2h0IFcxLCAKICAgICAgICAgICAgICAgICBXZWlnaHQgVzIgKQoKCigzKQogdGVtcGxhdGUgJmx0O2NsYXNzIEdyYXBoLCBjbGFzcyBPdXRwdXRJdGVyYXRvciwKICAgICAgICAgICAgICAgICAgY2xhc3MgQ29sb3JNYXAsIGNsYXNzIERlZ3JlZU1hcCwgCiAgICAgICAgICAgICAgICAgIGNsYXNzIFByaW9yaXR5TWFwJmd0OwogIE91dHB1dEl0ZXJhdG9yCiAgc2xvYW5fb3JkZXJpbmcoR3JhcGgmYW1wOyBnLAogICAgICAgICAgICAgICAgIHR5cGVuYW1lIGdyYXBoX3RyYWl0cyZsdDtHcmFwaCZndDs6OnZlcnRleF9kZXNjcmlwdG9yIHMsCiAgICAgICAgICAgICAgICAgdHlwZW5hbWUgZ3JhcGhfdHJhaXRzJmx0O0dyYXBoJmd0Ozo6dmVydGV4X2Rlc2NyaXB0b3IgZSwKICAgICAgICAgICAgICAgICBPdXRwdXRJdGVyYXRvciBwZXJtdXRhdGlvbiwgCiAgICAgICAgICAgICAgICAgQ29sb3JNYXAgY29sb3IsIAogICAgICAgICAgICAgICAgIERlZ3JlZU1hcCBkZWdyZWUsIAogICAgICAgICAgICAgICAgIFByaW9yaXR5TWFwIHByaW9yaXR5ICkKCgooNCkKIHRlbXBsYXRlICZsdDtjbGFzcyBHcmFwaCwgY2xhc3MgT3V0cHV0SXRlcmF0b3IsCiAgICAgICAgICAgICAgICAgIGNsYXNzIENvbG9yTWFwLCBjbGFzcyBEZWdyZWVNYXAsIAogICAgICAgICAgICAgICAgICBjbGFzcyBQcmlvcml0eU1hcCZndDsKICBPdXRwdXRJdGVyYXRvcgogIHNsb2FuX29yZGVyaW5nKEdyYXBoJmFtcDsgZywKICAgICAgICAgICAgICAgICBPdXRwdXRJdGVyYXRvciBwZXJtdXRhdGlvbiwgCiAgICAgICAgICAgICAgICAgQ29sb3JNYXAgY29sb3IsIAogICAgICAgICAgICAgICAgIERlZ3JlZU1hcCBkZWdyZWUsIAogICAgICAgICAgICAgICAgIFByaW9yaXR5TWFwIHByaW9yaXR5ICk8L1BSRT4KPHA+VGhlIGdvYWwgb2YgdGhlIFNsb2FuIG9yZGVyaW5nIGFsZ29yaXRobVsxLCAyXSBpcyB0byByZWR1Y2UgdGhlIHByb2ZpbGUgYW5kIAogIHRoZSB3YXZlZnJvbnQgb2YgYSBncmFwaCBieSByZW9yZGVyaW5nIHRoZSBpbmRpY2VzIGFzc2lnbmVkIHRvIGVhY2ggdmVydGV4LiAKICBUaGUgU2xvYW4gYWxnb3JpdGhtIG5lZWRzIGEgc3RhcnQgYW5kIGFuIGVuZCB2ZXJ0ZXguIFRoZXNlIHZlcnRpY2VzIGNhbiBiZSBhc2lnbmVkIAogIG1hbnVhbGx5LiBCdXQgdGhlcmUgaXMgYWxzbyBhbiBhbGdvcml0aG0gc2xvYW5fc3RhcnRpbmdfbm9kZXMgdGhhdCBwcm92aWRlcyAKICB1c3VhbGx5IHF1aXRlIGdvb2Qgc3RhcnQgYW5kIGVuZCB2ZXJ0aWNlcy4gRWFjaCB2ZXJ0ZXggaXMgYXNpZ25lZCB3aXRoIGEgcHJpb3JpdHkuIAogIFRoaXMgcHJpb3JpdHkgaXMgYSB3ZWlnaHRlZCBzdW0gb2YgdGhlIGRpc3RhbmNlIG9mIHRoZSB2ZWN0b3IgdG8gdGhlIGVuZCB2ZXJ0ZXggCiAgKGEgZ2xvYmFsIGNyaXRlcmlvbikgYW5kIGlzIGNhbGxlZCB0aGUgY3VycmVudCBkZWdyZWUgb2YgdmVydGV4LiBUaGlzIGN1cnJlbnQgCiAgZGVncmVlIGJhc2ljYWxseSByZWZsZWN0cyB0aGUgc3RhdHVzIG9mIHRoZSByZW51bWJlcmluZyBpbiB0aGUgbmVpZ2hib3Job29kIAogIG9mIGEgdmVydGV4IChhIGxvY2FsIGNyaXRlcmlvbikuIFRoZXJlZm9yZSB0aGUgU2xvYW4gYWxnb3JpdGhtIChpbiBjb250cmFzdCAKICB0by1NY0tlZSkgdGFrZXMgaW50byBhY2NvdW50IGxvY2FsIGFzIHdlbGwgYXMgZ2xvYmFsIGNyaXRlcmlhIGZvciB0aGUgcmVudW1iZXJpbmcgCiAgc2VxdWVuY2UuIE9uZSBjYW4gcGxheSBhcm91bmQgd2l0aCB0aGUgcmVsYXRpdmUgd2VpZ2h0cywgYnV0IHRoZSBkZWZhdWx0IHZhbHVlcyAKICBwcm9wb3NlZCBieSBTbG9hbiAod2VpZ2h0MS93ZWlnaHQyPTEvMikgdHVybiBvdXQgdG8gYmUgcHJldHR5IGdvb2QgaW4gbW9zdCBjYXNlcy4gCjwvcD4KPFA+VmVyc2lvbiAxIG9mIHRoZSBhbGdvcml0aG0gbGV0cyB0aGUgdXNlciBjaG9vc2UgdGhlIHN0YXJ0LSBhbmQgZW5kLXZlcnRleCB3aGVyZWFzIAogIHZlcnNpb24gMiBmaW5kcyBhIGdvb2Qgc3RhcnRpbmcgdmVydGV4IHVzaW5nIHRoZSBhbHJlYWR5IG1lbnRpb25lZCBzbG9hbl9zdGFydGluZ19ub2RlIAogIGFsZ29yaXRobS4gVGhlIGNob2ljZSBvZiB0aGVzZSB2ZXJ0aWNlcyBjYW4gaGF2ZSBhIHNpZ25pZmljYW50IGVmZmVjdCBvbiB0aGUgCiAgcXVhbGl0eSBvZiB0aGUgb3JkZXJpbmcuIFZlcnNpb24gMyBhbmQgNCBhcmUgaWRlbnRpY2FsIHRvIHZlcnNpb24gMSBhbmQgMiByZXNwZWN0aXZlbHksIAogIGV4Y2VwdCB0aGF0IGZvciB0aGUgd2VpZ2h0cyB0aGUgc3RhbmRhcmQgd2VpZ2h0cyBXMT0xIGFuZCBXMj0yIGFyZSB1c2VkLiAKPFA+VGhlIG91dHB1dCBvZiB0aGUgYWxnb3JpdGhtIGFyZSB0aGUgdmVydGljZXMgaW4gdGhlIG5ldyBvcmRlcmluZy4gRGVwZW5kaW5nIAogIG9uIHdoYXQga2luZCBvZiBvdXRwdXQgaXRlcmF0b3IgeW91IHVzZSwgeW91IGNhbiBnZXQgZWl0aGVyIHRoZSBTbG9hbiBvcmRlcmluZyAKICBvciB0aGUgcmV2ZXJzZSBTbG9hbiBvcmRlcmluZy4gRm9yIGV4YW1wbGUsIGlmIHlvdSBzdG9yZSB0aGUgb3V0cHV0IGludG8gYSB2ZWN0b3IgCiAgdXNpbmcgdGhlIHZlY3RvcidzIHJldmVyc2UgaXRlcmF0b3IsIHRoZW4geW91IGdldCB0aGUgcmV2ZXJzZSBTbG9hbiBvcmRlcmluZy4gCjxQUkU+ICBzdGQ6OnZlY3RvciZsdDt2ZXJ0ZXhfZGVzY3JpcHRvciZndDsgaW52X3Blcm0obnVtX3ZlcnRpY2VzKEcpKTsKICBzbG9hbl9vcmRlcmluZyhHLCBpbnZfcGVybS5yYmVnaW4oKSk7CjwvUFJFPgo8UD5FaXRoZXIgd2F5LCBzdG9yaW5nIHRoZSBvdXRwdXQgaW50byBhIHZlY3RvciBnaXZlcyB5b3UgdGhlIHBlcm11dGF0aW9uIGZyb20gCnRoZSBuZXcgb3JkZXJpbmcgdG8gdGhlIG9sZCBvcmRlcmluZy4gPFBSRT4gIGludl9wZXJtW25ld19pbmRleFt1XV0gPT0gdQo8L1BSRT4KPFA+U29tZXRpbWVzLCBpdCBpcyB0aGUgb3Bwb3NpdGUgcGVybXV0YXRpb24gdGhhdCB5b3Ugd2FudCwgdGhlIHBlcm11dGF0aW9uIGZyb20gCiAgdGhlIG9sZCBpbmRleCB0byB0aGUgbmV3IGluZGV4LiBUaGlzIGNhbiBlYXNpbHkgYmUgY29tcHV0ZWQgaW4gdGhlIGZvbGxvd2luZyAKICB3YXkuIAo8UFJFPiAgZm9yIChzaXplX3R5cGUgaSA9IDA7IGkgIT0gaW52X3Blcm0uc2l6ZSgpOyArK2kpCiAgICBwZXJtW29sZF9pbmRleFtpbnZfcGVybVtpXV1dID0gaTsKPC9QUkU+CjxwPlVzdWFsbHkgeW91IG5lZWQgdGhlIHJldmVyc2VkIG9yZGVyaW5nIHdpdGggdGhlIEN1dGhpbGwtTWNLZWUgYWxnb3JpdGhtIGFuZCAKICB0aGUgZGlyZWN0IG9yZGVyaW5nIHdpdGggdGhlIFNsb2FuIGFsZ29yaXRobS48L3A+CjxIMz5QYXJhbWV0ZXJzPC9IMz4KRm9yIHZlcnNpb24gMTogCjxVTD4KICA8TEk+PFRUPkdyYXBoJmFtcDsgZzwvVFQ+ICZuYnNwOyhJTikgPEJSPgogICAgQW4gdW5kaXJlY3RlZCBncmFwaC4gVGhlIGdyYXBoJ3MgdHlwZSBtdXN0IGJlIGEgbW9kZWwgb2YgPEEgCiAgaHJlZj0iLi9JbmNpZGVuY2VHcmFwaC5odG1sIj5JbmNpZGVuY2VHcmFwaDwvYT4uIAogIDxMST48VFQ+dmVydGV4X2Rlc2NyaXB0b3IgczwvVFQ+ICZuYnNwOyhJTikgPEJSPgogICAgVGhlIHN0YXJ0aW5nIHZlcnRleC4gCiAgPExJPjx0dD52ZXJ0ZXhfZGVzY3JpcHRvciBlPC90dD4mbmJzcDsoSU4pPGJyPgogICAgVGhlIGVuZGluZyB2ZXJ0ZXg8YnI+CiAgPExJPjxUVD5PdXRwdXRJdGVyYXRvciBwZXJtdXRhdGlvbjwvVFQ+ICZuYnNwOyhPVVQpIDxCUj4KICAgIFRoZSBuZXcgdmVydGV4IG9yZGVyaW5nLiBUaGUgdmVydGljZXMgYXJlIHdyaXR0ZW4gdG8gdGhlIDxhCiAgaHJlZj0iaHR0cDovL3d3dy5zZ2kuY29tL3RlY2gvc3RsL091dHB1dEl0ZXJhdG9yLmh0bWwiPm91dHB1dCBpdGVyYXRvcjwvYT4gaW4gCiAgICB0aGVpciBuZXcgb3JkZXIuIAogIDxMST48VFQ+Q29sb3JNYXAgY29sb3JfbWFwPC9UVD4gJm5ic3A7KFdPUkspIDxCUj4KICAgIFVzZWQgaW50ZXJuYWxseSB0byBrZWVwIHRyYWNrIG9mIHRoZSBwcm9ncmVzcyBvZiB0aGUgYWxnb3JpdGhtICh0byBhdm9pZCB2aXNpdGluZyAKICAgIHRoZSBzYW1lIHZlcnRleCB0d2ljZSkuIAogIDxMST48dHQ+UHJpb3JpdHlNYXAgcHJpb3JpdHlfbWFwPC90dD4gJm5ic3A7KElOKTxicj4KICAgIFVzZWQgaW50ZXJuYWxseSB0byBzdG9yZSB0aGUgcHJpb3JpdHkgZm9yIHJlbnVtYmVyaW5nIG9mIGVhY2ggdmVydGV4LiA8L0xJPgogIDxMST48VFQ+RGVncmVlTWFwIGRlZ3JlZV9tYXA8L1RUPiAmbmJzcDsoSU4pIDxCUj4KICAgIFRoaXMgbXVzdCBtYXAgdmVydGljZXMgdG8gdGhlaXIgZGVncmVlLiA8L0xJPgogIDxMST48dHQ+V2VpZ2h0IFcxICZhbXA7IFcyPC90dD4gJm5ic3A7KElOKSA8YnI+CiAgICBIZXVyaXN0aWNhbCB3ZWlnaHRzIGZvciB0aGUgU2xvYW4gYWxnb3JpdGhtLiA8L0xJPgo8L1VMPgo8cD5Gb3IgdmVyc2lvbiAyOiA8L3A+Cjx1bD4KICA8bGk+PHR0PkdyYXBoJmFtcDsgZzwvdHQ+ICZuYnNwOyhJTikgPGJyPgogICAgQW4gdW5kaXJlY3RlZCBncmFwaC4gVGhlIGdyYXBoJ3MgdHlwZSBtdXN0IGJlIGEgbW9kZWwgb2YgPGEgCiAgaHJlZj0iLi9JbmNpZGVuY2VHcmFwaC5odG1sIj5JbmNpZGVuY2VHcmFwaDwvYT4uPGJyPgogIDxsaT48dHQ+T3V0cHV0SXRlcmF0b3IgcGVybXV0YXRpb248L3R0PiAmbmJzcDsoT1VUKSA8YnI+CiAgICBUaGUgbmV3IHZlcnRleCBvcmRlcmluZy4gVGhlIHZlcnRpY2VzIGFyZSB3cml0dGVuIHRvIHRoZSA8YSAKICBocmVmPSJodHRwOi8vd3d3LnNnaS5jb20vdGVjaC9zdGwvT3V0cHV0SXRlcmF0b3IuaHRtbCI+b3V0cHV0IGl0ZXJhdG9yPC9hPiBpbiAKICAgIHRoZWlyIG5ldyBvcmRlci4gCiAgPGxpPjx0dD5Db2xvck1hcCBjb2xvcl9tYXA8L3R0PiAmbmJzcDsoV09SSykgPGJyPgogICAgVXNlZCBpbnRlcm5hbGx5IHRvIGtlZXAgdHJhY2sgb2YgdGhlIHByb2dyZXNzIG9mIHRoZSBhbGdvcml0aG0gKHRvIGF2b2lkIHZpc2l0aW5nIAogICAgdGhlIHNhbWUgdmVydGV4IHR3aWNlKS4gCiAgPGxpPjx0dD5Qcmlvcml0eU1hcCBwcmlvcml0eV9tYXA8L3R0PiAmbmJzcDsoSU4pPGJyPgogICAgVXNlZCBpbnRlcm5hbGx5IHRvIHN0b3JlIHRoZSBwcmlvcml0eSBmb3IgcmVudW1iZXJpbmcgb2YgZWFjaCB2ZXJ0ZXguIDwvbGk+CiAgPGxpPjx0dD5EZWdyZWVNYXAgZGVncmVlX21hcDwvdHQ+ICZuYnNwOyhJTikgPGJyPgogICAgVGhpcyBtdXN0IG1hcCB2ZXJ0aWNlcyB0byB0aGVpciBkZWdyZWUuIDwvbGk+CiAgPGxpPjx0dD5XZWlnaHQgVzEgJmFtcDsgVzI8L3R0PiAmbmJzcDsoSU4pIDxicj4KICAgIEhldXJpc3RpY2FsIHdlaWdodHMgZm9yIHRoZSBTbG9hbiBhbGdvcml0aG0uIDwvbGk+CjwvdWw+CjxwPkZvciB2ZXJzaW9uIDM6IDwvcD4KPHVsPgogIDxsaT48dHQ+R3JhcGgmYW1wOyBnPC90dD4gJm5ic3A7KElOKSA8YnI+CiAgICBBbiB1bmRpcmVjdGVkIGdyYXBoLiBUaGUgZ3JhcGgncyB0eXBlIG11c3QgYmUgYSBtb2RlbCBvZiA8YSAKICBocmVmPSIuL0luY2lkZW5jZUdyYXBoLmh0bWwiPkluY2lkZW5jZUdyYXBoPC9hPi4gCiAgPGxpPjx0dD52ZXJ0ZXhfZGVzY3JpcHRvciBzPC90dD4gJm5ic3A7KElOKSA8YnI+CiAgICBUaGUgc3RhcnRpbmcgdmVydGV4LiAKICA8bGk+PHR0PnZlcnRleF9kZXNjcmlwdG9yIGU8L3R0PiZuYnNwOyhJTik8YnI+CiAgICBUaGUgZW5kaW5nIHZlcnRleDxicj4KICA8bGk+PHR0Pk91dHB1dEl0ZXJhdG9yIHBlcm11dGF0aW9uPC90dD4gJm5ic3A7KE9VVCkgPGJyPgogICAgVGhlIG5ldyB2ZXJ0ZXggb3JkZXJpbmcuIFRoZSB2ZXJ0aWNlcyBhcmUgd3JpdHRlbiB0byB0aGUgPGEgCiAgaHJlZj0iaHR0cDovL3d3dy5zZ2kuY29tL3RlY2gvc3RsL091dHB1dEl0ZXJhdG9yLmh0bWwiPm91dHB1dCBpdGVyYXRvcjwvYT4gaW4gCiAgICB0aGVpciBuZXcgb3JkZXIuIAogIDxsaT48dHQ+Q29sb3JNYXAgY29sb3JfbWFwPC90dD4gJm5ic3A7KFdPUkspIDxicj4KICAgIFVzZWQgaW50ZXJuYWxseSB0byBrZWVwIHRyYWNrIG9mIHRoZSBwcm9ncmVzcyBvZiB0aGUgYWxnb3JpdGhtICh0byBhdm9pZCB2aXNpdGluZyAKICAgIHRoZSBzYW1lIHZlcnRleCB0d2ljZSkuIAogIDxsaT48dHQ+UHJpb3JpdHlNYXAgcHJpb3JpdHlfbWFwPC90dD4gJm5ic3A7KElOKTxicj4KICAgIFVzZWQgaW50ZXJuYWxseSB0byBzdG9yZSB0aGUgcHJpb3JpdHkgZm9yIHJlbnVtYmVyaW5nIG9mIGVhY2ggdmVydGV4LiA8L2xpPgogIDxsaT48dHQ+RGVncmVlTWFwIGRlZ3JlZV9tYXA8L3R0PiAmbmJzcDsoSU4pIDxicj4KICAgIFRoaXMgbXVzdCBtYXAgdmVydGljZXMgdG8gdGhlaXIgZGVncmVlLiA8L2xpPgo8L3VsPgo8cD5Gb3IgdmVyc2lvbiA0OiA8L3A+Cjx1bD4KICA8bGk+PHR0PkdyYXBoJmFtcDsgZzwvdHQ+ICZuYnNwOyhJTikgPGJyPgogICAgQW4gdW5kaXJlY3RlZCBncmFwaC4gVGhlIGdyYXBoJ3MgdHlwZSBtdXN0IGJlIGEgbW9kZWwgb2YgPGEgCiAgaHJlZj0iLi9JbmNpZGVuY2VHcmFwaC5odG1sIj5JbmNpZGVuY2VHcmFwaDwvYT4uPGJyPgogIDxsaT48dHQ+T3V0cHV0SXRlcmF0b3IgcGVybXV0YXRpb248L3R0PiAmbmJzcDsoT1VUKSA8YnI+CiAgICBUaGUgbmV3IHZlcnRleCBvcmRlcmluZy4gVGhlIHZlcnRpY2VzIGFyZSB3cml0dGVuIHRvIHRoZSA8YSAKICBocmVmPSJodHRwOi8vd3d3LnNnaS5jb20vdGVjaC9zdGwvT3V0cHV0SXRlcmF0b3IuaHRtbCI+b3V0cHV0IGl0ZXJhdG9yPC9hPiBpbiAKICAgIHRoZWlyIG5ldyBvcmRlci4gCiAgPGxpPjx0dD5Db2xvck1hcCBjb2xvcl9tYXA8L3R0PiAmbmJzcDsoV09SSykgPGJyPgogICAgVXNlZCBpbnRlcm5hbGx5IHRvIGtlZXAgdHJhY2sgb2YgdGhlIHByb2dyZXNzIG9mIHRoZSBhbGdvcml0aG0gKHRvIGF2b2lkIHZpc2l0aW5nIAogICAgdGhlIHNhbWUgdmVydGV4IHR3aWNlKS4gCiAgPGxpPjx0dD5Qcmlvcml0eU1hcCBwcmlvcml0eV9tYXA8L3R0PiAmbmJzcDsoSU4pPGJyPgogICAgVXNlZCBpbnRlcm5hbGx5IHRvIHN0b3JlIHRoZSBwcmlvcml0eSBmb3IgcmVudW1iZXJpbmcgb2YgZWFjaCB2ZXJ0ZXguIDwvbGk+CiAgPGxpPjx0dD5EZWdyZWVNYXAgZGVncmVlX21hcDwvdHQ+ICZuYnNwOyhJTikgPGJyPgogICAgVGhpcyBtdXN0IG1hcCB2ZXJ0aWNlcyB0byB0aGVpciBkZWdyZWUuIDwvbGk+CjwvdWw+CjxwPiZuYnNwOzwvcD4KPEgzPkV4YW1wbGU8L0gzPgpTZWUgPEEgCmhyZWY9Ii4uL2V4YW1wbGUvc2xvYW5fb3JkZXJpbmcuY3BwIj48VFQ+ZXhhbXBsZS9zbG9hbl9vcmRlcmluZy5jcHA8L1RUPjwvQT4uIAo8SDM+U2VlIEFsc288L0gzPgo8cD48YSBocmVmPSIuL3Nsb2FuX3N0YXJ0X2VuZF92ZXJ0aWNlcy5odG0iPnNsb2FuX3N0YXJ0X2VuZF92ZXJ0aWNlczwvYT4sIAogIDxBIApocmVmPSIuL2JhbmR3aWR0aC5odG1sIj5iYW5kd2lkdGg8L2E+LCA8YSBocmVmPSIuL3Byb2ZpbGUuaHRtIj5wcm9maWxlPC9hPiwgPGEgaHJlZj0iLi93YXZlZnJvbnQuaHRtIj53YXZlZnJvbnQ8L2E+IAogIGFuZCA8VFQ+ZGVncmVlX3Byb3BlcnR5X21hcDwvVFQ+IGluIDxUVD5ib29zdC9ncmFwaC9wcm9wZXJ0aWVzLmhwcDwvVFQ+LiA8L3A+CjxwPlsxXSBTLiBXLiBTbG9hbiwgPGk+QW4gYWxnb3JpdGhtIGZvciBwcm9maWxlIGFuZCB3YXZlZnJvbnQgcmVkdWN0aW9uIG9mIHNwYXJzZSAKICBtYXRyaWNlczwvaT4sIEludC4gai4gbnVtZXIuIG1ldGhvZHMgZW5nLiwgPGI+MjM8L2I+LCAyMzkgLSAyNTEgKDE5ODYpPC9wPgo8cD5bMl0gUy4gVy4gU2xvYW4sIDxpPkEgZm9ydHJhbiBwcm9ncmFtIGZvciBwcm9maWxlIGFuZCB3YXZlZnJvbnQgcmVkdWN0aW9uPC9pPiwgCiAgSW50LiBqLiBudW1lci4gbWV0aG9kcyBlbmcuLCA8Yj4yODwvYj4sIDI2NTEgLSAyNjc5ICgxOTg5KTxCUj4KPC9wPgo8SFI+Cgo8VEFCTEUgd2lkdGg9IjcxOCI+CiAgPFRCT0RZPiAKICA8VFIgdkFsaWduPXRvcD4KICAgIDxURCBub1dyYXA+Q29weXJpZ2h0IKkgMjAwMS0yMDAyPC9URD4KICAgIDxURD5NYXJjIFdpbnRlcm1hbnRlbCwgRVRIIFp1cmljaCAoPEEgCiAgICAgIGhyZWY9Im1haWx0bzp3aW50ZXJtYW50ZWxAaW1lcy5tYXZ0LmV0aHouY2giPndpbnRlcm1hbnRlbEBpbWVzLm1hdnQuZXRoei5jaDwvYT4pIAogICAgPC9URD4KICA8L1RSPjwvVEJPRFk+PC9UQUJMRT48L0JPRFk+PC9IVE1MPgo=