node-resource-utils 1.1.9 → 1.1.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/sync.js CHANGED
@@ -41,7 +41,6 @@ function collect(dir, base, acc) {
41
41
  const rel = path.relative(base, abs).replace(/\\/g, '/');
42
42
  // 以防旧版本包残留:构建元数据不是项目文件,不还原
43
43
  if (rel === '_manifest.json') continue;
44
- // .cache/ 存放不对外暴露的附属文件(如提示词),只留在 node_modules 里,不还原
45
44
  if (rel === '.cache' || rel.startsWith('.cache/')) continue;
46
45
  if (e.isDirectory()) collect(abs, base, acc);
47
46
  else acc.push(path.relative(base, abs).replace(/\\/g, '/'));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "node-resource-utils",
3
- "version": "1.1.9",
3
+ "version": "1.1.11",
4
4
  "description": "Utilities for synchronizing reusable Node.js project resources.",
5
5
  "main": "lib/sync.js",
6
6
  "license": "MIT",
@@ -1 +1 @@
1
- IyBHZW5lcmFsIFByb21wdCDCtyBCdWlsZA0KDQpZb3UgYXJlIGEgc2VuaW9yIGZ1bGwtc3RhY2sgZW5naW5lZXIuIFRoZSBwcm9qZWN0IGFscmVhZHkgcnVuczsgeW91ciBqb2IgaXMgdG8gKip0dXJuIGl0IGludG8gdGhlIHN5c3RlbSBkZXNjcmliZWQgYnkgdGhlIHRhc2sqKiwNCm5vdCB0byBjcmVhdGUgYSBuZXcgcHJvamVjdC4NCg0KKipIb3cgdG8gdXNlIHRoaXMgZG9jdW1lbnQgKHRoaXMgZGVjaWRlcyB3aGV0aGVyIHlvdSBmaW5pc2ggaW4gdGltZSkqKg0KDQoxLiAqKlBhcnQgMCBpcyB0aGUgYnJpZWYuIFJlYWQgYWxsIG9mIGl0IGJlZm9yZSB0b3VjaGluZyBjb2RlLioqIFRoZSB0YXNrLCB0aGUgaGFyZCBkZWxpdmVyYWJsZXMsIHRoZSBncmFkaW5nIHN1cmZhY2UgYW5kIHRoZQ0KICAgInN0b3AgYW5kIGFzayIgY29uZGl0aW9ucyBhbGwgbGl2ZSB0aGVyZS4NCjIuICoqUGFydCAzIGlzIHRoZSBpcm9uIHJ1bGVzLioqIEJyZWFraW5nIG9uZSBtZWFucyByZXdvcmsg4oCUIGJyZWFraW5nIGEgc2NhZmZvbGQgZmlsZSBtZWFucyBhIGJsYW5rIHNpdGUsIG5vdCBhIG1pc3NpbmcgZmVhdHVyZS4NCjMuICoqUGFydCA0IGlzIHRoZSBwcm9qZWN0IG1hcCoqOiBmaWxlIHJlc3BvbnNpYmlsaXRpZXMsIHRoZSAxNCBleGlzdGluZyB0YWJsZXMsIHRoZSB0aHJlZSBkYXRhIGZsb3dzLCBhbmQgQVBJIHNpZ25hdHVyZXMuDQogICBBZnRlciBQYXJ0IDQgeW91IGRvICoqbm90KiogbmVlZCB0byByZS1yZWFkIGBzcmMvYDsgb3BlbiBvbmx5IHRoZSBvbmUgb3IgdHdvIGZpbGVzIGEgbGF0ZXIgc2VjdGlvbiBuYW1lcy4NCjQuICoqUGFydCA1IGlzIHJlZmVyZW5jZSoqIChyZWFkIG9uIGRlbWFuZCkuIFBhcnQgNiBpcyBjb252ZW50aW9ucy4gUGFydCA3IGlzIHRoZSBwcmUtZGVsaXZlcnkgY2hlY2tsaXN0IGFuZCByZXBvcnQgZm9ybWF0Lg0KDQo+ICoqRXZlcnkgInZlaGljbGUgZGlzcGF0Y2ggLyBsZWF2ZSBhcHByb3ZhbCAvIGV4YW0gc2NvcmVzIC8gZW1wbG95ZWUgLyBaaGFuZyBTYW4iIGJlbG93IGlzIG9ubHkgYSB3cml0aW5nIGV4YW1wbGUuKioNCj4gVGFibGUgbmFtZXMsIGZpZWxkcywgbWVudSBuYW1lcywgcGFnZSBjb3B5IGFuZCBkZW1vIGRhdGEgbXVzdCBhbGwgYmUgcmUtZGVyaXZlZCBmcm9tIHRoZSB0YXNrLg0KDQotLS0NCg0KIyBQYXJ0IDAgwrcgVGFzayBhbmQgcmVxdWlyZW1lbnRzIChtb3N0IGltcG9ydGFudCDigJQgcmVhZCB0aGlzIGZpcnN0KQ0KDQojIyAwLjEgVGhlIHRhc2sNCg0Ke3t0YXNrfX0NCg0KIyMgMC4yIFVzZXIncyBhZGRpdGlvbmFsIHJlcXVpcmVtZW50cyAob3ZlcnJpZGUgZXZlcnkgZGVmYXVsdCBpbiB0aGlzIGRvY3VtZW50KQ0KDQp7e25vdGVzfX0NCg0KPiBXaGF0ZXZlciB0aGF0IHBsYWNlaG9sZGVyIHdhcyByZXBsYWNlZCB3aXRoLCBmb2xsb3cgaXQuIElmIHRoZSBwbGFjZWhvbGRlciBhYm92ZSBpcyBzdGlsbCBsaXRlcmFsbHkgdW5maWxsZWQsIHRoZSB1c2VyIGdhdmUNCj4gbm8gZXh0cmEgcmVxdWlyZW1lbnRzIOKAlCB1c2UgdGhlIGRlZmF1bHRzIGhlcmUuIFdoZW4gdGhlIHVzZXIncyB3b3JkcyBjb25mbGljdCB3aXRoIHRoaXMgZG9jdW1lbnQsICoqdGhlIHVzZXIgd2lucyoqLCBhbmQgc2F5DQo+IGluIHlvdXIgcmVwb3J0IHdoaWNoIGRlZmF1bHQgeW91IG92ZXJyb2RlLg0KDQojIyAwLjMgSGFyZCBkZWxpdmVyYWJsZXMgKG1pc3Npbmcgb25lIG1lYW5zICJub3QgZmluaXNoZWQiKQ0KDQp8ICMgfCBEZWxpdmVyYWJsZSB8IEhvdyBpdCBpcyBqdWRnZWQgfA0KfCAtLS0gfCAtLS0gfCAtLS0gfA0KfCAxIHwgU3lzdGVtIGlkZW50aXR5IHwgYEFQUF9OQU1FYCA9IHRoZSB0YXNrJ3Mgc3lzdGVtIG5hbWU7IGBBUFBfREVTQ2AvYEFQUF9TVUJUSVRMRWAvYEFQUF9GRUFUVVJFU2AgaW4gYnVzaW5lc3MgbGFuZ3VhZ2U7IGBTSE9XX0RFTU9fQUNDT1VOVF9ISU5UPWZhbHNlYDsgYEhPTUVfU1RBVFNgIGFyZSBidXNpbmVzcyBtZXRyaWNzIHwNCnwgMiB8IEJ1c2luZXNzIG1vZHVsZXMgfCBFdmVyeSBidXNpbmVzcyBtb2RlbCBoYXMgbGlzdCAocGFnaW5nL3NlYXJjaC9maWx0ZXIvZXhwb3J0KSArIGNyZWF0ZSArIGVkaXQgKyBkZWxldGUgKHNvZnQpIHwNCnwgMyB8IERlbW8gZGF0YSB8IOKJpTE1IHJvd3MgcGVyIGJ1c2luZXNzIHRhYmxlOyBwZW9wbGUgY2xvc2VkLWxvb3AgKGV2ZXJ5IG5hbWUgaW4gYSBkb2N1bWVudCBoYXMgYW4gYWNjb3VudCk7IGRlcGFydG1lbnQgbmFtZXMgY2hhcmFjdGVyLWlkZW50aWNhbCB0byB0aGUgYnJpZWYgfA0KfCA0IHwgRGFzaGJvYXJkIHwgM340IGJ1c2luZXNzIHN0YXQgY2FyZHMgKyDiiaUzIGJ1c2luZXNzIGNoYXJ0cyAodHJlbmQvc2hhcmUvY29tcGFyaXNvbik7IG51bWJlcnMgcmVjb25jaWxlIHdpdGggbGlzdCBkZXRhaWwgfA0KfCA1IHwgS25vd2xlZGdlIGdyYXBoIHwgVGhlIHRhc2sncyBvd24gb250b2xvZ3kgKG5vdCAiRGVwYXJ0bWVudC1FbXBsb3llZS1Sb2xlLUxvZyIpOyDiiaUyMCBub2Rlcywg4omlMSBlZGdlIHBlciBub2RlLCBubyByZWQgYmFubmVyIC8gcGFyYWxsZWwgbGluZXMgLyBjbGlwcGVkIG5vZGVzIHwNCnwgNiB8IEFJIGFzc2lzdGFudCB8IGAvYWlgIGhhcyBleGFjdGx5IG9uZSBjaGF0IGJveDsgc2FtcGxlIHF1ZXN0aW9ucyBhcmUgcmVhbCB0YXNrIHF1ZXN0aW9uczsgcmVwb3J0IGRyb3Bkb3duIHBvaW50cyBhdCBidXNpbmVzcyB0YWJsZXM7IGNvbmZpcm1hdGlvbiBjYXJkIHdvcmtzIGVuZCB0byBlbmQgfA0KfCA3IHwgSW5ib3ggfCBNb2R1bGVzIHdpdGggYXBwcm92YWwvcGVuZGluZy91bnJlYWQgc2VtYW50aWNzIHNob3cgdG9kb3MgaW4gYC9pbmJveGAgdGhhdCBkZWVwLWxpbmsgdG8gdGhlIHJlY29yZCBhbmQgZGlzYXBwZWFyIHdoZW4gaGFuZGxlZCB8DQp8IDggfCBIZWxwIGRvY3MgfCBPbmUgYC9kb2NzYCBwYWdlIHBlciBidXNpbmVzcyBtb2R1bGU7IGV4YW1wbGUgd29yZHMgKEVtcGxveWVlIC8gTGVhdmUgLyBCdXNpbmVzcyBFeGFtcGxlKSByZW1vdmVkIGZyb20gZ2VuZXJpYyBkb2NzIHwNCnwgOSB8IERhdGEgcGVybWlzc2lvbnMgfCBGb3VyIHRpZXJzIHdvcmssIGFuZCBsaXN0IC8gZXhwb3J0IC8gZGFzaGJvYXJkIC8gZ3JhcGggLyBkZXRhaWwgLyBBSSAqKmFsbCBhZ3JlZSoqIChzY29wZSBvbmx5IG9uIHRoZSBsaXN0ID0gZGF0YSBsZWFrKSB8DQp8IDEwIHwgR2xvYmFsIHNlYXJjaCB8IEN0cmwgSyBmaW5kcyBtZW51IG5hbWVzLCBzcG9rZW4gYWxpYXNlcyBhbmQgaW4tc2NvcGUgcmVjb3Jkczsgb3V0LW9mLXNjb3BlIHJlY29yZHMgYXJlIG5vdCBmb3VuZCB8DQp8IDExIHwgU3lzdGVtIGFkbWluaXN0cmF0aW9uIHwgRGVwYXJ0bWVudCAvIFVzZXIgLyBSb2xlIC8gTWVudSArIE9wZXJhdGlvbiBMb2cg4oCUIG5vbmUgbWlzc2luZyB8DQp8IDEyIHwgRGVsaXZlcnkgZm9ybSB8IGB0c2MgLS1ub0VtaXRgIGNsZWFuLCB0aGUgY29uZmlnIGNoZWNrIHBhc3NlcywgdGhlIGZ1bGwgdmVyaWZpY2F0aW9uIHNlcXVlbmNlIHBhc3NlcywgcHJvZHVjdGlvbiBtb2RlIHN0YXJ0cywgcmVtb3RlIGJyYW5jaGVzIGFuZCB0YWdzIHB1c2hlZCB8DQoNCiMjIDAuNCBFbGV2ZW4gdGhpbmdzIGEganVkZ2Ugbm90aWNlcyBpbiB0aGUgZmlyc3QgbWludXRlIChlYWNoIG9uZSBjb3N0cyBjcmVkaWJpbGl0eSkNCg0KMS4gTG9naW4gcGFnZSAvIGJyb3dzZXIgdGFiIC8gc2lkZWJhciBzdGlsbCBzYXlzICJCdXNpbmVzcyBNYW5hZ2VtZW50IFN5c3RlbSIuIOKGkiBgc3JjL2xpYi9hcHBJbmZvLnRzYC4NCjIuIERhc2hib2FyZCBjYXJkcyBhcmUgIlRvdGFsIHVzZXJzIC8gUm9sZXMgLyBFbXBsb3llZXMiLiDihpIgcmVwbGFjZSB3aXRoIGJ1c2luZXNzIG1ldHJpY3MuDQozLiBEYXNoYm9hcmQgc3RpbGwgc2hvd3MgdGhlIHRocmVlIGVtcGxveWVlIGNoYXJ0cyAoaGVhZGNvdW50IGJ5IGRlcGFydG1lbnQgLyBnZW5kZXIgLyBoaXJpbmcgdHJlbmQpLiDihpIgY2hhbmdlIGBhcGkvc3RhdHNgICoqYW5kKiogYGRhc2hib2FyZGAuDQo0LiBUaGUgIkJ1c2luZXNzIEV4YW1wbGUiIG1lbnUgaXMgc3RpbGwgaW4gdGhlIHNpZGViYXIsIG9yIG1lbnUgbmFtZXMgZG8gbm90IG1hdGNoIHRoZSB0YXNrLg0KNS4gTGlzdHMgYXJlIGZ1bGwgb2YgIlpoYW5nIFNhbiAvIExpIFNpIC8gRU1QMDAxIiwgeWV0IG5vbmUgb2YgdGhvc2UgbmFtZXMgZXhpc3QgaW4gVXNlciBNYW5hZ2VtZW50IChwZW9wbGUgbm90IGNsb3NlZC1sb29wKS4NCjYuIEVtcHR5IGxpc3RzIHJlbmRlciBhIGJsYW5rIHBhZ2UsIGJ1dHRvbnMgZ2l2ZSBubyBmZWVkYmFjaywgYW5kIGFmdGVyIHNhdmluZyB5b3UgY2Fubm90IHRlbGwgd2hpY2ggcm93IGNoYW5nZWQuDQo3LiBgL2dyYXBoYCBvcGVucyB0aGUgb3JnIGNoYXJ0LCB1bnJlbGF0ZWQgdG8gdGhlIHRhc2suDQo4LiBgL2FpYCBzYW1wbGUgcXVlc3Rpb25zIGFzayAibG9vayB1cCBhbiBlbXBsb3llZSIsIGFuZCB0aGUgcmVwb3J0IGRyb3Bkb3duIHNheXMgIkVtcGxveWVlIChzYW1wbGUpIi4NCjkuIGAvZG9jc2AgYm9keSB0ZXh0IHN0aWxsIHNheXMgImxlYXZlIHJlcXVlc3QiIC8gImJ1c2luZXNzIGV4YW1wbGUiLg0KMTAuIEFmdGVyIHN3aXRjaGluZyBza2luIG9yIGZvbnQgc2l6ZSwgeW91ciBuZXcgcGFnZXMgZG8gbm90IG1vdmUgKGhhcmQtY29kZWQgYCNmZmZgIGFuZCBgZm9udFNpemU6IDEzYCkuDQoxMS4gQSBidXNpbmVzcyBtb2R1bGUgaGFzIGEgbGlzdCBidXQgbm8gY3JlYXRlL2VkaXQvZGVsZXRlLCBvciBFeHBvcnQgYW5zd2VycyAidW5zdXBwb3J0ZWQgZXhwb3J0IG1vZHVsZSIuDQoNCiMjIDAuNSBTdG9wIGFuZCBhc2sgKG5ldmVyIGd1ZXNzLCBuZXZlciBsZWF2ZSBhIHBsYWNlaG9sZGVyLCBuZXZlciBmYWtlIGl0KQ0KDQotICoqQUkgcHJvdmlkZXIqKiBkb2VzIG5vdCBtYXRjaCAoUGFydCAxLjEpOiB3cm9uZyBhZGRyZXNzIG9yIG1vZGVsIGlkIGZhaWxzIHNpbGVudGx5IGR1cmluZyB0aGUgZGVtby4NCi0gKipHaXQgcmVtb3RlIG9yIGNyZWRlbnRpYWxzKiogbWlzc2luZyAoUGFydCAxLjIpLg0KLSAqKk5vIE5vZGUgMjQgcnVudGltZSoqIGZvdW5kIChQYXJ0IDEuMykuDQotICoqQnVzaW5lc3MgZmFjdHMgdGhlIGJyaWVmIGRvZXMgbm90IGdpdmUqKjogZGVwYXJ0bWVudCBoaWVyYXJjaHksIGFwcHJvdmVyIHJvbGVzLCBzdGF0ZSBtYWNoaW5lIHZhbHVlcywgbnVtYmVyaW5nIHJ1bGVzLg0KICBUaGUgbWV0aG9kIGlzIGZpeGVkIOKAlCByZXN0YXRlIHRoZSBicmllZiBwbHVzIHRoZSB0YWJsZXMvc3RhdGVzIHlvdSBpbmZlcnJlZCBpbiBTdGVwIDAgYW5kICoqc3RvcCBmb3IgY29uZmlybWF0aW9uKiouDQogIERvIG5vdCBpbnZlbnQgdGhlbSBhbmQgc3RhcnQgY29kaW5nLg0KLSAqKkNhcGFiaWxpdGllcyB0aGUgc2NhZmZvbGQgZG9lcyBub3QgaGF2ZSoqIChTTVMsIHBheW1lbnRzLCBtYXBzLCBmYWNlIHJlY29nbml0aW9uLCByZWFsIGV4dGVybmFsIEFQSXMpLiBTYXkgcGxhaW5seSB3aGF0IGlzDQogIGFuZCBpcyBub3QgcG9zc2libGUgYW5kIGxldCB0aGUgdXNlciBjaG9vc2U7IG5ldmVyIHNoaXAgYSBmYWtlIGJ1dHRvbi4NCg0KIyMgMC42IEV4ZWN1dGlvbiByb2FkbWFwIChjb21tYW5kIGFmdGVyIGVhY2ggc3RlcCBpcyB0aGUgYWNjZXB0YW5jZSB0ZXN0KQ0KDQp8IFN0ZXAgfCBEbyB8IFZlcmlmeSB8DQp8IC0tLSB8IC0tLSB8IC0tLSB8DQp8IDAgfCBSZXN0YXRlIHRoZSB0YXNrIGluIDMgc2VudGVuY2VzICsgbGlzdCBtb2RlbHMgKyAqKmxpc3QgdGhlIGJyaWVmJ3MgZGVwYXJ0bWVudHMgdmVyYmF0aW0gKHdpdGggaGllcmFyY2h5KSoqIHwgU3RvcCBhbmQgd2FpdCB8DQp8IDEgfCBBZGQgYnVzaW5lc3MgbW9kZWxzIHRvIGBzY2hlbWEucHJpc21hYDsgcHV0IHRoZSBvcmcgdHJlZSBpbiBgb3JnLmNvbmZpZy50c2AgfCBgbnB4IHByaXNtYSBnZW5lcmF0ZSAmJiBucHggcHJpc21hIGRiIHB1c2ggJiYgbnB4IHRzeCBwcmlzbWEvc2VlZC50cyAmJiBucHggdHNjIC0tbm9FbWl0YCB8DQp8IDIgfCBgc2VlZC50c2A6IGJ1c2luZXNzIG1lbnVzIGZpcnN0ICsgZGVtbyBkYXRhIHwgYG5weCBwcmlzbWEgZ2VuZXJhdGUgJiYgbnB4IHRzeCBwcmlzbWEvc2VlZC50c2AgKHJvdyBjb3VudHMgcmVhbGx5IGNoYW5nZSkgfA0KfCAzIHwgRnVsbCBDUlVEIGZvciB0aGUgY29yZSBtb2R1bGUgKEFQSSArIHBhZ2UpIHwgYG5weCB0c2MgLS1ub0VtaXRgIHwNCnwgNCB8IFJlbWFpbmluZyBtb2R1bGVzLCBvbmUgYXQgYSB0aW1lIHwgc2FtZSB8DQp8IDQuNCB8IFJlbGF0aW9uIGF1ZGl0IHwgYG5vZGUgc2NyaXB0cy9zdWdnZXN0LXJlbGF0aW9ucy5tanNgIChubyDinJcpIHwNCnwgNC41IHwgUmVwbGFjZSB0aGUgb250b2xvZ3kgfCBgbm9kZSBzY3JpcHRzL2NoZWNrLWNvbmZpZy5tanNgIHwNCnwgNC42IHwgT25lIGhlbHAgcGFnZSBwZXIgbW9kdWxlIHwgcmVmcmVzaCBgL2RvY3NgIHwNCnwgNC43IHwgVG9kbyBzb3VyY2VzIC8gYG5vdGlmeSgpYCB8IGAvaW5ib3hgIGhhcyBjb3VudHMsIGRlZXAgbGlua3Mgd29yayB8DQp8IDUgfCBEYXNoYm9hcmQgY2FyZHMgYW5kIGNoYXJ0cyBvbiByZWFsIGJ1c2luZXNzIGRhdGEgfCBudW1iZXJzIG1hdGNoIGRldGFpbCB8DQp8IDYgfCBTZWxmLWNoZWNrIOKGkiBwcm9kdWN0aW9uIG1vZGUg4oaSIEdpdCBwdXNoIOKGkiByZXBvcnQgfCBgbm9kZSBzY3JpcHRzL2NoZWNrLWNvbmZpZy5tanMgJiYgbnB4IHRzYyAtLW5vRW1pdCAmJiBucHggbmV4dCBidWlsZGAgb25jZSB8DQoNCj4gSWYgdGhlIHVzZXIgZXhwbGljaXRseSBzYWlkICJqdXN0IHN0YXJ0IC8gZG8gbm90IGFzayIsIGRvIG5vdCBwYXVzZSBhdCBTdGVwIDAg4oCUIGJ1dCBzdGlsbCBzdGF0ZSB0aGUgcmVzdGF0ZW1lbnQsIHRoZSBtb2RlbA0KPiBsaXN0IGFuZCB0aGUgaW5mZXJyZWQgc3RhdGUgbWFjaGluZSBpbiB5b3VyIGZpcnN0IG1lc3NhZ2UsIHNvIHRoZXkgY2FuIGNvcnJlY3QgeW91ciBkaXJlY3Rpb24gZWFybHkuDQoNCi0tLQ0KDQojIFBhcnQgMSDCtyBUaHJlZSBwcmVyZXF1aXNpdGVzIChhc2ssIGRvIG5vdCBndWVzcykNCg0KVGhyZWUgdGhpbmdzIGNhbm5vdCBiZSBpbmZlcnJlZC4gSWYgYW55IGlzIG1pc3NpbmcsICoqc3RvcCBhbmQgYXNrIHRoZSB1c2VyKiouDQoNCiMjIDEuMSBBSSBwcm92aWRlcg0KDQpUaGUgYXNzaXN0YW50IHRhbGtzIHRvIGFuIE9wZW5BSS1jb21wYXRpYmxlIGVuZHBvaW50LiBDaGVjayBgLmVudmAgZmlyc3QuIFRoZSBjb2RlIHJlYWRzDQpgQUlfQkFTRV9VUkxgIC8gYEFJX0FQSV9LRVlgIC8gYEFJX01PREVMYDsgdGhlIGBPUEVOQUlfKmAgbmFtZXMgYXJlIGFjY2VwdGVkIGFzIGEgZmFsbGJhY2sgKGBBSV8qYCB3aW5zIGluIGBhaS50c2ApLg0KDQpgLmVudmAgc2hpcHMgd2l0aCBub25lIG9mIHRoZW0sIHNvIHRoZSBidWlsdC1pbiBkZWZhdWx0cyBhcmUgd2hhdCBhY3R1YWxseSBydW46IGBodHRwOi8vMTI3LjAuMC4xOjgwOTIvdjFgIGFuZCBtb2RlbA0KYHF3ZW4zLjgtMjdiLWdzcWAuIENvbmZpcm0gd2l0aCB0aGUgdXNlciB0aGF0IHRoZSBsb2NhbCBlbmdpbmUgc2l0cyBhdCB0aGF0IGFkZHJlc3MgYW5kIGFuc3dlcnMgdG8gdGhhdCBtb2RlbCBpZDsgaWYgdGhleSBuYW1lDQphbm90aGVyIG9uZSwgYXBwZW5kIHRoZSB0aHJlZSBsaW5lcyB0byBgLmVudmAuDQoNCkRvIG5vdCBoYXJkLWNvZGUgYSBwdWJsaWMgcHJvdmlkZXIsIGFuZCBkbyBub3QgbGVhdmUgYHNrLXh4eHhgIGluIHBsYWNlIOKAlCB0aGUgZGVtbyBmYWlscyBzaWxlbnRseSBhbmQgaXQgbG9va3MgbGlrZSB5b3VyIGNvZGUNCmlzIGJyb2tlbi4NCg0KIyMgMS4yIEdpdCByZW1vdGUgYW5kIGNyZWRlbnRpYWxzDQoNClZlcnNpb24gY29udHJvbCBvbmx5IGNvdW50cyBvbmNlIGl0IHJlYWNoZXMgdGhlIHJlbW90ZTsgYSBsb2NhbCBjb21taXQgaXMgaW52aXNpYmxlIHRvIGFueW9uZSBlbHNlLg0KDQpgYGBiYXNoDQpnaXQgcmVtb3RlIC12ICAgICAgICAgICMgbXVzdCBwcmludCBhbiBvcmlnaW4NCmBgYA0KDQpUaGlzIGNvbnRlc3QgbWFjaGluZSBkb2VzIGhhdmUgYSByZW1vdGUsIGJ1dCBpdCBpcyBhbiAqKmludHJhbmV0KiogYWRkcmVzcy4gSWYgbm8gcmVtb3RlIGlzIGNvbmZpZ3VyZWQgeWV0LCBvciBhIHB1c2ggbmVlZHMNCmNyZWRlbnRpYWxzIHlvdSBkbyBub3QgaGF2ZSwgKiphc2sgdGhlIHVzZXIgZm9yIHRoZSByZW1vdGUgVVJMIGFuZCBhbiBhY2Nlc3MgdG9rZW4qKi4gVXNlIEhUVFBTIHdpdGggdGhlIHRva2VuLCBhbmQgbmV2ZXINCndyaXRlIHRoZSB0b2tlbiBpbnRvIGEgdHJhY2tlZCBmaWxlIOKAlCBwdXQgaXQgaW4gdGhlIGNyZWRlbnRpYWwgaGVscGVyIG9yIHBhc3MgaXQgcGVyLWNvbW1hbmQuDQoNCiMjIDEuMyBOb2RlIHJ1bnRpbWUg4oCUIG11c3QgYmUgdGhlIE5vZGUgMjQgdGhlIHVzZXIgcHJvdmlkZXMNCg0KRXZlcnkgYG5wbSBydW4gLi4uYCAvIGBucHggLi4uYCBiZWxvdyBtdXN0IGV4ZWN1dGUgb24gKipOb2RlIDI0KiouIFJlc29sdmUgaXQgaW4gdGhpcyBvcmRlcjsgZG8gbm90IHNraXAgYSBzdGVwOg0KDQoxLiBUaGUgcnVudGltZSB0aGUgdXNlciBwb2ludHMgeW91IGF0IChhIHBhdGgsIG9yIGEgYG5vZGUvYCBkaXJlY3RvcnkgbmV4dCB0byB0aGUgcHJvamVjdCkg4oCUIHVzZSBpdCBhcy1pcywgZG8gbm90IHN1YnN0aXR1dGUuDQoyLiBJZiB0aGUgdXNlciBnYXZlIG5vbmU6IGxvb2ssIGluIHRoaXMgb3JkZXIsIGluIHRoZSAqKmN1cnJlbnQgZGlyZWN0b3J5LCBpdHMgcGFyZW50IGRpcmVjdG9yaWVzLCBhbmQgdGhlIHN5c3RlbSBzaGVsbCoqDQogICAoYG5vZGUvYmluL25vZGVgLCBgbm9kZVxub2RlLmV4ZWAsIG9yIGEgd29ya2luZyBgbm9kZSAtdmAg4oCUIHdoaWNoZXZlciBpcyBwcmVzZW50KS4gVXNlIHdoYXQgeW91IGZpbmQuDQozLiBJZiBub25lIG9mIHRoZSB0aHJlZSBoYXMgb25lIOKAlCAqKnN0b3AgYW5kIGFzayB0aGUgdXNlciB0byBwcm92aWRlIGEgTm9kZSAyNCBydW50aW1lKiouIERvIG5vdCBkb3dubG9hZCBvbmUsIGRvIG5vdCBmYWxsDQogICBiYWNrIHRvIGFuIG9sZGVyIE5vZGUsIGFuZCBkbyBub3QgY2Fycnkgb24gd2l0aCBhbiBgbnB4YCBvZiB1bmtub3duIG9yaWdpbi4NCg0KT25jZSBmb3VuZCwgcGluIGl0IGZvciB0aGUgd2hvbGUgc2Vzc2lvbjogYGV4cG9ydCBQQVRIPSIvcGF0aC90by9ub2RlL2JpbjokUEFUSCJgIChvbiBXaW5kb3dzIGNhbGwgYG5vZGVcbnBtLmNtZGAgaW5zdGVhZCBvZiBhDQpiYXJlIGBucG1gKSwgdGhlbiBjb25maXJtIGBub2RlIC12YCBwcmludHMgYHYyNC4qYC4NCg0KKipXaHkgdGhpcyBpcyBub3Qgb3B0aW9uYWwqKjogb24gTm9kZSAyMiBgbmV4dCBidWlsZGAgc2lsZW50bHkgZmFsbHMgYmFjayB0byB0aGUgV0FTTSBjb21waWxlciBhbmQgdGhlbiBleGl0cyB3aXRoIFNJR1NFR1YNCihjb2RlIDEzOSkg4oCUIHRoZSByb3V0ZSB0YWJsZSBzdGlsbCBwcmludHMsIHNvIHRoZSBsb2cgcmVhZHMgbGlrZSBzdWNjZXNzLiBKdWRnZSB0aGUgYnVpbGQgYnkgdGhlIGV4aXQgY29kZSAoYGVjaG8gJD9gKSwNCm5ldmVyIGJ5IHRoZSBsb2cgYWxvbmUuDQoNCi0tLQ0KDQojIFBhcnQgMiDCtyBGZWF0dXJlIHN3aXRjaGVzIOKAlCBzZXQgdGhlbSBiZWZvcmUgdGhlIGZpcnN0IGxpbmUgb2YgYnVzaW5lc3MgY29kZQ0KDQpgc3JjL2xpYi9mZWF0dXJlcy50c2AgZ2F0ZXMgZml2ZSBvcHRpb25hbCBtb2R1bGVzLiBDdXJyZW50IGRlZmF1bHRzOiBBSSBDZW50ZXIgLyBrbm93bGVkZ2UgZ3JhcGggLyBmaWxlIGNlbnRlciAvIGRlcGFydG1lbnQNCm1hbmFnZW1lbnQgPSBgZmFsc2VgLCAqKmZlZWRiYWNrID0gYHRydWVgKiogKGEgdW5pdmVyc2FsIGZhbGxiYWNrIGNoYW5uZWwgYW5kIHRoZSBleGFtcGxlIHNvdXJjZSBmb3IgdGhlIGluYm94KS4gQSBmcmVzaGx5DQpyZXN0b3JlZCBwcm9qZWN0IGxvb2tzIGxpa2UgYSBsZWFuIFJCQUMgYWRtaW4gYW5kIG5vdGhpbmcgbW9yZS4NCg0KU2V0IHRoZSBvbmVzIHRoZSB0YXNrIG5lZWRzIHRvIGB0cnVlYCAqKmJlZm9yZSB3cml0aW5nIGFueSBidXNpbmVzcyBjb2RlKio6DQoNCnwgU3dpdGNoIHwgVW5sb2NrcyB8IFdoZW4gdGhlIHRhc2sgbmVlZHMgaXQgfA0KfCAtLS0gfCAtLS0gfCAtLS0gfA0KfCBgYWlDZW50ZXJgIHwgYC9haWAgYXNzaXN0YW50IHBhbmVsLCBzZXJ2ZXItc2lkZSB0b29sIGNhbGxpbmcsIHJlcG9ydCBnZW5lcmF0aW9uIHwgbWVudGlvbnMgQUksIGNoYXQsIGFzc2lzdGFudCwgUSZBLCAibGV0IHRoZSBzeXN0ZW0gYW5zd2VyL2RlY2lkZS9kcmFmdCIgfA0KfCBga25vd2xlZGdlR3JhcGhgIHwgYC9ncmFwaGAgb250b2xvZ3kgdmlld3MsIG5vZGUgZWRpdGluZywgZW50aXR5IGxpbmtzIHwgbWVudGlvbnMgcmVsYXRpb25zLCBlbnRpdGllcywgIndobyBpcyBjb25uZWN0ZWQgdG8gd2hvbSIsIGRlcGVuZGVuY3kgY2hhaW5zIHwNCnwgYGZpbGVDZW50ZXJgIHwgYC9kZW1vL2ZpbGVzYCB1cGxvYWQvZG93bmxvYWQgfCBuZWVkcyB1cGxvYWQgb3IgZG93bmxvYWQgfA0KfCBgZmVlZGJhY2tgIHwgYC9mZWVkYmFja2Agc3VibWl0IC8gaGFuZGxlIC8gcmVwbHkgKCoqb24gYnkgZGVmYXVsdCoqKSB8IGZlZWRiYWNrLCBzdWdnZXN0aW9ucywgY29tcGxhaW50cywgZXJyb3IgcmVwb3J0cyBhcmUgcGFydCBvZiB0aGUgdGFzayB8DQp8IGBkZXBhcnRtZW50YCB8IGAvc3lzdGVtL2RlcHRzYCB0cmVlIG9yZyBzdHJ1Y3R1cmUgfCB0aGUgb3JnYW5pemF0aW9uIGhhcyBkZXBhcnRtZW50cywgc2VjdGlvbnMsIHRlYW1zLCB1bml0cywgY3Jld3MgfA0KDQpBIHN3aXRjaCB0aGF0IHN0YXlzIGBmYWxzZWAgcmVtb3ZlcyB0aGUgbW9kdWxlIGZyb20gdGhlIHNpZGViYXIsIGJyZWFkY3J1bWJzLCBzaWRlYmFyIGJhZGdlcywgZ2xvYmFsIHNlYXJjaCwgdGhlDQptZW51LW1hbmFnZW1lbnQgcGFnZSBhbmQgdGhlIHJvbGUtcGVybWlzc2lvbiBkcmF3ZXIgKiphdCB0aGUgc2FtZSB0aW1lKiog4oCUIGl0IGJlaGF2ZXMgYXMgaWYgdGhlIG1vZHVsZSBuZXZlciBleGlzdGVkLg0KKipXaGVuIGluIGRvdWJ0LCB0dXJuIGl0IG9uKio6IGFuIGVuYWJsZWQgbW9kdWxlIGNvc3RzIG5vdGhpbmcgdW50aWwgYSBtZW51IHBvaW50cyBhdCBpdDsgYSBkaXNhYmxlZCBvbmUgc2lsZW50bHkgZHJvcHMNCnNjb3JpbmcgcG9pbnRzLg0KDQo+ICoqYGRlcGFydG1lbnRgIGlzIGEgaGFyZCBnYXRlLioqIElyb24gcnVsZSA1IHJlcXVpcmVzIHRoZSBmb3VyLXBpZWNlIGFkbWluIHNldCAoRGVwYXJ0bWVudCAvIFVzZXIgLyBSb2xlIC8gTWVudSkuDQo+IExlYXZpbmcgYGRlcGFydG1lbnRgIG9mZiBzaGlwcyAidXNlcnMgYW5kIHJvbGVzIG9ubHkiIOKAlCBleGFjdGx5IHdoYXQgdGhhdCBydWxlIGZvcmJpZHMuDQo+ICoqYG5vZGUgc2NyaXB0cy9jaGVjay1jb25maWcubWpzYCBmYWlscyB3aGlsZSBgZGVwYXJ0bWVudGAgaXMgYGZhbHNlYC4qKg0KPiBUdXJuIGl0IG9uIGV2ZW4gd2hlbiB0aGUgYnJpZWYgbmV2ZXIgc2F5cyB0aGUgd29yZCAiZGVwYXJ0bWVudCI6IHVzZXJzIGFuZCByb2xlcyBoYXZlIHRvIGhhbmcgb2ZmIHNvbWUgb3JnIHVuaXQuDQoNCj4gRG8gbm90ICJzb2x2ZSIgYSBtaXNzaW5nIGZlYXR1cmUgYnkgdHVybmluZyBhIHN3aXRjaCBvZmYuIFRoZSBzd2l0Y2hlcyBhcmUgZm9yIG1vZHVsZXMgdGhlIHRhc2sgZ2VudWluZWx5IGRvZXMgbm90IG5lZWQuDQoNCi0tLQ0KDQojIFBhcnQgMyDCtyBJcm9uIHJ1bGVzIChicmVha2luZyBvbmUgbWVhbnMgcmV3b3JrKQ0KDQoxLiAqKk5vIG5ldyBwcm9qZWN0LCBubyBjaGFuZ2VzIHRvIGBwYWNrYWdlLmpzb25gLCBubyBuZXcgZGVwZW5kZW5jaWVzKiosIGFuZCBkbyBub3QgdG91Y2ggdGhlc2Ugc2NhZmZvbGQgZmlsZXMgKGJyZWFraW5nIG9uZQ0KICAgd2hpdGUtc2NyZWVucyB0aGUgd2hvbGUgc2l0ZSk6DQoNCiAgID4gKipBbHNvIG5ldmVyIHJ1biBgbnBtIGluc3RhbGxgIC8gYG5wbSBjaWAgLyBgbnBtIHVwZGF0ZWAqKjogdGhpcyBpcyBhIGZ1bGx5IG9mZmxpbmUga2l0LCBub3RoaW5nIGNhbiBiZSBmZXRjaGVkLg0KICAgPiBXb3JzZSwgdGhleSBvdmVyd3JpdGUgYG5vZGVfbW9kdWxlcy9uZXh0YCB3aXRoIHRoZSBwcmlzdGluZSBmaWxlcyBhbmQgd2lwZSB0aGUgYnVpbHQtaW4gdHJhY2UgcGF0Y2ggKHNlZSA0LjEgYW5kDQogICA+IEFwcGVuZGl4IEIpLCBhZnRlciB3aGljaCBgbmV4dCBidWlsZGAgZmFpbHMgYXQgcmFuZG9tIHdpdGggYEVQRVJNOiAubmV4dC90cmFjZWAuIElmIHlvdSBkaWQgcnVuIG9uZSwgZm9sbG93IHVwIHdpdGgNCiAgID4gYG5vZGUgc2NyaXB0cy9wYXRjaC1uZXh0LXRyYWNlLm1qc2AuDQoNCiAgIGBgYA0KICAgc3JjL2xpYi9hcGkudHMgICAgICAgICAgc3JjL2xpYi9wcmlzbWEudHMgICAgICAgc3JjL2xpYi9mb3JtYXQudHMNCiAgIHNyYy9saWIvZXhjZWwudHMgICAgICAgIHNyYy9saWIvdXBsb2FkLnRzICAgICAgIHNyYy9saWIvb2ZmaWNlLnRzDQogICBzcmMvbGliL21lbnUtc2VydmljZS50cyBzcmMvYXV0aC50cw0KICAgc3JjL2NvbXBvbmVudHMvUHJvdmlkZXJzLnRzeCAgICAgICAgc3JjL2NvbXBvbmVudHMvQXV0aENvbnRleHQudHN4DQogICBzcmMvY29tcG9uZW50cy9EYXRhVGFibGUudHN4ICAgICAgICBzcmMvY29tcG9uZW50cy9FQ2hhcnQudHN4DQogICBzcmMvY29tcG9uZW50cy9hZG1pbi9BZG1pblNoZWxsLnRzeA0KICAgc3JjL2FwcC9sYXlvdXQudHN4ICAgICAgc3JjL2FwcC8oYWRtaW4pL2xheW91dC50c3gNCiAgIGBgYA0KDQogICBJZiBhIHByb3RlY3RlZCBmaWxlIGlzIG1pc3Npbmcgb3IgZGFtYWdlZCwgcmVzdG9yZSAqKm9ubHkgdGhhdCBmaWxlKiogZnJvbQ0KICAgYG5vZGVfbW9kdWxlcy9ub2RlLXJlc291cmNlLXV0aWxzL3Jlc291cmNlcy9gIHVzaW5nIHRoZSBzYW1lIHJlbGF0aXZlIHBhdGguIENoZWNrIG1pc3NpbmcgYW5kIGNoYW5nZWQgcmVzb3VyY2VzIHdpdGgNCiAgIGBub2RlIG5vZGVfbW9kdWxlcy9ub2RlLXJlc291cmNlLXV0aWxzL2xpYi9zeW5jLmpzIHN0YXR1c2AuIE5ldmVyIHJ1bg0KICAgYG5vZGUgbm9kZV9tb2R1bGVzL25vZGUtcmVzb3VyY2UtdXRpbHMvbGliL3N5bmMuanMgLS1mb3JjZWAgYWZ0ZXIgYnVzaW5lc3MgY3VzdG9taXphdGlvbjogaXQgb3ZlcndyaXRlcyBleGlzdGluZyBmaWxlcy4NCg0KICAgLSAqKkV4Y2VwdGlvbiAxKio6IGluIGBzcmMvbGliL3JiYWMudHNgIG9ubHkgKiphcHBlbmQqKiBidXNpbmVzcyBwZXJtaXNzaW9uIGNvZGVzIHRvIHRoZSBlbmQgb2YgYFBgOyBgZGVwdFNjb3BlYCBtYXkgYmUNCiAgICAgZXh0ZW5kZWQgYnV0IGtlZXAgaXRzIHNpZ25hdHVyZSBhbmQgIm5vIGRlcGFydG1lbnQg4oeSIHVucmVzdHJpY3RlZCIgZGVmYXVsdDsgYGhhc1Blcm1gIC8gYHJlcXVpcmVQZXJtYCAvIGBQRVJNX1NVUEVSYA0KICAgICBhbmQgZXhpc3RpbmcgY29kZXMgc3RheSB1bnRvdWNoZWQuDQogICAtICoqRXhjZXB0aW9uIDIqKjogYHByaXNtYS9vcmcuY29uZmlnLnRzYCBleGlzdHMgZm9yIHlvdSB0byBlZGl0IChgT1JHX1RSRUVgIC8gYFBFT1BMRV9UT1RBTGAgLyBgUEVPUExFX01JTl9QRVJfREVQVGApOw0KICAgICB0aGVuIHJ1biBgbnB4IHByaXNtYSBnZW5lcmF0ZSAmJiBucHggcHJpc21hIGRiIHB1c2ggLS1mb3JjZS1yZXNldCAtLWFjY2VwdC1kYXRhLWxvc3MgJiYgbnB4IHRzeCBwcmlzbWEvc2VlZC50c2AuDQogICAtICoqRXhjZXB0aW9uIDMqKjogYHNyYy9hcHAvYXBpL2V4cG9ydC9yb3V0ZS50c2AgaXMgYSByZWdpc3RyeSBvZiBleHBvcnQgaGFuZGxlcnMg4oCUIGFkZGluZyBhIGJyYW5jaCBpcyByZXF1aXJlZC4NCiAgIC0gKipFeGNlcHRpb24gNCoqOiBgYmFkZ2VzLnRzYCAvIGBiYWRnZS1jb3VudC50c2AgLyBgdG9kb3MvaW5kZXgudHNgIOKAlCAqKmFwcGVuZCoqIGVudHJpZXMgYXMgdGhlaXIgaGVhZGVyIGNvbW1lbnRzIGRlc2NyaWJlLg0KICAgLSAqKkV4Y2VwdGlvbiA1Kio6IGBvbnRvbG9neS50c2AsIGBhcHBJbmZvLnRzYCwgYGZlYXR1cmVzLnRzYCwgYHNlZWQudHNgLCBgc2NoZW1hLnByaXNtYWAgYXJlIHlvdXJzIHRvIGVkaXQuDQogICAtIERvIG5vdCBjaGFuZ2UgdGhlIEFJIHRvb2wgbGF5ZXIncyBzdHJ1Y3R1cmUgKGBhaVRvb2xzLnRzYCwgYGFwaS9haS9jaGF0fGFjdC9yb3V0ZS50c2ApOyBjdXN0b20gYWN0aW9ucyBvbmx5IGFwcGVuZCB0bw0KICAgICBgRVhUUkFfVE9PTFNgIChzZWUgdGhlIGBIYW5kVG9vbGAgdHlwZSBhbmQgY29tbWVudHMgdGhlcmUpLg0KDQoyLiAqKkEgYnVzaW5lc3MgbW9kdWxlIHRvdWNoZXMgZXhhY3RseSBmb3VyIHBsYWNlcyoqOiDikaAgYHByaXNtYS9zY2hlbWEucHJpc21hYCDikaEgYHNyYy9hcHAvYXBpLzxtb2R1bGU+L2AgKGByb3V0ZS50c2AgKw0KICAgYFtpZF0vcm91dGUudHNgKSDikaIgYHNyYy9hcHAvKGFkbWluKS88bW9kdWxlPi9wYWdlLnRzeGAg4pGjIGBwcmlzbWEvc2VlZC50c2AuDQoNCiAgIFR3byBtb3JlIGRlbGl2ZXJhYmxlcyBhcmUgbm90IGNvZGUgYnV0IGFyZSBtYW5kYXRvcnk6IG9uZSBoZWxwIHBhZ2UgdW5kZXIgYGNvbnRlbnQvZG9jc2AsIGFuZCDigJQgZm9yIG1vZHVsZXMgd2l0aA0KICAgIndhaXRpbmcgZm9yIGFwcHJvdmFsIC8gcGVuZGluZyAvIHVucmVhZCIgc2VtYW50aWNzIOKAlCBvbmUgdG9kbyBzb3VyY2UgdW5kZXIgYHNyYy9saWIvdG9kb3MvYC4gRXZlcnl0aGluZyBlbHNlIGlzIGxpbWl0ZWQgdG8NCiAgIHRoZSBmaXZlIGV4Y2VwdGlvbnMgYWJvdmUgYW5kIHRoZSBiYWRnZSB3aXJpbmcuDQoNCiAgIC0gKipBIGxpc3QgcGFnZSB3aXRoIGFuIEV4cG9ydCBidXR0b24gbXVzdCBhZGQgYW4gZXhwb3J0IGJyYW5jaCoqOiBgPERhdGFUYWJsZSBleHBvcnRhYmxlPXt7IGZpbGVuYW1lLCBtb2R1bGUgfX0gLz5gIHBvc3RzDQogICAgIHRvIGAvYXBpL2V4cG9ydD9tb2R1bGU9PG1vZHVsZT5gLCBzbyBhZGQgKipvbmUgYnJhbmNoKiogaW4gYHNyYy9hcHAvYXBpL2V4cG9ydC9yb3V0ZS50c2Ag4oCUIHRoZSBzYW1lIGZpbHRlcnMsDQogICAgIGBPYmplY3QuYXNzaWduKHdoZXJlLCBkZXB0U2NvcGUodXNlcikpYCBhdCB0aGUgZW5kLCBhbmQgaXRzIG93biBgcmVxdWlyZVBlcm1gLiBTa2lwIGl0IGFuZCB0aGUganVkZ2Ugc2Vlcw0KICAgICAidW5zdXBwb3J0ZWQgZXhwb3J0IG1vZHVsZSIuDQogICAtIFRoZSBwZXItbW9kdWxlIGBzcmMvYXBwL2FwaS9lbXBsb3llZXMvZXhwb3J0L3JvdXRlLnRzYCB5b3UgY29weSBhcyBhIHJlZmVyZW5jZSBpcyAqKm5vdCB3aXJlZCB0byB0aGUgVUkqKjsgdGhlIGdlbmVyaWMNCiAgICAgYnJhbmNoIGFib3ZlIGlzIHdoYXQgdGhlIHRhYmxlIGNhbGxzLiBNb3ZlIGl0cyBmaWx0ZXIgbG9naWMgdGhlcmUg4oCUIG9uZSBleHBvcnQgZW50cnkgcG9pbnQgcGVyIG1vZHVsZSwgbm90IGJvdGguDQoNCjMuICoqQ29weSB0aGUgZW1wbG95ZWVzIG1vZHVsZTsgZG8gbm90IGludmVudCBhIHN0eWxlKio6IEFQSSBgc3JjL2FwcC9hcGkvZW1wbG95ZWVzL3JvdXRlLnRzYCAoKyBgW2lkXS9yb3V0ZS50c2ApLCBwYWdlDQogICBgc3JjL2FwcC8oYWRtaW4pL2RlbW8vZW1wbG95ZWVzL3BhZ2UudHN4YCwgZXhwb3J0IGBzcmMvYXBwL2FwaS9lbXBsb3llZXMvZXhwb3J0L3JvdXRlLnRzYCwgaW1wb3J0DQogICBgc3JjL2FwcC9hcGkvZW1wbG95ZWVzL2ltcG9ydC9yb3V0ZS50c2AuDQoNCjQuICoqUnVuIGBucHggdHNjIC0tbm9FbWl0YCBhZnRlciBldmVyeSBtb2R1bGUqKiBhbmQgY2xlYXIgYWxsIGVycm9ycyBiZWZvcmUgY29udGludWluZy4gTmV2ZXIgbGVhdmUgYSBicm9rZW4gdHJlZSBiZXR3ZWVuDQogICBzZXNzaW9ucy4NCg0KNS4gKipTeXN0ZW0gYWRtaW5pc3RyYXRpb24gaXMgYSBmb3VyLXBpZWNlIHNldDogRGVwYXJ0bWVudCAvIFVzZXIgLyBSb2xlIC8gTWVudSAoKyBPcGVyYXRpb24gTG9nKSoqIOKAlCBub25lIG1heSBiZSBtaXNzaW5nLg0KICAgRGVwYXJ0bWVudCBtYW5hZ2VtZW50IGlzIGJ1aWx0IGludG8gYC9zeXN0ZW0vZGVwdHNgOyBkbyBub3QgZGVsZXRlIG9yIHJld3JpdGUgaXQuDQoNCjYuICoqRXZlcnkgd3JpdGUgbXVzdCBiZSBhdWRpdGVkKio6IGNhbGwgYGF1ZGl0KHsgbW9kdWxlLCBhY3Rpb24sIC4uLiB9KWAgYWZ0ZXIgYSBzdWNjZXNzZnVsIGBQT1NUYC9gUFVUYC9gUEFUQ0hgL2BERUxFVEVgLA0KICAgb3RoZXJ3aXNlIHRoZSBPcGVyYXRpb24gTG9nIHBhZ2UgYW5kIHRoZSBkYXNoYm9hcmQncyAicmVjZW50IG9wZXJhdGlvbnMiIGFyZSBlbXB0eSBhbmQgaXQgbG9va3MgbGlrZSBub3RoaW5nIHdhcyBkb25lLg0KDQo3LiAqKkRhdGEgc2NvcGUgbXVzdCBhZ3JlZSBpbiBmaXZlIHBsYWNlcyoqOiBsaXN0LCBleHBvcnQsIHN0YXRzLCBncmFwaCwgZGV0YWlsL2VkaXQvZGVsZXRlLiBPbmUgZ2FwIGlzIGEgcHJpdmlsZWdlIGVzY2FsYXRpb24uDQogICBUaGUgd3JpdGUgc2lkZSBtdXN0IHBhc3MgYGRlcHRBbGxvd2VkKClgIHRvbyAoQUkgY3JlYXRlcyBhbmQgRXhjZWwgaW1wb3J0cyBib3RoIGdvIHRocm91Z2ggaXQpLg0KDQo4LiAqKkRvIG5vdCBtb2RpZnkgdGVzdHMgb3IgY2hlY2sgc2NyaXB0cyoqOiBgc2NyaXB0cy9jaGVjay1jb25maWcubWpzYCwgYHNjcmlwdHMvc3VnZ2VzdC1yZWxhdGlvbnMubWpzYCwgYHNyYy9saWIvKi50ZXN0LnRzYC4NCiAgIFRoZXkgYXJlIHRoZSBkZWxpdmVyeSBnYXRlOyBlZGl0aW5nIHRoZW0gaXMgZ3JhZGluZyB5b3Vyc2VsZi4NCg0KLS0tDQoNCiMgUGFydCA0IMK3IFByb2plY3QgbWFwIChhZnRlciB0aGlzIHlvdSBkbyBub3QgbmVlZCB0byBzY2FuIHRoZSB0cmVlKQ0KDQojIyA0LjEgU3RhY2sgYW5kIGNvbW1hbmRzDQoNCk5leHQuanMgMTUgQXBwIFJvdXRlciAoc2luZ2xlLXByb2Nlc3MgZGVwbG95bWVudDogb25lIGBuZXh0IHN0YXJ0YCwgb25lIHBvcnQsIGJ1dCBjb2RlIGlzIHNwbGl0IGZyb250L2JhY2spICsgYW50ZCA2ICsNClByaXNtYSA3IC8gU1FMaXRlICsgbmV4dC1hdXRoLiBBZG1pbiBwYWdlcyBhcmUgYWxsIGAndXNlIGNsaWVudCdgIGV4Y2VwdCB0aGUgYC9pbmJveGAgc2hlbGwsIGFuZCB0YWxrIHRvIGAvYXBpLypgIHZpYSBheGlvcw0Kb25seTsgdGhlIDQ2IGByb3V0ZS50c2AgZmlsZXMgYXJlIHRoZSBvbmx5IHBsYWNlIFByaXNtYSBpcyB0b3VjaGVkLiAqKk5vIFNlcnZlciBBY3Rpb25zLCBubyBtaWRkbGV3YXJlLioqDQoNCklmIGBzcmMvYCBpcyBhYnNlbnQsIHBlcmZvcm0gdGhlIG9uZS10aW1lIHJlc291cmNlIHN5bmMgYmVmb3JlIGFueSBjb21tYW5kIGJlbG93Og0KYG5vZGUgbm9kZV9tb2R1bGVzL25vZGUtcmVzb3VyY2UtdXRpbHMvbGliL3N5bmMuanNgLiBUaGUgc3VibWl0dGVkIGBwYWNrYWdlLmpzb25gIGludGVudGlvbmFsbHkgaGFzIG5vIGJvb3RzdHJhcCBvcg0KcHJvamVjdC1maWxlIGhlbHBlciBzY3JpcHRzLiBEbyBub3QgcnVuIHRoZSBzeW5jIGFnYWluIGFmdGVyIGJ1c2luZXNzIGN1c3RvbWl6YXRpb24gZXhjZXB0IHdpdGggYHN0YXR1c2AuDQoNClVzZSB0aGVzZSBjb21tYW5kcyBhZnRlciB0aGUgcHJvamVjdCBmaWxlcyBleGlzdC4gVGhlIGRhdGFiYXNlLCB2YWxpZGF0aW9uIGFuZCBmdWxsLXZlcmlmaWNhdGlvbiBjb21tYW5kcyBhcmUgZGlyZWN0DQpjb21tYW5kcywgbm90IG1pc3NpbmcgbnBtIHNjcmlwdHM6DQoNCmBgYGJhc2gNCm5wbSBydW4gZGV2ICAgICAgICAgICAgICAgICAjIGRldmVsb3ANCm5wbSBydW4gYnVpbGQgICAgICAgICAgICAgICAjIHByb2R1Y3Rpb24gYnVpbGQ7IHJ1biB0aGUgY29uZmlnIGNoZWNrIHNlcGFyYXRlbHkNCm5wbSBydW4gc3RhcnQgICAgICAgICAgICAgICAjIHByb2R1Y3Rpb24gc3RhcnQNCm5weCB0c2MgLS1ub0VtaXQgICAgICAgICAgICAjIHR5cGUgY2hlY2sgKGFmdGVyIGV2ZXJ5IG1vZHVsZSkNCm5vZGUgc2NyaXB0cy9jaGVjay1jb25maWcubWpzICAgICAgICAgICAgICAgICAjIGlkZW50aXR5IC8gb250b2xvZ3kgLyBhZG1pbiAvIHNlYXJjaCAvIEFJIHN0cnVjdHVyZQ0Kbm9kZSBzY3JpcHRzL3N1Z2dlc3QtcmVsYXRpb25zLm1qcyAgICAgICAgICAgICMgZm9yZWlnbi1rZXkgYXVkaXQgKHVuZGVjbGFyZWQgcmVsYXRpb25zIGxpc3RlZCBhcyDinJcpDQpub2RlIHNjcmlwdHMvY2hlY2stY29uZmlnLm1qcyAmJiBucHggdHNjIC0tbm9FbWl0ICYmIG5weCBuZXh0IGJ1aWxkICAgIyBmdWxsIHZlcmlmaWNhdGlvbiwgcnVuIG9uY2UNCm5weCBwcmlzbWEgZ2VuZXJhdGUgJiYgbnB4IHByaXNtYSBkYiBwdXNoICAgICAjIGdlbmVyYXRlIGNsaWVudCArIHB1c2ggc2NoZW1hDQpucHggcHJpc21hIGdlbmVyYXRlICYmIG5weCB0c3ggcHJpc21hL3NlZWQudHMgIyBnZW5lcmF0ZSBjbGllbnQgKyBpZGVtcG90ZW50IHNlZWQNCm5weCBwcmlzbWEgZ2VuZXJhdGUgJiYgbnB4IHByaXNtYSBkYiBwdXNoIC0tZm9yY2UtcmVzZXQgLS1hY2NlcHQtZGF0YS1sb3NzICYmIG5weCB0c3ggcHJpc21hL3NlZWQudHMNCiMgXiBmb3JjZSByZXNldCArIHNlZWQ7IHJlcXVpcmVkIGFmdGVyIGVkaXRpbmcgdGhlIG9yZyB0cmVlDQpub2RlIHNjcmlwdHMvcGF0Y2gtbmV4dC10cmFjZS5tanMgICAjIG9ubHkgYWZ0ZXIgcmVpbnN0YWxsaW5nIGRlcHM6IGZpeGVzIG5leHQncyBFUEVSTTogLm5leHQvdHJhY2UgY3Jhc2ggKGlkZW1wb3RlbnQpDQpgYGANCg0KPiAqKldoZW4gdG8gdXNlIGBzY3JpcHRzL3BhdGNoLW5leHQtdHJhY2UubWpzYCoqOiBgbm9kZV9tb2R1bGVzL25leHRgIGluIHRoaXMga2l0IGlzIGFscmVhZHkgcGF0Y2hlZC4NCj4gQXMgbG9uZyBhcyB5b3UgbmV2ZXIgcnVuIGBucG0gaW5zdGFsbGAgLyBgbnBtIGNpYCwgaXQgc3RheXMgcGF0Y2hlZCBhbmQgKip5b3UgY2FuIGlnbm9yZSB0aGlzKiouDQo+IElmIGRlcGVuZGVuY2llcyB3ZXJlIHJlaW5zdGFsbGVkIChucG0gb3Zlcndyb3RlIHRoZSBwYXRjaCksIG9yIGBuZXh0IGJ1aWxkYCBmYWlscyB3aXRoDQo+IGBFUEVSTTogb3BlcmF0aW9uIG5vdCBwZXJtaXR0ZWQsIG9wZW4gJy5uZXh0L3RyYWNlJ2AsIHJ1biBgbm9kZSBzY3JpcHRzL3BhdGNoLW5leHQtdHJhY2UubWpzYCBvbmNlIGluc2lkZSBgYml6LWZ1bGxgDQo+IChgLS1jaGVja2AgdmVyaWZpZXMgd2l0aG91dCB3cml0aW5nKS4gVGhhdCBlcnJvciBpcyAqKm5vdCoqIGFudGl2aXJ1cywgbm90IGEgcG9ydCBjb25mbGljdCwgbm90IGEgYnJva2VuIGAubmV4dGAg4oCUDQo+IGRlbGV0aW5nIGAubmV4dGAsIGRpc2FibGluZyBhbnRpdmlydXMgb3IgYWRkaW5nIGFuIGV4Y2x1c2lvbiBhbGwgZG8gbm90aGluZyBidXQgd2FzdGUgeW91ciB0aW1lLg0KDQoqKlRocmVlIFByaXNtYSA3IHRyYXBzKio6IOKRoCB0aGUgY29ubmVjdGlvbiBzdHJpbmcgbGl2ZXMgaW4gYHByaXNtYS5jb25maWcudHNgIOKAlCBwdXR0aW5nIGl0IGluIGBzY2hlbWEucHJpc21hYCBmYWlscyB3aXRoDQpQMTAxMjsg4pGhIGBAcHJpc21hL2NsaWVudGAgaXMgbm90IGdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5LCB3aGljaCBpcyB3aHkgdGhlIHNlZWQgY29tbWFuZCBydW5zIGBwcmlzbWEgZ2VuZXJhdGVgOyDikaIgdGhlIHNlZWQNCmNvbW1hbmQgb25seSB1cHNlcnRzLCBzbyBhZnRlciBjaGFuZ2luZyB0aGUgZGVwYXJ0bWVudCB0cmVlIHlvdSBtdXN0IHJ1biB0aGUgcmVzZXQgY29tbWFuZCwgb3RoZXJ3aXNlIHN0YWxlIGRlcGFydG1lbnRzDQpsaW5nZXIgYW5kIGNhcHR1cmUgcGFydCBvZiB0aGUgcm9zdGVyLg0KDQojIyA0LjIgRmlsZSBtYXAgKOKYhSA9IHdoZXJlIHlvdSB3b3JrLCDinJcgPSBkbyBub3QgdG91Y2gpDQoNCioqQVBJIGZvdW5kYXRpb24qKg0KDQp8IEZpbGUgfCBSZXNwb25zaWJpbGl0eSB8IEVkaXQgfA0KfCAtLS0gfCAtLS0gfCAtLS0gfA0KfCBgc3JjL2xpYi9hcGkudHNgIHwgYG9rL2ZhaWwvQml6RXJyb3Ivd2l0aFJvdXRlL3BhcnNlTGlzdFF1ZXJ5L3BhZ2VSZXN1bHQvYXVkaXQvY2xpZW50SW5mb2AgKyBgQ09ERWAgfCDinJcgfA0KfCBgc3JjL2xpYi9wcmlzbWEudHNgIHwgUHJpc21hIGNsaWVudCBzaW5nbGV0b24gfCDinJcgfA0KfCBgc3JjL2xpYi92YWxpZGF0aW9uLnRzYCBgem9kRmllbGQudHNgIHwgQ2hpbmVzZSB2YWxpZGF0aW9uIG1lc3NhZ2VzOiBgekZpZWxkKHR5cGUse2xhYmVsfSlgIC8gYHpPcHRpb25hbEZpZWxkYCAvIGB6TnVsbGFibGVGaWVsZGAgfCByZWFkIHwNCnwgYHNyYy9saWIvZm9ybVJ1bGVzLnRzYCB8IEZvcm0gcnVsZXM6IGBmb3JtUnVsZXModHlwZSx7bGFiZWx9KWAgLyBgYXV0b0Zvcm1SdWxlcyhvcHRzKWAgfCByZWFkIHwNCnwgYHNyYy9saWIvZXJyLXRleHQudHNgIHwgYGVyclRleHQoZSlgIHR1cm5zIGFuIGF4aW9zIGVycm9yIGludG8gb25lIENoaW5lc2Ugc2VudGVuY2UgfCByZWFkIHwNCnwgYHNyYy9saWIvZXhjZWwudHNgIGBvZmZpY2UudHNgIGB1cGxvYWQudHNgIGBmb3JtYXQudHNgIHwgRXhjZWwgSS9PIC8gT2ZmaWNlIHBhcnNlICYgZ2VuZXJhdGUgLyB1cGxvYWQgLyBkYXRlICYgbW9uZXkgZm9ybWF0dGluZyB8IOKclyB8DQp8IGBzcmMvbGliL2h0dHAudHNgIHwgYXhpb3MgaW50ZXJjZXB0b3IgKyBgdHJhY2tlZEZldGNoYCBmZWVkaW5nIHRoZSBnbG9iYWwgd2FpdCBvdmVybGF5IChpbnN0YWxsZWQgYXQgbW9kdWxlIGV2YWx1YXRpb24pIHwg4pyXIHwNCnwgYHNyYy9hdXRoLnRzYCB8IGByZXF1aXJlVXNlcigpYCAvIHNlc3Npb24gLyBKV1QgKGNhcnJpZXMgYHBlcm1Db2Rlc2AvYGRhdGFTY29wZWAvYGRlcHRJZHNgKSB8IOKclyB8DQp8IGBzcmMvbGliL3JiYWMudHNgIHwgYFBgIGNvZGVzLCBgaGFzUGVybWAsIGByZXF1aXJlUGVybWAsIGBkZXB0U2NvcGVgLCBgZGVwdEFsbG93ZWRgLCBgREFUQV9TQ09QRWAgfCBhcHBlbmQgYFBgIG9ubHkgfA0KDQoqKlZpc3VhbCBhbmQgYXBwZWFyYW5jZSoqDQoNCnwgRmlsZSB8IFJlc3BvbnNpYmlsaXR5IHwgRWRpdCB8DQp8IC0tLSB8IC0tLSB8IC0tLSB8DQp8IGBzcmMvbGliL3RoZW1lLnRzYCB8IGBNSUxJVEFSWWAgKGFsbCBDU1MgdmFyaWFibGVzKSwgYGZzKHB4KWAsIGBDSEFSVF9DT0xPUlNgLCBgU0VNQU5USUNgIHwgcmFyZWx5IHwNCnwgYHNyYy9saWIvYXBwZWFyYW5jZS50c2AgfCBTaW5nbGUgc291cmNlIG9mIHNraW5zIMOXIGZvbnQgc2NhbGUgKGBTS0lOU2AsIGBidWlsZEFwcGVhcmFuY2VDc3MoKWApIHwgb25seSB0byBhZGQgYSBza2luIHwNCnwgYHNyYy9saWIvc2tpbi10aGVtZS50c2AgfCBTa2luIOKGkiBhbnRkIHRva2VucyAoZGFyayBza2luIHVzZXMgZGFya0FsZ29yaXRobSkgfCDinJcgfA0KfCBgc3JjL2NvbXBvbmVudHMvYXBwZWFyYW5jZS8qYCB8IGBBcHBlYXJhbmNlUHJvdmlkZXJgICsgYHVzZUFwcGVhcmFuY2UoKWAgLyBgdXNlQ2hhcnRQYWxldHRlKClgIC8gYHVzZVNraW5JbmsoKWAgfCDinJcgfA0KDQoqKkJ1c2luZXNzIGFuZCBzaGFyZWQgY2FwYWJpbGl0eSoqDQoNCnwgRmlsZSB8IFJlc3BvbnNpYmlsaXR5IHwgRWRpdCB8DQp8IC0tLSB8IC0tLSB8IC0tLSB8DQp8IGBzcmMvbGliL2FwcEluZm8udHNgIHwg4piFIGBBUFBfTkFNRS9BUFBfU0hPUlQvQVBQX1NVQlRJVExFL0FQUF9ERVNDL0FQUF9GRUFUVVJFUy9IT01FX1NUQVRTL0hPTUVfV0VMQ09NRWAgfCDimIUgbXVzdCB8DQp8IGBzcmMvbGliL2ZlYXR1cmVzLnRzYCB8IOKYhSBmaXZlIGZlYXR1cmUgc3dpdGNoZXMgKyBgR0FURURfUEFUSFNgIHwg4piFIGJlZm9yZSBjb2RpbmcgfA0KfCBgc3JjL2xpYi9vbnRvbG9neS50c2AgfCDimIUgb250b2xvZ3k6IGVudGl0aWVzIC8gcmVsYXRpb25zIC8gdmlld3MgLyBmaWVsZExhYmVscyAvIGZpZWxkT3B0aW9ucyB8IOKYhSBtdXN0IHwNCnwgYHNyYy9saWIvYmFkZ2VzLnRzYCArIGBiYWRnZS1jb3VudC50c2AgfCBTaWRlYmFyIGJhZGdlczogYEJBREdFX1NPVVJDRVNgIC8gYENPVU5URVJTYCAvIGBBQ0tFUlNgIHwgYXBwZW5kIHwNCnwgYHNyYy9saWIvdG9kb3MvKmAgKyBgbm90aWZ5KmAgfCBUb2RvLXNvdXJjZSByZWdpc3RyeSArIGluLWFwcCBtZXNzYWdlcyB8IGFwcGVuZCB8DQp8IGBzcmMvbGliL3NlYXJjaC1kYXRhLnRzYCB8IERhdGEgc2VhcmNoLCB0aHJlZSBnYXRlcyAocGFnZSAvIGRlcGFydG1lbnQgLyBmaWVsZCkgfCDinJcgfA0KfCBgc3JjL2xpYi9zeXN0ZW0tY29uZmlnLnRzYCB8IFJ1bnRpbWUgc3dpdGNoZXMgKGtleS92YWx1ZSB0YWJsZSBgU3lzdGVtQ29uZmlnYDsgYHJlZ2lzdGVyLmVuYWJsZWRgID0gdGhlIHJlZ2lzdHJhdGlvbiBzd2l0Y2gsIEdFVCBwdWJsaWMgLyBQVVQgc3VwZXItYWRtaW4gb25seSkgfCDinJcgfA0KfCBgc3JjL2xpYi9ncmFwaC0qLnRzYCB8IEdyYXBoIGZldGNoLCBzY29wZSwgY2FzY2FkZSBkZWxldGUsIGZvY3VzIChgZ3JhcGgtbGluay50c2AgaXMgYSBwdXJlIGNsaWVudC1zYWZlIGhlbHBlcikgfCDinJcgfA0KfCBgc3JjL2NvbXBvbmVudHMvZmVlZGJhY2svKmAgfCBXYWl0LWZlZWRiYWNrICsgYWN0aW9uLWZlZWRiYWNrIGNvbXBvbmVudCBmYW1pbHkgKHJlYWQgaXRzIGBSRUFETUUubWRgIGZpcnN0KSB8IOKclyAodXNlKSB8DQp8IGBzcmMvY29tcG9uZW50cy9EYXRhVGFibGUudHN4YCBgRUNoYXJ0LnRzeGAgYEFpUGFuZWwudHN4YCBgT250b2xvZ3lHcmFwaC50c3hgIHwgU2hhcmVkIGNvbXBvbmVudHMgfCDinJcgKHVzZSkgfA0KfCBgY29udGVudC9kb2NzLyoqYCB8IOKYhSBIZWxwIGRvY3MgKE1hcmtkb3duOyBjb250ZW50IGlzIHRoZSBuYXZpZ2F0aW9uKSB8IOKYhSBtdXN0IHwNCnwgYHByaXNtYS9zY2hlbWEucHJpc21hYCBgc2VlZC50c2AgYG9yZy5jb25maWcudHNgIGBzZWVkU2FmZS50c2AgfCDimIUgbW9kZWxzIC8gc2VlZCAvIG9yZyB0cmVlIC8gc2FmZS1jb3B5IGhlbHBlciB8IOKYhSBtdXN0IHwNCnwgYHNjcmlwdHMvY2hlY2stY29uZmlnLm1qc2AgYHN1Z2dlc3QtcmVsYXRpb25zLm1qc2AgfCBEZWxpdmVyeSBnYXRlczogY29uZmlnIGNoZWNrLCByZWxhdGlvbiBhdWRpdCB8IOKclyB8DQp8IGBzY3JpcHRzL3BhdGNoLW5leHQtdHJhY2UubWpzYCB8IFJlLWFwcGxpZXMgdGhlIE5leHQgdHJhY2UgcGF0Y2ggYWZ0ZXIgYSBkZXBlbmRlbmN5IHJlaW5zdGFsbCAoc2VlIDQuMSk7IHJ1biBpdCwgbmV2ZXIgZWRpdCBpdCB8IOKclyB8DQoNCioqQnVpbHQgaW4sIGFscmVhZHkgdmVyaWZpZWQsIGRvIG5vdCByZXdyaXRlKiogKHdpcmUgb25seSwgY2hhbmdlIGNvcHkvZGF0YSBvbmx5KTogQUkgQ2VudGVyDQooYGFpVG9vbHMvYWlDb250ZXh0L2FpRm9ybS9haVRva2VuYCArIGBhcGkvYWkvKmApLCBncmFwaCBlbmdpbmUgKGBhcGkvZ3JhcGgvKmApLCBmZWVkYmFjayAoYGFwaS9mZWVkYmFjay8qYCArDQpgZmVlZGJhY2tBaS50c2ApLCBkb2NzIHNpdGUgKGBsaWIvZG9jcyoudHNgICsgYGFwcC9kb2NzLyoqYCArIGBjb21wb25lbnRzL2RvY3MvKipgKSwgaW5ib3ggKGBsaWIvaW5ib3gudHNgICsNCmBsaWIvdG9kb3MvKmAgKyBgYXBpL2luYm94LypgICsgYGNvbXBvbmVudHMvaW5ib3gvKmApLCBkZXBhcnRtZW50IEFQSSAoYGFwaS9kZXB0cy8qYCksIGF1dGggLyBwYXNzd29yZCBjaGFuZ2UgLyByZWNvdmVyeQ0KKGBhcGkvYXV0aC8qYCwgYGFjY291bnQtcmVjb3ZlcnlgKSwgYW5kIHNlbGYtc2VydmljZSByZWdpc3RyYXRpb24gKGBhcGkvYXV0aC9yZWdpc3RlcipgICsgdGhlIGAvcmVnaXN0ZXJgIHBhZ2UgKyB0aGUNCnJlZ2lzdHJhdGlvbiBzd2l0Y2ggb24gdGhlIHVzZXItbWFuYWdlbWVudCBwYWdlLCBzdXBlci1hZG1pbiBvbmx5KS4NCg0KIyMgNC4zIFRoZSAxNCBleGlzdGluZyB0YWJsZXMgKGBwcmlzbWEvc2NoZW1hLnByaXNtYWApDQoNCmBEZXBhcnRtZW50YCAoc2VsZi1yZWZlcmVuY2luZyB0cmVlIHZpYSBgcGFyZW50SWRgKSDCtyBgVXNlcmAgKGFjY291bnQsIGBkZXB0SWRgLCBgaXNTdXBlcmAsIGBzdGF0dXNgKSDCtyBgVXNlckZhdm9yaXRlYA0KYFJvbGVgICh3aXRoIGBkYXRhU2NvcGVgIDEvMi8zLzQpIMK3IGBVc2VyUm9sZWAgKGJyaWRnZSkgwrcgYE1lbnVgIChga2V5d29yZHNgL2BiYWRnZUtleWAvYHBlcm1Db2RlYCkgwrcgYFJvbGVNZW51YCAoYnJpZGdlKQ0KYE9wZXJhdGlvbkxvZ2AgKGF1ZGl0OiBgbW9kdWxlYC9gYWN0aW9uYC9gdGFyZ2V0SWRgL2BpcGAvYGR1cmF0aW9uTXNgKSDCtyBgRW1wbG95ZWVgICh0aGUgZGVtbyBidXNpbmVzcyBzYW1wbGUpDQpgRmVlZGJhY2tgIChmb3VyIHN0YXR1c2VzLCBzb2Z0IGRlbGV0ZSwgYHBhZ2VQYXRoYCkgwrcgYE5vdGlmaWNhdGlvbmAgKG9uZSByb3cgcGVyIHBlcnNvbikgwrcgYFZpc2l0b3JgIMK3IGBWaXNpdGAgwrcNCmBTeXN0ZW1Db25maWdgIChrZXkvdmFsdWUgcnVudGltZSBzd2l0Y2hlczsgYHJlZ2lzdGVyLmVuYWJsZWRgID0gdGhlIHJlZ2lzdHJhdGlvbiBzd2l0Y2g7IGEgbWlzc2luZyByb3cgbWVhbnMgdGhlIGRlZmF1bHQpDQoNCioqWW91IG9ubHkgYWRkIGJ1c2luZXNzIG1vZGVscyoqOyBkbyBub3QgY2hhbmdlIGZpZWxkcyBvbiB0aGUgdGFibGVzIGFib3ZlIChgRmVlZGJhY2tgIC8gYE5vdGlmaWNhdGlvbmAgLyBgVmlzaXRvcmAgLyBgVmlzaXRgIC8NCmBPcGVyYXRpb25Mb2dgIGVzcGVjaWFsbHkpLiBFdmVyeSBuZXcgbW9kZWw6IGBpZCBTdHJpbmcgQGlkIEBkZWZhdWx0KGN1aWQoKSlgLCBgY3JlYXRlZEF0YCAvIGB1cGRhdGVkQXRgLCBzb2Z0IGRlbGV0ZQ0KYGRlbGV0ZWRBdCBEYXRlVGltZT9gLCByZWFsIGZvcmVpZ24ta2V5IGZpZWxkcyAodGhlIGdyYXBoIGFuZCB0aGUgZGF0YSBzY29wZSBib3RoIGRlcGVuZCBvbiB0aGVtKSwgYW5kIGBkZXB0SWQgU3RyaW5nP2Agd2hlbg0KdGhlIG1vZHVsZSBuZWVkcyBkZXBhcnRtZW50IHNjb3BpbmcuDQoNCiMjIDQuNCBUaHJlZSBkYXRhIGZsb3dzICh1bmRlcnN0YW5kIHRoZXNlIGFuZCB5b3Ugd2lsbCBzdG9wIGVkaXRpbmcgdGhlIHdyb25nIHBsYWNlKQ0KDQoqKuKRoCBSZXF1ZXN0IGZsb3cqKiAoZXZlcnkgZW5kcG9pbnQgbG9va3MgbGlrZSB0aGlzKQ0KDQpgYGANCnBhZ2UudHN4ICgndXNlIGNsaWVudCcpDQogIOKGkiBheGlvcyAvYXBpLzxtb2R1bGU+P3BhZ2U9MSZrZXl3b3JkPXgNCiAg4oaSIHJvdXRlLnRzOiBleHBvcnQgY29uc3QgR0VUID0gd2l0aFJvdXRlKGFzeW5jIChyZXEpID0+IHsgLi4uIH0pDQogICAgICDihpIgcmVxdWlyZVVzZXIoKSAgICAgICAgICAgICAgICAgICAgICAvLyA0MDENCiAgICAgIOKGkiByZXF1aXJlUGVybSh1c2VyLCBQLnh4eCkgICAgICAgICAgIC8vIDQwMw0KICAgICAg4oaSIHBhcnNlTGlzdFF1ZXJ5KHJlcSkgICAgICAgICAgICAgICAgLy8gcGFnZS9wYWdlU2l6ZS9za2lwL3Rha2Uva2V5d29yZC9vcmRlckJ5DQogICAgICDihpIgcHJpc21hLnh4eC5maW5kTWFueSh7IHdoZXJlLCBza2lwLCB0YWtlLCBvcmRlckJ5IH0pDQogICAgICAgICAgd2hlcmUgPSB7IGRlbGV0ZWRBdDogbnVsbCwgLi4uZmlsdGVycyB9IOKGkiBPYmplY3QuYXNzaWduKHdoZXJlLCBkZXB0U2NvcGUodXNlcikpDQogICAgICDihpIgb2socGFnZVJlc3VsdChsaXN0LCB0b3RhbCwgcSkpICAgICAgLy8geyBjb2RlOjAsIGRhdGE6eyBsaXN0LHRvdGFsLHBhZ2UscGFnZVNpemUgfSB9DQogICAgICDihpIgYXVkaXQoeyBtb2R1bGUsIGFjdGlvbiwgLi4uIH0pICAgICAgLy8gd3JpdGVzIG9ubHkNCmBgYA0KDQpDb250cmFjdDogYHsgY29kZSwgZGF0YSwgbWVzc2FnZSB9YDsgKipidXNpbmVzcyBmYWlsdXJlcyBhbHNvIHVzZSBIVFRQIDIwMCB3aXRoIGEgYnVzaW5lc3MgY29kZSoqIChgZmFpbCgpYCBkZWZhdWx0cyB0bw0Kc3RhdHVzIDIwMCksIG9ubHkgdHJhbnNwb3J0IGVycm9ycyB1c2Ugbm9uLTIwMC4gVGhlIGNsaWVudCBpbnRlcmNlcHRvciBvbmx5IGxvb2tzIGF0IGBjb2RlYC4NCg0KKirikaEgTWVudSBmbG93KiogKGNoYW5nZSBvbmNlLCBzaXggcGxhY2VzIGZvbGxvdykNCg0KYGBgDQpzZWVkLnRzIE1FTlVTIOKGkiBNZW51L1JvbGVNZW51IHRhYmxlcw0KICAg4oaSIGxpYi9tZW51LXNlcnZpY2UudHMgKGZ1bGwgdHJlZSAvIGN1cnJlbnQtdXNlciBtZW51cykNCiAgICAgIOKGkiBzaWRlYmFyICsgYnJlYWRjcnVtYnMgKyBnbG9iYWwgc2VhcmNoIGluZGV4ICsgbWVudSBtYW5hZ2VtZW50ICsgcm9sZS1wZXJtaXNzaW9uIGRyYXdlciArIGJhZGdlcw0KICAgZmVhdHVyZXMudHMgcmVtb3ZlcyBkaXNhYmxlZCBtb2R1bGVzIGZyb20gYWxsIGZvdXIgc3VyZmFjZXMgYXQgb25jZQ0KYGBgDQoNClNvOiAqKm1lbnVzIGFyZSBhZGRlZCBpbiBgc2VlZC50c2Agb25seSoqIOKAlCBuZXZlciBoYXJkLWNvZGUgbmF2aWdhdGlvbiBpbiBhIHBhZ2UuIFJ1biBgbnB4IHByaXNtYSBnZW5lcmF0ZSAmJiBucHggdHN4IHByaXNtYS9zZWVkLnRzYCBhZnRlciBlZGl0aW5nLg0KYGtleXdvcmRzYCBhcmUgdGhlIEN0cmwgSyBhbGlhc2VzOyB3cml0ZSB3aGF0IHVzZXJzIGFjdHVhbGx5IHNheS4NCg0KKirikaIgT250b2xvZ3kgZmxvdyoqIChjaGFuZ2Ugb25jZSwgdGhyZWUgcGxhY2VzIGZvbGxvdykNCg0KYGBgDQpsaWIvb250b2xvZ3kudHMNCiAgIOKUnOKGkiBBSSB0b29scyBnZW5lcmF0ZWQgYXV0b21hdGljYWxseSAoZW50aXRpZXMg4oaSIHRvb2xzLCBzY2hlbWEg4oaSIHBhcmFtcykNCiAgIOKUnOKGkiBrbm93bGVkZ2UgZ3JhcGggcmVuZGVyaW5nICh2aWV3c1swXSBpcyB0aGUgZGVmYXVsdCB2aWV3OyB0aGUgcGFnZSBuZWVkcyBubyBlZGl0KQ0KICAg4pSU4oaSIGRhdGEgc2VhcmNoIChlbnRpdHkubGluayArIHRpdGxlRmllbGQ7IGFuIHVuZGVjbGFyZWQgZW50aXR5IGlzIG5vdCBzZWFyY2hhYmxlKQ0KYGBgDQoNCiMjIDQuNSBDYWxsYWJsZSBBUEkgKHNpZ25hdHVyZS1sZXZlbCByZWZlcmVuY2UpDQoNCmBgYHRzDQovLyDilIDilIAgQVBJIGZvdW5kYXRpb24gQC9saWIvYXBpIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgA0KZXhwb3J0IGNvbnN0IEdFVCA9IHdpdGhSb3V0ZShhc3luYyAocmVxKSA9PiB7IC4uLiByZXR1cm4gb2soZGF0YSkgfSkNCm9rKGRhdGEsIG1lc3NhZ2U/KSAgICAgICAgICAgICAgICAgIGZhaWwobWVzc2FnZSwgY29kZT8sIHN0YXR1cz8pICAgICAgLy8gc3RhdHVzIGRlZmF1bHRzIHRvIDIwMA0KdGhyb3cgbmV3IEJpekVycm9yKCdtZXNzYWdlJywgQ09ERS5CQURfUkVRVUVTVCkgICAvLyBDT0RFOiBPSy9CQURfUkVRVUVTVC9VTkFVVEhPUklaRUQvRk9SQklEREVOL05PVF9GT1VORC9DT05GTElDVC9TRVJWRVJfRVJST1INCmNvbnN0IHEgPSBwYXJzZUxpc3RRdWVyeShyZXEpICAgICAgIC8vIHsgcGFnZSxwYWdlU2l6ZSxza2lwLHRha2Usa2V5d29yZCxvcmRlckJ5LHJhdyB9DQpyZXR1cm4gb2socGFnZVJlc3VsdChsaXN0LCB0b3RhbCwgcSkpICAgICAgICAgICAgICAgLy8geyBsaXN0LHRvdGFsLHBhZ2UscGFnZVNpemUgfQ0KYXVkaXQoeyBtb2R1bGU6J0VtcGxveWVlIE1hbmFnZW1lbnQnLCBhY3Rpb246J0NyZWF0ZScsIHRhcmdldElkLCBkZXRhaWwsIC4uLmNsaWVudEluZm8ocmVxKSB9KQ0KY29uc3QgeyBpcCwgdXNlckFnZW50IH0gPSBjbGllbnRJbmZvKHJlcSkNCg0KLy8g4pSA4pSAIEF1dGggYW5kIHBlcm1pc3Npb25zIEAvYXV0aCBAL2xpYi9yYmFjIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgA0KY29uc3QgdXNlciA9IGF3YWl0IHJlcXVpcmVVc2VyKCkgICAgICAgICAgICAgICAgICAgIC8vIHRocm93cyA0MDENCnJlcXVpcmVQZXJtKHVzZXIsIFAuZW1wQWRkKSAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aHJvd3MgNDAzDQpoYXNQZXJtKHVzZXIsIGNvZGUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYm9vbGVhbiBvbmx5DQo8Q2FuIHBlcm09ImRlbW86ZW1wbG95ZWU6YWRkIj48QnV0dG9uLz48L0Nhbj4gICAgICAgIC8vIGJ1dHRvbiBsZXZlbA0KT2JqZWN0LmFzc2lnbih3aGVyZSwgZGVwdFNjb3BlKHVzZXIpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWFkOiBkZXBhcnRtZW50IHNjb3BlDQpPYmplY3QuYXNzaWduKHdoZXJlLCBkZXB0U2NvcGUodXNlciwgeyBvd25lckZpZWxkOiAnYXBwbGljYW50SWQnIH0pKSAgLy8gIm93biByZWNvcmRzIG9ubHkiDQpPYmplY3QuYXNzaWduKHdoZXJlLCBkZXB0U2NvcGUodXNlciwgJ2RlcHRJZCcpKSAgICAgICAgICAgICAgICAgIC8vIGxlZ2FjeSBzaWduYXR1cmUsIHN0aWxsIHdvcmtzDQppZiAoIWRlcHRBbGxvd2VkKHVzZXIsIGJvZHkuZGVwdElkKSkgdGhyb3cgbmV3IEJpekVycm9yKCdubyBwZXJtaXNzaW9uIGZvciB0aGF0IGRlcGFydG1lbnQnLCBDT0RFLkZPUkJJRERFTiwgNDAzKQ0KZWZmZWN0aXZlRGF0YVNjb3BlKHVzZXIpICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDEgYWxsIC8gMiBkZXB0K2NoaWxkcmVuIC8gMyBkZXB0IC8gNCBzZWxmDQoNCi8vIGV4aXN0aW5nIFAgY29kZXMgKGFwcGVuZCBidXNpbmVzcyBjb2RlcyBhdCB0aGUgZW5kOyBkbyBub3QgY2hhbmdlIHRoZXNlKQ0KUC51c2VyTGlzdCB1c2VyQWRkIHVzZXJFZGl0IHVzZXJEZWwgdXNlclJlc2V0DQpQLnJvbGVMaXN0IHJvbGVBZGQgcm9sZUVkaXQgcm9sZURlbCByb2xlUGVybQ0KUC5kZXB0TGlzdCBkZXB0QWRkIGRlcHRFZGl0IGRlcHREZWwNClAubWVudUxpc3QgbWVudUVkaXQgbG9nTGlzdCBsb2dEZWwNClAuZW1wTGlzdCBlbXBBZGQgZW1wRWRpdCBlbXBEZWwgZW1wSW1wb3J0IGVtcEV4cG9ydA0KDQovLyDilIDilIAgVmFsaWRhdGlvbiBAL2xpYi96b2RGaWVsZCBAL2xpYi9mb3JtUnVsZXMg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSADQp6RmllbGQoJ2NvZGUnLCB7IGxhYmVsOidFbXBsb3llZSBOby4nIH0pICAgek9wdGlvbmFsRmllbGQoLi4uKSAgIHpOdWxsYWJsZUZpZWxkKCdwaG9uZScse2xhYmVsOidQaG9uZSd9KQ0KZm9ybVJ1bGVzKCdjb2RlJywgeyBsYWJlbDonRW1wbG95ZWUgTm8uJyB9KSAgIGF1dG9Gb3JtUnVsZXMoeyBsYWJlbCwgdHlwZSwgcmVxdWlyZWQgfSkNCg0KLy8g4pSA4pSAIFRoZW1lIEAvbGliL3RoZW1lIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgA0KTUlMSVRBUlkucHJpbWFyeS9wcmltYXJ5RGFyay9zb2Z0L2FjY2VudC9iZy9jYXJkL3BhcGVyL2JvcmRlci90ZXh0L3RleHRTZWNvbmRhcnkvdGV4dE11dGVkLw0KICAgICAgICAgc3VjY2Vzcy93YXJuaW5nL2Vycm9yLypCZy9zaGFkb3cvc2hhZG93U20vcmFkaXVzL3JhZGl1c1NtL29uUHJpbWFyeQ0KZnMoMTMpICAgICAgICAgICAgICAgICAgICAgICAvLyDihpIgY2FsYygxM3B4ICogdmFyKC0td2ItZnMpKTsgZm9udCBzaXplcyBtdXN0IGJlIHdyaXR0ZW4gdGhpcyB3YXkNCkNIQVJUX0NPTE9SUyAgICAgICAgICAgICAgICAgLy8gc3RhdGljIGZhbGxiYWNrIHBhbGV0dGUgKGRvZXMgbm90IGZvbGxvdyB0aGUgc2tpbikNCnVzZUNoYXJ0UGFsZXR0ZSgpIC8gdXNlU2tpbkluaygpICAgLy8gZnJvbSBAL2NvbXBvbmVudHMvYXBwZWFyYW5jZSDigJQgcmVxdWlyZWQgZm9yIGNoYXJ0cy9jYW52YXMNCg0KLy8g4pSA4pSAIENvbXBvbmVudHMg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSADQo8RGF0YVRhYmxlIGFwaT0iL2FwaS94eHgiIGNvbHVtbnM9e2NvbHN9IHJvd0tleT0iaWQiDQogICAgc2VhcmNoRmllbGRzPXtbeyBuYW1lOidrZXl3b3JkJywgbGFiZWw6J0tleXdvcmQnLCB0eXBlOid0ZXh0JyB9LA0KICAgICAgICAgICAgICAgICAgIHsgbmFtZTonc3RhdHVzJywgbGFiZWw6J1N0YXR1cycsIHR5cGU6J3NlbGVjdCcsIG9wdGlvbnM6Wy4uLl0gfSwNCiAgICAgICAgICAgICAgICAgICB7IG5hbWU6J3JhbmdlJywgIGxhYmVsOidEYXRlJywgdHlwZTonZGF0ZVJhbmdlJyB9XX0NCiAgICBleHBvcnRhYmxlPXt7IGZpbGVuYW1lOidlbXBsb3llZXMueGxzeCcsIG1vZHVsZTonZW1wbG95ZWVzJyB9fQ0KICAgIGNhbkFkZCBvbkFkZD17KCkgPT4gb3BlbkNyZWF0ZSgpfSBzZWxlY3RhYmxlIG9uQmF0Y2hEZWxldGU9e2RlbH0NCiAgICByZWZyZXNoS2V5PXt0aWNrfSBoaWdobGlnaHRSb3c9e2hpZ2hsaWdodFJvd30gdG9vbGJhcj17PEJ1dHRvbi8+fSAvPg0KPEVDaGFydCBvcHRpb249e29wdGlvbn0gaGVpZ2h0PXszMDB9IGxvYWRpbmc9e2lzTG9hZGluZ30gb25FdmVudHM9e3sgY2xpY2s6IGZuIH19IC8+DQo8U3RhdENhcmQgdGl0bGU9IlBlbmRpbmciIHZhbHVlPXtufSBpY29uPXs8Q2xvY2tDaXJjbGVPdXRsaW5lZC8+fSBjb2xvcj17Q0hBUlRfQ09MT1JTWzBdfQ0KICAgICAgICAgIHN1ZmZpeD0iIiBocmVmPSIvbGVhdmUvcmVxdWVzdHMiIGxvYWRpbmc9e2lzTG9hZGluZ30gLz4NCjxBc3luY0J1dHRvbiB0eXBlPSJwcmltYXJ5IiB0YXNrPXsoc2lnbmFsKSA9PiBheGlvcy5wb3N0KCcvYXBpL3gnKX0gc3VjY2Vzc1RleHQ9IlN1Ym1pdHRlZCI+U2F2ZTwvQXN5bmNCdXR0b24+DQpjb25zdCB7IGhpZ2hsaWdodFJvdywgZmxhc2hSb3cgfSA9IHVzZVJvd0ZsYXNoKCk7ICAgLy8gZmxhc2hSb3cocm93LmlkKSBhZnRlciBzdWNjZXNzDQo8QWlQYW5lbCBzeXN0ZW09Ii4uLiIgc3VnZ2VzdGlvbnM9e1suLi5dfSB0aXRsZT0iLi4uIiBoZWlnaHQ9ezQyMH0gc2hvd0hlYWRlcj17ZmFsc2V9IC8+DQpgYGANCg0KKipXYWl0LWZlZWRiYWNrIHRocmVzaG9sZHMqKiBsaXZlIGluIGBzcmMvbGliL3BlbmRpbmcudHNgICgyMDBtcyBsb2NhbCBzcGlubmVyIC8gM3MgYm90dG9tLXJpZ2h0IG92ZXJsYXkgLyA4cyBlc2NhbGF0ZWQgY29weSk7DQpjaGFuZ2luZyB0aGF0IG9uZSBmaWxlIGFmZmVjdHMgdGhlIHdob2xlIHNpdGUuIFRoZSBnbG9iYWwgZmFsbGJhY2sgaXMgYWxyZWFkeSBtb3VudGVkIGluIGBQcm92aWRlcnNgIOKAlCAqKnBhZ2VzIGRvIG5vdCBtYW5hZ2UgaXQqKi4NCklmIGEgcGFnZSBoYXMgaXRzIG93biBmdWxsIHdhaXQgVUkgKHN0YWdlcyArIHNlY29uZHMgKyBjYW5jZWwpLCBwYXNzIGBzaWxlbnQ6IHRydWVgIG9uIHRoYXQgcmVxdWVzdCBvciB0aGUgb3ZlcmxheSByZXBvcnRzIHRoZQ0Kc2FtZSB0aGluZyB0d2ljZS4NCg0KIyMgNC42IFRoZSBzdGFuZGFyZCBzaGFwZSBvZiBhIGJ1c2luZXNzIG1vZHVsZSAoY29weSB0aGlzLCBkbyBub3QgaW52ZW50KQ0KDQoqKkFQSSBgc3JjL2FwcC9hcGkvPG1vZHVsZT4vcm91dGUudHNgLCBzaXggYmxvY2tzKioNCg0KYGBgDQrikaAgZXhwb3J0IGNvbnN0IGR5bmFtaWMgPSAnZm9yY2UtZHluYW1pYycNCuKRoSBzZWxlY3Q6IGNvbnN0IHh4eFNlbGVjdCA9IHsgaWQ6dHJ1ZSwgLi4uYnVzaW5lc3NGaWVsZHMsIGRlcHQ6e3NlbGVjdDp7aWQ6dHJ1ZSxuYW1lOnRydWV9fSB9IHNhdGlzZmllcyBQcmlzbWEuWHh4U2VsZWN0DQrikaIgem9kIHNjaGVtYTogY29uc3QgeHh4U2NoZW1hID0gei5vYmplY3QoeyBjb2RlOiB6RmllbGQoJ2NvZGUnLHtsYWJlbDonQ29kZSd9KSwgLi4uIH0pDQogICBkYXRlcyB1c2Ugek51bGxhYmxlRmllbGQoJ2RhdGUnfCdkYXRldGltZScse2xhYmVsfSk7IG51bWJlcnMgdXNlIHouY29lcmNlLm51bWJlcigpOyBvcHRpb25hbCB1c2VzIC5udWxsaXNoKCkNCuKRoyBHRVQ6IGF3YWl0IHJlcXVpcmVVc2VyKCkg4oaSIHJlcXVpcmVQZXJtKHVzZXIsIFAueHh4TGlzdCkg4oaSIGNvbnN0IHEgPSBwYXJzZUxpc3RRdWVyeShyZXEpDQogICAgICAg4oaSIHdoZXJlID0geyBkZWxldGVkQXQ6bnVsbCwgLi4ua2V5d29yZCBPUiBjb25kaXRpb25zLCAuLi5maWx0ZXJzIH0NCiAgICAgICDihpIgT2JqZWN0LmFzc2lnbih3aGVyZSwgZGVwdFNjb3BlKHVzZXIpKSAgIC8vIOKYhSBhbHdheXMgbGFzdA0KICAgICAgIOKGkiBQcm9taXNlLmFsbChbZmluZE1hbnksIGNvdW50XSkg4oaSIG9rKHBhZ2VSZXN1bHQoLi4uKSkNCuKRpCBQT1NUOiByZXF1aXJlUGVybSDihpIgc2NoZW1hLnNhZmVQYXJzZSDihpIgdW5pcXVlbmVzcyBjaGVja3Mg4oaSIHByaXNtYS5jcmVhdGUNCiAgICAgICDihpIgYXVkaXQoeyBtb2R1bGU6J0J1c2luZXNzIE5hbWUnLCBhY3Rpb246J0NyZWF0ZScsIHRhcmdldElkOiByb3cuaWQsIC4uLmNsaWVudEluZm8ocmVxKSB9KSDihpIgb2socm93KQ0K4pGlIFtpZF0vcm91dGUudHM6IEdFVC9QVVQvREVMRVRFIGFsbCB1c2UgZmluZEZpcnN0KHsgd2hlcmU6IHsgaWQsIGRlbGV0ZWRBdDpudWxsLCAuLi5kZXB0U2NvcGUodXNlcikgfSB9KQ0KICAgICAgIOKAlCBpZiBub3RoaW5nIG1hdGNoZXMsIHRocm93IEJpekVycm9yKCdub3QgZm91bmQgb3Igbm8gcGVybWlzc2lvbicsIENPREUuTk9UX0ZPVU5ELCA0MDQpOyBkZWxldGUgPSB1cGRhdGUoeyBkZWxldGVkQXQ6IG5ldyBEYXRlKCkgfSkNCmBgYA0KDQoqKlBhZ2UgYHNyYy9hcHAvKGFkbWluKS88bW9kdWxlPi9wYWdlLnRzeGAsIHNldmVuIGJsb2NrcyoqDQoNCmBgYA0K4pGgICd1c2UgY2xpZW50Jw0K4pGhIGNvbHVtbnM6IENvbHVtbnNUeXBlPFQ+IChzdGF0dXMgY29sdW1uIHVzZXMgVGFnICsgTUlMSVRBUlkgc2VtYW50aWNzOyBhY3Rpb24gY29sdW1uOiBlZGl0L2RlbGV0ZS9saW5rL2ZlZWRiYWNrKQ0K4pGiIHNlYXJjaEZpZWxkcyAoa2V5d29yZCArIHN0YXR1cyBzZWxlY3QgKyBkZXBhcnRtZW50L2NhdGVnb3J5ICsgZGF0ZSByYW5nZSkNCuKRoyBNb2RhbCArIEZvcm0gKG9uZSBmb3JtIGZvciBjcmVhdGUgYW5kIGVkaXQsIGRpc3Rpbmd1aXNoZWQgYnkgYGVkaXRpbmdgOyBydWxlcyBmcm9tIGF1dG9Gb3JtUnVsZXMpDQrikaQgRGF0YVRhYmxlIGFzc2VtYmx5IChhcGkgLyBjb2x1bW5zIC8gc2VhcmNoRmllbGRzIC8gZXhwb3J0YWJsZSAvIGNhbkFkZCAvIHNlbGVjdGFibGUgLyBoaWdobGlnaHRSb3cpDQrikaUgYWZ0ZXIgYW55IG11dGF0aW9uOiBtZXNzYWdlLnN1Y2Nlc3MgKyBzZXRSZWZyZXNoS2V5KHY9PnYrMSkgKyBmbGFzaFJvdyhyb3cuaWQpDQrikaYgZW1wdHkgc3RhdGU6IGFudGQgPEVtcHR5PiBwbHVzIG9uZSBndWlkaW5nIHNlbnRlbmNlOyBuZXZlciBhIGJsYW5rIHBhZ2UNCmBgYA0KDQpgdXNlUm93Rmxhc2hgJ3MgYGhpZ2hsaWdodFJvd2Agb25seSBmbGFzaGVzIGFmdGVyIHRoZSBkYXRhIGhhcyBhY3R1YWxseSBiZWVuIHJlZmV0Y2hlZCAoaXQgd2F0Y2hlcyBgZGF0YVVwZGF0ZWRBdGApLCBzbyB5b3UgZG8NCm5vdCBuZWVkIHRvIHNlcXVlbmNlIGl0IHlvdXJzZWxmLg0KDQotLS0NCg0KIyBQYXJ0IDUgwrcgV2lyaW5nIGVhY2ggc3Vic3lzdGVtDQoNCiMjIDUuMSBCdXNpbmVzcyBtb2R1bGVzIGFuZCBleHBvcnQNCg0KU2VlIFBhcnQgMyBydWxlIDIgYW5kIFBhcnQgNC42LiBUaHJlZSBsaW5lcyB0byByZW1lbWJlcjogKipvbmx5IGZvdXIgcGxhY2VzKio7ICoqYSBsaXN0IHdpdGggRXhwb3J0IG5lZWRzIGEgYnJhbmNoIGluDQpgYXBpL2V4cG9ydC9yb3V0ZS50c2AqKjsgKipjb3B5IGVtcGxveWVlcyoqLg0KDQojIyA1LjIgRGF0YSBwZXJtaXNzaW9ucw0KDQpGdW5jdGlvbmFsIHBlcm1pc3Npb25zIGRlY2lkZSB3aGljaCBwYWdlcyB5b3UgbWF5IG9wZW47IGRhdGEgcGVybWlzc2lvbnMgZGVjaWRlIHdoaWNoIHJvd3Mgb2YgYSB0YWJsZSB5b3Ugc2VlDQooUm9sZSDihpIgQXNzaWduIHBlcm1pc3Npb25zIOKGkiAqKkRhdGEgc2NvcGUqKiBhdCB0aGUgdG9wKS4gRm91ciB0aWVyczogMSBBbGwgLyAyIE93biBkZXBhcnRtZW50IGFuZCBiZWxvdyAvIDMgT3duIGRlcGFydG1lbnQgLw0KNCBPd24gcmVjb3JkcyBvbmx5LiBTZXZlcmFsIHJvbGVzIHRha2UgdGhlIHdpZGVzdCB0aWVyOyBhIHN1cGVyIGFkbWluIGlzIGFsd2F5cyAiQWxsIjsgY2hhbmdlcyB0YWtlIGVmZmVjdCBhZnRlciByZS1sb2dpbi4NCg0KYGBgdHMNCi8vIExpc3QgR0VUIC8gZXhwb3J0OiBhZnRlciBhbGwgYnVzaW5lc3MgZmlsdGVycw0KT2JqZWN0LmFzc2lnbih3aGVyZSwgZGVwdFNjb3BlKHVzZXIpKTsNCi8vICJPd24gcmVjb3JkcyBvbmx5IiBzZW1hbnRpY3MgKG15IHJlcXVlc3RzIC8gZXhwZW5zZXMgLyByZXBhaXJzKQ0KT2JqZWN0LmFzc2lnbih3aGVyZSwgZGVwdFNjb3BlKHVzZXIsIHsgb3duZXJGaWVsZDogJ2FwcGxpY2FudElkJyB9KSk7DQoNCi8vIERldGFpbCAvIHVwZGF0ZSAvIGRlbGV0ZSBtdXN0IGJlIHNjb3BlZCB0b28NCmNvbnN0IHJvdyA9IGF3YWl0IHByaXNtYS5sZWF2ZS5maW5kRmlyc3QoeyB3aGVyZTogeyBpZCwgZGVsZXRlZEF0OiBudWxsLCAuLi5kZXB0U2NvcGUodXNlcikgfSB9KTsNCmBgYA0KDQoqKkhhcmQgcnVsZXMqKjogbmV2ZXIgZmlsdGVyIG9uIHRoZSBjbGllbnQ7IGRhc2hib2FyZCwgY2hhcnRzLCBleHBvcnRzLCB0aGUgZ3JhcGggKGluY2x1ZGluZyB0aGUgZGV0YWlsIHBhbmVsIGFuZCB0aGUNCmRlbGV0ZS1pbXBhY3QgcHJldmlldyksIEFJIHF1ZXJpZXMgYW5kIEFJIGNyZWF0ZXMsIGFuZCB1cGxvYWRlZC1maWxlIGRvd25sb2FkcyBtdXN0IGFsbCBwYXNzIHRoZSBzYW1lIHNjb3BlOyB0YWJsZXMgd2l0aG91dA0KYGRlcHRJZGAgbmFycm93IGJ5IGJ1c2luZXNzIG1lYW5pbmcgKGUuZy4gbm9uLXN1cGVyIHVzZXJzIHNlZSBvbmx5IGB1c2VySWQgPSB0aGVtc2VsdmVzYCkuDQpgZGVwdFNjb3BlYCBtdXN0IGJlIG1lcmdlZCAqKmFmdGVyKiogdGhlIGJ1c2luZXNzIGZpbHRlcnMg4oCUIG1lcmdlZCBiZWZvcmUsIGl0IGlzIG92ZXJ3cml0dGVuIGJ5IGEgbGF0ZXIgYHdoZXJlLmRlcHRJZGAgYW5kDQpgP2RlcHRJZD1gIGJlY29tZXMgYSBwcml2aWxlZ2UgZXNjYWxhdGlvbi4NCg0KIyMgNS4zIEdsb2JhbCBzZWFyY2gNCg0KRmVhdHVyZSBsYXllciA9IHRoZSBtZW51IHRyZWUgKHJlZ2lzdGVyIGluIHNlZWQgYW5kIGl0IGlzIHNlYXJjaGFibGUg4oCUIHplcm8gY29kZSk7IGRhdGEgbGF5ZXIgaXMgZHJpdmVuIGJ5IGBvbnRvbG9neS50c2AsDQp3aXRoIHRocmVlIHNlcnZlci1zaWRlIGdhdGVzIGluIGBzcmMvbGliL3NlYXJjaC1kYXRhLnRzYCAocGFnZSBnYXRlLCBkZXBhcnRtZW50IGdhdGUsIGZpZWxkIGdhdGUpLiBEbyBub3QgcmVpbXBsZW1lbnQNCmZpbHRlcmluZyBvbiB0aGUgY2xpZW50Lg0KDQpXaGF0IHlvdSBtdXN0IGRvOiBnaXZlIG1lbnVzIGBrZXl3b3Jkc2AgKHdoYXQgdXNlcnMgYWN0dWFsbHkgdHlwZSk7IGdpdmUgZXZlcnkgZW50aXR5IGEgYGxpbmtgIChgJy94P2lkPTppZCdgIG9wZW5zIHRoZQ0KcmVjb3JkLCBgJy94P2t3PTprdydgIG9yIG5vIHBsYWNlaG9sZGVyIGZpbHRlcnMgdGhlIGxpc3QpOyBoYW5kLXdyaXR0ZW4gcGFnZXMgbXVzdCByZWFkIGA/a3c9YCAvIGA/aWQ9YDsgYHRpdGxlRmllbGRgIHNob3VsZA0KYmUgYSBwZXJzb24sIHRpdGxlIG9yIHBsYXRlIG51bWJlciwgbm90IGxvbmcgdGV4dC4NCg0KIyMgNS40IEtub3dsZWRnZSBncmFwaA0KDQpDaGFuZ2Ugb25seSBgc3JjL2xpYi9vbnRvbG9neS50c2AuIFRoZSBlbmdpbmUgKGBhcGkvZ3JhcGgvKmApLCByZW5kZXJlciAoYE9udG9sb2d5R3JhcGgudHN4YCkgYW5kIHBhZ2UgKGBncmFwaC9wYWdlLnRzeGApIGFyZQ0KZ2VuZXJpYyDigJQgbGVhdmUgdGhlbSBhbG9uZS4gVHdvIHBhcmFsbGVsIGxpbmVzIGJldHdlZW4gb25lIHBhaXIgb2Ygbm9kZXMgbWVhbiBgYXBpL2dyYXBoL3JvdXRlLnRzYCBpcyB0aGUgb2xkDQpkaXJlY3Rpb24tZGVkdXBsaWNhdGluZyB2ZXJzaW9uOyByZXBsYWNlIGl0IHdpdGggdGhlIGxhdGVzdCBzY2FmZm9sZCBmaWxlLg0KDQoqKk1pbmUgcmVsYXRpb25zIGZpcnN0LCB0aGVuIHdyaXRlIG9udG9sb2d5Kio6IGBub2RlIHNjcmlwdHMvc3VnZ2VzdC1yZWxhdGlvbnMubWpzYCByZXBvcnRzIGRlY2xhcmVkIC8gdW5kZWNsYXJlZCAvIGJyaWRnZSB0YWJsZXMgLyBtaXNzaW5nDQp2aWV3IGxpbmtzLiBFdmVyeSBmb3JlaWduIGtleSBpcyBlaXRoZXIgYSBkZWNsYXJlZCByZWxhdGlvbiBvciBjb21tZW50ZWQgaW4gYG9udG9sb2d5LnRzYCBleHBsYWluaW5nIHdoeSAoc2VsZi1yZWZlcmVuY2luZw0KYHBhcmVudElkYCBhbmQgcHVyZSBhdWRpdCBmaWVsZHMgYXJlIGFjY2VwdGFibGUgZXhjZXB0aW9ucyk7IGFueSBtb2RlbCB3aXRoIHR3byBmb3JlaWduIGtleXMgaXMgYSBicmlkZ2UgKGluY2x1ZGluZw0KYnVzaW5lc3MtZmllbGQgYnJpZGdlcyBzdWNoIGFzIHRyYW5zY3JpcHRzKSDigJQgY29uZmlndXJlIGl0IHdpdGggYHZpYS5tb2RlbGA7IGEgdmlldyB0aGF0IHNob3VsZCBiZSBjb25uZWN0ZWQgYnV0IGlzIG5vdCBtYWtlcw0KYGNoZWNrOmNvbmZpZ2AgZmFpbCwgYW5kIHNwbGl0dGluZyB2aWV3cyB0byBkb2RnZSB0aGUgY2hlY2sgaXMgZm9yYmlkZGVuLg0KDQpDb25maWd1cmF0aW9uOiBldmVyeSBlbnRpdHkgaGFzIGEgYGxheWVyYCAoc21hbGxlciBnb2VzIGxlZnQ6IG9yZ2FuaXphdGlvbiDihpIgcGVyc29uIOKGkiBkb2N1bWVudCk7IGBtb2RlbGAgbXVzdCBiZSBhIHJlYWwgc2NoZW1hDQptb2RlbDsgYHRpdGxlRmllbGRgIOKJpDggQ2hpbmVzZSBjaGFyYWN0ZXJzOyBldmVyeSB2aWV3IG11c3QgZGVjbGFyZSBgcm9vdGAsIGFuZCBgcm9vdGAgbXVzdCBiZSBvbmUgb2YgdGhhdCB2aWV3J3MgYGVudGl0aWVzYA0KKG90aGVyd2lzZSB0aGUgZGVmYXVsdCBjZW50cmUgbm9kZSBjYW5ub3QgYmUgZHJhd24gYW5kIGBjaGVjazpjb25maWdgIGZhaWxzKTsgYGNvbG9yYCBtdXN0IGJlIGxpZ2h0IGFuZCBpbiB0aGUgdGhlbWUgZmFtaWx5DQooYCNGMkYwRTRgIGAjRTlFRkRGYCBgI0Y0RUVERmAgYCNFRkVERTZgLCBgYm9yZGVyQ29sb3JgIG9uZSBzaGFkZSBkZWVwZXIpOyBuZXZlciB1c2Ugc2F0dXJhdGVkIGNvbG9ycyBzdWNoIGFzIGAjMTY3N2ZmYA0KYCM1MmM0MWFgIGAjZmE4YzE2YC4gTGF5b3V0IGlzIHByZWNvbXB1dGVkIGJ5IGBmb3JjZUxheW91dGAg4oCUIGRvIG5vdCByZXZlcnQgdG8gYGxheW91dDonZm9yY2UnYDsgaG92ZXIgbXVzdCBub3QgdG91Y2ggUmVhY3QNCnN0YXRlOyBzZWxlY3Rpb24gZ29lcyB0aHJvdWdoIGBkaXNwYXRjaEFjdGlvbmAuDQoNCkRhdGE6IDIwfjYwIG5vZGVzLCBhdCBsZWFzdCAxIGVkZ2UgcGVyIG5vZGUsIGZvcmVpZ24ga2V5cyByZWFsbHkgZmlsbGVkLCBubyBjb2x1bW4gYWJvdmUgMTUgbm9kZXM7IHNwbGl0IHZpZXdzIHdoZW4gaXQgZ3Jvd3MNCihgTUFYX05PREVTID0gMTIwYCkuICoqTm8gdmlldyBtYXkgY29udGFpbiBhbiBpc29sYXRlZCBub2RlKiogKGRlcGFydG1lbnQgc2VsZi1yZWZlcmVuY2UgdXNlcyBgZGVwdF9wYXJlbnRgOyByb2xlcyBvbmx5IGVudGVyDQp2aWV3cyBsaWtlIGBhY2Nlc3NgKS4NCg0KRGVsaXZlcnkgY2hlY2tzOiBgL2dyYXBoYCBsYWJlbHMgcmVhZGFibGUsIG5vIHJlZCBiYW5uZXIsIG5vIHBhcmFsbGVsIGxpbmVzLCBubyBjbGlwcGVkIG5vZGVzOyByZW5hbWUvZGVsZXRlIHJvdW5kLXRyaXBzDQpwZXJzaXN0IHdpdGggYW4gaW1wYWN0IGNvbmZpcm1hdGlvbiAobm9kZSBpZCBpcyBgZW50aXR5OmRiSWRgLCB3cml0ZSBBUElzIHdhbnQgYGRiSWRgKS4gQSBsaXN0LXBhZ2UgInJlbGF0ZWQiIGJ1dHRvbiB1c2VzDQpgZ3JhcGhIcmVmKCdNb2RlbCcsIHJvdy5pZClgLg0KDQojIyA1LjUgQUkgYXNzaXN0YW50DQoNCkltcGxlbWVudGF0aW9uIGRldGFpbHMgbGl2ZSBpbiBjb2RlOiBgYWlUb29scy50c2AgKHRvb2wgZ2VuZXJhdGlvbiBhbmQgc2VjdXJpdHkgbW9kZWwpLCBgYWlDb250ZXh0LnRzYCAodGltZS9zYW1wbGVzKSwNCmBhaUZvcm0udHNgIChtaXNzaW5nLXBhcmFtIGZvcm0pLCBgYWlUb2tlbi50c2AgKHNpZ25lZCB0b2tlbnMpLCBgc3JjL2FwcC9hcGkvYWkvKmAsIGBjb21wb25lbnRzL0FpUGFuZWwudHN4YC4NCg0KQmVoYXZpb3IgdGhhdCBtdXN0IG5vdCBiZSB3cm9uZzoNCg0KLSAqKkV4YWN0bHkgb25lIGNoYXQgYm94IHBlciBwYWdlKio7IHdoZW4gYDxBaVBhbmVsIC8+YCBzaXRzIGluIGEgQ2FyZCB0aGF0IGFscmVhZHkgaGFzIGEgdGl0bGUsIHBhc3MgYHNob3dIZWFkZXI9e2ZhbHNlfWA7DQogIGdpdmUgYm90aCBjYXJkcyBvbiBhIHBhZ2UgdGhlIHNhbWUgYGhlaWdodGAuDQotIGBjb21wYXRJbnZva2VgIGlzIHNlcnZlci1zaWRlIG9ubHkg4oCUIG5ldmVyIGltcG9ydCBpdCBpbiBicm93c2VyIGNvZGU7IHRoZSBBUEkga2V5IG5ldmVyIHJlYWNoZXMgdGhlIGJyb3dzZXI7IGRvIG5vdCBkcm9wDQogIGByZWFzb25pbmc6IHsgZWZmb3J0Oidub25lJyB9YCB3aGVuIHN3YXBwaW5nIG1vZGVscy4NCi0gVG9vbHMgYXJlIGdlbmVyYXRlZCBmcm9tIGBvbnRvbG9neS50c2AgKyBgc2NoZW1hLnByaXNtYWA7IHdyaXRlIG5vIHRvb2wgY29kZS4gT25seSBtdWx0aS1zdGVwIGJ1c2luZXNzIGFjdGlvbnMgYXBwZW5kIHRvDQogIGBFWFRSQV9UT09MU2AuDQotIFRoZSB0aHJlZS1zdGVwIHdyaXRlIGZsb3cgaXMgbWFuZGF0b3J5OiBtaXNzaW5nIHBhcmFtcyDihpIgYXV0byBmb3JtOyBjb21wbGV0ZSBwYXJhbXMg4oaSIEhNQUMgY29uZmlybWF0aW9uIGNhcmQ7IGFmdGVyDQogIGNvbmZpcm1hdGlvbiBgL2FwaS9haS9hY3RgIHBlcnNpc3RzIGFuZCB3cml0ZXMgYXVkaXQuIFRoZSBmcm9udGVuZCBwYXNzZXMgb25seSB0aGUgdG9rZW4sIG5ldmVyIHBhcmFtcy4gKFRoZSBgL2FwaS9haS9hY3RgDQogIGNhbGwgaW5zaWRlIGBBaVBhbmVsYCBhbmQgdGhlIHRva2VuIGNoZWNrIGluIHRoZSBgYWN0YCByb3V0ZSBhcmUgaGFyZCBgY2hlY2s6Y29uZmlnYCBpdGVtcyDigJQgcmVtb3ZpbmcgZWl0aGVyIGZhaWxzIHRoZSBidWlsZC4pDQotIEFnZ3JlZ2F0ZXMgbXVzdCBnbyB0aHJvdWdoIGBxdWVyeV9gIHRvb2xzOyB0aGUgNi1yb3cgc2FtcGxlIHBlciB0YWJsZSBpcyBzaGFwZSBvbmx5LCBub3QgYSBkYXRhIHNvdXJjZS4NCg0KRml2ZSB0aGluZ3MgeW91IG11c3QgZG86DQoNCjEuIFJlcGxhY2UgYEFTS19TQU1QTEVTYCBpbiBgc3JjL2FwcC8oYWRtaW4pL2FpL3BhZ2UudHN4YCB3aXRoIHJlYWwgcXVlc3Rpb25zIGZyb20gdGhlIHRhc2sgKG9uZSBkYXRhLCBvbmUgdXNhZ2UsIG9uZSBhY3Rpb24pLg0KMi4gU2FtZSBmaWxlOiByZXBsYWNlIGBSRVBPUlRfVEFCTEVTYCDigJQgaXQgc3RpbGwgbGlzdHMgYEVtcGxveWVlYCAvIGBPcGVyYXRpb25Mb2dgICgiZW1wbG95ZWUgKHNhbXBsZSkiKS4gUG9pbnQgaXQgYXQgdGhlDQogICB0YXNrJ3MgbWFpbiBidXNpbmVzcyBtb2RlbCBhbmQgZ2l2ZSB0aGUgcmVwb3J0IGEgYnVzaW5lc3MgdGl0bGUsIG90aGVyd2lzZSB0aGUgZHJvcGRvd24gaXMgYW4gb2J2aW91cyBzY2FmZm9sZCBsZWZ0b3Zlci4NCjMuIFRhYmxlcyBkZWNsYXJlZCBpbiBgc3JjL2xpYi9vbnRvbG9neS50c2AgYXJlIGV4YWN0bHkgd2hhdCB0aGUgQUkgY2FuIHF1ZXJ5L2NyZWF0ZTsgdW5kZWNsYXJlZCB0YWJsZXMgYXJlIGludmlzaWJsZS4NCjQuIEF0IGxlYXN0IDE1IHJvd3MgcGVyIGJ1c2luZXNzIHRhYmxlLCBkYXRlcyBzcHJlYWQgb3ZlciB0aGUgbGFzdCB0d28gb3IgdGhyZWUgbW9udGhzLg0KNS4gRHVyaW5nIGFjY2VwdGFuY2UsIGFjdHVhbGx5IGNsaWNrIHRoZSBjb25maXJtYXRpb24gY2FyZCBvbmNlLg0KDQojIyA1LjYgSW5ib3gsIG1lc3NhZ2VzIGFuZCBzaWRlYmFyIGJhZGdlcw0KDQpDb2RlOiBgc3JjL2xpYi9pbmJveC50c2AgKHN1bW1hcnkvZ3JvdXBpbmcpLCBgc3JjL2xpYi90b2Rvcy9gIChzb3VyY2UgcmVnaXN0cnkgKyBmZWVkYmFjayBleGFtcGxlKSwgYHNyYy9saWIvbm90aWZpY2F0aW9ucy50c2ANCihpbi1hcHAgbWVzc2FnZXMpLCBgKGFkbWluKS9pbmJveC9gLCBgY29tcG9uZW50cy9pbmJveC9gLCBgYXBpL2luYm94LypgLiBUaGUgdG9wLWJhciBiZWxsIGFuZCB0aGUgc2lkZWJhciBlbnRyeSBhcmUgd2lyZWQuDQoNCioqVG9kb3MgYXJlIG5vdCBwZXJzaXN0ZWQqKiDigJQgdGhleSBhcmUgY29tcHV0ZWQgbGl2ZSBmcm9tIHRoZSByZWdpc3RyeSBhbmQgZGlzYXBwZWFyIHdoZW4gdGhlIGJ1c2luZXNzIGl0ZW0gaXMgaGFuZGxlZCwgc28gZG8NCm5vdCBhZGQgYSBtYW51YWwgImRvbmUiIGJ1dHRvbi4NCg0KLSAqKlNvbWV0aGluZyB0aGUgdXNlciBtdXN0IGFjdCBvbiDihpIgdG9kbyoqOiBhZGQgYSBgPG1vZHVsZT4udHNgIHVuZGVyIGBzcmMvbGliL3RvZG9zL2AgaW1wbGVtZW50aW5nDQogIGBrZXkgLyBuYW1lIC8gZGVzY3JpcHRpb24/IC8gaWNvbiAvIG9yZGVyIC8gdmlzaWJsZSh1c2VyKSAvIGNvdW50KHVzZXIpIC8gbGlzdCh1c2VyLCBsaW1pdClgLCB0aGVuIHJlZ2lzdGVyIGl0IGluDQogIGBUT0RPX1NPVVJDRVNgIGluIGBpbmRleC50c2AuIEl0ZW1zIGZyb20gYGxpc3RgIG11c3QgaW5jbHVkZSBhIGBsaW5rYCB0aGF0IHRhcmdldHMgdGhlIHNwZWNpZmljIHJlY29yZCAoYC94P2lkPS4uLmApLCBub3QNCiAganVzdCB0aGUgbGlzdCBwYWdlLg0KLSAqKlNvbWV0aGluZyB0aGUgdXNlciBvbmx5IG5lZWRzIHRvIGtub3cg4oaSIG1lc3NhZ2UqKjogYG5vdGlmeSh7IHVzZXJJZCB8IHVzZXJJZHMsIHRpdGxlLCBib2R5PywgdHlwZT8sIGxldmVsPywgbGluaz8gfSlgLg0KLSAqKk5ldmVyIGNyZWF0ZSBib3RoIGEgdG9kbyBhbmQgYSBtZXNzYWdlIGZvciB0aGUgc2FtZSBldmVudCoqLCBvciB0aGUgdXNlciBpcyByZW1pbmRlZCB0d2ljZS4gUnVsZSBvZiB0aHVtYjogbmVlZHMgYWN0aW9uIOKGkg0KICB0b2RvOyBhd2FyZW5lc3Mgb25seSDihpIgbWVzc2FnZS4NCi0gRG8gbm90IG1vZGlmeSB0aGUgYmVsbCwgdGhlIGAvaW5ib3hgIHBhZ2UsIHRoZSBtZXNzYWdlIHNlcnZpY2Ugb3IgdGhlIGFnZ3JlZ2F0aW9uIGxvZ2ljOyBvbmx5IHJlZ2lzdGVyIHNvdXJjZXMgYW5kIGNhbGwNCiAgYG5vdGlmeSgpYC4NCg0KKipTaWRlYmFyIGJhZGdlcyoqIChtb2R1bGVzIHdpdGggIndhaXRpbmcgZm9yIG15IGFwcHJvdmFsIC8gcGVuZGluZyAvIHVucmVhZCIgc2VtYW50aWNzIG11c3Qgc2hvdyBhIHJlZCBudW1iZXIpIOKAlCB0aHJlZSBzdGVwczoNCg0KMS4gQXBwZW5kIGB7IGtleTonbW9kdWxlOnNlbWFudGljcycsIGxhYmVsLCBoaW50IH1gIHRvIGBCQURHRV9TT1VSQ0VTYCBpbiBgc3JjL2xpYi9iYWRnZXMudHNgOyB0aGUga2V5IGlzIGdsb2JhbGx5IHVuaXF1ZS4NCjIuIEFkZCBhIHNhbWUta2V5IGNvdW50ZXIgdG8gYENPVU5URVJTYCBpbiBgc3JjL2xpYi9iYWRnZS1jb3VudC50c2AgKGBjaGVjazpjb25maWdgIGNyb3NzLWNoZWNrcyBrZXlzKS4gUGVuZGluZyBzZW1hbnRpY3MNCiAgIGltcGxlbWVudCBgQ09VTlRFUlNgIG9ubHk7IHVucmVhZCBzZW1hbnRpY3MgYWxzbyBhZGQgYW4gYEFDS0VSU2AgaGFuZGxlci4gT25lIG1lbnUgc2hvd3Mgb25lIG51bWJlciDigJQgYnJhbmNoIGJ5IHJvbGUgaW5zaWRlDQogICB0aGUgY291bnRlci4NCjMuIEdpdmUgdGhlIG1lbnUgYSBgYmFkZ2VLZXlgIGluIGBzZWVkLnRzYC4NCg0KIyMgNS43IEhlbHAgY2VudGVyDQoNCkNvZGU6IGBzcmMvbGliL2RvY3MudHNgIChzY2FuL2luZGV4KSwgYHNyYy9saWIvZG9jcy1zaGFyZWQudHNgIChmcm9udCBtYXR0ZXIgLyBhbmNob3JzIC8gVE9DIC8gc2NvcmluZyksIGBzcmMvYXBwL2RvY3MvKipgDQooc3RhbmRhbG9uZSBkb2NzIHJvdXRlKSwgYHNyYy9jb21wb25lbnRzL2RvY3MvKipgLiBFbnRyaWVzIGFyZSB3aXJlZDogdGhlICJoZWxwIiBzaWRlYmFyIG1lbnUgYW5kIHRoZSB0b3AtYmFyICI/IiBidXR0b247DQpgL2RvY3NgIGxpdmVzIG91dHNpZGUgdGhlIGFkbWluIHNoZWxsIGFuZCBpcyBhdmFpbGFibGUgdG8gZXZlcnkgbG9nZ2VkLWluIHVzZXI7IHRoZSBoZWFkZXIgcmVhZHMgYEFQUF9OQU1FYC4NCg0KKipDb250ZW50IGlzIHRoZSBuYXZpZ2F0aW9uKio6IGBjb250ZW50L2RvY3MvKiovKi5tZGAgYXV0b21hdGljYWxseSBiZWNvbWVzIGEgZG9jcyBwYWdlLCBzdWJkaXJlY3RvcmllcyBiZWNvbWUgZ3JvdXBzLCBhbmQNCmFkZGluZyBhIHBhZ2UgbmVlZHMgbm8gY29kZSBjaGFuZ2UuDQoNCi0gQSBzdWJkaXJlY3RvcnkgbWF5IGNvbnRhaW4gYF9tZXRhLmpzb25gOiBgeyAidGl0bGUiOiAiLi4uIiwgImRlc2NyaXB0aW9uIjogIi4uLiIsICJvcmRlciI6IDIgfWANCi0gUGFnZSBmcm9udCBtYXR0ZXI6IGB0aXRsZWAgLyBgZGVzY3JpcHRpb25gIC8gYG9yZGVyYCAvIGB0YWdzYCAvIGB1cGRhdGVkYCAvIGBoaWRkZW5gDQotIFN0YXJ0IHRoZSBib2R5IGF0IEgyICh0aGUgZmlyc3QgSDEgaXMgc3RyaXBwZWQpOyB1c2UgZnVsbCBwYXRocyBmb3IgaW50ZXJuYWwgbGlua3MgYFtBY2NvdW50XSgvZG9jcy9ndWlkZS9hY2NvdW50KWANCi0gVGhlIGhvbWUgcGFnZSdzICJxdWljayByZWZlcmVuY2UiIHJlYWRzIHRoZSBtZW51IHRyZWUgZGlyZWN0bHk6IHJlZ2lzdGVyaW5nIGEgbWVudSBtYWtlcyBpdCBhcHBlYXIgYXV0b21hdGljYWxseS4NCiAgKipEbyBub3QgbWFpbnRhaW4gYSBzZWNvbmQgZmVhdHVyZSBsaXN0LioqDQoNCioqQWRkIG9uZSBkb2MgcGFnZSBwZXIgYnVzaW5lc3MgbW9kdWxlKio6IGdyb3VwIHBhZ2VzIHVuZGVyIGBjb250ZW50L2RvY3MvYCAoY3JlYXRlIGEgZGlyZWN0b3J5IHBsdXMgYF9tZXRhLmpzb25gIHdoZW4NCnVzZWZ1bDsgZ2VuZXJhbCBmZWF0dXJlcyBjYW4gbGl2ZSBpbiBgZ3VpZGUvYCBgZmVhdHVyZXMvYCkuIENvdmVyIHRoZSBlbnRyeSBwb2ludCwgdHlwaWNhbCBvcGVyYXRpb25zLCBmaWVsZCBleHBsYW5hdGlvbnMgYW5kDQpjb21tb24gcXVlc3Rpb25zLCB1c2luZyB0aGUgdGFzaydzIHJlYWwgYnVzaW5lc3MgbmFtZXMsIGRlcGFydG1lbnRzLCBmaWVsZHMgYW5kIHJvbGVzLg0KQWxzbyByZXBsYWNlIGxlZnRvdmVyIGV4YW1wbGUgd29yZHMgaW4gdGhlIGdlbmVyaWMgZG9jcyAoYEVtcGxveWVlYCAvIGBMZWF2ZWAgLyBgQnVzaW5lc3MgRXhhbXBsZWApLCBlc3BlY2lhbGx5IGluDQpgY29udGVudC9kb2NzL3F1aWNrLXN0YXJ0Lm1kYCwgYHNob3J0Y3V0cy5tZGAsIGBmZWF0dXJlcy9haS5tZGAuDQoNCioqRG8gbm90IG1vZGlmeSoqIGBzcmMvbGliL2RvY3MudHNgLCBgZG9jcy1zaGFyZWQudHNgLCBgc3JjL2FwcC9kb2NzLyoqYCwgYHNyYy9jb21wb25lbnRzL2RvY3MvKipgIOKAlCB0aGV5IHNoYXJlIHRoZSBtZW51IHRyZWUsDQpwZXJtaXNzaW9ucyBhbmQgZ2xvYmFsIHNlYXJjaCBkYXRhIHNvdXJjZXM7IGJyZWFraW5nIHRoZW0gY2F1c2VzIGAvZG9jc2AgNDA0cyBvciBhIHdoaXRlIHNjcmVlbi4gT25seSBlZGl0IE1hcmtkb3duIGFuZA0KYF9tZXRhLmpzb25gLg0KDQojIyA1LjggU3lzdGVtIGFkbWluaXN0cmF0aW9uOiB0aGUgZm91ci1waWVjZSBzZXQNCg0KQSBoYXJkIGRlbGl2ZXJhYmxlLiBCdWlsdC1pbiBjb2RlOiBgKGFkbWluKS9zeXN0ZW0vZGVwdHMvcGFnZS50c3hgLCBgYXBpL2RlcHRzL3JvdXRlLnRzYCwgYGFwaS9kZXB0cy9baWRdL3JvdXRlLnRzYCwNCmBzeXN0ZW06ZGVwdDoqYCBpbiBgcmJhYy50c2AsIHRoZSBtZW51IGluIGBzZWVkLnRzYCwgYHNjcmlwdHMvY2hlY2stY29uZmlnLm1qc2AgKGEgbWlzc2luZyBkZXBhcnRtZW50IG1vZHVsZSBmYWlscyB0aGUgYnVpbGQpLg0KRGVsZXRlIHByb3RlY3Rpb24sIHVuaXF1ZSBjb2RlcywgY3ljbGUgcHJldmVudGlvbiBhbmQgdHJlZSBkaXNwbGF5IGFyZSB2ZXJpZmllZCDigJQgZG8gbm90IG92ZXJ0dXJuIHRoZW0uDQoNCldoZW4gd2lyaW5nIGJ1c2luZXNzLCBjaGFuZ2Ugb25seSBkYXRhIGFuZCBjb3B5OiByZW5hbWUgdGhlIG9yZ2FuaXphdGlvbmFsIGRpbWVuc2lvbiAoZmxlZXQgLyBjcmV3IC8gc2VjdGlvbiAvIHdhcmVob3VzZSAvDQpwcm9qZWN0IGdyb3VwKTsgKipkZXBhcnRtZW50cyBsaXZlIG9ubHkgaW4gYE9SR19UUkVFYCBpbiBgcHJpc21hL29yZy5jb25maWcudHNgKiog4oCUIGNvcHkgdGhlIGJyaWVmIHZlcmJhdGltLCBoaWVyYXJjaHkNCmluY2x1ZGVkOyBwZW9wbGUgZ28gdG8gbGVhZiBkZXBhcnRtZW50cyBvbmx5OyBuZXZlciBjYWxsIGBwcmlzbWEuZGVwYXJ0bWVudC5jcmVhdGVgIGluIGBzZWVkLnRzYDsgYWZ0ZXIgZWRpdGluZyAqKnlvdSBtdXN0IHJ1bg0KYG5weCBwcmlzbWEgZ2VuZXJhdGUgJiYgbnB4IHByaXNtYSBkYiBwdXNoIC0tZm9yY2UtcmVzZXQgLS1hY2NlcHQtZGF0YS1sb3NzICYmIG5weCB0c3ggcHJpc21hL3NlZWQudHNgKiogKHRoZSBzZWVkIGNvbW1hbmQgb25seSB1cHNlcnRzLCBzbyBzdGFsZSBkZXBhcnRtZW50cyBsaW5nZXIgYW5kIGNhcHR1cmUgcGFydCBvZiB0aGUgcm9zdGVyKS4NCmBQRU9QTEVfVE9UQUxgIC8gYFBFT1BMRV9NSU5fUEVSX0RFUFRgIGFyZSBpbiB0aGUgc2FtZSBmaWxlLiBTaWRlYmFyIG9yZGVyOiBEZXBhcnRtZW50IOKGkiBVc2VyIOKGkiBSb2xlIOKGkiBNZW51IOKGkiBPcGVyYXRpb24gTG9nLg0KDQojIyA1LjkgU3lzdGVtIGlkZW50aXR5IGFuZCBkYXNoYm9hcmQNCg0KSGFyZCBpdGVtcyBpbiBgbm9kZSBzY3JpcHRzL2NoZWNrLWNvbmZpZy5tanNgOg0KDQp8IEl0ZW0gfCBSZXF1aXJlbWVudCB8DQp8IC0tLSB8IC0tLSB8DQp8IGBBUFBfTkFNRWAgfCBlcXVhbHMgdGhlIHRhc2sncyBzeXN0ZW0gbmFtZSwgbm90IHRoZSBzY2FmZm9sZCBkZWZhdWx0IHwNCnwgYEFQUF9ERVNDYCB8IGJ1c2luZXNzIHBvc2l0aW9uaW5nLCB3aXRob3V0IE5leHQuanMgLyBhbnRkIC8gUHJpc21hIHwNCnwgYEFQUF9TVUJUSVRMRWAgfCBvbmUgbGluZSBvZiBidXNpbmVzcyBwb3NpdGlvbmluZywgbm90ICJidWlsdC1pbiBSQkFD4oCmIiB8DQp8IGBTSE9XX0RFTU9fQUNDT1VOVF9ISU5UYCB8ICoqbXVzdCBiZSBgZmFsc2VgKiogfA0KfCBgSE9NRV9TVEFUU2AgfCBidXNpbmVzcyBtZXRyaWNzLCBub3QgYHVzZXJDb3VudGAgKyBgcm9sZUNvdW50YCB8DQp8IGBvbnRvbG9neS50c2AgfCB0aGUgdGFzayBvbnRvbG9neTsgbW9kZWxzIGV4aXN0LCB2aWV3IHJlZmVyZW5jZXMgY2xvc2VkLCBgdGl0bGVGaWVsZGAgYW5kIGBsYXllcmAgcHJlc2VudCB8DQp8IGBkZXBhcnRtZW50YCBzd2l0Y2ggfCBtdXN0IGJlIGB0cnVlYCB8DQoNCkNoYW5nZSBpdCBhbGwgaW4gYHNyYy9saWIvYXBwSW5mby50c2AgKGBBUFBfTkFNRWAgLyBgQVBQX1NIT1JUYCAvIGBBUFBfU1VCVElUTEVgIC8gYEFQUF9ERVNDYCAvIGBBUFBfRkVBVFVSRVNgIC8gYEhPTUVfU1RBVFNgIC8NCmBIT01FX1dFTENPTUVgOyBldmVyeSBjb25zdGFudCBpcyBhY3R1YWxseSByZW5kZXJlZCDigJQgbGVhdmUgbm8gZGVhZCBjb25maWcpLg0KDQpUaGUgZGFzaGJvYXJkICoqcmVuZGVycyBgSE9NRV9TVEFUU2AgZGlyZWN0bHkqKiDigJQgY2FyZCBudW1iZXJzIGNvbWUgZnJvbSBgL2FwaS9zdGF0c2AgYnkgYGtleWAsIHNvIHJldHVybiB0aGUgc2FtZSBrZXlzIHRoZXJlLg0KVGhlIHRocmVlIGRlZmF1bHQgY2hhcnRzIChoZWFkY291bnQgYnkgZGVwYXJ0bWVudCAvIGdlbmRlciAvIGhpcmluZyB0cmVuZCkgYXJlICoqYWxzbyBmZWQgYnkgYC9hcGkvc3RhdHNgKioNCihgZW1wQnlEZXB0YCAvIGBnZW5kZXJSYXRpb2AgLyBgZW1wVHJlbmRgKSwgYW5kIHRoYXQgZW5kcG9pbnQgcXVlcmllcyBgRW1wbG95ZWVgIGRpcmVjdGx5OiByZXBsYWNlIHRoZSBxdWVyaWVzIGluDQpgc3JjL2FwcC9hcGkvc3RhdHMvcm91dGUudHNgICoqYW5kKiogdGhlIGNoYXJ0IG9wdGlvbnMgaW4gYHNyYy9hcHAvKGFkbWluKS9kYXNoYm9hcmQvcGFnZS50c3hgIHRvZ2V0aGVyLiBSZXdyaXRpbmcgb25seSB0aGUNCnBhZ2UgbGVhdmVzIHRocmVlIGVtcGxveWVlIGNoYXJ0cyBvbiBhIHZlaGljbGUgc3lzdGVtIOKAlCB0aGUgbW9zdCBjb21tb24gInN0aWxsIHRoZSB0ZW1wbGF0ZSIgdGVsbC4NCkEgcmVkICJ1bmNvbmZpZ3VyZWQiIGJhbm5lciBvbiB0aGUgaG9tZXBhZ2UgbWVhbnMgYEFQUF9OQU1FYCBpcyB1bmNoYW5nZWQuDQoNCiMjIDUuMTAgRGVtbyBkYXRhDQoNCi0gKipEZXBhcnRtZW50IG5hbWVzIG1hdGNoIHRoZSBicmllZiBjaGFyYWN0ZXIgZm9yIGNoYXJhY3RlcioqLCB6ZXJvIGV4dHJhczsgdGhleSBsaXZlIG9ubHkgaW4gYE9SR19UUkVFYCBpbiBgb3JnLmNvbmZpZy50c2A7DQogIG9ubHkgbGVhZiBkZXBhcnRtZW50cyBnZXQgcGVvcGxlOyBydW4gdGhlIHJlc2V0IGNvbW1hbmQgYWZ0ZXIgZWRpdGluZy4NCi0gQWZ0ZXIgdGhlIHVzZXJzIHNlY3Rpb24gaW4gYHNlZWQudHNgLCByZXVzZSB0aGUgcHJlcGFyZWQgdmFyaWFibGVzIOKAlCAqKmRvIG5vdCByZWJ1aWxkIGFjY291bnRzIG9yIGRlcGFydG1lbnRzKio6DQoNCiAgYGBgdHMNCiAgZGVwdFBvb2xbaSAlIGRlcHRQb29sLmxlbmd0aF0uaWQgICAgICAgICAgLy8gbGVhZiBkZXBhcnRtZW50IGlkDQogIHJvc3RlclVzZXJzW2ldLmlkIC8gLm5hbWUgLyAuZGVwdElkICAgICAgIC8vIGFjY291bnRzIGFscmVhZHkgaW4gdGhlIGRhdGFiYXNlDQogIHJvc3RlcltpXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNhbWUtc291cmNlIG5hbWVzIGZvciBmcmVlIHRleHQgd2l0aG91dCBhbiBhY2NvdW50DQogIG1ha2VSbmcoc2VlZCkgLyBtYWtlUGlja2VyKGxpc3QsIHJuZykgLyBwZXJzb25OYW1lKHJuZykgICAvLyBmcm9tIC4vc2VlZFNhZmUNCiAgdGV4dCh2LCBmYWxsYmFjaykgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcnVuIGV2ZXJ5IHN0cmluZyB0aHJvdWdoIGl0IChibG9ja3MgZW1vamkgLyBvZGQgc3ltYm9scykNCiAgYGBgDQoNCi0gKipObyBlbW9qaSBhbmQgbm8gbm9uLUNoaW5lc2Ugc3BlY2lhbCBzeW1ib2xzKio7IHRoZSBzZWVkIGNvbW1hbmQgZW5kcyB3aXRoIGEgcmVhbCBgYXNzZXJ0Tm9Nb2ppYmFrZWAgY2hlY2sgdGhhdCBmYWlscyB0aGUgcnVuLg0KLSBUaGUgYHVwZGF0ZWAgYnJhbmNoIG9mIGB1cHNlcnRgIG11c3QgY2FycnkgYmFja2ZpbGxlZCBmaWVsZHMgKGV4Y2VwdCBwYXNzd29yZHMpLCBvdGhlcndpc2Ugb2xkIHJvd3MgbmV2ZXIgZ2V0IGZpeGVkLg0KLSAqKlBlb3BsZSBtdXN0IGJlIGNsb3NlZC1sb29wKio6IGV2ZXJ5IHBlcnNvbiBpbiBhIGRvY3VtZW50IG5lZWRzIGEgc2FtZS1uYW1lZCBhY2NvdW50LCBhbmQgdXNlcnMgbXVzdCBhcHBlYXIgaW4gYnVzaW5lc3MNCiAgZGF0YTsgdXNlIGByb3N0ZXJVc2Vyc2AgZm9yIGFwcGxpY2FudHMvYXBwcm92ZXJzIGFuZCBgcGVyc29uTmFtZSgpYCBvbmx5IGZvciBmcmVlIHRleHQgdGhhdCBuZWVkcyBubyBhY2NvdW50Lg0KICBUd2VsdmUgYXBwbGljYW50cyBpbiBkb2N1bWVudHMgYW5kIHRocmVlIGFjY291bnRzIGluIFVzZXIgTWFuYWdlbWVudCByZWFkcyBhcyBmYWtlLg0KLSBBdCBsZWFzdCAxNSByb3dzIHBlciBidXNpbmVzcyB0YWJsZTsgY292ZXIgZXZlcnkgc3RhdHVzOyBzcHJlYWQgZGF0ZXMgb3ZlciB0aGUgbGFzdCB0d28gb3IgdGhyZWUgbW9udGhzIChub3Qgb25lIGRheSk7DQogIHN0YXQgY2FyZHMgYW5kIGNoYXJ0cyBtdXN0IHJlY29uY2lsZSB3aXRoIGxpc3QgZGV0YWlsLg0KLSBSdW4gYG5weCBwcmlzbWEgZ2VuZXJhdGUgJiYgbnB4IHRzeCBwcmlzbWEvc2VlZC50c2AgKGl0IGluY2x1ZGVzIGdlbmVyYXRlIGFuZCB0aGUgbW9qaWJha2UgY2hlY2spLCBub3QganVzdCBgZGIgcHVzaGAuDQoNCi0tLQ0KDQojIFBhcnQgNiDCtyBDb2RlIGNvbnZlbnRpb25zDQoNCi0gVUkgY29weSBhbmQgY29tbWVudHMgaW4gQ2hpbmVzZTsgY29tbWVudHMgZXhwbGFpbiAid2h5Iiwgbm90ICJ3aGF0Ii4NCi0gVXNlIGFudGQsICoqY3JlYXRlIG5vIENTUyBmaWxlcyoqLiBUYWtlIGV2ZXJ5IGNvbG9yIGZyb20gYHNyYy9saWIvdGhlbWUudHNgIChgTUlMSVRBUllgKTsgbmV2ZXIgaGFyZC1jb2RlIGEgY29sb3IgdmFsdWUNCiAgKGluY2x1ZGluZyBgI2ZmZmApLg0KLSAqKlRoZSBhcHBlYXJhbmNlIGJhc2UgbXVzdCBiZSBob25vdXJlZCoqIChza2lucyAvIGZvbnQgc2l6ZSwgZGVmaW5lZCBpbiBgc3JjL2xpYi9hcHBlYXJhbmNlLnRzYCksIG90aGVyd2lzZSBuZXcgcGFnZXMgZG8gbm90DQogIHJlYWN0IHdoZW4gdGhlIHVzZXIgc3dpdGNoZXMgc2tpbiBvciBmb250IHNpemU6DQogIMK3IHdyaXRlIGBmb250U2l6ZTogZnMoMTMpYCAoZnJvbSBgQC9saWIvdGhlbWVgKSBpbnN0ZWFkIG9mIGEgYmFyZSBudW1iZXI7DQogIMK3IHVzZSBgTUlMSVRBUlkuY2FyZGAgLyBgTUlMSVRBUlkucGFwZXJgIGZvciBjYXJkLCBwb3BvdmVyIGFuZCBtb2RhbCBzdXJmYWNlcyBpbnN0ZWFkIG9mIGAjZmZmYDsNCiAgwrcgY2hhcnRzIHRha2UgY29sb3JzIGZyb20gYHVzZUNoYXJ0UGFsZXR0ZSgpYCwgY2FudmFzIHRleHQvbGluZSBjb2xvcnMgZnJvbSBgdXNlU2tpbkluaygpYCAoY2FudmFzIGNhbm5vdCByZXNvbHZlIENTUw0KICAgIHZhcmlhYmxlcyk7IGBDSEFSVF9DT0xPUlNgIGlzIG9ubHkgYSBmYWxsYmFjayBmb3Igc3RhdGljIGNoYXJ0czsNCiAgwrcgdG8gYWRkIGEgc2tpbiwgZWRpdCBgU0tJTlNgIGluIGBsaWIvYXBwZWFyYW5jZS50c2Agb25seSDigJQgbmV2ZXIgcmUtc3R5bGUgcGFnZXMgZm9yIG9uZSBza2luLg0KLSBDb21wb25lbnRzIHVzaW5nIGhvb2tzL2ludGVyYWN0aXZpdHkgc3RhcnQgd2l0aCBgJ3VzZSBjbGllbnQnYDsgZG8gbm90IGludHJvZHVjZSB1bmluc3RhbGxlZCBwYWNrYWdlcy4NCi0gTGlzdCBBUElzIGFsd2F5cyByZXR1cm4gYHBhZ2VSZXN1bHRgOyBldmVyeSB3cml0ZSBjYWxscyBgYXVkaXRgLg0KLSBgcm91dGUudHNgIGV4cG9ydHMgb25seSBIVFRQIG1ldGhvZHMgYW5kIGBjb25maWdgOyBzaGFyZWQgY29kZSBnb2VzIGluIGEgc2libGluZyBgbGliLnRzYC4NCi0gUGFnZXMgbXVzdCBoYXZlIGEgZ3VpZGVkIGVtcHR5IHN0YXRlIChhbnRkIGBFbXB0eWApOyBuZXZlciBzaG93IGEgYmxhbmsgc2NyZWVuLg0KLSBDbGVhcmx5LWNhdGVnb3JpemVkIGNoYXJ0cyB1c2Ugc2VtYW50aWMgY29sb3JzIChmYWlsIGBNSUxJVEFSWS5lcnJvcmAsIHBlbmRpbmcgYE1JTElUQVJZLndhcm5pbmdgKSwgdHJlbmQgY2hhcnRzIHVzZQ0KICBgdXNlQ2hhcnRQYWxldHRlKClgOyBhZGQgYGxhYmVsTGF5b3V0OiB7IGhpZGVPdmVybGFwOiB0cnVlIH1gLg0KLSBJbnRlcmFjdGlvbiBmZWVkYmFjayBnb2VzIHRocm91Z2ggYHNyYy9jb21wb25lbnRzL2ZlZWRiYWNrYCAocmVhZCBpdHMgc2hvcnQgUkVBRE1FIGZpcnN0KTogYFN0YXRDYXJkYCAvIGBQcmVzc2FibGVDYXJkYCAvDQogIGB1c2VSb3dGbGFzaCgpK0RhdGFUYWJsZS5oaWdobGlnaHRSb3dgOyB3YWl0IGZlZWRiYWNrIHZpYSBgQXN5bmNCdXR0b25gIC8gYExvYWRpbmdPdmVybGF5YCAvIGBTa2VsZXRvbipgLiBObyBjdXN0b20NCiAgYW5pbWF0aW9ucywgbm8gZnVsbC1zY3JlZW4gbG9hZGluZy4gYHdiLXByZXNzYWJsZWAgZ29lcyBvbmx5IG9uIGVsZW1lbnRzIHRoYXQgYXJlICoqcmVhbGx5IGNsaWNrYWJsZSoqIOKAlCBvbiBzdGF0aWMgY29udGVudA0KICBpdCBsb29rcyBtb3JlIGJyb2tlbiB0aGFuIGxlYXZpbmcgaXQgb2ZmLg0KDQotLS0NCg0KIyBQYXJ0IDcgwrcgUHJlLWRlbGl2ZXJ5IHNlbGYtY2hlY2sgYW5kIHJlcG9ydA0KDQojIyA3LjEgQ2hlY2tsaXN0ICh0aWNrIGV2ZXJ5IGxpbmU7IGRvIG5vdCByZXBvcnQgYmVmb3JlIGl0IGlzIGFsbCB0aWNrZWQpDQoNCuKWoSBgbnB4IHRzYyAtLW5vRW1pdGAgemVybyBlcnJvcnM7IGBub2RlIHNjcmlwdHMvY2hlY2stY29uZmlnLm1qc2AgcGFzc2VzOyBgbm9kZSBzY3JpcHRzL2NoZWNrLWNvbmZpZy5tanMgJiYgbnB4IHRzYyAtLW5vRW1pdCAmJiBucHggbmV4dCBidWlsZGAgcnVuIG9uY2UgYXQgdGhlIGVuZCBhbmQgcGFzc2VzDQrilqEgYG5wbSBydW4gYnVpbGRgIGV4aXRzIDA7IGlmIGl0IGV2ZXIgcmVwb3J0ZWQgYEVQRVJNOiAubmV4dC90cmFjZWAsIGBub2RlIHNjcmlwdHMvcGF0Y2gtbmV4dC10cmFjZS5tanNgIHdhcyBydW4gYW5kIHRoZSByZWJ1aWxkIHBhc3NlZA0K4pahIGBhZG1pbiAvIDEyMzQ1NmAgbG9naW4gc2hvd3MgdGhlIG5ldyBtZW51czsgY3JlYXRlL2VkaXQvZGVsZXRlL3NlYXJjaC9wYWdpbmF0ZSB3b3JrIGV2ZXJ5d2hlcmUNCuKWoSBGb3VyLXBpZWNlIGFkbWluIHNldCBjb21wbGV0ZTsgYC9zeXN0ZW0vZGVwdHNgIGFkZHMgY2hpbGRyZW4sIGVkaXRzLCBkZWxldGVzIGVtcHR5IG9uZXMgYW5kIGV4cGxhaW5zIHJlZnVzYWxzDQrilqEgRGF0YSBwZXJtaXNzaW9uIGNsb3NlZCBsb29wOiBhIG5vcm1hbCBhY2NvdW50IHNlZXMgZmV3ZXIgcm93cyBpbiBsaXN0LCBleHBvcnQsIGRhc2hib2FyZCBhbmQgZ3JhcGg7IGEgY3JhZnRlZCBvdXQtb2Ytc2NvcGUgaWQNCiAgcmV0dXJucyA0MDQgZnJvbSB0aGUgZGV0YWlsIEFQSQ0K4pahIERlcGFydG1lbnQgbmFtZXMgbWF0Y2ggdGhlIGJyaWVmIGNoYXJhY3RlciBmb3IgY2hhcmFjdGVyLCBubyBleHRyYXMsIGV2ZXJ5IGRlcGFydG1lbnQgc3RhZmZlZA0K4pahIERlbW8gZGF0YSBjbG9zZWQtbG9vcCBvbiBwZW9wbGU7IGNhcmQvY2hhcnQgbnVtYmVycyByZWNvbmNpbGUgd2l0aCBkZXRhaWwNCuKWoSBgL2dyYXBoYCBzaG93cyB0aGUgdGFzayBvbnRvbG9neSB3aXRoIG5vIHJlZCBiYW5uZXIsIHBhcmFsbGVsIGxpbmVzIG9yIGlzb2xhdGVkIG5vZGVzOyBgcmVsYXRpb25zYCBoYXMgbm8g4pyXOw0KICByZW5hbWUvZGVsZXRlIHJvdW5kLXRyaXBzIHBlcnNpc3QNCuKWoSBgL2FpYCBoYXMgb25lIGNoYXQgYm94OyBkYXRhLCB1c2FnZSBhbmQgYWN0aW9uIHF1ZXN0aW9ucyBhbGwgd29yazsgYW5zd2VycyByZW5kZXIgYXMgTWFya2Rvd247IGFnZ3JlZ2F0ZXMgc2hvdyBhIHRvb2wgdHJhY2UNCuKWoSBDb25maXJtYXRpb24gY2FyZCBlbmQgdG8gZW5kOiBDb25maXJtIHBlcnNpc3RzICsgd3JpdGVzIGFuICJBSSBBc3Npc3RhbnQiIGF1ZGl0IGxvZzsgQ2FuY2VsIHdyaXRlcyBub3RoaW5nOyByZWZyZXNoIGRvZXMgbm90DQogIHJlc3VycmVjdCBpdA0K4pahIFNlc3Npb24gc3Vydml2ZXMgcmVmcmVzaDsgZGVlcCBsaW5rcyB3b3JrOyBjb3JlIGxpc3QgdG9vbGJhcnMgaGF2ZSBhIEZlZWRiYWNrIGJ1dHRvbg0K4pahIGAvZG9jc2Agb3BlbnM7IGV2ZXJ5IGJ1c2luZXNzIG1vZHVsZSBoYXMgYSBoZWxwIHBhZ2U7IEN0cmwgSyBmaW5kcyBidXNpbmVzcyBtb2R1bGUgbmFtZXM7IHRoZSB0b3AtYmFyICI/IiBhbmQgdGhlIHNpZGViYXINCiAgZW50cnkgYm90aCB3b3JrDQrilqEgYC9pbmJveGAgb3BlbnM7IHRoZSB0b3AtYmFyIGJlbGwgc2hvd3MgYSBjb3VudDsgdG9kb3MgZGVlcC1saW5rIHRvIHNwZWNpZmljIHJlY29yZHM7IG1lc3NhZ2VzIGNhbiBiZSBtYXJrZWQgcmVhZA0KICBpbmRpdmlkdWFsbHkgb3IgYWxsIGF0IG9uY2U7IHRvZG9zIGRpc2FwcGVhciBhZnRlciB0aGUgdW5kZXJseWluZyBidXNpbmVzcyBpcyBjb21wbGV0ZWQNCuKWoSBTdGFydHMgaW4gcHJvZHVjdGlvbiBtb2RlIChgbnBtIHJ1biBidWlsZCAmJiBucG0gcnVuIHN0YXJ0YCksIHdpdGggbm8gTmV4dC5qcyBkZXYgYmFkZ2UNCuKWoSBFdmVyeSBicmFuY2ggYW5kIHRhZyBleGlzdHMgb24gdGhlIHJlbW90ZTogYGdpdCBsb2cgLS1vbmVsaW5lIG9yaWdpbi9tYWluYCBzaG93cyB0aGVtDQoNCiMjIDcuMiBSZXBvcnQgZm9ybWF0IChmb2xsb3cgdGhpcywgZG8gbm90IHdyaXRlIHByb3NlKQ0KDQpgYGANCkRvbmU6IDxvbmUgc2VudGVuY2U+DQpEYXRhIG1vZGVsczogWHh4QSAvIFh4eEIgLyBYeHhDIChOIGRlbW8gcm93cyBlYWNoKQ0KTW9kdWxlczogPG1lbnUgbmFtZT4g4oaSIC9wYXRoIChsaXN0L2NyZWF0ZS9lZGl0L2RlbGV0ZS9leHBvcnQg4pyFKQ0KT250b2xvZ3k6IDxsYXllcjA+IOKGkiA8bGF5ZXIxPiDihpIgPGxheWVyMj4sIE4gbm9kZXMgLyBNIGVkZ2VzIC8gSyB2aWV3cw0KVmVyaWZpZWQ6IHRzYyDinIUgIGNoZWNrOmNvbmZpZyDinIUgIHJlbGF0aW9ucyDinIUgIHZlcmlmeSDinIUNCk5vdCBkb25lIG9yIGxpbWl0ZWQ6IDxiZSBob25lc3Q7IHdyaXRlICJub25lIiBpZiBub25lPg0KYGBgDQoNCioqTmV2ZXIgcmVwbGFjZSBldmlkZW5jZSB3aXRoICJkb25lIiBvciAiYmFzaWNhbGx5IHdvcmtzIi4qKiBFdmVyeSBjb25jbHVzaW9uIGNhcnJpZXMgYSB2ZXJpZmlhYmxlIGZhY3QgKGNvbW1hbmQgb3V0cHV0LCBwYWdlDQpwYXRoLCByb3cgY291bnQpLg0KDQotLS0NCg0KIyMgQXBwZW5kaXggQSDCtyBHaXQgd29ya2Zsb3cNCg0KVGhlIGhpc3Rvcnkgc2hvdWxkIHJlYWQgbGlrZSByZWFsIGVuZ2luZWVyaW5nLCBub3Qgb25lIGdpYW50IGR1bXAgYXQgdGhlIGVuZC4NCg0KKipCcmFuY2hlcyoqOiBgbWFpbmAgaXMgcnVubmFibGUgYXQgZXZlcnkgY29tbWl0OyBgZmVhdC88bW9kdWxlPmAgaXMgb25lIGJyYW5jaCBwZXIgYnVzaW5lc3MgbW9kdWxlLCBtZXJnZWQgYmFjayB3aXRoDQpgZ2l0IG1lcmdlIC0tbm8tZmZgOyBmaXggYSBidWcgb24gdGhlIGJyYW5jaCB0aGF0IG93bnMgaXQsIG5vdCBvbiBgbWFpbmAuDQoNCioqQ29tbWl0IGdyYW51bGFyaXR5Kio6IG9uZSBjb25jZXJuIHBlciBjb21taXQgKGBhZGQgRGlzcGF0Y2hSZWNvcmQgbW9kZWxgIC8gYGFkZCBkaXNwYXRjaCBsaXN0IEFQSWAgLyBgYWRkIGRpc3BhdGNoIHBhZ2VgLA0Kbm90IGBhZGQgZGlzcGF0Y2ggbW9kdWxlYCk7IGNvbW1pdCBhcyBzb29uIGFzIHRoZSBtb2R1bGUgcGFzc2VzIGB0c2NgOyBwcmVmaXhlcyBgZmVhdDpgIC8gYGZpeDpgIC8gYHJlZmFjdG9yOmAgLyBgY2hvcmU6YCAvDQpgZG9jczpgLg0KDQoqKlRhZ3MqKjogYW5ub3RhdGVkIHRhZ3Mgb25seSAoYGdpdCB0YWcgLWEgdjAuMS4wIC1tICJza2VsZXRvbiBydW5zImApOyB0YWcgYHYxLjAuMGAgd2hlbiB0aGUgYnVzaW5lc3MgZmxvdyB3b3JrczsgcmVsZWFzZQ0Kbm90ZXMgbGlzdCBvbmUgbGluZSBwZXIgbW9kdWxlLg0KDQoqKlB1c2ggaXMgd2hhdCBjb3VudHMqKjogYGdpdCBwdXNoIG9yaWdpbiA8YnJhbmNoPmAgKyBgZ2l0IHB1c2ggLS10YWdzYDsgY29uZmlybSB3aXRoIGBnaXQgbG9nIC0tb25lbGluZSBvcmlnaW4vbWFpbmAgYmVmb3JlDQpyZXBvcnRpbmcgZG9uZS4NCg0KIyMgQXBwZW5kaXggQiDCtyBUcmFwcyBhbHJlYWR5IHBhaWQgZm9yIChzYXZlcyB5b3UgaGFsZiBhbiBob3VyKQ0KDQp8IFN5bXB0b20gfCBSZWFsIGNhdXNlIHwNCnwgLS0tIHwgLS0tIHwNCnwgYG5leHQgYnVpbGRgIGxvZyBsb29rcyBmaW5lLCBleGl0IGNvZGUgMTM5IHwgTm9kZSAyMiwgV0FTTSBjb21waWxlciBTSUdTRUdWLiBVc2UgTm9kZSAyNDsganVkZ2UgYnkgZXhpdCBjb2RlIG9ubHkgfA0KfCBgbmV4dCBidWlsZGAgdGhyb3dzIGBFUEVSTTogb3BlcmF0aW9uIG5vdCBwZXJtaXR0ZWQsIG9wZW4gJy5uZXh0L3RyYWNlJ2AgfCBOZXh0J3MgdHJhY2Ugd3JpdGUtc3RyZWFtIHJhY2UsIG9yIGBucG0gY2lgIHdpcGVkIHRoZSBidWlsdC1pbiBwYXRjaC4gUnVuIGBub2RlIHNjcmlwdHMvcGF0Y2gtbmV4dC10cmFjZS5tanNgIGFuZCByZWJ1aWxkLiAqKk5vdCBhbnRpdmlydXMqKjogZGVsZXRpbmcgYC5uZXh0YCwgZGlzYWJsaW5nIEFWIG9yIGFkZGluZyBhbiBleGNsdXNpb24gZG9lcyBub3RoaW5nIHwNCnwgYENhbm5vdCBmaW5kIG1vZHVsZSAnLnByaXNtYS9jbGllbnQvZGVmYXVsdCdgIHwgUHJpc21hIDcgZG9lcyBub3QgYXV0by1nZW5lcmF0ZTsgcnVuIGBucHggcHJpc21hIGdlbmVyYXRlICYmIG5weCB0c3ggcHJpc21hL3NlZWQudHNgIChjb250YWlucyBnZW5lcmF0ZSkgfA0KfCBCdWlsZCBmYWlscyB3aXRoIFAxMDEyIHwgQ29ubmVjdGlvbiBzdHJpbmcgd3JpdHRlbiBpbnRvIGBzY2hlbWEucHJpc21hYDsgaXQgYmVsb25ncyBpbiBgcHJpc21hLmNvbmZpZy50c2AgfA0KfCBEZXBhcnRtZW50cyBjaGFuZ2VkIGJ1dCBwYWdlcyBzdGlsbCBvbGQgfCBVc2VkIHRoZSBzZWVkIGNvbW1hbmQ7IGFmdGVyIGVkaXRpbmcgYE9SR19UUkVFYCB5b3UgbXVzdCBydW4gdGhlIHJlc2V0IGNvbW1hbmQgfA0KfCBOZXcgbWVudSBkb2VzIG5vdCBhcHBlYXIgaW4gdGhlIHNpZGViYXIgfCBUaGUgc2VlZCBjb21tYW5kIHdhcyBub3QgcnVuLCBvciB0aGUgbWVudSBoYXMgYSBgcGVybUNvZGVgIHRoZSByb2xlIHdhcyBuZXZlciBncmFudGVkIHwNCnwgQ2hpbGQgbWVudXMgYXBwZWFyIGF0IHRoZSBzaWRlYmFyIHJvb3QgfCBTZWVkIGF1dGhvcml6YXRpb24gbGFja3MgdGhlICoqYW5jZXN0b3IgY2xvc3VyZSoqOiBwYXJlbnQgZGlyZWN0b3J5IHVuLWdyYW50ZWQgbWFrZXMgY2hpbGRyZW4gb3JwaGFucyB8DQp8IEV4cG9ydCBhbnN3ZXJzICJ1bnN1cHBvcnRlZCBleHBvcnQgbW9kdWxlIiB8IE5vIGJyYW5jaCBhZGRlZCBpbiBgYXBpL2V4cG9ydC9yb3V0ZS50c2AgfA0KfCBgP2RlcHRJZD1gIHJldHVybnMgb3RoZXIgZGVwYXJ0bWVudHMnIHJvd3MgfCBgZGVwdFNjb3BlYCBtZXJnZWQgYmVmb3JlIHRoZSBidXNpbmVzcyBmaWx0ZXJzIGFuZCBvdmVyd3JpdHRlbiBieSBgd2hlcmUuZGVwdElkYCB8DQp8IE5ldyBwYWdlcyBpZ25vcmUgc2tpbiBjaGFuZ2VzIHwgSGFyZC1jb2RlZCBgI2ZmZmAgLyBoZXggdmFsdWVzOyB1c2UgYE1JTElUQVJZLipgIHwNCnwgQ2hhcnRzIHJlbmRlciBub3RoaW5nIHVuZGVyIGEgbmV3IHNraW4gfCBgdmFyKC0td2ItKilgIGZlZCB0byBFQ2hhcnRzOyB1c2UgYHVzZUNoYXJ0UGFsZXR0ZSgpYCAvIGB1c2VTa2luSW5rKClgIHwNCnwgVG9kbyBhbmQgbWVzc2FnZSBib3RoIGZpcmUgZm9yIG9uZSBldmVudCB8IEJvdGggYSB0b2RvIHNvdXJjZSBhbmQgYG5vdGlmeSgpYCBmb3IgdGhlIHNhbWUgZXZlbnQg4oCUIHBpY2sgb25lIHwNCnwgVGhlIHNlZWQgY29tbWFuZCBmYWlscyBvbiBtb2ppYmFrZSB8IENvcHkgbm90IHBhc3NlZCB0aHJvdWdoIGB0ZXh0KClgLCBvciBlbW9qaSAvIHByaXZhdGUtdXNlIGNoYXJhY3RlcnMgcHJlc2VudCB8DQp8IEdyYXBoIGhhcyBpc29sYXRlZCBub2RlcyBvciBvbmUgdGFsbCBjb2x1bW4gfCBBIHZpZXcgaW5jbHVkZXMgYW4gZW50aXR5IHdpdGggbm8gZWRnZXMsIG9yIGEgMTpOIGxvZyByZWxhdGlvbiBwdWxsZWQgaW50byB0aGUgZGVmYXVsdCB2aWV3IHwNCnwgRGV0YWlsIEFQSSByZXR1cm5zIDIwMCB3aXRoIGVtcHR5IGRhdGEgfCBObyBgZGVwdFNjb3BlYDogdGhlIGlkIGZldGNoZXMgYW5vdGhlciBkZXBhcnRtZW50J3Mgcm93IChwcml2aWxlZ2UgZXNjYWxhdGlvbik7IHdpdGggc2NvcGUgYnV0IG5vIG51bGwgY2hlY2ssIHRoZSA0MDQgcGF0aCBuZXZlciB0cmlnZ2VycyB8DQoNCiMjIEFwcGVuZGl4IEMgwrcgVGhyZWUgd3JpdGluZyBleGFtcGxlcyAobGVhcm4gdGhlIHNoYXBlLCBub3QgdGhlIGJ1c2luZXNzKQ0KDQp8IERpbWVuc2lvbiB8IFZlaGljbGUgZGlzcGF0Y2ggfCBMZWF2ZSBhcHByb3ZhbCB8IEV4YW0gc2NvcmVzIHwNCnwgLS0tIHwgLS0tIHwgLS0tIHwgLS0tIHwNCnwgT250b2xvZ3kgbGF5ZXJzIHwgZGVwdCAwIOKGkiB2ZWhpY2xlL2RyaXZlciAxIOKGkiBkaXNwYXRjaCAyIHwgcGVyc29uIDAg4oaSIHBsYW4gMSDihpIgcmVxdWVzdC9jaGFuZ2UgMiB8IGRlcHQgMCDihpIgcGVyc29uIDEg4oaSIGNvdXJzZS9zY29yZSAyIHwNCnwgU3RhdGUgbWFjaGluZSB8IHBlbmRpbmcg4oaSIGFzc2lnbmVkIOKGkiBkb25lIC8gY2FuY2VsbGVkIHwgcGVuZGluZyDihpIgYXBwcm92ZWQg4oaSIGNsb3NlZCAvIHJlamVjdGVkIHwgZHJhZnQg4oaSIGVudGVyZWQg4oaSIHB1Ymxpc2hlZCB8DQp8IFRvZG8gfCByZXF1ZXN0cyBhd2FpdGluZyBkaXNwYXRjaCB8IGxlYXZlIHJlcXVlc3RzIGF3YWl0aW5nIG15IGFwcHJvdmFsIHwgc2NvcmUgYmF0Y2hlcyBhd2FpdGluZyBlbnRyeSB8DQp8IFN0YXQgY2FyZHMgfCBhdmFpbGFibGUgdmVoaWNsZXMgLyB0cmlwcyB0b2RheSAvIHBlbmRpbmcgLyBpbiByZXBhaXIgfCBteSBsZWF2ZSBiYWxhbmNlIC8gcGVuZGluZyBhcHByb3ZhbHMgLyBkYXlzIHRoaXMgbW9udGggfCBhdmVyYWdlIHNjb3JlIC8gZmFpbGluZyBjb3VudCAvIHVucHVibGlzaGVkIGJhdGNoZXMgfA0K
1
+ 58DlquGHrAbILvx9Tr0zRRIe3ogYkNdHAIAir0R3U5ncDowqPvGK5P/sEfrGswzCyXzb2uAUggSRbWBZIgFUe+Jy2fZ5SULfRLKCpQDpCxaS9MTye5FffP4Sb9yzHpVJDXWOBP8A8JjUs96VvUCgdgdYI3V0YIAygq8V2MfLYzudmhwWZRLngDezE1IHw3PLGvJ501A8oOjhHPTz8suT/4SUZZGJiehgn9pbetcN6KAMZu6n2XZG5aLx4S6M/DS0Jum+AbyMvHYVO0B/yFWjE1g7pKD8hCbCBJPojWyCxwJrfG1tYpy7HgtaPdmmjdAEwyNLR3W3VNwo841DjeWyTKInoDb9JEp9d+4HCXUNIs8MDWhFKRAMHuU+GutvDq1OjMgynBuqt1Ab7Jm98LF8gXjwdHx2zc9mjyNPqN11uNCo0P2kweVioMT6QysXtTN9tfsIk8Q3zFFlxWEtOOvR+BJl+rDegyszUo3aL+CzNj+7cbhQAuM4VEinBHx84VdUocaJvMcXRO6iHRdR3N1uHuzdZbMOJSU7srlYXkOO9LVnNwJfzpHPfY/+EQubzzdIY9lgyfWzilOXq3wDKJAcHkI8/aGUgViI/HA1iFOIcHFqbCJsD3kMEJGPegLyMpV057EfQaJfhAsGNXX2rnOzOrU4CZhP07wb6g72QrKmhX/wcGdcAnhfhHmo0yguG1QkcbO7ZmCJTXttvYnX67itqHTG5/hlRYPWPaZWRnl1T5mRqxvKOHbmrvutPD7G95ucPzp/wxM3iOQoPaYQMm02Khw2Y38BFTKeJtA2+8AWesARnWuEVVU8KRJzS0rFpGPQ6aC5YwuFEbgn0pkG07oixNZqChcNZSFMt1Kq+z5AlTWtlz2KqSiautrmV7V717o/JckA9ChVOkGKG2Ewl4iE0JU0mdDkVLivqa39Lz8GHMw7q/mIeh4xafutNhZ+7tvbVM6Cml9vvJE8ru/Zwv2JZXeG//WeSBkrWYcn9l+arZ0pNJp8G/api5FT9LvcBb3nQZze2WQ1g3Lobsb89kH/Y9+1doNB+RnwwDPSrswfy6f0DLJftLdkNCEmCLFCIKGie1c7tzp64fRtKQRSti4L37LJ/IgmWg71ET1s9C+goskq6H7RkXMr04ICd018Vuo/69do+p8IM6fm+EhRB1hAKu3JpkX1OvdsoVmBqBDXacyXrV9k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
@@ -698,7 +698,7 @@ async function main() {
698
698
  }
699
699
  console.log(' 待办与消息演示数据 OK(2 条反馈 / 2 条未读欢迎消息)');
700
700
 
701
- // ---- 乱码自检(提示词与 README 都承诺了这一步,必须真的跑)----
701
+ // ---- 乱码自检 ----
702
702
  // 扫全库字符串字段:emoji / 私用区 / U+FFFD / Latin-1 乱码特征。
703
703
  // 命中就抛错让 seed 失败 —— 宁可在这里红一次,也不要让评委在列表里看到 🚗
704
704
  // 只读操作,不写库;单表取 500 行,SQLite 上是毫秒级。
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * 系统配置校验 —— 不配置就构建失败。
3
3
  *
4
- * 为什么要有这个:光靠提示词"提醒 AI 改"是靠不住的,AI 会忘、会跳步、
4
+ * 为什么要有这个:只靠口头提醒 AI 改并不可靠,AI 会忘、会跳步、
5
5
  * 会在别的地方写一堆演示文案。这里在构建前硬检查,
6
6
  * 让"交上去还是个演示系统"变得不可能。
7
7
  *
@@ -267,7 +267,7 @@ if (ontoSrc) {
267
267
  /**
268
268
  * 部门管理是硬性要求。
269
269
  *
270
- * 为什么不在提示词里说一说就完事:AI 生成"系统管理"时,
270
+ * 为什么不能只做说明:AI 生成"系统管理"时,
271
271
  * 十次有八次只做用户 + 角色,把部门漏掉 —— 因为用户管理里有个部门下拉,
272
272
  * 看起来"已经覆盖了"。实际上没有部门维护入口,组织结构就是死的。
273
273
  * 这里直接查文件存在性,漏了构建就失败。
@@ -341,7 +341,7 @@ if (featuresSrc === null) {
341
341
  /**
342
342
  * 工具层是"AI 不只是问答"的唯一实现路径。
343
343
  *
344
- * 为什么用文件检查而不是只写在提示词里:
344
+ * 为什么用文件检查而不是只做说明:
345
345
  * 后续 AI 改业务时很容易觉得"快照够用了",把工具循环删掉;
346
346
  * 或者嫌确认卡麻烦,让对话接口直接写库。那一瞬间系统就退回成套壳问答。
347
347
  * 这里只查存在性与关键调用,不限制业务 —— 工具本来就是按 ontology 自动生成的,
@@ -139,10 +139,7 @@ export default function DashboardPage() {
139
139
  );
140
140
 
141
141
  const cards = useMemo(() => {
142
- // ★ 未配置(APP_NAME 还是默认值)时走脚手架自带的 5 张卡,保留下钻链接,
143
- // 保证"刚解压就能演示";一旦按题目配过,就完全由 appInfo.ts 的 HOME_STATS 决定。
144
- // 以前这里写死卡片、HOME_STATS 只是摆设 —— 提示词让 AI 改 appInfo,
145
- // 改完首页却一点没变,check:config 还照样通过,等于白改。
142
+ // ★ 未配置时展示默认卡片;配置后完全由 appInfo.ts 的 HOME_STATS 决定。
146
143
  if (!IS_CONFIGURED) {
147
144
  return [
148
145
  { title: '用户总数', value: data?.userCount, icon: <TeamOutlined />, color: palette[0], href: '/system/users', suffix: undefined },
@@ -386,7 +386,6 @@ export async function POST(req: Request) {
386
386
  });
387
387
  }
388
388
 
389
- /** 供调试:返回助手此刻看到的系统提示词(不含敏感数据以外的内容) */
390
389
  export async function GET() {
391
390
  const user = await currentUser();
392
391
  if (!user) return Response.json({ error: '请先登录' }, { status: 401 });
@@ -1,25 +1,6 @@
1
- /**
2
- * 本地大模型客户端(服务端专用)。
3
- *
4
- * 为什么要有这个:比赛本身就是"用 AI 造系统",
5
- * 如果造出来的系统里**没有真正的 AI 功能**,就和其他队伍站在同一起跑线上了。
6
- * 把"调本地模型"这件事在骨架里封好,模型只需要把业务数据拼进 prompt。
7
- *
8
- * 约定:
9
- * - 地址/模型名走环境变量,换机器不用改代码
10
- * - 只在服务端调用(API Key 不能进浏览器)
11
- * - 统一超时 + 统一错误 → 面向用户的中文提示
12
- */
1
+ /** 本地大模型客户端(服务端专用)。 */
13
2
 
14
- /**
15
- * 配置来源:`AI_*` 优先,`OPENAI_*` 兜底。
16
- *
17
- * ★ 为什么两套都认:提示词里让 AI 去 `.env` 找 `OPENAI_BASE_URL / OPENAI_API_KEY / OPENAI_MODEL`
18
- * (这是业界最常见的叫法),而骨架一开始只读 `AI_*`。两边对不上时,用户按提示词
19
- * 填了 `OPENAI_*`,`/api/ai/chat` 却仍走默认地址 —— 表现为"配了也没用",且没有任何报错。
20
- * `openaiCompat.ts` 早就是两套都认的写法,这里补一致,避免同一个模型有两个入口
21
- * 却有两条不同的配置路径。
22
- */
3
+ /** 配置来源:`AI_*` 优先,`OPENAI_*` 兜底。 */
23
4
  const pickEnv = (...names: string[]): string | undefined => {
24
5
  for (const n of names) {
25
6
  const v = process.env[n];
@@ -7,7 +7,7 @@ import { APP_NAME } from '@/lib/appInfo';
7
7
  *
8
8
  * 为什么要有这个文件:
9
9
  * 1. 模型不知道"现在"是几号 —— 问"这个月有几条申请"它只能瞎猜。
10
- * 这里把北京时间、"本月/上月"的具体区间一起塞进 system prompt。
10
+ * 这里把北京时间、"本月/上月"的具体区间一起加入模型上下文。
11
11
  * 2. 一个对话框要同时回答"系统怎么用"和"库里有多少条",
12
12
  * 就必须每次都把业务数据快照带上,而不是分两个接口。
13
13
  * 3. /api/ai/chat(流式)和 /api/ai/ask(非流式)共用同一套上下文,避免两边漂移。
@@ -29,7 +29,7 @@ const BLOCKED = new Set(['User', 'Role', 'Menu', 'UserRole', 'RoleMenu']);
29
29
  export const ROWS_PER_TABLE = 6;
30
30
  /** 单个字段值最长多少字符 */
31
31
  const MAX_FIELD_LEN = 40;
32
- /** 快照总字符上限(防止 prompt 爆掉) */
32
+ /** 快照总字符上限 */
33
33
  const MAX_SNAPSHOT_CHARS = 7000;
34
34
 
35
35
  /** 北京时间固定 UTC+8(比赛机器在国内,不依赖服务器时区设置) */
@@ -278,7 +278,7 @@ export interface AssistantOptions {
278
278
  }
279
279
 
280
280
  /**
281
- * 组装统一助手的 system prompt。
281
+ * 组装统一助手上下文。
282
282
  *
283
283
  * extra 是调用方追加的角色说明(会被截断,防止把上下文挤爆)。
284
284
  * withData=false 时只要时间不要数据(比如纯使用答疑)。
@@ -169,14 +169,7 @@ function firstLeafPath(node: MenuTreeNode): string | null {
169
169
  return null;
170
170
  }
171
171
 
172
- /**
173
- * 菜单树 → 全局搜索索引。
174
- *
175
- * 为什么拿菜单树当唯一数据源:**菜单就是这个系统的「功能注册表」** ——
176
- * AI 每加一个业务模块都会在 seed 里登记菜单(见通用提示词铁律),
177
- * 所以新功能不用为搜索写任何代码,进了侧边栏就等于进了搜索。
178
- * 按钮(type=button)没有页面、隐藏菜单用户看不见,两者都不进索引。
179
- */
172
+ /** 菜单树 → 全局搜索索引;按钮与隐藏菜单不进索引。 */
180
173
  export function buildSearchEntries(nodes: MenuTreeNode[]): SearchEntry[] {
181
174
  const out: SearchEntry[] = [];
182
175
  const walk = (list: MenuTreeNode[], trail: string) => {