PCFET0NUWVBFIGFydGljbGUgUFVCTElDICItLy9PQVNJUy8vRFREIERvY0Jvb2sgVjMuMS8vRU4iPgo8IS0tCiAgICAkSWQkCiAgIAogICAgQ29weXJpZ2h0IKkgMjAwMyBLZWl0aCBQYWNrYXJkCiAgIAogICAgUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgZGlzdHJpYnV0ZSwgYW5kIHNlbGwgdGhpcyBzb2Z0d2FyZSBhbmQgaXRzCiAgICBkb2N1bWVudGF0aW9uIGZvciBhbnkgcHVycG9zZSBpcyBoZXJlYnkgZ3JhbnRlZCB3aXRob3V0IGZlZSwgcHJvdmlkZWQgdGhhdAogICAgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYXBwZWFyIGluIGFsbCBjb3BpZXMgYW5kIHRoYXQgYm90aCB0aGF0CiAgICBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIGFwcGVhciBpbiBzdXBwb3J0aW5nCiAgICBkb2N1bWVudGF0aW9uLCBhbmQgdGhhdCB0aGUgbmFtZSBvZiBLZWl0aCBQYWNrYXJkIG5vdCBiZSB1c2VkIGluCiAgICBhZHZlcnRpc2luZyBvciBwdWJsaWNpdHkgcGVydGFpbmluZyB0byBkaXN0cmlidXRpb24gb2YgdGhlIHNvZnR3YXJlIHdpdGhvdXQKICAgIHNwZWNpZmljLCB3cml0dGVuIHByaW9yIHBlcm1pc3Npb24uICBLZWl0aCBQYWNrYXJkIG1ha2VzIG5vCiAgICByZXByZXNlbnRhdGlvbnMgYWJvdXQgdGhlIHN1aXRhYmlsaXR5IG9mIHRoaXMgc29mdHdhcmUgZm9yIGFueSBwdXJwb3NlLiAgSXQKICAgIGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBleHByZXNzIG9yIGltcGxpZWQgd2FycmFudHkuCiAgIAogICAgS0VJVEggUEFDS0FSRCBESVNDTEFJTVMgQUxMIFdBUlJBTlRJRVMgV0lUSCBSRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSwKICAgIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUywgSU4gTk8KICAgIEVWRU5UIFNIQUxMIEtFSVRIIFBBQ0tBUkQgQkUgTElBQkxFIEZPUiBBTlkgU1BFQ0lBTCwgSU5ESVJFQ1QgT1IKICAgIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NIExPU1MgT0YgVVNFLAogICAgREFUQSBPUiBQUk9GSVRTLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUiBPVEhFUgogICAgVE9SVElPVVMgQUNUSU9OLCBBUklTSU5HIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUgogICAgUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS4KLS0+CjxhcnRpY2xlPgo8YXJ0aGVhZGVyPgogIDx0aXRsZT5Gb250Y29uZmlnIFVzZXJzIEd1aWRlPC90aXRsZT4KICA8dGl0bGVhYmJyZXY+Rm9udGNvbmZpZzwvdGl0bGVhYmJyZXY+CiAgPGF1dGhvcj48Zmlyc3RuYW1lPktlaXRoPC8+PHN1cm5hbWU+UGFja2FyZDwvPjwvYXV0aG9yPgogIDxhdXRob3Jpbml0aWFscz5rcnA8L2F1dGhvcmluaXRpYWxzPgo8L2FydGhlYWRlcj4KPHNlY3QxPjx0aXRsZT5OQU1FPC90aXRsZT4KICA8cGFyYT4KICBmb250Y29uZmlnIC0gRm9udCBjb25maWd1cmF0aW9uIGFuZCBjdXN0b21pemF0aW9uIGxpYnJhcnkKICA8L3BhcmE+Cjwvc2VjdDE+CjxzZWN0MT48dGl0bGU+REVTQ1JJUFRJT048L3RpdGxlPgogIDxwYXJhPgpGb250Y29uZmlnIGlzIGEgbGlicmFyeSBkZXNpZ25lZCB0byBwcm92aWRlIHN5c3RlbS13aWRlIGZvbnQgY29uZmlndXJhdGlvbiwKY3VzdG9taXphdGlvbiBhbmQgYXBwbGljYXRpb24gYWNjZXNzLgogIDwvcGFyYT4KPC9zZWN0MT4KPHNlY3QxPjx0aXRsZT5GVU5DVElPTkFMIE9WRVJWSUVXPC90aXRsZT4KICA8cGFyYT4KRm9udGNvbmZpZyBjb250YWlucyB0d28gZXNzZW50aWFsIG1vZHVsZXMsIHRoZSBjb25maWd1cmF0aW9uIG1vZHVsZSB3aGljaApidWlsZHMgYW4gaW50ZXJuYWwgY29uZmlndXJhdGlvbiBmcm9tIFhNTCBmaWxlcyBhbmQgdGhlIG1hdGNoaW5nIG1vZHVsZQp3aGljaCBhY2NlcHRzIGZvbnQgcGF0dGVybnMgYW5kIHJldHVybnMgdGhlIG5lYXJlc3QgbWF0Y2hpbmcgZm9udC4KICA8L3BhcmE+CiAgPHNlY3QyPjx0aXRsZT5GT05UIENPTkZJR1VSQVRJT048L3RpdGxlPgogICAgPHBhcmE+ClRoZSBjb25maWd1cmF0aW9uIG1vZHVsZSBjb25zaXN0cyBvZiB0aGUgRmNDb25maWcgZGF0YXR5cGUsIGxpYmV4cGF0IGFuZApGY0NvbmZpZ1BhcnNlIHdoaWNoIHdhbGtzIG92ZXIgYW4gWE1MIHRyZWUgYW5kIGFtbWVuZHMgYSBjb25maWd1cmF0aW9uIHdpdGgKZGF0YSBmb3VuZCB3aXRoaW4uICBGcm9tIGFuIGV4dGVybmFsIHBlcnNwZWN0aXZlLCBjb25maWd1cmF0aW9uIG9mIHRoZQpsaWJyYXJ5IGNvbnNpc3RzIG9mIGdlbmVyYXRpbmcgYSB2YWxpZCBYTUwgdHJlZSBhbmQgZmVlZGluZyB0aGF0IHRvCkZjQ29uZmlnUGFyc2UuICBUaGUgb25seSBvdGhlciBtZWNoYW5pc20gcHJvdmlkZWQgdG8gYXBwbGljYXRpb25zIGZvcgpjaGFuZ2luZyB0aGUgcnVubmluZyBjb25maWd1cmF0aW9uIGlzIHRvIGFkZCBmb250cyBhbmQgZGlyZWN0b3JpZXMgdG8gdGhlCmxpc3Qgb2YgYXBwbGljYXRpb24tcHJvdmlkZWQgZm9udCBmaWxlcy4gIAogICAgPC9wYXJhPjxwYXJhPgpUaGUgaW50ZW50IGlzIHRvIG1ha2UgZm9udCBjb25maWd1cmF0aW9ucyByZWxhdGl2ZWx5IHN0YXRpYywgYW5kIHNoYXJlZCBieQphcyBtYW55IGFwcGxpY2F0aW9ucyBhcyBwb3NzaWJsZS4gIEl0IGlzIGhvcGVkIHRoYXQgdGhpcyB3aWxsIGxlYWQgdG8gbW9yZQpzdGFibGUgZm9udCBzZWxlY3Rpb24gd2hlbiBwYXNzaW5nIG5hbWVzIGZyb20gb25lIGFwcGxpY2F0aW9uIHRvIGFub3RoZXIuClhNTCB3YXMgY2hvc2VuIGFzIGEgY29uZmlndXJhdGlvbiBmaWxlIGZvcm1hdCBiZWNhdXNlIGl0IHByb3ZpZGVzIGEgZm9ybWF0CndoaWNoIGlzIGVhc3kgZm9yIGV4dGVybmFsIGFnZW50cyB0byBlZGl0IHdoaWxlIHJldGFpbmluZyB0aGUgY29ycmVjdApzdHJ1Y3R1cmUgYW5kIHN5bnRheC4KICAgIDwvcGFyYT48cGFyYT4KRm9udCBjb25maWd1cmF0aW9uIGlzIHNlcGFyYXRlIGZyb20gZm9udCBtYXRjaGluZzsgYXBwbGljYXRpb25zIG5lZWRpbmcgdG8KZG8gdGhlaXIgb3duIG1hdGNoaW5nIGNhbiBhY2Nlc3MgdGhlIGF2YWlsYWJsZSBmb250cyBmcm9tIHRoZSBsaWJyYXJ5IGFuZApwZXJmb3JtIHByaXZhdGUgbWF0Y2hpbmcuICBUaGUgaW50ZW50IGlzIHRvIHBlcm1pdCBhcHBsaWNhdGlvbnMgdG8gcGljayBhbmQKY2hvb3NlIGFwcHJvcHJpYXRlIGZ1bmN0aW9uYWxpdHkgZnJvbSB0aGUgbGlicmFyeSBpbnN0ZWFkIG9mIGZvcmNpbmcgdGhlbSB0bwpjaG9vc2UgYmV0d2VlbiB0aGlzIGxpYnJhcnkgYW5kIGEgcHJpdmF0ZSBjb25maWd1cmF0aW9uIG1lY2hhbmlzbS4gIFRoZSBob3BlCmlzIHRoYXQgdGhpcyB3aWxsIGVuc3VyZSB0aGF0IGNvbmZpZ3VyYXRpb24gb2YgZm9udHMgZm9yIGFsbCBhcHBsaWNhdGlvbnMKY2FuIGJlIGNlbnRyYWxpemVkIGluIG9uZSBwbGFjZS4gIENlbnRyYWxpemluZyBmb250IGNvbmZpZ3VyYXRpb24gd2lsbApzaW1wbGlmeSBhbmQgcmVndWxhcml6ZSBmb250IGluc3RhbGxhdGlvbiBhbmQgY3VzdG9taXphdGlvbi4KICAgIDwvcGFyYT4KICA8L3NlY3QyPgogIDxzZWN0Mj4KICAgIDx0aXRsZT5GT05UIFBST1BFUlRJRVM8L3RpdGxlPgogICAgPHBhcmE+CldoaWxlIGZvbnQgcGF0dGVybnMgbWF5IGNvbnRhaW4gZXNzZW50aWFsbHkgYW55IHByb3BlcnRpZXMsIHRoZXJlIGFyZSBzb21lCndlbGwga25vd24gcHJvcGVydGllcyB3aXRoIGFzc29jaWF0ZWQgdHlwZXMuICBGb250Y29uZmlnIHVzZXMgc29tZSBvZiB0aGVzZQpwcm9wZXJ0aWVzIGZvciBmb250IG1hdGNoaW5nIGFuZCBmb250IGNvbXBsZXRpb24uICBPdGhlcnMgYXJlIHByb3ZpZGVkIGFzIGEKY29udmVuaWVuY2UgZm9yIHRoZSBhcHBsaWNhdGlvbnMgcmVuZGVyaW5nIG1lY2hhbmlzbS4KICAgIDwvcGFyYT4KICAgIDx0YWJsZT4KICAgICAgPHRpdGxlPlByb3BlcnR5IERlZmluaXRpb25zPC90aXRsZT4KICAgICAgICA8dGdyb3VwIGNvbHM9MyBhbGlnbj1sZWZ0IGNvbHNlcD0xIHJvd3NlcD0xPgoJPGNvbHNwZWMgY29sbmFtZT1Qcm9wZXJ0eT4KCTxjb2xzcGVjIGNvbG5hbWU9VHlwZT4KCTxjb2xzcGVjIGNvbG5hbWU9RGVzY3JpcHRpb24+Cgk8dGhlYWQ+CgkgIDxyb3c+CgkgICAgPGVudHJ5PlByb3BlcnR5PC9lbnRyeT4KCSAgICA8ZW50cnk+VHlwZTwvZW50cnk+CgkgICAgPGVudHJ5PkRlc2NyaXB0aW9uPC9lbnRyeT4KCSAgPC9yb3c+Cgk8L3RoZWFkPgoJPHRib2R5Pgo8cm93PjxlbnRyeT5mYW1pbHk8L2VudHJ5PjxlbnRyeT5TdHJpbmc8L2VudHJ5PjxlbnRyeT5Gb250IGZhbWlseSBuYW1lPC9lbnRyeT48L3Jvdz4KPHJvdz48ZW50cnk+c3R5bGU8L2VudHJ5PjxlbnRyeT5TdHJpbmc8L2VudHJ5PjxlbnRyeT5Gb250IHN0eWxlLiBPdmVycmlkZXMgd2VpZ2h0IGFuZCBzbGFudDwvZW50cnk+PC9yb3c+Cjxyb3c+PGVudHJ5PnNsYW50PC9lbnRyeT48ZW50cnk+SW50PC9lbnRyeT48ZW50cnk+SXRhbGljLCBvYmxpcXVlIG9yIHJvbWFuPC9lbnRyeT48L3Jvdz4KPHJvdz48ZW50cnk+d2VpZ2h0PC9lbnRyeT48ZW50cnk+SW50PC9lbnRyeT48ZW50cnk+TGlnaHQsIG1lZGl1bSwgZGVtaWJvbGQsIGJvbGQgb3IgYmxhY2s8L2VudHJ5Pjwvcm93Pgo8cm93PjxlbnRyeT5zaXplPC9lbnRyeT48ZW50cnk+RG91YmxlPC9lbnRyeT48ZW50cnk+UG9pbnQgc2l6ZTwvZW50cnk+PC9yb3c+Cjxyb3c+PGVudHJ5PmFzcGVjdDwvZW50cnk+PGVudHJ5PkRvdWJsZTwvZW50cnk+PGVudHJ5PlN0cmV0Y2hlcyBnbHlwaHMgaG9yaXpvbnRhbGx5IGJlZm9yZSBoaW50aW5nPC9lbnRyeT48L3Jvdz4KPHJvdz48ZW50cnk+cGl4ZWxzaXplPC9lbnRyeT48ZW50cnk+RG91YmxlPC9lbnRyeT48ZW50cnk+UGl4ZWwgc2l6ZTwvZW50cnk+PC9yb3c+Cjxyb3c+PGVudHJ5PnNwYWNpbmc8L2VudHJ5PjxlbnRyeT5JbnQ8L2VudHJ5PjxlbnRyeT5Qcm9wb3J0aW9uYWwsIG1vbm9zcGFjZSBvciBjaGFyY2VsbDwvZW50cnk+PC9yb3c+Cjxyb3c+PGVudHJ5PmZvdW5kcnk8L2VudHJ5PjxlbnRyeT5TdHJpbmc8L2VudHJ5PjxlbnRyeT5Gb250IGZvdW5kcnkgbmFtZTwvZW50cnk+PC9yb3c+Cjxyb3c+PGVudHJ5PmFudGlhbGlhczwvZW50cnk+PGVudHJ5PkJvb2w8L2VudHJ5PjxlbnRyeT5XaGV0aGVyIGdseXBocyBjYW4gYmUgYW50aWFsaWFzZWQ8L2VudHJ5Pjwvcm93Pgo8cm93PjxlbnRyeT5oaW50aW5nPC9lbnRyeT48ZW50cnk+Qm9vbDwvZW50cnk+PGVudHJ5PldoZXRoZXIgdGhlIHJhc3Rlcml6ZXIgc2hvdWxkIHVzZSBoaW50aW5nPC9lbnRyeT48L3Jvdz4KPHJvdz48ZW50cnk+dmVydGljYWxsYXlvdXQ8L2VudHJ5PjxlbnRyeT5Cb29sPC9lbnRyeT48ZW50cnk+VXNlIHZlcnRpY2FsIGxheW91dDwvZW50cnk+PC9yb3c+Cjxyb3c+PGVudHJ5PmF1dG9oaW50PC9lbnRyeT48ZW50cnk+Qm9vbDwvZW50cnk+PGVudHJ5PlVzZSBhdXRvaGludGVyIGluc3RlYWQgb2Ygbm9ybWFsIGhpbnRlcjwvZW50cnk+PC9yb3c+Cjxyb3c+PGVudHJ5Pmdsb2JhbGFkdmFuY2U8L2VudHJ5PjxlbnRyeT5Cb29sPC9lbnRyeT48ZW50cnk+VXNlIGZvbnQgZ2xvYmFsIGFkdmFuY2UgZGF0YTwvZW50cnk+PC9yb3c+Cjxyb3c+PGVudHJ5PmZpbGU8L2VudHJ5PjxlbnRyeT5TdHJpbmc8L2VudHJ5PjxlbnRyeT5UaGUgZmlsZW5hbWUgaG9sZGluZyB0aGUgZm9udDwvZW50cnk+PC9yb3c+Cjxyb3c+PGVudHJ5PmluZGV4PC9lbnRyeT48ZW50cnk+SW50PC9lbnRyeT48ZW50cnk+VGhlIGluZGV4IG9mIHRoZSBmb250IHdpdGhpbiB0aGUgZmlsZTwvZW50cnk+PC9yb3c+Cjxyb3c+PGVudHJ5PmZ0ZmFjZTwvZW50cnk+PGVudHJ5PkZUX0ZhY2U8L2VudHJ5PjxlbnRyeT5Vc2UgdGhlIHNwZWNpZmllZCBGcmVlVHlwZSBmYWNlIG9iamVjdDwvZW50cnk+PC9yb3c+Cjxyb3c+PGVudHJ5PnJhc3Rlcml6ZXI8L2VudHJ5PjxlbnRyeT5TdHJpbmc8L2VudHJ5PjxlbnRyeT5XaGljaCByYXN0ZXJpemVyIGlzIGluIHVzZTwvZW50cnk+PC9yb3c+Cjxyb3c+PGVudHJ5Pm91dGxpbmU8L2VudHJ5PjxlbnRyeT5Cb29sPC9lbnRyeT48ZW50cnk+V2hldGhlciB0aGUgZ2x5cGhzIGFyZSBvdXRsaW5lczwvZW50cnk+PC9yb3c+Cjxyb3c+PGVudHJ5PnNjYWxhYmxlPC9lbnRyeT48ZW50cnk+Qm9vbDwvZW50cnk+PGVudHJ5PldoZXRoZXIgZ2x5cGhzIGNhbiBiZSBzY2FsZWQ8L2VudHJ5Pjwvcm93Pgo8cm93PjxlbnRyeT5zY2FsZTwvZW50cnk+PGVudHJ5PkRvdWJsZTwvZW50cnk+PGVudHJ5PlNjYWxlIGZhY3RvciBmb3IgcG9pbnQtPnBpeGVsIGNvbnZlcnNpb25zPC9lbnRyeT48L3Jvdz4KPHJvdz48ZW50cnk+ZHBpPC9lbnRyeT48ZW50cnk+RG91YmxlPC9lbnRyeT48ZW50cnk+VGFyZ2V0IGRvdHMgcGVyIGluY2g8L2VudHJ5Pjwvcm93Pgo8cm93PjxlbnRyeT5yZ2JhPC9lbnRyeT48ZW50cnk+SW50PC9lbnRyeT48ZW50cnk+dW5rbm93biwgcmdiLCBiZ3IsIHZyZ2IsIHZiZ3IsIG5vbmUgLSBzdWJwaXhlbCBnZW9tZXRyeTwvZW50cnk+PC9yb3c+Cjxyb3c+PGVudHJ5Pm1pbnNwYWNlPC9lbnRyeT48ZW50cnk+Qm9vbDwvZW50cnk+PGVudHJ5PkVsaW1pbmF0ZSBsZWFkaW5nIGZyb20gbGluZSBzcGFjaW5nPC9lbnRyeT48L3Jvdz4KPHJvdz48ZW50cnk+Y2hhcnNldDwvZW50cnk+PGVudHJ5PkNoYXJTZXQ8L2VudHJ5PjxlbnRyeT5Vbmljb2RlIGNoYXJzIGVuY29kZWQgYnkgdGhlIGZvbnQ8L2VudHJ5Pjwvcm93Pgo8cm93PjxlbnRyeT5sYW5nPC9lbnRyeT48ZW50cnk+U3RyaW5nPC9lbnRyeT48ZW50cnk+TGlzdCBvZiBSRkMtMzA2Ni1zdHlsZSBsYW5ndWFnZXMgdGhpcyBmb250IHN1cHBvcnRzPC9lbnRyeT48L3Jvdz4KICAgICAgPC90Ym9keT4KICAgICAgPC90Z3JvdXA+CiAgICA8L3RhYmxlPgogIDwvc2VjdDI+CiAgPHNlY3QyPgogIDx0aXRsZT5GT05UIE1BVENISU5HPC90aXRsZT4KICAgIDxwYXJhPgpGb250Y29uZmlnIHBlcmZvcm1zIG1hdGNoaW5nIGJ5IG1lYXN1cmluZyB0aGUgZGlzdGFuY2UgZnJvbSBhIHByb3ZpZGVkCnBhdHRlcm4gdG8gYWxsIG9mIHRoZSBhdmFpbGFibGUgZm9udHMgaW4gdGhlIHN5c3RlbS4gIFRoZSBjbG9zZXN0IG1hdGNoaW5nCmZvbnQgaXMgc2VsZWN0ZWQuICBUaGlzIGVuc3VyZXMgdGhhdCBhIGZvbnQgd2lsbCBhbHdheXMgYmUgcmV0dXJuZWQsIGJ1dApkb2Vzbid0IGVuc3VyZSB0aGF0IGl0IGlzIGFueXRoaW5nIGxpa2UgdGhlIHJlcXVlc3RlZCBwYXR0ZXJuLgogICAgPC9wYXJhPjxwYXJhPiAKRm9udCBtYXRjaGluZyBzdGFydHMgd2l0aCBhbiBhcHBsaWNhdGlvbiBjb25zdHJ1Y3RlZCBwYXR0ZXJuLiAgVGhlIGRlc2lyZWQKYXR0cmlidXRlcyBvZiB0aGUgcmVzdWx0aW5nIGZvbnQgYXJlIGNvbGxlY3RlZCB0b2dldGhlciBpbiBhIHBhdHRlcm4uICBFYWNoCnByb3BlcnR5IG9mIHRoZSBwYXR0ZXJuIGNhbiBjb250YWluIG9uZSBvciBtb3JlIHZhbHVlczsgdGhlc2UgYXJlIGxpc3RlZCBpbgpwcmlvcml0eSBvcmRlcjsgbWF0Y2hlcyBlYXJsaWVyIGluIHRoZSBsaXN0IGFyZSBjb25zaWRlcmVkICJjbG9zZXIiIHRoYW4KbWF0Y2hlcyBsYXRlciBpbiB0aGUgbGlzdC4KICAgIDwvcGFyYT48cGFyYT4KVGhlIGluaXRpYWwgcGF0dGVybiBpcyBtb2RpZmllZCBieSBhcHBseWluZyB0aGUgbGlzdCBvZiBlZGl0aW5nIGluc3RydWN0aW9ucwpzcGVjaWZpYyB0byBwYXR0ZXJucyBmb3VuZCBpbiB0aGUgY29uZmlndXJhdGlvbjsgZWFjaCBjb25zaXN0cyBvZiBhIG1hdGNoCnByZWRpY2F0ZSBhbmQgYSBzZXQgb2YgZWRpdGluZyBvcGVyYXRpb25zLiAgVGhleSBhcmUgZXhlY3V0ZWQgaW4gdGhlIG9yZGVyCnRoZXkgYXBwZWFyZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24uICBFYWNoIG1hdGNoIGNhdXNlcyB0aGUgYXNzb2NpYXRlZApzZXF1ZW5jZSBvZiBlZGl0aW5nIG9wZXJhdGlvbnMgdG8gYmUgYXBwbGllZC4KICAgIDwvcGFyYT48cGFyYT4KQWZ0ZXIgdGhlIHBhdHRlcm4gaGFzIGJlZW4gZWRpdGVkLCBhIHNlcXVlbmNlIG9mIGRlZmF1bHQgc3Vic3RpdHV0aW9ucyBhcmUKcGVyZm9ybWVkIHRvIGNhbm9uaWNhbGl6ZSB0aGUgc2V0IG9mIGF2YWlsYWJsZSBwcm9wZXJ0aWVzOyB0aGlzIGF2b2lkcyB0aGUKbmVlZCBmb3IgdGhlIGxvd2VyIGxheWVycyB0byBjb25zdGFudGx5IHByb3ZpZGUgZGVmYXVsdCB2YWx1ZXMgZm9yIHZhcmlvdXMKZm9udCBwcm9wZXJ0aWVzIGR1cmluZyByZW5kZXJpbmcuCiAgICA8L3BhcmE+PHBhcmE+ClRoZSBjYW5vbmljYWwgZm9udCBwYXR0ZXJuIGlzIGZpbmFsbHkgbWF0Y2hlZCBhZ2FpbnN0IGFsbCBhdmFpbGFibGUgZm9udHMuClRoZSBkaXN0YW5jZSBmcm9tIHRoZSBwYXR0ZXJuIHRvIHRoZSBmb250IGlzIG1lYXN1cmVkIGZvciBlYWNoIG9mIHNldmVyYWwKcHJvcGVydGllczogZm91bmRyeSwgY2hhcnNldCwgZmFtaWx5LCBsYW5nLCBzcGFjaW5nLCBwaXhlbHNpemUsIHN0eWxlLApzbGFudCwgd2VpZ2h0LCBhbnRpYWxpYXMsIHJhc3Rlcml6ZXIgYW5kIG91dGxpbmUuICBUaGlzIGxpc3QgaXMgaW4gcHJpb3JpdHkKb3JkZXIgLS0gcmVzdWx0cyBvZiBjb21wYXJpbmcgZWFybGllciBlbGVtZW50cyBvZiB0aGlzIGxpc3Qgd2VpZ2ggbW9yZQpoZWF2aWx5IHRoYW4gbGF0ZXIgZWxlbWVudHMuCiAgICA8L3BhcmE+PHBhcmE+ClRoZXJlIGlzIG9uZSBzcGVjaWFsIGNhc2UgdG8gdGhpcyBydWxlOyBmYW1pbHkgbmFtZXMgYXJlIHNwbGl0IGludG8gdHdvCmJpbmRpbmdzOyBzdHJvbmcgYW5kIHdlYWsuICBTdHJvbmcgZmFtaWx5IG5hbWVzIGFyZSBnaXZlbiBncmVhdGVyIHByZWNlZGVuY2UKaW4gdGhlIG1hdGNoIHRoYW4gbGFuZyBlbGVtZW50cyB3aGlsZSB3ZWFrIGZhbWlseSBuYW1lcyBhcmUgZ2l2ZW4gbG93ZXIKcHJlY2VkZW5jZSB0aGFuIGxhbmcgZWxlbWVudHMuICBUaGlzIHBlcm1pdHMgdGhlIGRvY3VtZW50IGxhbmd1YWdlIHRvIGRyaXZlCmZvbnQgc2VsZWN0aW9uIHdoZW4gYW55IGRvY3VtZW50IHNwZWNpZmllZCBmb250IGlzIHVuYXZhaWxhYmxlLgogICAgPC9wYXJhPjxwYXJhPgpUaGUgcGF0dGVybiByZXByZXNlbnRpbmcgdGhhdCBmb250IGlzIGF1Z21lbnRlZCB0byBpbmNsdWRlIGFueSBwcm9wZXJ0aWVzCmZvdW5kIGluIHRoZSBwYXR0ZXJuIGJ1dCBub3QgZm91bmQgaW4gdGhlIGZvbnQgaXRzZWxmOyB0aGlzIHBlcm1pdHMgdGhlCmFwcGxpY2F0aW9uIHRvIHBhc3MgcmVuZGVyaW5nIGluc3RydWN0aW9ucyBvciBhbnkgb3RoZXIgZGF0YSB0aHJvdWdoIHRoZQptYXRjaGluZyBzeXN0ZW0uICBGaW5hbGx5LCB0aGUgbGlzdCBvZiBlZGl0aW5nIGluc3RydWN0aW9ucyBzcGVjaWZpYyB0bwpmb250cyBmb3VuZCBpbiB0aGUgY29uZmlndXJhdGlvbiBhcmUgYXBwbGllZCB0byB0aGUgcGF0dGVybi4gIFRoaXMgbW9kaWZpZWQKcGF0dGVybiBpcyByZXR1cm5lZCB0byB0aGUgYXBwbGljYXRpb24uCiAgICA8L3BhcmE+PHBhcmE+ClRoZSByZXR1cm4gdmFsdWUgY29udGFpbnMgc3VmZmljaWVudCBpbmZvcm1hdGlvbiB0byBsb2NhdGUgYW5kIHJhc3Rlcml6ZSB0aGUKZm9udCwgaW5jbHVkaW5nIHRoZSBmaWxlIG5hbWUsIHBpeGVsIHNpemUgYW5kIG90aGVyIHJlbmRlcmluZyBkYXRhLiAgQXMKbm9uZSBvZiB0aGUgaW5mb3JtYXRpb24gaW52b2x2ZWQgcGVydGFpbnMgdG8gdGhlIEZyZWVUeXBlIGxpYnJhcnksCmFwcGxpY2F0aW9ucyBhcmUgZnJlZSB0byB1c2UgYW55IHJhc3Rlcml6YXRpb24gZW5naW5lIG9yIGV2ZW4gdG8gdGFrZQp0aGUgaWRlbnRpZmllZCBmb250IGZpbGUgYW5kIGFjY2VzcyBpdCBkaXJlY3RseS4KICAgIDwvcGFyYT48cGFyYT4KVGhlIG1hdGNoL2VkaXQgc2VxdWVuY2VzIGluIHRoZSBjb25maWd1cmF0aW9uIGFyZSBwZXJmb3JtZWQgaW4gdHdvIHBhc3NlcwpiZWNhdXNlIHRoZXJlIGFyZSBlc3NlbnRpYWxseSB0d28gZGlmZmVyZW50IG9wZXJhdGlvbnMgbmVjZXNzYXJ5IC0tIHRoZQpmaXJzdCBpcyB0byBtb2RpZnkgaG93IGZvbnRzIGFyZSBzZWxlY3RlZDsgYWxpYXNpbmcgZmFtaWxpZXMgYW5kIGFkZGluZwpzdWl0YWJsZSBkZWZhdWx0cy4gIFRoZSBzZWNvbmQgaXMgdG8gbW9kaWZ5IGhvdyB0aGUgc2VsZWN0ZWQgZm9udHMgYXJlCnJhc3Rlcml6ZWQuICBUaG9zZSBtdXN0IGFwcGx5IHRvIHRoZSBzZWxlY3RlZCBmb250LCBub3QgdGhlIG9yaWdpbmFsIHBhdHRlcm4KYXMgZmFsc2UgbWF0Y2hlcyB3aWxsIG9mdGVuIG9jY3VyLgogICAgPC9wYXJhPgogIDwvc2VjdDI+CiAgPHNlY3QyPjx0aXRsZT5GT05UIE5BTUVTPC90aXRsZT4KICAgIDxwYXJhPgpGb250Y29uZmlnIHByb3ZpZGVzIGEgdGV4dHVhbCByZXByZXNlbnRhdGlvbiBmb3IgcGF0dGVybnMgdGhhdCB0aGUgbGlicmFyeQpjYW4gYm90aCBhY2NlcHQgYW5kIGdlbmVyYXRlLiAgVGhlIHJlcHJlc2VudGF0aW9uIGlzIGluIHRocmVlIHBhcnRzLCBmaXJzdCBhCmxpc3Qgb2YgZmFtaWx5IG5hbWVzLCBzZWNvbmQgYSBsaXN0IG9mIHBvaW50IHNpemVzIGFuZCBmaW5hbGx5IGEgbGlzdCBvZgphZGRpdGlvbmFsIHByb3BlcnRpZXM6CiAgICA8L3BhcmE+CiAgICA8cHJvZ3JhbWxpc3Rpbmc+CgkmbHQ7ZmFtaWxpZXMmZ3Q7LSZsdDtwb2ludCBzaXplcyZndDs6Jmx0O25hbWUxJmd0Oz0mbHQ7dmFsdWVzMSZndDs6Jmx0O25hbWUyJmd0Oz0mbHQ7dmFsdWVzMiZndDsuLi4KICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CiAgICA8cGFyYT4KVmFsdWVzIGluIGEgbGlzdCBhcmUgc2VwYXJhdGVkIHdpdGggY29tbWFzLiAgVGhlIG5hbWUgbmVlZG4ndCBpbmNsdWRlIGVpdGhlcgpmYW1pbGllcyBvciBwb2ludCBzaXplczsgdGhleSBjYW4gYmUgZWxpZGVkLiAgSW4gYWRkaXRpb24sIHRoZXJlIGFyZQpzeW1ib2xpYyBjb25zdGFudHMgdGhhdCBzaW11bHRhbmVvdXNseSBpbmRpY2F0ZSBib3RoIGEgbmFtZSBhbmQgYSB2YWx1ZS4KSGVyZSBhcmUgc29tZSBleGFtcGxlczoKICAgIDwvcGFyYT4KICAgIDx0YWJsZSBjb2xzZXA9MCByb3dzZXA9MD4KICAgICAgPHRpdGxlPlNhbXBsZSBGb250IE5hbWVzPC90aXRsZT4KICAgICAgPHRncm91cCBjb2xzPTIgYWxpZ249bGVmdCBjb2xzZXA9MCByb3dzZXA9MD4KCTx0aGVhZD48cm93PgoJICA8ZW50cnk+TmFtZTwvZW50cnk+CgkgIDxlbnRyeT5NZWFuaW5nPC9lbnRyeT4KCTwvcm93PjwvdGhlYWQ+Cgk8dGJvZHk+Cjxyb3c+PGVudHJ5PlRpbWVzLTEyPC9lbnRyeT48ZW50cnk+MTIgcG9pbnQgVGltZXMgUm9tYW48L2VudHJ5Pjwvcm93Pgo8cm93PjxlbnRyeT5UaW1lcy0xMjpib2xkPC9lbnRyeT48ZW50cnk+MTIgcG9pbnQgVGltZXMgQm9sZDwvZW50cnk+PC9yb3c+Cjxyb3c+PGVudHJ5PkNvdXJpZXI6aXRhbGljPC9lbnRyeT48ZW50cnk+Q291cmllciBJdGFsaWMgaW4gdGhlIGRlZmF1bHQgc2l6ZTwvZW50cnk+PC9yb3c+Cjxyb3c+PGVudHJ5Pk1vbm9zcGFjZTptYXRyaXg9MSAuMSAwIDE8L2VudHJ5PjxlbnRyeT5UaGUgdXNlcnMgcHJlZmVycmVkIG1vbm9zcGFjZSBmb250CndpdGggYXJ0aWZpY2lhbCBvYmxpcXVpbmc8L2VudHJ5Pjwvcm93PgoJPC90Ym9keT4KICAgICAgPC90Z3JvdXA+CiAgICA8L3RhYmxlPgogIDwvc2VjdDI+Cjwvc2VjdDE+CjxzZWN0MT48dGl0bGU+TEFORyBUQUdTPC90aXRsZT4KICA8cGFyYT4KRWFjaCBmb250IGluIHRoZSBkYXRhYmFzZSBjb250YWlucyBhIGxpc3Qgb2YgbGFuZ3VhZ2VzIGl0IHN1cHBvcnRzLiAgVGhpcyBpcwpjb21wdXRlZCBieSBjb21wYXJpbmcgdGhlIFVuaWNvZGUgY292ZXJhZ2Ugb2YgdGhlIGZvbnQgd2l0aCB0aGUgb3J0aG9ncmFwaHkKb2YgZWFjaCBsYW5ndWFnZS4gIExhbmd1YWdlcyBhcmUgdGFnZ2VkIHVzaW5nIGFuIFJGQy0zMDY2IGNvbXBhdGlibGUgbmFtaW5nCmFuZCBvY2N1ciBpbiB0d28gcGFydHMgLS0gdGhlIElTTzYzOSBsYW5ndWFnZSB0YWcgZm9sbG93ZWQgYSBoeXBoZW4gYW5kIHRoZW4KYnkgdGhlIElTTyAzMTY2IGNvdW50cnkgY29kZS4gIFRoZSBoeXBoZW4gYW5kIGNvdW50cnkgY29kZSBtYXkgYmUgZWxpZGVkLgogIDwvcGFyYT48cGFyYT4KRm9udGNvbmZpZyBoYXMgb3J0aG9ncmFwaGllcyBmb3Igc2V2ZXJhbCBsYW5ndWFnZXMgYnVpbHQgaW50byB0aGUgbGlicmFyeS4KTm8gcHJvdmlzaW9uIGhhcyBiZWVuIG1hZGUgZm9yIGFkZGluZyBuZXcgb25lcyBhc2lkZSBmcm9tIHJlYnVpbGRpbmcgdGhlCmxpYnJhcnkuICBJdCBjdXJyZW50bHkgc3VwcG9ydHMgMTIyIG9mIHRoZSAxMzkgbGFuZ3VhZ2VzIG5hbWVkIGluIElTTyA2MzktMSwKMTQxIG9mIHRoZSBsYW5ndWFnZXMgd2l0aCB0d28tbGV0dGVyIGNvZGVzIGZyb20gSVNPIDYzOS0yIGFuZCBhbm90aGVyIDMwCmxhbmd1YWdlcyB3aXRoIG9ubHkgdGhyZWUtbGV0dGVyIGNvZGVzLgogIDwvcGFyYT4KPC9zZWN0MT4KPHNlY3QxPjx0aXRsZT5DT05GSUdVUkFUSU9OIEZJTEUgRk9STUFUPC90aXRsZT4KICA8cGFyYT4KQ29uZmlndXJhdGlvbiBmaWxlcyBmb3IgZm9udGNvbmZpZyBhcmUgc3RvcmVkIGluIFhNTCBmb3JtYXQ7IHRoaXMKZm9ybWF0IG1ha2VzIGV4dGVybmFsIGNvbmZpZ3VyYXRpb24gdG9vbHMgZWFzaWVyIHRvIHdyaXRlIGFuZCBlbnN1cmVzIHRoYXQKdGhleSB3aWxsIGdlbmVyYXRlIHN5bnRhY3RpY2FsbHkgY29ycmVjdCBjb25maWd1cmF0aW9uIGZpbGVzLiAgQXMgWE1MCmZpbGVzIGFyZSBwbGFpbiB0ZXh0LCB0aGV5IGNhbiBhbHNvIGJlIG1hbmlwdWxhdGVkIGJ5IHRoZSBleHBlcnQgdXNlciB1c2luZwphIHRleHQgZWRpdG9yLgogIDwvcGFyYT48cGFyYT4KVGhlIGZvbnRjb25maWcgZG9jdW1lbnQgdHlwZSBkZWZpbml0aW9uIHJlc2lkZXMgaW4gdGhlIGV4dGVybmFsIGVudGl0eQoiZm9udHMuZHRkIjsgdGhpcyBpcyBub3JtYWxseSBzdG9yZWQgaW4gdGhlIGRlZmF1bHQgZm9udCBjb25maWd1cmF0aW9uCmRpcmVjdG9yeSAoL2V0Yy9mb250cykuICBFYWNoIGNvbmZpZ3VyYXRpb24gZmlsZSBzaG91bGQgY29udGFpbiB0aGUKZm9sbG93aW5nIHN0cnVjdHVyZToKICAgIDxwcm9ncmFtbGlzdGluZz4KCSZsdDs/eG1sIHZlcnNpb249IjEuMCI/Jmd0OwoJJmx0OyFET0NUWVBFIGZvbnRjb25maWcgU1lTVEVNICJmb250cy5kdGQiJmd0OwoJJmx0O2ZvbnRjb25maWcmZ3Q7CgkuLi4KCSZsdDsvZm9udGNvbmZpZyZndDsKICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CiAgPC9wYXJhPgogIDxzZWN0Mj48dGl0bGU+Jmx0O2ZvbnRjb25maWcmZ3Q7PC90aXRsZT48cGFyYT4KVGhpcyBpcyB0aGUgdG9wIGxldmVsIGVsZW1lbnQgZm9yIGEgZm9udCBjb25maWd1cmF0aW9uIGFuZCBjYW4gY29udGFpbgombHQ7ZGlyJmd0OywgJmx0O2NhY2hlJmd0OywgJmx0O2luY2x1ZGUmZ3Q7LCAmbHQ7bWF0Y2gmZ3Q7IGFuZCAmbHQ7YWxpYXMmZ3Q7IGVsZW1lbnRzIGluIGFueSBvcmRlci4KICA8L3BhcmE+PC9zZWN0Mj4KICA8c2VjdDI+PHRpdGxlPiZsdDtkaXImZ3Q7PC90aXRsZT48cGFyYT4KVGhpcyBlbGVtZW50IGNvbnRhaW5zIGEgZGlyZWN0b3J5IG5hbWUgd2hpY2ggd2lsbCBiZSBzY2FubmVkIGZvciBmb250IGZpbGVzCnRvIGluY2x1ZGUgaW4gdGhlIHNldCBvZiBhdmFpbGFibGUgZm9udHMuCiAgPC9wYXJhPjwvc2VjdDI+CiAgPHNlY3QyPjx0aXRsZT4mbHQ7Y2FjaGUmZ3Q7PC90aXRsZT48cGFyYT4KVGhpcyBlbGVtZW50IGNvbnRhaW5zIGEgZmlsZSBuYW1lIGZvciB0aGUgcGVyLXVzZXIgY2FjaGUgb2YgZm9udAppbmZvcm1hdGlvbi4gIElmIGl0IHN0YXJ0cyB3aXRoICd+JywgaXQgcmVmZXJzIHRvIGEgZmlsZSBpbiB0aGUgdXNlcnMKaG9tZSBkaXJlY3RvcnkuICBUaGlzIGZpbGUgaXMgdXNlZCB0byBob2xkIGluZm9ybWF0aW9uIGFib3V0IGZvbnRzIHRoYXQKaXNuJ3QgcHJlc2VudCBpbiB0aGUgcGVyLWRpcmVjdG9yeSBjYWNoZSBmaWxlcy4gIEl0IGlzIGF1dG9tYXRpY2FsbHkKbWFpbnRhaW5lZCBieSB0aGUgZm9udGNvbmZpZyBsaWJyYXJ5LiAgVGhlIGRlZmF1bHQgZm9yIHRoaXMgZmlsZSAKaXMgYGB+Ly5mb250cy5jYWNoZS0mbHQ7dmVyc2lvbiZndDsnJywgd2hlcmUgJmx0O3ZlcnNpb24mZ3Q7IGlzIHRoZSBmb250IGNvbmZpZ3VyYXRpb24KZmlsZSB2ZXJzaW9uIG51bWJlciAoY3VycmVudGx5IDEpLgogIDwvcGFyYT48L3NlY3QyPgogIDxzZWN0Mj48dGl0bGU+Jmx0O2luY2x1ZGUgaWdub3JlX21pc3Npbmc9Im5vIiZndDs8L3RpdGxlPjxwYXJhPgpUaGlzIGVsZW1lbnQgY29udGFpbnMgdGhlIG5hbWUgb2YgYW4gYWRkaXRpb25hbCBjb25maWd1cmF0aW9uIGZpbGUuICBXaGVuCnRoZSBYTUwgZGF0YXR5cGUgaXMgdHJhdmVyc2VkIGJ5IEZjQ29uZmlnUGFyc2UsIHRoZSBjb250ZW50cyBvZiB0aGUgZmlsZQp3aWxsIGFsc28gYmUgaW5jb3Jwb3JhdGVkIGludG8gdGhlIGNvbmZpZ3VyYXRpb24gYnkgcGFzc2luZyB0aGUgZmlsZW5hbWUgdG8KRmNDb25maWdMb2FkQW5kUGFyc2UuICBJZiAnaWdub3JlX21pc3NpbmcnIGlzIHNldCB0byAieWVzIiBpbnN0ZWFkIG9mIHRoZQpkZWZhdWx0ICJubyIsIGEgbWlzc2luZyBmaWxlIHdpbGwgZWxpY2l0IG5vIHdhcm5pbmcgbWVzc2FnZSBmcm9tIHRoZSBsaWJyYXJ5LgogIDwvcGFyYT48L3NlY3QyPgogIDxzZWN0Mj48dGl0bGU+Jmx0O2NvbmZpZyZndDs8L3RpdGxlPjxwYXJhPgpUaGlzIGVsZW1lbnQgcHJvdmlkZXMgYSBwbGFjZSB0byBjb25zb2xvZGF0ZSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24KaW5mb3JtYXRpb24uICAmbHQ7Y29uZmlnJmd0OyBjYW4gY29udGFpbiAmbHQ7YmxhbmsmZ3Q7IGFuZCAmbHQ7cmVzY2FuJmd0OyBlbGVtZW50cyBpbiBhbnkKb3JkZXIuCiAgPC9wYXJhPjwvc2VjdDI+CiAgPHNlY3QyPjx0aXRsZT4mbHQ7YmxhbmsmZ3Q7PC90aXRsZT48cGFyYT4KRm9udHMgb2Z0ZW4gaW5jbHVkZSAiYnJva2VuIiBnbHlwaHMgd2hpY2ggYXBwZWFyIGluIHRoZSBlbmNvZGluZyBidXQgYXJlCmRyYXduIGFzIGJsYW5rcyBvbiB0aGUgc2NyZWVuLiAgV2l0aGluIHRoZSAmbHQ7YmxhbmsmZ3Q7IGVsZW1lbnQsIHBsYWNlIGVhY2gKVW5pY29kZSBjaGFyYWN0ZXJzIHdoaWNoIGlzIHN1cHBvc2VkIHRvIGJlIGJsYW5rIGluIGFuICZsdDtpbnQmZ3Q7IGVsZW1lbnQuCkNoYXJhY3RlcnMgb3V0c2lkZSBvZiB0aGlzIHNldCB3aGljaCBhcmUgZHJhd24gYXMgYmxhbmsgd2lsbCBiZSBlbGlkZWQgZnJvbQp0aGUgc2V0IG9mIGNoYXJhY3RlcnMgc3VwcG9ydGVkIGJ5IHRoZSBmb250LgogIDwvcGFyYT48L3NlY3QyPgogIDxzZWN0Mj48dGl0bGU+Jmx0O3Jlc2NhbiZndDs8L3RpdGxlPjxwYXJhPgpUaGUgJmx0O3Jlc2NhbiZndDsgZWxlbWVudCBob2xkcyBhbiAmbHQ7aW50Jmd0OyBlbGVtZW50IHdoaWNoIGluZGljYXRlcyB0aGUgZGVmYXVsdAppbnRlcnZhbCBiZXR3ZWVuIGF1dG9tYXRpYyBjaGVja3MgZm9yIGZvbnQgY29uZmlndXJhdGlvbiBjaGFuZ2VzLgpGb250Y29uZmlnIHdpbGwgdmFsaWRhdGUgYWxsIG9mIHRoZSBjb25maWd1cmF0aW9uIGZpbGVzIGFuZCBkaXJlY3RvcmllcyBhbmQKYXV0b21hdGljYWxseSByZWJ1aWxkIHRoZSBpbnRlcm5hbCBkYXRhc3RydWN0dXJlcyB3aGVuIHRoaXMgaW50ZXJ2YWwgcGFzc2VzLgogIDwvcGFyYT48L3NlY3QyPgogIDxzZWN0Mj48dGl0bGU+Jmx0O21hdGNoIHRhcmdldD0icGF0dGVybiImZ3Q7PC90aXRsZT48cGFyYT4KVGhpcyBlbGVtZW50IGhvbGRzIGZpcnN0IGEgKHBvc3NpYmx5IGVtcHR5KSBsaXN0IG9mICZsdDt0ZXN0Jmd0OyBlbGVtZW50cyBhbmQgdGhlbgphIChwb3NzaWJseSBlbXB0eSkgbGlzdCBvZiAmbHQ7ZWRpdCZndDsgZWxlbWVudHMuICBQYXR0ZXJucyB3aGljaCBtYXRjaCBhbGwgb2YgdGhlCnRlc3RzIGFyZSBzdWJqZWN0ZWQgdG8gYWxsIHRoZSBlZGl0cy4gIElmICd0YXJnZXQnIGlzIHNldCB0byAiZm9udCIgaW5zdGVhZApvZiB0aGUgZGVmYXVsdCAicGF0dGVybiIsIHRoZW4gdGhpcyBlbGVtZW50IGFwcGxpZXMgdG8gdGhlIGZvbnQgbmFtZQpyZXN1bHRpbmcgZnJvbSBhIG1hdGNoIHJhdGhlciB0aGFuIGEgZm9udCBwYXR0ZXJuIHRvIGJlIG1hdGNoZWQuCiAgPC9wYXJhPjwvc2VjdDI+CiAgPHNlY3QyPjx0aXRsZT4mbHQ7dGVzdCBxdWFsPSJhbnkiIG5hbWU9InByb3BlcnR5IiBjb21wYXJlPSJlcSImZ3Q7PC90aXRsZT48cGFyYT4KVGhpcyBlbGVtZW50IGNvbnRhaW5zIGEgc2luZ2xlIHZhbHVlIHdoaWNoIGlzIGNvbXBhcmVkIHdpdGggdGhlIHBhdHRlcm4KcHJvcGVydHkgInByb3BlcnR5IiAoc3Vic3RpdHV0ZSBhbnkgb2YgdGhlIHByb3BlcnR5IG5hbWVzIHNlZW4gCmFib3ZlKS4gJ2NvbXBhcmUnIGNhbiBiZSBvbmUgb2YgImVxIiwgIm5vdF9lcSIsICJsZXNzIiwgImxlc3NfZXEiLCAibW9yZSIsIG9yCiJtb3JlX2VxIi4gICdxdWFsJyBtYXkgZWl0aGVyIGJlIHRoZSBkZWZhdWx0LCAiYW55IiwgaW4gd2hpY2ggY2FzZSB0aGUgbWF0Y2gKc3VjY2VlZHMgaWYgYW55IHZhbHVlIGFzc29jaWF0ZWQgd2l0aCB0aGUgcHJvcGVydHkgbWF0Y2hlcyB0aGUgdGVzdCB2YWx1ZSwgb3IKImFsbCIsIGluIHdoaWNoIGNhc2UgYWxsIG9mIHRoZSB2YWx1ZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBwcm9wZXJ0eSBtdXN0Cm1hdGNoIHRoZSB0ZXN0IHZhbHVlLgogIDwvcGFyYT48L3NlY3QyPgogIDxzZWN0Mj48dGl0bGU+Jmx0O2VkaXQgbmFtZT0icHJvcGVydHkiIG1vZGU9ImFzc2lnbiIgYmluZGluZz0id2VhayImZ3Q7PC90aXRsZT48cGFyYT4KVGhpcyBlbGVtZW50IGNvbnRhaW5zIGEgbGlzdCBvZiBleHByZXNzaW9uIGVsZW1lbnRzIChhbnkgb2YgdGhlIHZhbHVlIG9yCm9wZXJhdG9yIGVsZW1lbnRzKS4gIFRoZSBleHByZXNzaW9uIGVsZW1lbnRzIGFyZSBldmFsdWF0ZWQgYXQgcnVuLXRpbWUgYW5kCm1vZGlmeSB0aGUgcHJvcGVydHkgInByb3BlcnR5Ii4gIFRoZSBtb2RpZmljYXRpb24gZGVwZW5kcyBvbiB3aGV0aGVyCiJwcm9wZXJ0eSIgd2FzIG1hdGNoZWQgYnkgb25lIG9mIHRoZSBhc3NvY2lhdGVkICZsdDt0ZXN0Jmd0OyBlbGVtZW50cywgaWYgc28sIHRoZQptb2RpZmljYXRpb24gbWF5IGFmZmVjdCB0aGUgZmlyc3QgbWF0Y2hlZCB2YWx1ZS4gIEFueSB2YWx1ZXMgaW5zZXJ0ZWQgaW50bwp0aGUgcHJvcGVydHkgYXJlIGdpdmVuIHRoZSBpbmRpY2F0ZWQgYmluZGluZy4gJ21vZGUnIGlzIG9uZSBvZjoKICAgIDx0YWJsZT4KICAgICAgPHRpdGxlPkVkaXQgRWxlbWVudCBNb2RlczwvdGl0bGU+CiAgICAgICAgPHRncm91cCBjb2xzPTMgYWxpZ249bGVmdCBjb2xzZXA9MCByb3dzZXA9MD4KCTx0aGVhZD4KCSAgPHJvdz4KCSAgICA8ZW50cnk+TW9kZTwvZW50cnk+CgkgICAgPGVudHJ5Pk9wZXJhdGlvbiBXaXRoIE1hdGNoPC9lbnRyeT4KCSAgICA8ZW50cnk+T3BlcmF0aW9uIFdpdGhvdXQgTWF0Y2g8L2VudHJ5PgoJICA8L3Jvdz4KCTwvdGhlYWQ+Cgk8dGJvZHk+Cjxyb3c+PGVudHJ5PiJhc3NpZ24iPC9lbnRyeT48ZW50cnk+UmVwbGFjZSBtYXRjaGluZyB2YWx1ZTwvZW50cnk+PGVudHJ5PlJlcGxhY2UgYWxsIHZhbHVlczwvZW50cnk+PC9yb3c+Cjxyb3c+PGVudHJ5PiJhc3NpZ25fcmVwbGFjZSI8L2VudHJ5PjxlbnRyeT5SZXBsYWNlIGFsbCB2YWx1ZXM8L2VudHJ5PjxlbnRyeT5SZXBsYWNlIGFsbCB2YWx1ZXM8L2VudHJ5Pjwvcm93Pgo8cm93PjxlbnRyeT4icHJlcGVuZCI8L2VudHJ5PjxlbnRyeT5JbnNlcnQgYmVmb3JlIG1hdGNoaW5nIHZhbHVlPC9lbnRyeT48ZW50cnk+SW5zZXJ0IGF0IGhlYWQgb2YgbGlzdDwvZW50cnk+PC9yb3c+Cjxyb3c+PGVudHJ5PiJwcmVwZW5kX2ZpcnN0IjwvZW50cnk+PGVudHJ5Pkluc2VydCBhdCBoZWFkIG9mIGxpc3Q8L2VudHJ5PjxlbnRyeT5JbnNlcnQgYXQgaGVhZCBvZiBsaXN0PC9lbnRyeT48L3Jvdz4KPHJvdz48ZW50cnk+ImFwcGVuZCI8L2VudHJ5PjxlbnRyeT5BcHBlbmQgYWZ0ZXIgbWF0Y2hpbmcgdmFsdWU8L2VudHJ5PjxlbnRyeT5BcHBlbmQgYXQgZW5kIG9mIGxpc3Q8L2VudHJ5Pjwvcm93Pgo8cm93PjxlbnRyeT4iYXBwZW5kX2xhc3QiPC9lbnRyeT48ZW50cnk+QXBwZW5kIGF0IGVuZCBvZiBsaXN0PC9lbnRyeT48ZW50cnk+QXBwZW5kIGF0IGVuZCBvZiBsaXN0PC9lbnRyeT48L3Jvdz4KICAgICAgICA8L3Rib2R5PgogICAgICA8L3Rncm91cD4KICAgIDwvdGFibGU+CiAgPC9wYXJhPjwvc2VjdDI+CiAgPHNlY3QyPjx0aXRsZT4mbHQ7aW50Jmd0OywgJmx0O2RvdWJsZSZndDssICZsdDtzdHJpbmcmZ3Q7LCAmbHQ7Ym9vbCZndDs8L3RpdGxlPjxwYXJhPgpUaGVzZSBlbGVtZW50cyBob2xkIGEgc2luZ2xlIHZhbHVlIG9mIHRoZSBpbmRpY2F0ZWQgdHlwZS4gICZsdDtib29sJmd0OyBlbGVtZW50cwpob2xkIGVpdGhlciB0cnVlIG9yIGZhbHNlLgogIDwvcGFyYT48L3NlY3QyPgogIDxzZWN0Mj48dGl0bGU+Jmx0O21hdHJpeCZndDs8L3RpdGxlPjxwYXJhPgpUaGlzIGVsZW1lbnQgaG9sZHMgdGhlIGZvdXIgJmx0O2RvdWJsZSZndDsgZWxlbWVudHMgb2YgYW4gYWZmaW5lCnRyYW5zZm9ybWF0aW9uLgogIDwvcGFyYT48L3NlY3QyPgogIDxzZWN0Mj48dGl0bGU+Jmx0O25hbWUmZ3Q7PC90aXRsZT48cGFyYT4KSG9sZHMgYSBwcm9wZXJ0eSBuYW1lLiAgRXZhbHVhdGVzIHRvIHRoZSBmaXJzdCB2YWx1ZSBmcm9tIHRoZSBwcm9wZXJ0eSBvZgp0aGUgZm9udCwgbm90IHRoZSBwYXR0ZXJuLgogIDwvcGFyYT48L3NlY3QyPgogIDxzZWN0Mj48dGl0bGU+Jmx0O2NvbnN0Jmd0OzwvdGl0bGU+PHBhcmE+CkhvbGRzIHRoZSBuYW1lIG9mIGEgY29uc3RhbnQ7IHRoZXNlIGFyZSBhbHdheXMgaW50ZWdlcnMgYW5kIHNlcnZlIGFzCnN5bWJvbGljIG5hbWVzIGZvciBjb21tb24gZm9udCB2YWx1ZXM6CiAgICA8dGFibGU+CiAgICAgIDx0aXRsZT5TeW1ib2xpYyBDb25zdGFudHM8L3RpdGxlPgogICAgICAgIDx0Z3JvdXAgY29scz0zIGFsaWduPWxlZnQgY29sc2VwPTAgcm93c2VwPTA+Cgk8dGhlYWQ+CgkgIDxyb3c+CgkgICAgPGVudHJ5PkNvbnN0YW50PC9lbnRyeT4KCSAgICA8ZW50cnk+UHJvcGVydHk8L2VudHJ5PgoJICAgIDxlbnRyeT5DUFAgU3ltYm9sPC9lbnRyeT4KCSAgPC9yb3c+Cgk8L3RoZWFkPgoJPHRib2R5Pgo8cm93PjxlbnRyeT5saWdodDwvZW50cnk+PGVudHJ5PndlaWdodDwvZW50cnk+PC9yb3c+Cjxyb3c+PGVudHJ5Pm1lZGl1bTwvZW50cnk+PGVudHJ5PndlaWdodDwvZW50cnk+PC9yb3c+Cjxyb3c+PGVudHJ5PmRlbWlib2xkPC9lbnRyeT48ZW50cnk+d2VpZ2h0PC9lbnRyeT48L3Jvdz4KPHJvdz48ZW50cnk+Ym9sZDwvZW50cnk+PGVudHJ5PndlaWdodDwvZW50cnk+PC9yb3c+Cjxyb3c+PGVudHJ5PmJsYWNrPC9lbnRyeT48ZW50cnk+d2VpZ2h0PC9lbnRyeT48L3Jvdz4KPHJvdz48ZW50cnk+cm9tYW48L2VudHJ5PjxlbnRyeT5zbGFudDwvZW50cnk+PC9yb3c+Cjxyb3c+PGVudHJ5Pml0YWxpYzwvZW50cnk+PGVudHJ5PnNsYW50PC9lbnRyeT48L3Jvdz4KPHJvdz48ZW50cnk+b2JsaXF1ZTwvZW50cnk+PGVudHJ5PnNsYW50PC9lbnRyeT48L3Jvdz4KPHJvdz48ZW50cnk+cHJvcG9ydGlvbmFsPC9lbnRyeT48ZW50cnk+c3BhY2luZzwvZW50cnk+PC9yb3c+Cjxyb3c+PGVudHJ5Pm1vbm88L2VudHJ5PjxlbnRyeT5zcGFjaW5nPC9lbnRyeT48L3Jvdz4KPHJvdz48ZW50cnk+Y2hhcmNlbGw8L2VudHJ5PjxlbnRyeT5zcGFjaW5nPC9lbnRyeT48L3Jvdz4KPHJvdz48ZW50cnk+dW5rbm93bjwvZW50cnk+PGVudHJ5PnJnYmE8L2VudHJ5Pjwvcm93Pgo8cm93PjxlbnRyeT5yZ2I8L2VudHJ5PjxlbnRyeT5yZ2JhPC9lbnRyeT48L3Jvdz4KPHJvdz48ZW50cnk+YmdyPC9lbnRyeT48ZW50cnk+cmdiYTwvZW50cnk+PC9yb3c+Cjxyb3c+PGVudHJ5PnZyZ2I8L2VudHJ5PjxlbnRyeT5yZ2JhPC9lbnRyeT48L3Jvdz4KPHJvdz48ZW50cnk+dmJncjwvZW50cnk+PGVudHJ5PnJnYmE8L2VudHJ5Pjwvcm93Pgo8cm93PjxlbnRyeT5ub25lPC9lbnRyeT48ZW50cnk+cmdiYTwvZW50cnk+PC9yb3c+CiAgICAgICAgPC90Ym9keT4KICAgICAgPC90Z3JvdXA+CiAgICA8L3RhYmxlPgogICAgICA8L3BhcmE+CiAgICA8L3NlY3QyPgogIDxzZWN0Mj48dGl0bGU+Jmx0O29yJmd0OywKICAgICAgICAgICAgICAgICZsdDthbmQmZ3Q7LAogICAgICAgICAgICAgICAgJmx0O3BsdXMmZ3Q7LAogICAgICAgICAgICAgICAgJmx0O21pbnVzJmd0OywKICAgICAgICAgICAgICAgICZsdDt0aW1lcyZndDssCiAgICAgICAgICAgICAgICAmbHQ7ZGl2aWRlJmd0OzwvdGl0bGU+PHBhcmE+ClRoZXNlIGVsZW1lbnRzIHBlcmZvcm0gdGhlIHNwZWNpZmllZCBvcGVyYXRpb24gb24gYSBsaXN0IG9mIGV4cHJlc3Npb24KZWxlbWVudHMuICAmbHQ7b3ImZ3Q7IGFuZCAmbHQ7YW5kJmd0OyBhcmUgYm9vbGVhbiwgbm90IGJpdHdpc2UuCiAgICAgIDwvcGFyYT4KICAgIDwvc2VjdDI+CiAgPHNlY3QyPjx0aXRsZT4mbHQ7ZXEmZ3Q7LAogICAgICAgICAgICAgICAgJmx0O25vdF9lcSZndDssCiAgICAgICAgICAgICAgICAmbHQ7bGVzcyZndDssCiAgICAgICAgICAgICAgICAmbHQ7bGVzc19lcSZndDssCiAgICAgICAgICAgICAgICAmbHQ7bW9yZSZndDssCiAgICAgICAgICAgICAgICAmbHQ7bW9yZV9lcSZndDs8L3RpdGxlPjxwYXJhPgpUaGVzZSBlbGVtZW50cyBjb21wYXJlIHR3byB2YWx1ZXMsIHByb2R1Y2luZyBhIGJvb2xlYW4gcmVzdWx0LgogIDwvcGFyYT48L3NlY3QyPgogIDxzZWN0Mj48dGl0bGU+Jmx0O25vdCZndDs8L3RpdGxlPjxwYXJhPgpJbnZlcnRzIHRoZSBib29sZWFuIHNlbnNlIG9mIGl0cyBvbmUgZXhwcmVzc2lvbiBlbGVtZW50CiAgPC9wYXJhPjwvc2VjdDI+CiAgPHNlY3QyPjx0aXRsZT4mbHQ7aWYmZ3Q7PC90aXRsZT48cGFyYT4KVGhpcyBlbGVtZW50IHRha2VzIHRocmVlIGV4cHJlc3Npb24gZWxlbWVudHM7IGlmIHRoZSB2YWx1ZSBvZiB0aGUgZmlyc3QgaXMKdHJ1ZSwgaXQgcHJvZHVjZXMgdGhlIHZhbHVlIG9mIHRoZSBzZWNvbmQsIG90aGVyd2lzZSBpdCBwcm9kdWNlcyB0aGUgdmFsdWUKb2YgdGhlIHRoaXJkLgogIDwvcGFyYT48L3NlY3QyPgogIDxzZWN0Mj48dGl0bGU+Jmx0O2FsaWFzJmd0OzwvdGl0bGU+PHBhcmE+CkFsaWFzIGVsZW1lbnRzIHByb3ZpZGUgYSBzaG9ydGhhbmQgbm90YXRpb24gZm9yIHRoZSBzZXQgb2YgY29tbW9uIG1hdGNoCm9wZXJhdGlvbnMgbmVlZGVkIHRvIHN1YnN0aXR1dGUgb25lIGZvbnQgZmFtaWx5IGZvciBhbm90aGVyLiAgVGhleSBjb250YWluIGEKJmx0O2ZhbWlseSZndDsgZWxlbWVudCBmb2xsb3dlZCBieSBvcHRpb25hbCAmbHQ7cHJlZmVyJmd0OywgJmx0O2FjY2VwdCZndDsgYW5kICZsdDtkZWZhdWx0Jmd0OwplbGVtZW50cy4gIEZvbnRzIG1hdGNoaW5nIHRoZSAmbHQ7ZmFtaWx5Jmd0OyBlbGVtZW50IGFyZSBlZGl0ZWQgdG8gcHJlcGVuZCB0aGUKbGlzdCBvZiAmbHQ7cHJlZmVyJmd0O2VkIGZhbWlsaWVzIGJlZm9yZSB0aGUgbWF0Y2hpbmcgJmx0O2ZhbWlseSZndDssIGFwcGVuZCB0aGUKJmx0O2FjY2VwdCZndDthYmxlIGZhbWlseXMgYWZ0ZXIgdGhlIG1hdGNoaW5nICZsdDtmYW1pbHkmZ3Q7IGFuZCBhcHBlbmQgdGhlICZsdDtkZWZhdWx0Jmd0OwpmYW1pbGllcyB0byB0aGUgZW5kIG9mIHRoZSBmYW1pbHkgbGlzdC4KICA8L3BhcmE+PC9zZWN0Mj4KICA8c2VjdDI+PHRpdGxlPiZsdDtmYW1pbHkmZ3Q7PC90aXRsZT48cGFyYT4KSG9sZHMgYSBzaW5nbGUgZm9udCBmYW1pbHkgbmFtZQogIDwvcGFyYT48L3NlY3QyPgogIDxzZWN0Mj48dGl0bGU+Jmx0O3ByZWZlciZndDssICZsdDthY2NlcHQmZ3Q7LCAmbHQ7ZGVmYXVsdCZndDs8L3RpdGxlPjxwYXJhPgpUaGVzZSBob2xkIGEgbGlzdCBvZiAmbHQ7ZmFtaWx5Jmd0OyBlbGVtZW50cyB0byBiZSB1c2VkIGJ5IHRoZSAmbHQ7YWxpYXMmZ3Q7IGVsZW1lbnQuCiZsdDsvYXJ0aWNsZSZndDsKICA8L3BhcmE+PC9zZWN0Mj4KPC9zZWN0MT4KPHNlY3QxPjx0aXRsZT5FWEFNUExFIENPTkZJR1VSQVRJT04gRklMRTwvdGl0bGU+CiAgPHNlY3QyPjx0aXRsZT5TeXN0ZW0gY29uZmlndXJhdGlvbiBmaWxlPC90aXRsZT4KICAgIDxwYXJhPgpUaGlzIGlzIGFuIGV4YW1wbGUgb2YgYSBzeXN0ZW0td2lkZSBjb25maWd1cmF0aW9uIGZpbGUKICAgIDwvcGFyYT4KICAgIDxwcm9ncmFtbGlzdGluZz4KJmx0Oz94bWwgdmVyc2lvbj0iMS4wIj8mZ3Q7CiZsdDshRE9DVFlQRSBmb250Y29uZmlnIFNZU1RFTSAiZm9udHMuZHRkIiZndDsKJmx0OyEtLSAvZXRjL2ZvbnRzL2ZvbnRzLmNvbmYgZmlsZSB0byBjb25maWd1cmUgc3lzdGVtIGZvbnQgYWNjZXNzIC0tJmd0OwombHQ7Zm9udGNvbmZpZyZndDsKJmx0OyEtLSAKCUZpbmQgZm9udHMgaW4gdGhlc2UgZGlyZWN0b3JpZXMKLS0mZ3Q7CiZsdDtkaXImZ3Q7L3Vzci9YMTFSNi9saWIvWDExL2ZvbnRzL3RydWV0eXBlJmx0Oy9kaXImZ3Q7CiZsdDtkaXImZ3Q7L3Vzci9YMTFSNi9saWIvWDExL2ZvbnRzL1R5cGUxJmx0Oy9kaXImZ3Q7CgombHQ7IS0tCglBY2NlcHQgZGVwcmVjYXRlZCAnbW9ubycgYWxpYXMsIHJlcGxhY2luZyBpdCB3aXRoICdtb25vc3BhY2UnCi0tJmd0OwombHQ7bWF0Y2ggdGFyZ2V0PSJwYXR0ZXJuIiZndDsKCSZsdDt0ZXN0IHF1YWw9ImFueSIgbmFtZT0iZmFtaWx5IiZndDsmbHQ7c3RyaW5nJmd0O21vbm8mbHQ7L3N0cmluZyZndDsmbHQ7L3Rlc3QmZ3Q7CgkmbHQ7ZWRpdCBuYW1lPSJmYW1pbHkiIG1vZGU9ImFzc2lnbiImZ3Q7Jmx0O3N0cmluZyZndDttb25vc3BhY2UmbHQ7L3N0cmluZyZndDsmbHQ7L2VkaXQmZ3Q7CiZsdDsvbWF0Y2gmZ3Q7CgombHQ7IS0tCglOYW1lcyBub3QgaW5jbHVkaW5nIGFueSB3ZWxsIGtub3duIGFsaWFzIGFyZSBnaXZlbiAnc2FucycKLS0mZ3Q7CiZsdDttYXRjaCB0YXJnZXQ9InBhdHRlcm4iJmd0OwoJJmx0O3Rlc3QgcXVhbD0iYWxsIiBuYW1lPSJmYW1pbHkiIG1vZGU9Im5vdF9lcSImZ3Q7c2FucyZsdDsvdGVzdCZndDsKCSZsdDt0ZXN0IHF1YWw9ImFsbCIgbmFtZT0iZmFtaWx5IiBtb2RlPSJub3RfZXEiJmd0O3NlcmlmJmx0Oy90ZXN0Jmd0OwoJJmx0O3Rlc3QgcXVhbD0iYWxsIiBuYW1lPSJmYW1pbHkiIG1vZGU9Im5vdF9lcSImZ3Q7bW9ub3NwYWNlJmx0Oy90ZXN0Jmd0OwoJJmx0O2VkaXQgbmFtZT0iZmFtaWx5IiBtb2RlPSJhcHBlbmRfbGFzdCImZ3Q7Jmx0O3N0cmluZyZndDtzYW5zJmx0Oy9zdHJpbmcmZ3Q7Jmx0Oy9lZGl0Jmd0OwombHQ7L21hdGNoJmd0OwoKJmx0OyEtLQoJTG9hZCBwZXItdXNlciBjdXN0b21pemF0aW9uIGZpbGUsIGJ1dCBkb24ndCBjb21wbGFpbgoJaWYgaXQgZG9lc24ndCBleGlzdAotLSZndDsKJmx0O2luY2x1ZGUgaWdub3JlX21pc3Npbmc9InllcyImZ3Q7fi8uZm9udHMuY29uZiZsdDsvaW5jbHVkZSZndDsKCiZsdDshLS0KCUFsaWFzIHdlbGwga25vd24gZm9udCBuYW1lcyB0byBhdmFpbGFibGUgVHJ1ZVR5cGUgZm9udHMuCglUaGVzZSBzdWJzdGl0dXRlIFRydWVUeXBlIGZhY2VzIGZvciBzaW1pbGFyIFR5cGUxCglmYWNlcyB0byBpbXByb3ZlIHNjcmVlbiBhcHBlYXJhbmNlLgotLSZndDsKJmx0O2FsaWFzJmd0OwoJJmx0O2ZhbWlseSZndDtUaW1lcyZsdDsvZmFtaWx5Jmd0OwoJJmx0O3ByZWZlciZndDsmbHQ7ZmFtaWx5Jmd0O1RpbWVzIE5ldyBSb21hbiZsdDsvZmFtaWx5Jmd0OyZsdDsvcHJlZmVyJmd0OwoJJmx0O2RlZmF1bHQmZ3Q7Jmx0O2ZhbWlseSZndDtzZXJpZiZsdDsvZmFtaWx5Jmd0OyZsdDsvZGVmYXVsdCZndDsKJmx0Oy9hbGlhcyZndDsKJmx0O2FsaWFzJmd0OwoJJmx0O2ZhbWlseSZndDtIZWx2ZXRpY2EmbHQ7L2ZhbWlseSZndDsKCSZsdDtwcmVmZXImZ3Q7Jmx0O2ZhbWlseSZndDtWZXJkYW5hJmx0Oy9mYW1pbHkmZ3Q7Jmx0Oy9wcmVmZXImZ3Q7CgkmbHQ7ZGVmYXVsdCZndDsmbHQ7ZmFtaWx5Jmd0O3NhbnMmbHQ7L2ZhbWlseSZndDsmbHQ7L2RlZmF1bHQmZ3Q7CiZsdDsvYWxpYXMmZ3Q7CiZsdDthbGlhcyZndDsKCSZsdDtmYW1pbHkmZ3Q7Q291cmllciZsdDsvZmFtaWx5Jmd0OwoJJmx0O3ByZWZlciZndDsmbHQ7ZmFtaWx5Jmd0O0NvdXJpZXIgTmV3Jmx0Oy9mYW1pbHkmZ3Q7Jmx0Oy9wcmVmZXImZ3Q7CgkmbHQ7ZGVmYXVsdCZndDsmbHQ7ZmFtaWx5Jmd0O21vbm9zcGFjZSZsdDsvZmFtaWx5Jmd0OyZsdDsvZGVmYXVsdCZndDsKJmx0Oy9hbGlhcyZndDsKCiZsdDshLS0KCVByb3ZpZGUgcmVxdWlyZWQgYWxpYXNlcyBmb3Igc3RhbmRhcmQgbmFtZXMKCURvIHRoZXNlIGFmdGVyIHRoZSB1c2VycyBjb25maWd1cmF0aW9uIGZpbGUgc28gdGhhdAoJYW55IGFsaWFzZXMgdGhlcmUgYXJlIHVzZWQgcHJlZmVyZW50aWFsbHkKLS0mZ3Q7CiZsdDthbGlhcyZndDsKCSZsdDtmYW1pbHkmZ3Q7c2VyaWYmbHQ7L2ZhbWlseSZndDsKCSZsdDtwcmVmZXImZ3Q7Jmx0O2ZhbWlseSZndDtUaW1lcyBOZXcgUm9tYW4mbHQ7L2ZhbWlseSZndDsmbHQ7L3ByZWZlciZndDsKJmx0Oy9hbGlhcyZndDsKJmx0O2FsaWFzJmd0OwoJJmx0O2ZhbWlseSZndDtzYW5zJmx0Oy9mYW1pbHkmZ3Q7CgkmbHQ7cHJlZmVyJmd0OyZsdDtmYW1pbHkmZ3Q7VmVyZGFuYSZsdDsvZmFtaWx5Jmd0OyZsdDsvcHJlZmVyJmd0OwombHQ7L2FsaWFzJmd0OwombHQ7YWxpYXMmZ3Q7CgkmbHQ7ZmFtaWx5Jmd0O21vbm9zcGFjZSZsdDsvZmFtaWx5Jmd0OwoJJmx0O3ByZWZlciZndDsmbHQ7ZmFtaWx5Jmd0O0FuZGFsZSBNb25vJmx0Oy9mYW1pbHkmZ3Q7Jmx0Oy9wcmVmZXImZ3Q7CiZsdDsvYWxpYXMmZ3Q7CiZsdDsvZm9udGNvbmZpZyZndDsKICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CiAgPC9zZWN0Mj4KICA8c2VjdDI+PHRpdGxlPlVzZXIgY29uZmlndXJhdGlvbiBmaWxlPC90aXRsZT4KICAgIDxwYXJhPgpUaGlzIGlzIGFuIGV4YW1wbGUgb2YgYSBwZXItdXNlciBjb25maWd1cmF0aW9uIGZpbGUgdGhhdCBsaXZlcyBpbgp+Ly5mb250cy5jb25mCiAgICA8L3BhcmE+CiAgICA8cHJvZ3JhbWxpc3Rpbmc+CiZsdDs/eG1sIHZlcnNpb249IjEuMCI/Jmd0OwombHQ7IURPQ1RZUEUgZm9udGNvbmZpZyBTWVNURU0gImZvbnRzLmR0ZCImZ3Q7CiZsdDshLS0gfi8uZm9udHMuY29uZiBmb3IgcGVyLXVzZXIgZm9udCBjb25maWd1cmF0aW9uIC0tJmd0OwombHQ7Zm9udGNvbmZpZyZndDsKCiZsdDshLS0KCVByaXZhdGUgZm9udCBkaXJlY3RvcnkKLS0mZ3Q7CiZsdDtkaXImZ3Q7fi9taXNjL2ZvbnRzJmx0Oy9kaXImZ3Q7CgombHQ7IS0tCgl1c2UgcmdiIHN1Yi1waXhlbCBvcmRlcmluZyB0byBpbXByb3ZlIGdseXBoIGFwcGVhcmFuY2Ugb24KCUxDRCBzY3JlZW5zLiAgQ2hhbmdlcyBhZmZlY3RpbmcgcmVuZGVyaW5nLCBidXQgbm90IG1hdGNoaW5nCglzaG91bGQgYWx3YXlzIHVzZSB0YXJnZXQ9ImZvbnQiLgotLSZndDsKJmx0O21hdGNoIHRhcmdldD0iZm9udCImZ3Q7CgkmbHQ7ZWRpdCBuYW1lPSJyZ2JhIiBtb2RlPSJhc3NpZ24iJmd0OyZsdDtjb25zdCZndDtyZ2ImbHQ7L2NvbnN0Jmd0OyZsdDsvZWRpdCZndDsKJmx0Oy9tYXRjaCZndDsKJmx0Oy9mb250Y29uZmlnJmd0OwogICAgPC9wcm9ncmFtbGlzdGluZz4KICA8L3NlY3QyPgo8L3NlY3QxPgo8c2VjdDE+PHRpdGxlPkZJTEVTPC90aXRsZT4KICA8cGFyYT4KPGVtcGhhc2lzPmZvbnRzLmNvbmY8L2VtcGhhc2lzPgpjb250YWlucyBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGZvciB0aGUgZm9udGNvbmZpZyBsaWJyYXJ5CmNvbnNpc3Rpbmcgb2YgZGlyZWN0b3JpZXMgdG8gbG9vayBhdCBmb3IgZm9udCBpbmZvcm1hdGlvbiBhcyB3ZWxsIGFzCmluc3RydWN0aW9ucyBvbiBlZGl0aW5nIHByb2dyYW0gc3BlY2lmaWVkIGZvbnQgcGF0dGVybnMgYmVmb3JlIGF0dGVtcHRpbmcgdG8KbWF0Y2ggdGhlIGF2YWlsYWJsZSBmb250cy4gIEl0IGlzIGluIHhtbCBmb3JtYXQuCiAgPC9wYXJhPgogIDxwYXJhPgo8ZW1waGFzaXM+Zm9udHMuZHRkPC9lbXBoYXNpcz4KaXMgYSBEVEQgdGhhdCBkZXNjcmliZXMgdGhlIGZvcm1hdCBvZiB0aGUgY29uZmlndXJhdGlvbiBmaWxlcy4KICA8L3BhcmE+CiAgPHBhcmE+CjxlbXBoYXNpcz5+Ly5mb250cy5jb25mPC9lbXBoYXNpcz4KaXMgdGhlIGNvbnZlbnRpb25hbCBsb2NhdGlvbiBmb3IgcGVyLXVzZXIgZm9udCBjb25maWd1cmF0aW9uLCBhbHRob3VnaCB0aGUKYWN0dWFsIGxvY2F0aW9uIGlzIHNwZWNpZmllZCBpbiB0aGUgZ2xvYmFsIGZvbnRzLmNvbmYgZmlsZS4KICA8L3BhcmE+CiAgPHBhcmE+CjxlbXBoYXNpcz4gfi8uZm9udHMuY2FjaGUtKjwvZW1waGFzaXM+CmlzIHRoZSBjb252ZW50aW9uYWwgcmVwb3NpdG9yeSBvZiBmb250IGluZm9ybWF0aW9uIHRoYXQgaXNuJ3QgZm91bmQgaW4gdGhlCnBlci1kaXJlY3RvcnkgY2FjaGVzLiAgVGhpcyBmaWxlIGlzIGF1dG9tYXRpY2FsbHkgbWFpbnRhaW5lZCBieSBmb250Y29uZmlnLgogIDwvcGFyYT4KPC9zZWN0MT4KPC9hcnRpY2xlPgo=