# Name: smd_lately v0.1 # Type: Client side plugin # Show recently viewed/popular articles # Author: Stef Dawson # URL: http://stefdawson.com/ # Recommended load order: 5 # ..................................................................... # This is a plugin for Textpattern - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ..................................................................... YToxMTp7czo0OiJuYW1lIjtzOjEwOiJzbWRfbGF0ZWx5IjtzOjY6ImF1dGhvciI7czoxMToi U3RlZiBEYXdzb24iO3M6MTA6ImF1dGhvcl91cmkiO3M6MjI6Imh0dHA6Ly9zdGVmZGF3c29u LmNvbS8iO3M6NzoidmVyc2lvbiI7czozOiIwLjEiO3M6MTE6ImRlc2NyaXB0aW9uIjtzOjM3 OiJTaG93IHJlY2VudGx5IHZpZXdlZC9wb3B1bGFyIGFydGljbGVzIjtzOjQ6ImNvZGUiO3M6 MzU2NDoiZnVuY3Rpb24gc21kX2xhdGVseSgkYXR0cywgJHRoaW5nPU5VTEwpIHsNCglnbG9i YWwgJHByZWZzLCAkdGhpc2FydGljbGUsICRwZXJtbGlua19tb2RlOw0KDQoJLy8gQ2hlY2sg bG9nZ2luZyBpcyBvbg0KCWlmICggJHByZWZzWydsb2dnaW5nJ10gIT0gJ2FsbCcpIHsNCgkJ dHJpZ2dlcl9lcnJvcihzbWRfcnZfZ1R4dCgnbG9nZ2luZ19lbmFibGVkJyksIEVfVVNFUl9O T1RJQ0UpOw0KCQlyZXR1cm47DQoJfQ0KDQoJZXh0cmFjdChsQXR0cyhhcnJheSgNCgkJJ2J5 JyA9PiAnU01EX0NVUlJFTlQnLCAvLyBEZWZhdWx0IGlzIHRoZSBJUCBhZGRyZXNzIG9mIHRo ZSBjdXJyZW50IHZpc2l0b3IuIENhbiBiZSBlbXB0eSBmb3IgJ2FsbCcgdmlzaXRvcnMNCgkJ J3NlY3Rpb24nID0+ICcnLA0KCQknc2hvd19jdXJyZW50JyA9PiAwLA0KCQknZm9ybScgPT4g JycsDQoJCSdsaW1pdCcgPT4gMTAsDQoJCSdzb3J0JyA9PiAndGltZSBkZXNjJywNCgkJJ3dy YXB0YWcnID0+ICcnLA0KCQknYnJlYWsnID0+ICdicicsDQoJCSdjbGFzcycgPT4gJ19fRlVO Q1RJT05fXycsDQoJCSdsYWJlbCcgPT4gJycsDQoJCSdsYWJlbHRhZycgPT4gJycsDQoJCSdk ZWJ1ZycgPT4gMCwNCgkpLCAkYXR0cykpOw0KDQoJLy8gU2FuaXRpemUgc29ydCBvcHRpb25z DQoJJHNvcnRCaXRzID0gZG9fbGlzdCgkc29ydCwgIiAiKTsNCglpZiAoIWlzc2V0KCRzb3J0 Qml0c1sxXSkgfHwgIWluX2FycmF5KCRzb3J0Qml0c1sxXSwgYXJyYXkoJ2Rlc2MnLCAnYXNj JykpKSB7DQoJCSRzb3J0Qml0c1sxXSA9ICdkZXNjJzsNCgkJJHNvcnQgPSBqb2luKCIgIiwg JHNvcnRCaXRzKTsNCgl9DQoNCgkvLyBJUCBhZGRyZXNzIGNsYXVzZQ0KCSRpcCA9ICcnOw0K CWlmICgkYnkgPT0gJ1NNRF9DVVJSRU5UJykgew0KCQkkaXAgPSByZW1vdGVfYWRkcigpOw0K CQlpZiAoJGlwKSB7DQoJCQkkaXAgPSAiIEFORCBpcD0nIi5kb1NsYXNoKCRpcCkuIiciOw0K CQl9DQoJfSBlbHNlIGlmICgkYnkgPT0gJ1NNRF9BTEwnKSB7DQoJCSRieSA9ICcnOw0KCX0N Cg0KCS8vIE1ha2Ugc3VyZSB3ZSBkb24ndCBpbmNsdWRlIHRoZSBjdXJyZW50IGFydGljbGUN CgkvLyBOb3RlIHRoZSByZWdleHAgaXMgYW5jaG9yZWQgdG8gdGhlIGVuZCB3aXRoIGEgJA0K CSR0aGlzaWNsZSA9ICcnOw0KCWlmIChpc3NldCgkdGhpc2FydGljbGUpKSB7DQoJCWlmICgh JHNob3dfY3VycmVudCkgew0KCQkJJHVybHRpdGxlID0gJHRoaXNhcnRpY2xlWyd1cmxfdGl0 bGUnXTsNCgkJCSR0aGlzaWNsZSA9ICIgQU5EIHBhZ2UgTk9UIFJFR0VYUCAnJHVybHRpdGxl JCciOw0KCQl9DQoJfQ0KDQoJLy8gRmlsdGVyIG91dCBhcnRpY2xlX2xpc3QgcGFnZXMgYW5k IG90aGVyICh1bilkZXNpcmFibGVzDQoJJHJ1bGVzID0gYXJyYXkoDQoJCSJwYWdlIE5PVCBS RUdFWFAgJ14vJCciLCAvLyBHb29kYnllIGZyb250IHBhZ2UNCgkJInBhZ2UgTk9UIFJFR0VY UCAncT0nIiwgLy8gR29vZGJ5ZSBzZWFyY2hlcw0KCQkicGFnZSBOT1QgUkVHRVhQICdjPSci LCAvLyBHb29kYnllIGNhdCBsaXN0cw0KCQkicGFnZSBOT1QgUkVHRVhQICdjYXRlZ29yeT0n IiwNCgkJInBhZ2UgTk9UIFJFR0VYUCAnXi9jYXRlZ29yeS8nIiwNCgkJInBhZ2UgTk9UIFJF R0VYUCAnYXV0aG9yPSciLA0KCQkicGFnZSBOT1QgUkVHRVhQICdeL2F1dGhvci8nIiwNCgkp Ow0KDQoJaWYgKCRzZWN0aW9uKSB7DQoJCSRzZWN0aW9uID0gZG9fbGlzdCgkc2VjdGlvbik7 DQoJCSRzdWJydWxlID0gYXJyYXkoKTsNCgkJZm9yZWFjaCAoJHNlY3Rpb24gYXMgJHNlYykg ew0KCQkJaWYgKCRwZXJtbGlua19tb2RlID09ICdtZXNzeScpIHsNCgkJCQkkc3VicnVsZVtd ID0gInBhZ2UgUkVHRVhQICdzPSRzZWMnIjsNCgkJCX0gZWxzZSB7DQoJCQkJJHN1YnJ1bGVb XSA9ICJwYWdlIFJFR0VYUCAnXi8kc2VjJyBBTkQgcGFnZSBOT1QgUkVHRVhQICdeLyRzZWMv PyQnIjsNCgkJCX0NCgkJfQ0KCQkkc3VicnVsZSA9ICcoJyAuIGpvaW4oJyBPUiAnLCAkc3Vi cnVsZSkgLiAnKSc7DQoJCSRydWxlc1tdID0gJHN1YnJ1bGU7DQoJfSBlbHNlIHsNCgkJLy8g RXhjbHVkZSBhbnkgcm93cyB0aGF0IGp1c3QgY29udGFpbiB0aGUgc2VjdGlvbiAoaS5lLiBh cnRpY2xlIGxpc3QgcGFnZXMpDQoJCSRhbGxTZWNzID0gc2FmZV9jb2x1bW4oJ25hbWUnLCAn dHhwX3NlY3Rpb24nLCAiMT0xIiwgJGRlYnVnKTsNCgkJJHJ1bGVzW10gPSAicGFnZSBOT1Qg UkVHRVhQICdeLygiIC4gam9pbigifCIsICRhbGxTZWNzKSAuICIpLz8kJyI7DQoJfQ0KDQoJ JHJ1bGVzID0gJyBBTkQgJyAuIGpvaW4oJyBBTkQgJywgJHJ1bGVzKTsNCg0KCSRxdWVyeSA9 ICdTRUxFQ1QgY291bnQocGFnZSkgYXMgcG9wdWxhcml0eSwgcGFnZSwgTUFYKHRpbWUpIGFz IHRpbWUgRlJPTSAnLlBGWC4ndHhwX2xvZyBXSEVSRSAxPTEnLiRpcC4kdGhpc2ljbGUuJHJ1 bGVzLicgQU5EIHN0YXR1cyA9IDIwMCBHUk9VUCBCWSBwYWdlIE9SREVSIEJZICcuJHNvcnQ7 DQoJJHJzID0gZ2V0Um93cygkcXVlcnksICRkZWJ1Zyk7DQoNCglpZiAoJGRlYnVnID4gMSkg ew0KCQlkbXAoJHJzKTsNCgl9DQoNCgkvLyBMb29wIHVudGlsIGxpbWl0IHJlYWNoZWQNCgkk Y291bnQgPSAwOw0KCSRvdXQgPSBhcnJheSgpOw0KCWlmICgkcnMpIHsNCgkJZm9yZWFjaCAo JHJzIGFzICRyb3cpIHsNCgkJCWlmICgkbGltaXQgPiAwICYmIGlzX251bWVyaWMoJGxpbWl0 KSAmJiAkY291bnQgPT0gJGxpbWl0KSBicmVhazsNCgkJCSR1cmxwYXJ0cyA9IGV4cGxvZGUo Jy8nLCAkcm93WydwYWdlJ10pOw0KCQkJJGRhcnRpY2xlID0gc2FmZV9yb3coJyosIHVuaXhf dGltZXN0YW1wKFBvc3RlZCkgYXMgdVBvc3RlZCwgdW5peF90aW1lc3RhbXAoRXhwaXJlcykg YXMgdUV4cGlyZXMsIHVuaXhfdGltZXN0YW1wKExhc3RNb2QpIGFzIHVMYXN0TW9kJywgJ3Rl eHRwYXR0ZXJuJywgInVybF90aXRsZT0nIi4kdXJscGFydHNbY291bnQoJHVybHBhcnRzKS0x XS4iJyIpOw0KCQkJYXJ0aWNsZV9wdXNoKCk7DQoJCQlwb3B1bGF0ZUFydGljbGVEYXRhKCRk YXJ0aWNsZSk7DQoJCQkkb3V0W10gPSAoJHRoaW5nKSA/IHBhcnNlKCR0aGluZykgOiAoKCRm b3JtKSA/IHBhcnNlX2Zvcm0oJGZvcm0pIDogaHJlZigkZGFydGljbGVbJ1RpdGxlJ10sIHBl cm1saW5rdXJsKCRkYXJ0aWNsZSkpKTsNCgkJCWFydGljbGVfcG9wKCk7DQoJCQkkY291bnQr KzsNCgkJfQ0KCX0NCglyZXR1cm4gKCRvdXQpID8gZG9MYWJlbCgkbGFiZWwsICRsYWJlbHRh ZykuZG9XcmFwKCRvdXQsICR3cmFwdGFnLCAkYnJlYWssICRjbGFzcykgOiAnJzsNCn0NCg0K Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQovLyBQbHVnaW4tc3BlY2lmaWMgcmVwbGFj ZW1lbnQgc3RyaW5ncyAtIGxvY2FsaXNlIGFzIHJlcXVpcmVkDQpmdW5jdGlvbiBzbWRfcnZf Z1R4dCgkd2hhdCwgJGF0dHMgPSBhcnJheSgpKSB7DQoJJGxhbmcgPSBhcnJheSgNCgkJJ2xv Z2dpbmdfZW5hYmxlZCcgPT4gJ0xvZ2dpbmcgbXVzdCBiZSBzZXQgdG8gIkFsbCBoaXRzIiBp biBCYXNpYyBQZWZzLicsDQoJKTsNCglyZXR1cm4gc3RydHIoJGxhbmdbJHdoYXRdLCAkYXR0 cyk7DQp9IjtzOjQ6InR5cGUiO3M6MToiMCI7czo1OiJvcmRlciI7czoxOiI1IjtzOjU6ImZs YWdzIjtzOjE6IjAiO3M6NDoiaGVscCI7czo2NjgzOiI8ZGl2IGlkPSJzbWRfaGVscCI+CgoJ PGgxPnNtZF9sYXRlbHk8L2gxPgoKCTxwPkxpc3QgdGhlIG1vc3QgcmVjZW50IGFydGljbGVz IHZpZXdlZCBieSB0aGUgY3VycmVudCB2aXNpdG9yIG9yLCBhbHRlcm5hdGl2ZWx5LCBhbGwg dmlzaXRvcnMuIENhbiBhbHNvIG9yZGVyIGJ5IHBvcHVsYXJpdHkgKG1vc3Qgdmlld2VkKS48 L3A+CgoJPGgyIGlkPSJmZWF0dXJlcyI+RmVhdHVyZXM8L2gyPgoKCTx1bD4KCQk8bGk+TGlz dCByZWNlbnRseSB2aWV3ZWQgYXJ0aWNsZXM6IHVzZWZ1bCBvbiBwcm9kdWN0IHBhZ2VzIG9y IGluIHNob3BwaW5nIGNhcnQ8L2xpPgoJCTxsaT5TaG93IGEgbGlzdCBvZiB0aGUgbW9zdCBw b3B1bGFyIGFydGljbGVzPC9saT4KCQk8bGk+TGltaXQgZWl0aGVyIGxpc3QgYnkgc2VjdGlv biBpZiB5b3Ugd2lzaDwvbGk+CgkJPGxpPlVzZXMgdGhlIHZpc2l0b3IgbG9nczwvbGk+CgkJ PGxpPkF1dG9tYXRpY2FsbHkgZmlsdGVycyBvdXQgYXJ0aWNsZSBsaXN0IHBhZ2VzLCBjYXRl Z29yeSwgYXV0aG9yIG9yIHNlYXJjaCB2aXNpdHM8L2xpPgoJPC91bD4KCgk8aDIgaWQ9ImF1 dGhvciI+QXV0aG9yIC8gY3JlZGl0czwvaDI+CgoJPHA+PGEgaHJlZj0iaHR0cDovL3N0ZWZk YXdzb24uY29tL2NvbnRhY3QiPlN0ZWYgRGF3c29uPC9hPi48L3A+CgoJPGgyIGlkPSJpbnN0 YWxsIj5JbnN0YWxsYXRpb24gLyBVbmluc3RhbGxhdGlvbjwvaDI+CgoJPHAgY2xhc3M9InJl cXVpcmVkIj5SZXF1aXJlcyBMb2dnaW5nIHRvIGJlIHNldCB0byA8ZW0+QWxsIGhpdHM8L2Vt PiAod2lsbCBpc3N1ZSBhIHdhcm5pbmcgb2Ygbm90KTwvcD4KCgk8cD5Eb3dubG9hZCB0aGUg cGx1Z2luIGZyb20gZWl0aGVyIDxhIGhyZWY9Imh0dHA6Ly90ZXh0cGF0dGVybi5vcmcvcGx1 Z2lucy8xMTEwL3NtZF9sYXRlbHkiPnRleHRwYXR0ZXJuLm9yZzwvYT4sIG9yIHRoZSA8YSBo cmVmPSJodHRwOi8vc3RlZmRhd3Nvbi5jb20vc3ciPnNvZnR3YXJlIHBhZ2U8L2E+LCBwYXN0 ZSB0aGUgY29kZSBpbnRvIHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiBBZG1p biAtJmd0OyBQbHVnaW5zIHBhbmUsIGluc3RhbGwgYW5kIGVuYWJsZSB0aGUgcGx1Z2luLiBW aXNpdCB0aGUgPGEgaHJlZj0iaHR0cDovL2ZvcnVtLnRleHRwYXR0ZXJuLmNvbS92aWV3dG9w aWMucGhwP2lkPTMxMzQxIj5mb3J1bSB0aHJlYWQ8L2E+IGZvciBtb3JlIGluZm8gb3IgdG8g cmVwb3J0IG9uIHRoZSBzdWNjZXNzIG9yIG90aGVyd2lzZSBvZiB0aGUgcGx1Z2luLjwvcD4K Cgk8cD5UbyB1bmluc3RhbGwsIHNpbXBseSBkZWxldGUgZnJvbSB0aGUgQWRtaW4gLSZndDsg UGx1Z2lucyBwYWdlLjwvcD4KCgk8aDIgaWQ9Im5wIj48Y29kZT4mbHQ7dHhwOnNtZF9sYXRl bHkmZ3Q7PC9jb2RlPjwvaDI+CgoJPHA+UGxhY2UgdGhpcyB0YWcgYW55d2hlcmUgeW91IHdp c2ggdG8gZGlzcGxheSBhIGxpc3Qgb2YgcmVjZW50bHkgdmlld2VkIGFydGljbGVzLiBUaGUg dGFnIG1heSBiZSB1c2VkIGFzIGEgc2luZ2xlIHRhZyAod2l0aCBhbiBvcHRpb25hbCBmb3Jt KSBvciBhcyBhIGNvbnRhaW5lci4gSW5zaWRlIHRoZSBmb3JtL2NvbnRhaW5lciB5b3UgY2Fu IHVzZSBhbnkgc3RhbmRhcmQgYXJ0aWNsZSB0YWdzICYjODIxMjsgPGNvZGU+Jmx0O3R4cDp0 aXRsZSAvJmd0OzwvY29kZT4sIDxjb2RlPiZsdDt0eHA6ZXhjZXJwdCAvJmd0OzwvY29kZT4s IDxjb2RlPiZsdDt0eHA6cG9zdGVkIC8mZ3Q7PC9jb2RlPiwgZXRjICYjODIxMjsgdG8gZm9y bWF0IHRoZSBsaXN0IGhvd2V2ZXIgeW91IGxpa2UuIFdpdGhvdXQgZWl0aGVyIGEgZm9ybSBv ciBhIGNvbnRhaW5lciwgdGhlIHBsdWdpbiBkaXNwbGF5cyBhIGh5cGVybGlua2VkIHRpdGxl IHRvIHRoZSBhcnRpY2xlLjwvcD4KCgk8cD5UaGUgZm9sbG93aW5nIGF0dHJpYnV0ZXMgY2Fu IGJlIHVzZWQgdG8gbW9kaWZ5IHRoZSBwbHVnaW4mIzgyMTc7cyBvdXRwdXQ6PC9wPgoKCTxo MyBjbGFzcz0iYXR0cyI+QXR0cmlidXRlczwvaDM+CgoJPHVsPgoJCTxsaT48c3BhbiBjbGFz cz0iYXRubSI+Ynk8L3NwYW4+IDogdXNlIDxjb2RlPmJ5PSZxdW90OyZxdW90OzwvY29kZT4g b3IgPGNvZGU+Ynk9JnF1b3Q7U01EX0FMTCZxdW90OzwvY29kZT4gdG8gdmlldyB0aGUgbW9z dCByZWNlbnQgYXJ0aWNsZXMgYnkgYWxsIHNpdGUgdmlzaXRvcnMuIEJ5IGRlZmF1bHQgKGku ZS4gaWYgdGhlIGF0dHJpYnV0ZSBpcyBvbWl0dGVkKSB0aGUgcGx1Z2luIG9ubHkgc2hvd3Mg dGhlIHJlY2VudCBhcnRpY2xlcyB2aWV3ZWQgYnkgdGhlIGN1cnJlbnQgdmlzaXRvcjwvbGk+ CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5zZWN0aW9uPC9zcGFuPiA6IGNob29zZSB0byBz aG93IGFydGljbGVzIG9ubHkgZnJvbSB0aGlzIGxpc3Qgb2Ygc2VjdGlvbnMuIERlZmF1bHQ6 IHVuc2V0IChpLmUuIGZyb20gYWxsIHNlY3Rpb25zKTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNz PSJhdG5tIj5zaG93X2N1cnJlbnQ8L3NwYW4+IDogRGlzcGxheSB0aGUgYXJ0aWNsZSBiZWlu ZyB2aWV3ZWQgaW4gdGhlIGxpc3Q6IDE9WWVzOyAwPU5vLiBJZ25vcmVkIGlmIGluIGFuIGFy dGljbGVfbGlzdCBwYWdlLiBEZWZhdWx0OiAwPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0 bm0iPnNvcnQ8L3NwYW4+IDogb3JkZXIgdGhlIGxpc3QgYnkgZWl0aGVyIDxjb2RlPnRpbWU8 L2NvZGU+LCBvciA8Y29kZT5wb3B1bGFyaXR5PC9jb2RlPi4gQWRkIDxjb2RlPmFzYzwvY29k ZT4gb3IgPGNvZGU+ZGVzYzwvY29kZT4gdG8gY2hvb3NlIGFzY2VuZGluZyBvciBkZXNjZW5k aW5nIHNvcnQgb3JkZXIuIERlZmF1bHQ6IDxjb2RlPnRpbWUgZGVzYzwvY29kZT48L2xpPgoJ CTxsaT48c3BhbiBjbGFzcz0iYXRubSI+Zm9ybTwvc3Bhbj4gOiBpZiB5b3UgcHJlZmVyIHRv IHVzZSBhIGZvcm0gaW5zdGVhZCBvZiB0aGUgY29udGFpbmVyIHRvIGhvbGQgeW91ciBtYXJr dXAgYW5kIHRhZ3MsIHNwZWNpZnkgaXQgaGVyZS4gRGVmYXVsdDogdW5zZXQuPC9saT4KCQk8 bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmxpbWl0PC9zcGFuPiA6IHNob3cgdGhpcyBtYW55IGl0 ZW1zIGluIHRoZSBsaXN0LiAwID0gdW5saW1pdGVkLiBEZWZhdWx0OiAxMDwvbGk+CgkJPGxp PjxzcGFuIGNsYXNzPSJhdG5tIj53cmFwdGFnPC9zcGFuPiA6IHRoZSAoWClIVE1MIHRhZywg d2l0aG91dCBpdHMgYnJhY2tldHMsIHRvIHdyYXAgdGhlIGxpc3Qgd2l0aC4gRGVmYXVsdDog dW5zZXQ8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+Y2xhc3M8L3NwYW4+IDogdGhl IDxzcGFuIGNsYXNzPSJjYXBzIj5DU1M8L3NwYW4+IGNsYXNzIG5hbWUgdG8gYXBwbHkgdG8g dGhlIHdyYXB0YWcuIERlZmF1bHQ6IDxjb2RlPnNtZF9sYXRlbHk8L2NvZGU+PC9saT4KCQk8 bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmJyZWFrPC9zcGFuPiA6IHRoZSAoWClIVE1MIHRhZywg d2l0aG91dCBpdHMgYnJhY2tldHMsIHRvIHdyYXAgZWFjaCBpdGVtIHdpdGguIERlZmF1bHQ6 IDxjb2RlPmJyPC9jb2RlPjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5sYWJlbDwv c3Bhbj4gOiB0aGUgbGFiZWwgdGV4dCB0byBhZGQgdG8gdGhlIHRvcCBvZiB0aGUgbGlzdC4g RGVmYXVsdDogdW5zZXQ8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+bGFiZWx0YWc8 L3NwYW4+IDogdGhlIChYKUhUTUwgdGFnLCB3aXRob3V0IGl0cyBicmFja2V0cywgdG8gd3Jh cCB0aGUgbGFiZWwgd2l0aC4gRGVmYXVsdDogdW5zZXQ8L2xpPgoJPC91bD4KCgk8aDMgaWQ9 ImNhdmVhdHMiPkNhdmVhdHM8L2gzPgoKCTxwPlNpbmNlIHRoZSBwbHVnaW4gdXNlcyB0aGUg PHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gbG9ncyB5b3UgbmVlZCB0byBtYWtlIHN1 cmUgdGhleSBhcmUgYmVpbmcgdXNlZCAoQWRtaW4tJmd0O0Jhc2ljIFByZWZzKS4gSXQgYWxz byBtZWFucyB0aGF0IGFueSB2aXNpdG9ycyB1c2luZyBhbiBhbm9ueW1pc2luZyBwcm94eSB3 aWxsIGdldCBzcHVyaW91cyAob3Igbm8pIHJlc3VsdHMuIFRoZWlyIGxvc3MuPC9wPgoKCTxo MiBjbGFzcz0iZXhhbXBsZXMiPkV4YW1wbGVzPC9oMj4KCgk8aDMgaWQ9ImVnMSI+RXhhbXBs ZSAxOiByZWNlbnQgYXJ0aWNsZSBsaXN0IGZvciBjdXJyZW50IHZpc2l0b3I8L2gzPgoKPHBy ZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4cDpzbWRfbGF0ZWx5 IC8mZ3Q7CjwvY29kZT48L3ByZT4KCgk8aDMgaWQ9ImVnMiI+RXhhbXBsZSAyOiByZWNlbnQg YXJ0aWNsZXMgZm9yIGFsbCB2aXNpdG9yczwvaDM+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNv ZGUgY2xhc3M9ImJsb2NrIj4mbHQ7dHhwOnNtZF9sYXRlbHkgYnk9JnF1b3Q7JnF1b3Q7IHNl Y3Rpb249JnF1b3Q7YXJjaGl2ZSwgYWJvdXQmcXVvdDsgLyZndDsKPC9jb2RlPjwvcHJlPgoK CTxwPk9ubHkgc2hvd3MgdGhlIGFydGljbGVzIHZpZXdlZCBmcm9tIHRoZSAmIzgyMTY7YXJj aGl2ZSYjODIxNzsgYW5kICYjODIxNjthYm91dCYjODIxNzsgc2VjdGlvbnMuPC9wPgoKCTxo MyBpZD0iZWczIj5FeGFtcGxlIDM6IG1vc3QgcG9wdWxhciBhcnRpY2xlcyBhY3Jvc3MgdGhl IHNpdGU8L2gzPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0 O3R4cDpzbWRfbGF0ZWx5IGJ5PSZxdW90OyZxdW90OyBzb3J0PSZxdW90O3BvcHVsYXJpdHkm cXVvdDsgIC8mZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5XaXRob3V0IHVzaW5nIHRoZSA8Y29k ZT5ieTwvY29kZT4gYXR0cmlidXRlLCB0aGlzIHdvdWxkIGdpdmUgdGhlIG1vc3QgcG9wdWxh ciBhcnRpY2xlcyBmb3IgdGhlIGN1cnJlbnQgdmlzaXRvciAmIzgyMTI7IHByb2JhYmx5IG5v dCB3aGF0IHlvdSB3YW50ITwvcD4KCgk8aDMgaWQ9ImVnNCI+RXhhbXBsZSA0OiB0YWcgYXMg YSBjb250YWluZXI8L2gzPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9j ayI+Jmx0O3R4cDpzbWRfbGF0ZWx5IGJ5PSZxdW90OyZxdW90OwogICAgIHdyYXB0YWc9JnF1 b3Q7dWwmcXVvdDsgYnJlYWs9JnF1b3Q7bGkmcXVvdDsgbGltaXQ9JnF1b3Q7NiZxdW90OyZn dDsKICAgJmx0O3R4cDpwZXJtbGluayZndDsmbHQ7dHhwOnRpdGxlIC8mZ3Q7Jmx0Oy90eHA6 cGVybWxpbmsmZ3Q7Jmx0O2JyIC8mZ3Q7CiAgICZsdDt0eHA6cG9zdGVkIC8mZ3Q7IGJ5ICZs dDt0eHA6YXV0aG9yIC8mZ3Q7CiZsdDsvdHhwOnNtZF9sYXRlbHkmZ3Q7CjwvY29kZT48L3By ZT4KCgk8cD5TaG93cyB0aGUgNiBtb3N0IHJlY2VudCBhcnRpY2xlcyBhY2Nlc3NlZCBieSBh bnkgc2l0ZSB2aXNpdG9yLiBUaGUgdW5vcmRlcmVkIGxpc3Qgb3V0cHV0IGNvbnRhaW5zIGEg cGVybWxpbmtlZCB0aXRsZSwgdGhlIGRhdGUgdGhlIGFydGljbGUgd2FzIHBvc3RlZCBhbmQg dGhlIGFydGljbGUmIzgyMTc7cyBhdXRob3IuPC9wPgoKPC9kaXY+CjwhLS0gKioqIEJFR0lO IFBMVUdJTiBDU1MgKioqIC0tPgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgojc21kX2hlbHAg eyBsaW5lLWhlaWdodDoxLjUgO30KI3NtZF9oZWxwIGNvZGUgeyBmb250LXdlaWdodDpib2xk OyBmb250OiAxMDUlLzEzMCUgIkNvdXJpZXIgTmV3IiwgY291cmllciwgbW9ub3NwYWNlOyBi YWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkNDO30KI3NtZF9oZWxwIGNvZGUuYmxvY2sgeyBmb250 LXdlaWdodDpub3JtYWw7IGJvcmRlcjoxcHggZG90dGVkICM5OTk7IGJhY2tncm91bmQtY29s b3I6ICNmMGU2OGM7IGRpc3BsYXk6YmxvY2s7IG1hcmdpbjoxMHB4IDEwcHggMjBweDsgcGFk ZGluZzoxMHB4OyB9CiNzbWRfaGVscCBoMSB7IGNvbG9yOiAjMzY5OyBmb250OiAyMHB4IEdl b3JnaWEsIHNhbnMtc2VyaWY7IG1hcmdpbjogMDsgdGV4dC1hbGlnbjogY2VudGVyOyB9CiNz bWRfaGVscCBoMiB7IGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBibGFjazsgcGFkZGluZzox MHB4IDAgMDsgY29sb3I6ICMzNjk7IGZvbnQ6IDE3cHggR2VvcmdpYSwgc2Fucy1zZXJpZjsg fQojc21kX2hlbHAgaDMgeyBjb2xvcjogIzI3NTY4NTsgZm9udDogYm9sZCAxMnB4IEFyaWFs LCBzYW5zLXNlcmlmOyBsZXR0ZXItc3BhY2luZzogMXB4OyBtYXJnaW46IDEwcHggMCAwO3Rl eHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IHRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7fQoj c21kX2hlbHAgaDQgeyBmb250OiBib2xkIDExcHggQXJpYWwsIHNhbnMtc2VyaWY7IGxldHRl ci1zcGFjaW5nOiAxcHg7IG1hcmdpbjogMTBweCAwIDAgO3RleHQtdHJhbnNmb3JtOiB1cHBl cmNhc2U7IH0KI3NtZF9oZWxwIC5hdG5tIHsgZm9udC13ZWlnaHQ6Ym9sZDsgY29sb3I6IzMz ZDsgfQojc21kX2hlbHAgLm1hbmQgeyBiYWNrZ3JvdW5kOiNlZWU7IGJvcmRlcjoxcHggZG90 dGVkICM5OTk7IH0KI3NtZF9oZWxwIHRhYmxlIHt3aWR0aDo5MCU7IHRleHQtYWxpZ246Y2Vu dGVyOyBwYWRkaW5nLWJvdHRvbToxZW07fQojc21kX2hlbHAgdGQsICNzbWRfaGVscCB0aCB7 Ym9yZGVyOjFweCBzb2xpZCAjOTk5OyBwYWRkaW5nOi41ZW0gMDt9CiNzbWRfaGVscCB1bCB7 IGxpc3Qtc3R5bGUtdHlwZTpzcXVhcmU7IH0KI3NtZF9oZWxwIC5yZXF1aXJlZCB7Y29sb3I6 cmVkO30KI3NtZF9oZWxwIGxpIHsgbWFyZ2luOjVweCAyMHB4IDVweCAzMHB4OyB9CiNzbWRf aGVscCAuYnJlYWsgeyBtYXJnaW4tdG9wOjVweDsgfQo8L3N0eWxlPgo8IS0tICoqKiBFTkQg UExVR0lOIENTUyAqKiogLS0+CiI7czozOiJtZDUiO3M6MzI6IjUxMjI3NWVjNzRlN2Y0NzE4 ODU1YWJhOTczODg0ZmFkIjt9