XHNlY3Rpb257XG1vZHVsZXtoZWFwcX0gLS0tCiAgICAgICAgIEhlYXAgcXVldWUgYWxnb3JpdGhtfQoKXGRlY2xhcmVtb2R1bGV7c3RhbmRhcmR9e2hlYXBxfQpcbW9kdWxlc3lub3BzaXN7SGVhcCBxdWV1ZSBhbGdvcml0aG0gKGEuay5hLiBwcmlvcml0eSBxdWV1ZSkufQpcbW9kdWxlYXV0aG9ye0tldmluIE8nQ29ubm9yfXt9ClxzZWN0aW9uYXV0aG9ye0d1aWRvIHZhbiBSb3NzdW19e2d1aWRvQHB5dGhvbi5vcmd9CiUgVGhlb3JldGljYWwgZXhwbGFuYXRpb246ClxzZWN0aW9uYXV0aG9ye0ZyYW5cYyBjb2lzIFBpbmFyZH17fQpcdmVyc2lvbmFkZGVkezIuM30KCgpUaGlzIG1vZHVsZSBwcm92aWRlcyBhbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgaGVhcCBxdWV1ZSBhbGdvcml0aG0sCmFsc28ga25vd24gYXMgdGhlIHByaW9yaXR5IHF1ZXVlIGFsZ29yaXRobS4KCkhlYXBzIGFyZSBhcnJheXMgZm9yIHdoaWNoClxjb2Rle1x2YXJ7aGVhcH1bXHZhcntrfV0gPD0gXHZhcntoZWFwfVsyKlx2YXJ7a30rMV19IGFuZApcY29kZXtcdmFye2hlYXB9W1x2YXJ7a31dIDw9IFx2YXJ7aGVhcH1bMipcdmFye2t9KzJdfQpmb3IgYWxsIFx2YXJ7a30sIGNvdW50aW5nIGVsZW1lbnRzIGZyb20gemVyby4gIEZvciB0aGUgc2FrZSBvZgpjb21wYXJpc29uLCBub24tZXhpc3RpbmcgZWxlbWVudHMgYXJlIGNvbnNpZGVyZWQgdG8gYmUgaW5maW5pdGUuICBUaGUKaW50ZXJlc3RpbmcgcHJvcGVydHkgb2YgYSBoZWFwIGlzIHRoYXQgXGNvZGV7XHZhcntoZWFwfVswXX0gaXMgYWx3YXlzCml0cyBzbWFsbGVzdCBlbGVtZW50LgoKVGhlIEFQSSBiZWxvdyBkaWZmZXJzIGZyb20gdGV4dGJvb2sgaGVhcCBhbGdvcml0aG1zIGluIHR3byBhc3BlY3RzOgooYSkgV2UgdXNlIHplcm8tYmFzZWQgaW5kZXhpbmcuICBUaGlzIG1ha2VzIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGUKaW5kZXggZm9yIGEgbm9kZSBhbmQgdGhlIGluZGV4ZXMgZm9yIGl0cyBjaGlsZHJlbiBzbGlnaHRseSBsZXNzCm9idmlvdXMsIGJ1dCBpcyBtb3JlIHN1aXRhYmxlIHNpbmNlIFB5dGhvbiB1c2VzIHplcm8tYmFzZWQgaW5kZXhpbmcuCihiKSBPdXIgcG9wIG1ldGhvZCByZXR1cm5zIHRoZSBzbWFsbGVzdCBpdGVtLCBub3QgdGhlIGxhcmdlc3QgKGNhbGxlZCBhCiJtaW4gaGVhcCIgaW4gdGV4dGJvb2tzOyBhICJtYXggaGVhcCIgaXMgbW9yZSBjb21tb24gaW4gdGV4dHMgYmVjYXVzZQpvZiBpdHMgc3VpdGFiaWxpdHkgZm9yIGluLXBsYWNlIHNvcnRpbmcpLgoKVGhlc2UgdHdvIG1ha2UgaXQgcG9zc2libGUgdG8gdmlldyB0aGUgaGVhcCBhcyBhIHJlZ3VsYXIgUHl0aG9uIGxpc3QKd2l0aG91dCBzdXJwcmlzZXM6IFxjb2Rle1x2YXJ7aGVhcH1bMF19IGlzIHRoZSBzbWFsbGVzdCBpdGVtLCBhbmQKXGNvZGV7XHZhcntoZWFwfS5zb3J0KCl9IG1haW50YWlucyB0aGUgaGVhcCBpbnZhcmlhbnQhCgpUbyBjcmVhdGUgYSBoZWFwLCB1c2UgYSBsaXN0IGluaXRpYWxpemVkIHRvIFxjb2Rle1tdfSwgb3IgeW91IGNhbgp0cmFuc2Zvcm0gYSBwb3B1bGF0ZWQgbGlzdCBpbnRvIGEgaGVhcCB2aWEgZnVuY3Rpb24gXGZ1bmN0aW9ue2hlYXBpZnkoKX0uCgpUaGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBhcmUgcHJvdmlkZWQ6CgpcYmVnaW57ZnVuY2Rlc2N9e2hlYXBwdXNofXtoZWFwLCBpdGVtfQpQdXNoIHRoZSB2YWx1ZSBcdmFye2l0ZW19IG9udG8gdGhlIFx2YXJ7aGVhcH0sIG1haW50YWluaW5nIHRoZQpoZWFwIGludmFyaWFudC4KXGVuZHtmdW5jZGVzY30KClxiZWdpbntmdW5jZGVzY317aGVhcHBvcH17aGVhcH0KUG9wIGFuZCByZXR1cm4gdGhlIHNtYWxsZXN0IGl0ZW0gZnJvbSB0aGUgXHZhcntoZWFwfSwgbWFpbnRhaW5pbmcgdGhlCmhlYXAgaW52YXJpYW50LiAgSWYgdGhlIGhlYXAgaXMgZW1wdHksIFxleGNlcHRpb257SW5kZXhFcnJvcn0gaXMgcmFpc2VkLgpcZW5ke2Z1bmNkZXNjfQoKXGJlZ2lue2Z1bmNkZXNjfXtoZWFwaWZ5fXt4fQpUcmFuc2Zvcm0gbGlzdCBcdmFye3h9IGludG8gYSBoZWFwLCBpbi1wbGFjZSwgaW4gbGluZWFyIHRpbWUuClxlbmR7ZnVuY2Rlc2N9CgpcYmVnaW57ZnVuY2Rlc2N9e2hlYXByZXBsYWNlfXtoZWFwLCBpdGVtfQpQb3AgYW5kIHJldHVybiB0aGUgc21hbGxlc3QgaXRlbSBmcm9tIHRoZSBcdmFye2hlYXB9LCBhbmQgYWxzbyBwdXNoCnRoZSBuZXcgXHZhcntpdGVtfS4gIFRoZSBoZWFwIHNpemUgZG9lc24ndCBjaGFuZ2UuCklmIHRoZSBoZWFwIGlzIGVtcHR5LCBcZXhjZXB0aW9ue0luZGV4RXJyb3J9IGlzIHJhaXNlZC4KVGhpcyBpcyBtb3JlIGVmZmljaWVudCB0aGFuIFxmdW5jdGlvbntoZWFwcG9wKCl9IGZvbGxvd2VkCmJ5ICBcZnVuY3Rpb257aGVhcHB1c2goKX0sIGFuZCBjYW4gYmUgbW9yZSBhcHByb3ByaWF0ZSB3aGVuIHVzaW5nCmEgZml4ZWQtc2l6ZSBoZWFwLiAgTm90ZSB0aGF0IHRoZSB2YWx1ZSByZXR1cm5lZCBtYXkgYmUgbGFyZ2VyCnRoYW4gXHZhcntpdGVtfSEgIFRoYXQgY29uc3RyYWlucyByZWFzb25hYmxlIHVzZXMgb2YgdGhpcyByb3V0aW5lCnVubGVzcyB3cml0dGVuIGFzIHBhcnQgb2YgYSBsYXJnZXIgZXhwcmVzc2lvbjoKXGJlZ2lue3ZlcmJhdGltfQogICAgICAgIHJlc3VsdCA9IGl0ZW0gPD0gaGVhcFswXSBhbmQgaXRlbSAgb3IgIGhlYXByZXBsYWNlKGhlYXAsIGl0ZW0pClxlbmR7dmVyYmF0aW19ClxlbmR7ZnVuY2Rlc2N9CgpFeGFtcGxlIG9mIHVzZToKClxiZWdpbnt2ZXJiYXRpbX0KPj4+IGZyb20gaGVhcHEgaW1wb3J0IGhlYXBwdXNoLCBoZWFwcG9wCj4+PiBoZWFwID0gW10KPj4+IGRhdGEgPSBbMSwgMywgNSwgNywgOSwgMiwgNCwgNiwgOCwgMF0KPj4+IGZvciBpdGVtIGluIGRhdGE6Ci4uLiAgICAgaGVhcHB1c2goaGVhcCwgaXRlbSkKLi4uCj4+PiBzb3J0ZWQgPSBbXQo+Pj4gd2hpbGUgaGVhcDoKLi4uICAgICBzb3J0ZWQuYXBwZW5kKGhlYXBwb3AoaGVhcCkpCi4uLgo+Pj4gcHJpbnQgc29ydGVkClswLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5XQo+Pj4gZGF0YS5zb3J0KCkKPj4+IHByaW50IGRhdGEgPT0gc29ydGVkClRydWUKPj4+ClxlbmR7dmVyYmF0aW19CgpUaGUgbW9kdWxlIGFsc28gb2ZmZXJzIHR3byBnZW5lcmFsIHB1cnBvc2UgZnVuY3Rpb25zIGJhc2VkIG9uIGhlYXBzLgoKXGJlZ2lue2Z1bmNkZXNjfXtubGFyZ2VzdH17biwgaXRlcmFibGV9ClJldHVybiBhIGxpc3Qgd2l0aCB0aGUgXHZhcntufSBsYXJnZXN0IGVsZW1lbnRzIGZyb20gdGhlIGRhdGFzZXQgZGVmaW5lZApieSBcdmFye2l0ZXJhYmxlfS4gRXF1aXZhbGVudCB0bzogIFxjb2Rle3NvcnRlZChpdGVyYWJsZSwgcmV2ZXJzZT1UcnVlKVs6bl19Clx2ZXJzaW9uYWRkZWR7Mi40fSAgICAgICAgICAgICAgClxlbmR7ZnVuY2Rlc2N9CgpcYmVnaW57ZnVuY2Rlc2N9e25zbWFsbGVzdH17biwgaXRlcmFibGV9ClJldHVybiBhIGxpc3Qgd2l0aCB0aGUgXHZhcntufSBzbWFsbGVzdCBlbGVtZW50cyBmcm9tIHRoZSBkYXRhc2V0IGRlZmluZWQKYnkgXHZhcntpdGVyYWJsZX0uIEVxdWl2YWxlbnQgdG86ICBcY29kZXtzb3J0ZWQoaXRlcmFibGUpWzpuXX0KXHZlcnNpb25hZGRlZHsyLjR9ICAgICAgICAgICAgICAKXGVuZHtmdW5jZGVzY30KCkJvdGggZnVuY3Rpb25zIHBlcmZvcm0gYmVzdCBmb3Igc21hbGxlciB2YWx1ZXMgb2YgXHZhcntufS4gIEZvciBsYXJnZXIKdmFsdWVzLCBpdCBpcyBtb3JlIGVmZmljaWVudCB0byB1c2UgdGhlIFxmdW5jdGlvbntzb3J0ZWQoKX0gZnVuY3Rpb24uICBBbHNvLAp3aGVuIFxjb2Rle249PTF9LCBpdCBpcyBtb3JlIGVmZmljaWVudCB0byB1c2UgdGhlIGJ1aWx0aW4gXGZ1bmN0aW9ue21pbigpfQphbmQgXGZ1bmN0aW9ue21heCgpfSBmdW5jdGlvbnMuCgoKXHN1YnNlY3Rpb257VGhlb3J5fQoKKFRoaXMgZXhwbGFuYXRpb24gaXMgZHVlIHRvIEZyYW7nb2lzIFBpbmFyZC4gIFRoZSBQeXRob24KY29kZSBmb3IgdGhpcyBtb2R1bGUgd2FzIGNvbnRyaWJ1dGVkIGJ5IEtldmluIE8nQ29ubm9yLikKCkhlYXBzIGFyZSBhcnJheXMgZm9yIHdoaWNoIFxjb2Rle2FbXHZhcntrfV0gPD0gYVsyKlx2YXJ7a30rMV19IGFuZApcY29kZXthW1x2YXJ7a31dIDw9IGFbMipcdmFye2t9KzJdfQpmb3IgYWxsIFx2YXJ7a30sIGNvdW50aW5nIGVsZW1lbnRzIGZyb20gMC4gIEZvciB0aGUgc2FrZSBvZiBjb21wYXJpc29uLApub24tZXhpc3RpbmcgZWxlbWVudHMgYXJlIGNvbnNpZGVyZWQgdG8gYmUgaW5maW5pdGUuICBUaGUgaW50ZXJlc3RpbmcKcHJvcGVydHkgb2YgYSBoZWFwIGlzIHRoYXQgXGNvZGV7YVswXX0gaXMgYWx3YXlzIGl0cyBzbWFsbGVzdCBlbGVtZW50LgoKVGhlIHN0cmFuZ2UgaW52YXJpYW50IGFib3ZlIGlzIG1lYW50IHRvIGJlIGFuIGVmZmljaWVudCBtZW1vcnkKcmVwcmVzZW50YXRpb24gZm9yIGEgdG91cm5hbWVudC4gIFRoZSBudW1iZXJzIGJlbG93IGFyZSBcdmFye2t9LCBub3QKXGNvZGV7YVtcdmFye2t9XX06CgpcYmVnaW57dmVyYmF0aW19CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMAoKICAgICAgICAgICAgICAgICAgMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIKCiAgICAgICAgICAzICAgICAgICAgICAgICAgNCAgICAgICAgICAgICAgICA1ICAgICAgICAgICAgICAgNgoKICAgICAgNyAgICAgICA4ICAgICAgIDkgICAgICAgMTAgICAgICAxMSAgICAgIDEyICAgICAgMTMgICAgICAxNAoKICAgIDE1IDE2ICAgMTcgMTggICAxOSAyMCAgIDIxIDIyICAgMjMgMjQgICAyNSAyNiAgIDI3IDI4ICAgMjkgMzAKXGVuZHt2ZXJiYXRpbX0KCkluIHRoZSB0cmVlIGFib3ZlLCBlYWNoIGNlbGwgXHZhcntrfSBpcyB0b3BwaW5nIFxjb2RlezIqXHZhcntrfSsxfSBhbmQKXGNvZGV7MipcdmFye2t9KzJ9LgpJbiBhbiB1c3VhbCBiaW5hcnkgdG91cm5hbWVudCB3ZSBzZWUgaW4gc3BvcnRzLCBlYWNoIGNlbGwgaXMgdGhlIHdpbm5lcgpvdmVyIHRoZSB0d28gY2VsbHMgaXQgdG9wcywgYW5kIHdlIGNhbiB0cmFjZSB0aGUgd2lubmVyIGRvd24gdGhlIHRyZWUKdG8gc2VlIGFsbCBvcHBvbmVudHMgcy9oZSBoYWQuICBIb3dldmVyLCBpbiBtYW55IGNvbXB1dGVyIGFwcGxpY2F0aW9ucwpvZiBzdWNoIHRvdXJuYW1lbnRzLCB3ZSBkbyBub3QgbmVlZCB0byB0cmFjZSB0aGUgaGlzdG9yeSBvZiBhIHdpbm5lci4KVG8gYmUgbW9yZSBtZW1vcnkgZWZmaWNpZW50LCB3aGVuIGEgd2lubmVyIGlzIHByb21vdGVkLCB3ZSB0cnkgdG8KcmVwbGFjZSBpdCBieSBzb21ldGhpbmcgZWxzZSBhdCBhIGxvd2VyIGxldmVsLCBhbmQgdGhlIHJ1bGUgYmVjb21lcwp0aGF0IGEgY2VsbCBhbmQgdGhlIHR3byBjZWxscyBpdCB0b3BzIGNvbnRhaW4gdGhyZWUgZGlmZmVyZW50IGl0ZW1zLApidXQgdGhlIHRvcCBjZWxsICJ3aW5zIiBvdmVyIHRoZSB0d28gdG9wcGVkIGNlbGxzLgoKSWYgdGhpcyBoZWFwIGludmFyaWFudCBpcyBwcm90ZWN0ZWQgYXQgYWxsIHRpbWUsIGluZGV4IDAgaXMgY2xlYXJseQp0aGUgb3ZlcmFsbCB3aW5uZXIuICBUaGUgc2ltcGxlc3QgYWxnb3JpdGhtaWMgd2F5IHRvIHJlbW92ZSBpdCBhbmQKZmluZCB0aGUgIm5leHQiIHdpbm5lciBpcyB0byBtb3ZlIHNvbWUgbG9zZXIgKGxldCdzIHNheSBjZWxsIDMwIGluIHRoZQpkaWFncmFtIGFib3ZlKSBpbnRvIHRoZSAwIHBvc2l0aW9uLCBhbmQgdGhlbiBwZXJjb2xhdGUgdGhpcyBuZXcgMCBkb3duCnRoZSB0cmVlLCBleGNoYW5naW5nIHZhbHVlcywgdW50aWwgdGhlIGludmFyaWFudCBpcyByZS1lc3RhYmxpc2hlZC4KVGhpcyBpcyBjbGVhcmx5IGxvZ2FyaXRobWljIG9uIHRoZSB0b3RhbCBudW1iZXIgb2YgaXRlbXMgaW4gdGhlIHRyZWUuCkJ5IGl0ZXJhdGluZyBvdmVyIGFsbCBpdGVtcywgeW91IGdldCBhbiBPKG4gbG9nIG4pIHNvcnQuCgpBIG5pY2UgZmVhdHVyZSBvZiB0aGlzIHNvcnQgaXMgdGhhdCB5b3UgY2FuIGVmZmljaWVudGx5IGluc2VydCBuZXcKaXRlbXMgd2hpbGUgdGhlIHNvcnQgaXMgZ29pbmcgb24sIHByb3ZpZGVkIHRoYXQgdGhlIGluc2VydGVkIGl0ZW1zIGFyZQpub3QgImJldHRlciIgdGhhbiB0aGUgbGFzdCAwJ3RoIGVsZW1lbnQgeW91IGV4dHJhY3RlZC4gIFRoaXMgaXMKZXNwZWNpYWxseSB1c2VmdWwgaW4gc2ltdWxhdGlvbiBjb250ZXh0cywgd2hlcmUgdGhlIHRyZWUgaG9sZHMgYWxsCmluY29taW5nIGV2ZW50cywgYW5kIHRoZSAid2luIiBjb25kaXRpb24gbWVhbnMgdGhlIHNtYWxsZXN0IHNjaGVkdWxlZAp0aW1lLiAgV2hlbiBhbiBldmVudCBzY2hlZHVsZSBvdGhlciBldmVudHMgZm9yIGV4ZWN1dGlvbiwgdGhleSBhcmUKc2NoZWR1bGVkIGludG8gdGhlIGZ1dHVyZSwgc28gdGhleSBjYW4gZWFzaWx5IGdvIGludG8gdGhlIGhlYXAuICBTbywgYQpoZWFwIGlzIGEgZ29vZCBzdHJ1Y3R1cmUgZm9yIGltcGxlbWVudGluZyBzY2hlZHVsZXJzICh0aGlzIGlzIHdoYXQgSQp1c2VkIGZvciBteSBNSURJIHNlcXVlbmNlciA6LSkuCgpWYXJpb3VzIHN0cnVjdHVyZXMgZm9yIGltcGxlbWVudGluZyBzY2hlZHVsZXJzIGhhdmUgYmVlbiBleHRlbnNpdmVseQpzdHVkaWVkLCBhbmQgaGVhcHMgYXJlIGdvb2QgZm9yIHRoaXMsIGFzIHRoZXkgYXJlIHJlYXNvbmFibHkgc3BlZWR5LAp0aGUgc3BlZWQgaXMgYWxtb3N0IGNvbnN0YW50LCBhbmQgdGhlIHdvcnN0IGNhc2UgaXMgbm90IG11Y2ggZGlmZmVyZW50CnRoYW4gdGhlIGF2ZXJhZ2UgY2FzZS4gIEhvd2V2ZXIsIHRoZXJlIGFyZSBvdGhlciByZXByZXNlbnRhdGlvbnMgd2hpY2gKYXJlIG1vcmUgZWZmaWNpZW50IG92ZXJhbGwsIHlldCB0aGUgd29yc3QgY2FzZXMgbWlnaHQgYmUgdGVycmlibGUuCgpIZWFwcyBhcmUgYWxzbyB2ZXJ5IHVzZWZ1bCBpbiBiaWcgZGlzayBzb3J0cy4gIFlvdSBtb3N0IHByb2JhYmx5IGFsbAprbm93IHRoYXQgYSBiaWcgc29ydCBpbXBsaWVzIHByb2R1Y2luZyAicnVucyIgKHdoaWNoIGFyZSBwcmUtc29ydGVkCnNlcXVlbmNlcywgd2hpY2ggc2l6ZSBpcyB1c3VhbGx5IHJlbGF0ZWQgdG8gdGhlIGFtb3VudCBvZiBDUFUgbWVtb3J5KSwKZm9sbG93ZWQgYnkgYSBtZXJnaW5nIHBhc3NlcyBmb3IgdGhlc2UgcnVucywgd2hpY2ggbWVyZ2luZyBpcyBvZnRlbgp2ZXJ5IGNsZXZlcmx5IG9yZ2FuaXNlZFxmb290bm90ZXtUaGUgZGlzayBiYWxhbmNpbmcgYWxnb3JpdGhtcyB3aGljaAphcmUgY3VycmVudCwgbm93YWRheXMsIGFyZQptb3JlIGFubm95aW5nIHRoYW4gY2xldmVyLCBhbmQgdGhpcyBpcyBhIGNvbnNlcXVlbmNlIG9mIHRoZSBzZWVraW5nCmNhcGFiaWxpdGllcyBvZiB0aGUgZGlza3MuICBPbiBkZXZpY2VzIHdoaWNoIGNhbm5vdCBzZWVrLCBsaWtlIGJpZwp0YXBlIGRyaXZlcywgdGhlIHN0b3J5IHdhcyBxdWl0ZSBkaWZmZXJlbnQsIGFuZCBvbmUgaGFkIHRvIGJlIHZlcnkKY2xldmVyIHRvIGVuc3VyZSAoZmFyIGluIGFkdmFuY2UpIHRoYXQgZWFjaCB0YXBlIG1vdmVtZW50IHdpbGwgYmUgdGhlCm1vc3QgZWZmZWN0aXZlIHBvc3NpYmxlICh0aGF0IGlzLCB3aWxsIGJlc3QgcGFydGljaXBhdGUgYXQKInByb2dyZXNzaW5nIiB0aGUgbWVyZ2UpLiAgU29tZSB0YXBlcyB3ZXJlIGV2ZW4gYWJsZSB0byByZWFkCmJhY2t3YXJkcywgYW5kIHRoaXMgd2FzIGFsc28gdXNlZCB0byBhdm9pZCB0aGUgcmV3aW5kaW5nIHRpbWUuCkJlbGlldmUgbWUsIHJlYWwgZ29vZCB0YXBlIHNvcnRzIHdlcmUgcXVpdGUgc3BlY3RhY3VsYXIgdG8gd2F0Y2ghCkZyb20gYWxsIHRpbWVzLCBzb3J0aW5nIGhhcyBhbHdheXMgYmVlbiBhIEdyZWF0IEFydCEgOi0pfS4KSXQgaXMgdmVyeSBpbXBvcnRhbnQgdGhhdCB0aGUgaW5pdGlhbApzb3J0IHByb2R1Y2VzIHRoZSBsb25nZXN0IHJ1bnMgcG9zc2libGUuICBUb3VybmFtZW50cyBhcmUgYSBnb29kIHdheQp0byB0aGF0LiAgSWYsIHVzaW5nIGFsbCB0aGUgbWVtb3J5IGF2YWlsYWJsZSB0byBob2xkIGEgdG91cm5hbWVudCwgeW91CnJlcGxhY2UgYW5kIHBlcmNvbGF0ZSBpdGVtcyB0aGF0IGhhcHBlbiB0byBmaXQgdGhlIGN1cnJlbnQgcnVuLCB5b3UnbGwKcHJvZHVjZSBydW5zIHdoaWNoIGFyZSB0d2ljZSB0aGUgc2l6ZSBvZiB0aGUgbWVtb3J5IGZvciByYW5kb20gaW5wdXQsCmFuZCBtdWNoIGJldHRlciBmb3IgaW5wdXQgZnV6emlseSBvcmRlcmVkLgoKTW9yZW92ZXIsIGlmIHlvdSBvdXRwdXQgdGhlIDAndGggaXRlbSBvbiBkaXNrIGFuZCBnZXQgYW4gaW5wdXQgd2hpY2gKbWF5IG5vdCBmaXQgaW4gdGhlIGN1cnJlbnQgdG91cm5hbWVudCAoYmVjYXVzZSB0aGUgdmFsdWUgIndpbnMiIG92ZXIKdGhlIGxhc3Qgb3V0cHV0IHZhbHVlKSwgaXQgY2Fubm90IGZpdCBpbiB0aGUgaGVhcCwgc28gdGhlIHNpemUgb2YgdGhlCmhlYXAgZGVjcmVhc2VzLiAgVGhlIGZyZWVkIG1lbW9yeSBjb3VsZCBiZSBjbGV2ZXJseSByZXVzZWQgaW1tZWRpYXRlbHkKZm9yIHByb2dyZXNzaXZlbHkgYnVpbGRpbmcgYSBzZWNvbmQgaGVhcCwgd2hpY2ggZ3Jvd3MgYXQgZXhhY3RseSB0aGUKc2FtZSByYXRlIHRoZSBmaXJzdCBoZWFwIGlzIG1lbHRpbmcuICBXaGVuIHRoZSBmaXJzdCBoZWFwIGNvbXBsZXRlbHkKdmFuaXNoZXMsIHlvdSBzd2l0Y2ggaGVhcHMgYW5kIHN0YXJ0IGEgbmV3IHJ1bi4gIENsZXZlciBhbmQgcXVpdGUKZWZmZWN0aXZlIQoKSW4gYSB3b3JkLCBoZWFwcyBhcmUgdXNlZnVsIG1lbW9yeSBzdHJ1Y3R1cmVzIHRvIGtub3cuICBJIHVzZSB0aGVtIGluCmEgZmV3IGFwcGxpY2F0aW9ucywgYW5kIEkgdGhpbmsgaXQgaXMgZ29vZCB0byBrZWVwIGEgYGhlYXAnIG1vZHVsZQphcm91bmQuIDotKQo=