# Name: aam_typogrify v0.1 # Type: Client side plugin # Brings the typographical goodies of Django's Typogrify filters to Textpattern # Author: Adam Messinger # URL: http://www.zenscope.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: # ..................................................................... YToxMDp7czo0OiJuYW1lIjtzOjEzOiJhYW1fdHlwb2dyaWZ5IjtzOjY6ImF1dGhvciI7czox NDoiQWRhbSBNZXNzaW5nZXIiO3M6MTA6ImF1dGhvcl91cmkiO3M6MjQ6Imh0dHA6Ly93d3cu emVuc2NvcGUuY29tLyI7czo3OiJ2ZXJzaW9uIjtzOjM6IjAuMSI7czoxMToiZGVzY3JpcHRp b24iO3M6Nzc6IkJyaW5ncyB0aGUgdHlwb2dyYXBoaWNhbCBnb29kaWVzIG9mIERqYW5nbydz IFR5cG9ncmlmeSBmaWx0ZXJzIHRvIFRleHRwYXR0ZXJuIjtzOjQ6ImNvZGUiO3M6MzY3ODoi Ci8qIEZpcnN0LCBzb21lIHV0aWxpdHkgZnVuY3Rpb25zLiBUaGVzZSBkbyB0aGUgYWN0dWFs IHdvcms6ICovCgovKiogYWFtX3R5cG9ncmlmeV9hbXBlcnNhbmRzCiAgKiBmaW5kcyBhbXBl cnNhbmRzIGFuZCB3cmFwcyB0aGVtIGluIGEgc3BhbiB3LyBjbGFzcz0iYW1wIgogICovCmZ1 bmN0aW9uIGFhbV90eXBvZ3JpZnlfYW1wZXJzYW5kcyggJHRleHQgKSB7CiAgJGFtcF9maW5k ZXIgPSAiLyhcc3wmbmJzcDspKCZ8JmFtcDt8JlwjMzg7KShcc3wmbmJzcDspLyI7CiAgJHRl eHQgPSBwcmVnX3JlcGxhY2UoJGFtcF9maW5kZXIsICdcXDE8c3BhbiBjbGFzcz0iYW1wIj4m YW1wOzwvc3Bhbj5cXDMnLCAkdGV4dCk7CiAgcmV0dXJuICR0ZXh0Owp9CgovKiogYWFtX3R5 cG9ncmlmeV93aWRvd3MKICAqIFN1cHByZXNzZXMgdHlwb2dyYXBoaWNhbCB3aWRvd3MuCiAg KiBSZXBsYWNlZCB0aGUgSW5tYW4gLyBNdWxsZW53ZWcgdmVyc2lvbiB3aXRoIHRoaXMgb25l IGZyb20gUEhQLVR5cG9ncmlmeS4KICAqIEkvTSBXaWRvbid0IGRpZG4ndCBoYW5kbGUgc3Vj Y2Vzc2l2ZSBibG9ja3Mgb2YgbWFya3VwIHdpdGggd2hpdGVzcGFjZQogICogYmV0d2VlbiB0 aGVtLiAoUG9zc2libHkgZHVlIHRvIGl0cyBvcmlnaW5hbCB0aWVzIHRvIFdvcmRQcmVzcyB0 ZW1wbGF0ZQogICogdGFncz8pCiAgKi8KZnVuY3Rpb24gYWFtX3R5cG9ncmlmeV93aWRvd3Mo ICR0ZXh0ICkgewogICR3aWRvbnRfZmluZGVyID0gIi8oXHMrKSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICMgdGhlIHNwYWNlIHRvIHJlcGxhY2UKICAgICAgICAgICAgICAg ICAgICAoW148PlxzXSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBtdXN0IGJl IGZsb2xsb3dlZCBieSBub24tdGFnIG5vbi1zcGFjZSBjaGFyYWN0ZXJzCiAgICAgICAgICAg ICAgICAgICAgXHMqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgb3B0 aW9uYWwgd2hpdGUgc3BhY2UhCiAgICAgICAgICAgICAgICAgICAgKDxcLyhhfGVtfHNwYW58 c3Ryb25nfGl8YilbXj5dKj5ccyopKiAgICAjIG9wdGlvbmFsIGNsb3NpbmcgaW5saW5lIHRh Z3Mgd2l0aCBvcHRpb25hbCB3aGl0ZSBzcGFjZSBhZnRlciBlYWNoCiAgICAgICAgICAgICAg ICAgICAgKDxcLyhwfGhbMS02XXxsaSl8JCkpICAgICAgICAgICAgICAgICAgICAjIGVuZCB3 aXRoIGEgY2xvc2luZyBwLCBoMS02LCBsaSBvciB0aGUgZW5kIG9mIHRoZSBzdHJpbmcKICAg ICAgICAgICAgICAgICAgICAveCI7CiAgJHRleHQgPSBwcmVnX3JlcGxhY2UoJHdpZG9udF9m aW5kZXIsICcmbmJzcDtcXDInLCAkdGV4dCk7CiAgcmV0dXJuICR0ZXh0Owp9CgovKiogYWFt X3R5cG9ncmlmeV9xdW90ZV93cmFwcGVyCiAgKiB1dGlsaXR5IGZ1bmN0aW9uIHRoYXQgZG9l cyByZXBsYWNlbWVudCBpbiBhIHByZWdfcmVwbGFjZV9jYWxsYmFjaygpCiAgKiBmb3IgYWFt X3R5cG9ncmlmeV9pbml0aWFsX3F1b3RlcwogICovCmZ1bmN0aW9uIGFhbV90eXBvZ3JpZnlf cXVvdGVfd3JhcHBlciggJG1hdGNob2JqICkgewogIGlmICggIWVtcHR5KCRtYXRjaG9ials3 XSkgKSB7CiAgICAkY2xhc3NuYW1lID0gImRxdW8iOwogICAgJHF1b3RlID0gJG1hdGNob2Jq WzddOwogIH0gZWxzZSB7CiAgICAkY2xhc3NuYW1lID0gInF1byI7CiAgICAkcXVvdGUgPSAk bWF0Y2hvYmpbOF07CiAgfQogIHJldHVybiBzcHJpbnRmKCclczxzcGFuIGNsYXNzPSIlcyI+ JXM8L3NwYW4+JywgJG1hdGNob2JqWzFdLCAkY2xhc3NuYW1lLCAkcXVvdGUpOwp9CgovKiog YWFtX3R5cG9ncmlmeV9pbml0aWFsX3F1b3RlcwogICogV3JhcHMgaW5pdGlhbCBxdW90ZXMg aW4gY2xhc3M9ImRxdW8iIGZvciBkb3VibGUgcXVvdGVzIG9yCiAgKiBjbGFzcz0icXVvIiBm b3Igc2luZ2xlIHF1b3Rlcy4gV29ya3MgaW4gdGhlc2UgYmxvY2sgdGFnczogKGgxLWg2LCBw LCBsaSkuCiAgKiBBbHNvIGFjY291bnRzIGZvciBvcGVuaW5nIGlubGluZSBlbGVtZW50czog KGEsIGVtLCBzdHJvbmcsIHNwYW4sIGIsIGkpLgogICovCmZ1bmN0aW9uIGFhbV90eXBvZ3Jp ZnlfaW5pdGlhbF9xdW90ZXMoICR0ZXh0ICkgewogICRxdW90ZV9maW5kZXIgPQogICIvKCg8 KHB8aFsxLTZdfGxpKVtePl0qPnxeKSAgICAgICAgICAgICAgICAgICAjIHN0YXJ0IHdpdGgg YW4gb3BlbmluZyBwLCBoMS02LCBsaSBvciB0aGUgc3RhcnQgb2YgdGhlIHN0cmluZwogIFxz KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG9wdGlvbmFs IHdoaXRlIHNwYWNlIQogICg8KGF8ZW18c3BhbnxzdHJvbmd8aXxiKVtePl0qPlxzKikqKSAg ICAgICAgICAjIG9wdGlvbmFsIG9wZW5pbmcgaW5saW5lIHRhZ3MsIHdpdGggbW9yZSBvcHRp b25hbCB3aGl0ZSBzcGFjZSBmb3IgZWFjaC4KICAoKFwifCZsZHF1bzt8JlwjODIyMDspfCgn fCZsc3F1bzt8JlwjODIxNjspKSAgIyBGaW5kIG1lIGEgcXVvdGUhIChvbmx5IG5lZWQgdG8g ZmluZCB0aGUgbGVmdCBxdW90ZXMgYW5kIHRoZSBwcmltZXMpCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZG91YmxlIHF1b3RlcyBhcmUgaW4g Z3JvdXAgNywgc2luZ2xlcyBpbiBncm91cCA4CiAgL3giOwogICR0ZXh0ID0gcHJlZ19yZXBs YWNlX2NhbGxiYWNrKCRxdW90ZV9maW5kZXIsICJhYW1fdHlwb2dyaWZ5X3F1b3RlX3dyYXBw ZXIiLCAkdGV4dCk7CiAgcmV0dXJuICR0ZXh0Owp9CgoKLyogQW5kIG5vdywgdGhlIHRlbXBs YXRlIHRhZ3M6ICovCgovKiogYWFtX2FtcGxpZnkKICAqIFBhcnNlcyAkdGhpbmcsIHJ1bnMg cmVzdWx0IHRocm91Z2ggYWFtX3R5cG9ncmlmeV9hbXBlcnNhbmRzLgogICovCmZ1bmN0aW9u IGFhbV9hbXBsaWZ5KCAkYXR0cz0iIiwgJHRoaW5nPSIiICkgewogICR0ZXh0ID0gcGFyc2Uo ICR0aGluZyApOwogIHJldHVybiBhYW1fdHlwb2dyaWZ5X2FtcGVyc2FuZHMoICR0ZXh0ICk7 Cn0KCi8qKiBhYW1fd2lkb250CiAgKiBQYXJzZXMgJHRoaW5nLCBydW5zIHJlc3VsdCB0aHJv dWdoIGFhbV90eXBvZ3JpZnlfd2lkb3dzLgogICovCmZ1bmN0aW9uIGFhbV93aWRvbnQoICRh dHRzPSIiLCAkdGhpbmc9IiIgKSB7CiAgJHRleHQgPSBwYXJzZSggJHRoaW5nICk7CiAgcmV0 dXJuIGFhbV90eXBvZ3JpZnlfd2lkb3dzKCAkdGV4dCApOwp9CgovKiogYWFtX3F1b3RpZnkK ICAqIFBhcnNlcyAkdGhpbmcsIHJ1bnMgcmVzdWx0IHRocm91Z2ggYWFtX3R5cG9ncmlmeV9p bml0aWFsX3F1b3Rlcy4KICAqLwpmdW5jdGlvbiBhYW1fcXVvdGlmeSggJGF0dHM9IiIsICR0 aGluZz0iIiApIHsKICAkdGV4dCA9IHBhcnNlKCAkdGhpbmcgKTsKICByZXR1cm4gYWFtX3R5 cG9ncmlmeV9pbml0aWFsX3F1b3RlcyggJHRleHQgKTsKfQoKLyoqIGFhbV90eXBvZ3JpZnkK ICAqIFRoZSBtZWdhLWZpbHRlci4gUnVucyBldmVyeXRoaW5nIGVsc2UuCiAgKi8KZnVuY3Rp b24gYWFtX3R5cG9ncmlmeSggJGF0dHM9IiIsICR0aGluZz0iIiApIHsKICAkdGV4dCA9IHBh cnNlKCAkdGhpbmcgKTsKICAkdGV4dCA9IGFhbV90eXBvZ3JpZnlfYW1wZXJzYW5kcyggJHRl eHQgKTsKICAkdGV4dCA9IGFhbV90eXBvZ3JpZnlfd2lkb3dzKCAkdGV4dCApOwogICR0ZXh0 ID0gYWFtX3R5cG9ncmlmeV9pbml0aWFsX3F1b3RlcyggJHRleHQgKTsKICByZXR1cm4gJHRl eHQ7Cn0KIjtzOjQ6InR5cGUiO3M6MToiMCI7czo1OiJvcmRlciI7czoxOiI1IjtzOjQ6Imhl bHAiO3M6Nzg2OToiPGgxPlR5cG9ncmlmeSBmb3IgVGV4dHBhdHRlcm4sIHYwLjE8L2gxPgoK CTxoMj5BYm91dCB0aGUgUGx1Z2luPC9oMj4KCgk8cD5UaGUgYWFtX3R5cG9ncmlmeSBwbHVn aW4gYnJpbmdzIHRoZSB0eXBvZ3JhcGhpY2FsIGdvb2RpZXMgb2YgRGphbmdvJiM4MjE3O3Mg VHlwb2dyaWZ5IGZpbHRlcnMgdG8gVGV4dHBhdHRlcm4uIE1vcmUgc3BlY2lmaWNhbGx5LCBp dCBwcm92aWRlcyBuZXcgdGVtcGxhdGUgdGFncyB0aGF0IHBlcmZvcm0gdGhlIGZvbGxvd2lu ZyBhY3Rpb25zOjwvcD4KCgk8dWw+CgkJPGxpPlByZXZlbnQgdHlwb2dyYXBoaWNhbCB3aWRv d3MgKHdvcmRzIHRoYXQgYXBwZWFyIGFsbCBieSB0aGVtc2VsdmVzIG9uIHRoZSBsYXN0IGxp bmUgb2YgYSBwYXJhZ3JhcGggb3IgdGl0bGUpLjwvbGk+CgkJPGxpPldyYXAgYW1wZXJzYW5k cyAoJiM4MjIxOyYjMzg7JiM4MjIxOykgaW4gYSBzcGFuIHdpdGggYSBjbGFzcyBvZiAmIzgy MjA7YW1wJiM4MjIxOyBmb3IgZWFzaWVyIHNlbGVjdGl2ZSBzdHlsaW5nLjwvbGk+CgkJPGxp PldyYXAgaW5pdGlhbCBxdW90ZXMmIzgyMTI7YXQgdGhlIGJlZ2lubmluZyBvZiBhIHBhcmFn cmFwaCBvciBoZWFkaW5nJiM4MjEyO2luIGEgc3BhbiB3aXRoIGEgY2xhc3Mgb2YgJiM4MjIw O2RxdW8mIzgyMjE7IGZvciBkb3VibGUgcXVvdGVzIG9yICYjODIyMDtxdW8mIzgyMjE7IGZv ciBzaW5nbGUgcXVvdGVzLiBUaGlzIGFsbG93cyBzb21lIGFkZGl0aW9uYWwgPHNwYW4gY2xh c3M9ImNhcHMiPkNTUzwvc3Bhbj4gdHJpY2tzLCBsaWtlIGhhbmdpbmcgcXVvdGF0aW9uIG1h cmtzLjwvbGk+Cgk8L3VsPgoKCTxwPkJhc2ljYWxseSwgdGhpcyBpcyBjYW5keSBmb3IgV2Vi IHR5cG9ncmFwaHkgZ2Vla3MuIElmIHlvdSBjYXJlIGFib3V0IGhvdyB0ZXh0IGlzIHByZXNl bnRlZCBvbiB0aGUgd2ViLCBUeXBvZ3JpZnkgY2FuIGhlbHAgeW91IG1ha2UgeW91ciB0ZXh0 IGxvb2sgYmV0dGVyLjwvcD4KCgk8cD48YSBocmVmPSJodHRwOi8vY29kZS5nb29nbGUuY29t L3AvdHlwb2dyaWZ5LyIgdGl0bGU9IlR5cG9ncmlmeSBvbiBHb29nbGUgQ29kZSIgcmVsPSJu b2ZvbGxvdyI+VHlwb2dyaWZ5PC9hPiBzdGFydGVkIG91dCBhcyBhIDxhIGhyZWY9Imh0dHA6 Ly9zdGF0aWMubWludGNoYW9zLmNvbS9wcm9qZWN0cy90eXBvZ3JpZnkvIiB0aXRsZT0iQSBk ZW1vbnN0cmF0aW9uIG9mIFR5cG9ncmlmeSYjMzk7cyBhcHBsaWNhdGlvbiB0byB0ZXh0IiBy ZWw9Im5vZm9sbG93Ij5zZXQgb2YgRGphbmdvIHRleHQgZmlsdGVyczwvYT4gZGV2ZWxvcGVk IGJ5IDxhIGhyZWY9Imh0dHA6Ly93d3cubWludGNoYW9zLmNvbS8iIHJlbD0ibm9mb2xsb3ci PkNocmlzdGlhbiBNZXR0czwvYT4uIFRoaXMgVGV4dHBhdHRlcm4gcGx1Z2luIGlzIGJhc2Vk IG9uIDxhIGhyZWY9Imh0dHA6Ly9ibG9nLmhhbXN0dS5jb20vMjAwNy8wNS8zMS93ZWItdHlw b2dyYXBoeS1qdXN0LWdvdC1iZXR0ZXIvIiByZWw9Im5vZm9sbG93Ij50aGUgPHNwYW4gY2xh c3M9ImNhcHMiPlBIUDwvc3Bhbj4gcG9ydCBieSBIYW1pc2ggTWFjcGhlcnNvbjwvYT4uPC9w PgoKCTxwPklmIHlvdSBoYXZlIGFueSBwcm9ibGVtcyB3aXRoIGFhbV90eXBvZ3JpZnksIHBs ZWFzZSBsZXQgbWUga25vdyBieSBwb3N0aW5nIGEgbWVzc2FnZSBpbiA8YSBocmVmPSJodHRw Oi8vZm9ydW0udGV4dHBhdHRlcm4uY29tL3ZpZXd0b3BpYy5waHA/cGlkPTE1MDc0MSIgdGl0 bGU9IlJlcG9ydCBwcm9ibGVtcyBvciBidWdzIGhlcmUiIHJlbD0ibm9mb2xsb3ciPnRoZSBw bHVnaW4mIzgyMTc7cyBzdXBwb3J0IHRocmVhZDwvYT4gb24gdGhlIFRleHRwYXR0ZXJuIGZv cnVtLjwvcD4KCgk8aDI+VXNhZ2U8L2gyPgoKCTxwPjxlbT5UaGUgcGx1Z2luIGNvbXBpbGVy IGRvZXNuJiM4MjE3O3QgbGlrZSBpdCB3aGVuIEkgdXNlIGFuZ2xlIGJyYWNrZXRzLCBzbyB0 aGUgVGV4dHBhdHRlcm4gdGVtcGxhdGUgdGFncyBhbmQgPHNwYW4gY2xhc3M9ImNhcHMiPkhU TUw8L3NwYW4+IHRhZ3MgaW4gdGhlc2UgZXhhbXBsZXMgYXJlIHN1cnJvdW5kZWQgd2l0aCBz cXVhcmUgYnJhY2tldHMgaW5zdGVhZC48L2VtPiBFeDogPGNvZGU+W3R4cDp0aXRsZSAvXTwv Y29kZT48L3A+CgoJPHA+VHlwb2dyaWZ5IGZvciBUZXh0cGF0dGVybiBwcm92aWRlcyBmb3Vy IGNvbnRhaW5lciB0YWdzLCBhbGwgb2Ygd2hpY2ggY2FuIGJlIHVzZWQgYXJvdW5kIG90aGVy IFRleHRwYXR0ZXJuIHRhZ3Mgb3IgYXJvdW5kIGJsb2NrcyBvZiBzdGF0aWMgdGV4dC48L3A+ CgoJPGgzPmFhbV93aWRvbnQ8L2gzPgoKCTxwPldyYXAgdGhpcyB0YWcgYXJvdW5kIHRleHQg dG8gcHJldmVudCB0eXBvZ3JhcGhpY2FsIHdpZG93czo8L3A+Cgo8cHJlPjxjb2RlPlt0eHA6 YWFtX3dpZG9udF0KICBbaDJdW3R4cDpjdXN0b21fZmllbGQgbmFtZT0ibXlfZmllbGQiIC9d Wy9oMl0KWy90eHA6YWFtX3dpZG9udF0KPC9jb2RlPjwvcHJlPgoKCTxwPldpdGggdGhlIGlu Y2x1c2lvbiBvZiB0aGlzIGZlYXR1cmUsIGFhbV90eXBvZ3JpZnkgc3VwZXJzZWRlcyBteSBw cmV2aW91cyBwbHVnaW4gYWFtX3dpZG9udC48L3A+CgoJPGgzPmFhbV9hbXBsaWZ5PC9oMz4K Cgk8cD5XcmFwIHRoaXMgdGFnIGFyb3VuZCB0ZXh0IHRvIG1hcmt1cCBhbXBlcnNhbmRzIHdp dGggYSBjbGFzc2VkIHNwYW46PC9wPgoKPHByZT48Y29kZT5bdHhwOmFhbV9hbXBsaWZ5XQog IFtwXVRoZSBMYXcgT2ZmaWNlcyBvZiBEZXd5LCBDaGVhdGhhbSAmIzM4OyBIb3dlWy9wXQpb L3R4cDphYW1fYW1wbGlmeV0KPC9jb2RlPjwvcHJlPgoKCTxoMz5hYW1fcXVvdGlmeTwvaDM+ CgoJPHA+V3JhcCB0aGlzIHRhZyBhcm91bmQgdGV4dCB0byBtYXJrdXAgaW5pdGlhbCBxdW90 YXRpb24gbWFya3Mgd2l0aCBhIGNsYXNzZWQgc3Bhbjo8L3A+Cgo8cHJlPjxjb2RlPlt0eHA6 YWFtX3F1b3RpZnldW3R4cDp0aXRsZSAvXVsvdHhwOmFhbV9xdW90aWZ5XQo8L2NvZGU+PC9w cmU+CgoJPGgzPmFhbV90eXBvZ3JpZnk8L2gzPgoKCTxwPlRoaXMgaXMgdGhlIGJpZyBkYWRk eSBtZWdhLWZpbHRlci4gSXQgcnVucyB0ZXh0IHRocm91Z2ggYWxsIG9mIHRoZSBtYW5pcHVs YXRpb25zIGxpc3RlZCBhYm92ZTo8L3A+Cgo8cHJlPjxjb2RlPlt0eHA6YWFtX3R5cG9ncmlm eV0KICBbdHhwOnRpdGxlIC9dCiAgW3R4cDpib2R5IC9dClsvdHhwOmFhbV90eXBvZ3JpZnld CjwvY29kZT48L3ByZT4KCgk8aDM+TmVzdGluZyBUYWdzPC9oMz4KCgk8cD5Zb3UgY2FuIG5l c3QgdGFncyB0byBzZWxlY3RpdmVseSB1c2UgVHlwb2dyaWZ5JiM4MjE3O3MgZmVhdHVyZXMu IEZvciBleGFtcGxlLCBpZiB5b3Ugb25seSB3YW50IHRvIHByZXZlbnQgd2lkb3dzIGFuZCB3 cmFwIGFtcGVyc2FuZHMgaW4gc3BhbnM6PC9wPgoKPHByZT48Y29kZT5bdHhwOmFhbV9hbXBs aWZ5XVt0eHA6YWFtX3dpZG9udF0KICBbaDJdW3R4cDp0aXRsZSAvXVsvaDJdClsvdHhwOmFh bV93aWRvbnRdWy90eHA6YWFtX2FtcGxpZnldCjwvY29kZT48L3ByZT4KCgk8cD5UaGUgb3Jk ZXIgaW4gd2hpY2ggeW91IG5lc3QgdGFncyBkb2VzbiYjODIxNzt0IG1hdHRlci4gSnVzdCBt YWtlIHN1cmUgdGhhdCB5b3UgY2xvc2UgdGhlbSBpbiB0aGUgc2FtZSBvcmRlciB0aGF0IHlv dSBvcGVuIHRoZW0uPC9wPgoKCTxoMj5XaGF0IFRoaXMgUGx1Z2luIDxlbT5Eb2VzbiYjODIx Nzt0PC9lbT4gRG88L2gyPgoKCTxwPlRoZXJlIGFyZSBhIGNvdXBsZSBvZiBmaWx0ZXJzIGZy b20gdGhlIG9yaWdpbmFsIFR5cG9ncmlmeSB0aGF0IHdlcmVuJiM4MjE3O3QgaW5jb3Jwb3Jh dGVkIGludG8gdGhpcyBwbHVnaW4sIG1vc3RseSBiZWNhdXNlIHRoZXkgZHVwbGljYXRlIGV4 aXN0aW5nIGZlYXR1cmVzIG9mIFRleHRwYXR0ZXJuJiM4MjE3O3MgVGV4dGlsZSBmb3JtYXR0 aW5nIHN5c3RlbTo8L3A+CgoJPHVsPgoJCTxsaT48ZW0+U21hcnR5UGFudHM8L2VtPiAmIzgy MTI7IFRoaXMgd2FzIG9taXR0ZWQgZm9yIGl0cyBkdXBsaWNhdGlvbiBvZiBUZXh0aWxlIGZl YXR1cmVzIGFuZCBwb3NzaWJsZSBjb21wYXRpYmlsaXR5IHByb2JsZW1zLjwvbGk+CgkJPGxp PjxlbT5zcGFuLXdyYXBwaW5nIG9mIGNhcGl0YWxpemVkIHN0cmluZ3M8L2VtPiAmIzgyMTI7 IFRoZSBvcmlnaW5hbCBUeXBvZ3JpZnkgYWxzbyB3cmFwcGVkIHN0cmluZ3Mgb2YgdHdvIG9y IG1vcmUgY2FwaXRhbCBsZXR0ZXJzIGluIGEgc3BhbiB3aXRoIGNsYXNzICYjODIyMDtjYXBz LiYjODIyMTsgSXQgZXZlbiBkaWQgdGhpcyBpZiB0aGVyZSB3ZXJlIHBlcmlvZHMgb3IgbnVt YmVycyBpbiBiZXR3ZWVuIHRoZSBsZXR0ZXJzLiBUZXh0aWxlIGRvZXMgc29tZXRoaW5nIHNp bWlsYXIsIGJ1dCBpc24mIzgyMTc7dCBhcyBhZ2dyZXNzaXZlLiBJZiB0aGVyZSYjODIxNztz IGEgY2FsbCBmb3IgdGhlIG1vcmUgY29tcHJlaGVuc2l2ZSBjYXAtd3JhcHBpbmcgb2YgVHlw b2dyaWZ5LCBJJiM4MjE3O2xsIGluY2x1ZGUgaXQgaW4gYSBmdXR1cmUgcmVsZWFzZS48L2xp PgoJPC91bD4KCgk8aDI+Q29tcGF0aWJpbGl0eSB3aXRoIE90aGVyIFBsdWdpbnM8L2gyPgoK CTxoMz5Db21wYXRpYmlsaXR5IHdpdGggYWFtX3dpZG9udDwvaDM+CgoJPHA+VHlwb2dyaWZ5 IGZvciBUZXh0cGF0dGVybiA8c3Ryb25nPnNob3VsZCBub3Q8L3N0cm9uZz4gYmUgdXNlZCB0 b2dldGhlciB3aXRoIG15IHByZXZpb3VzIHBsdWdpbiwgPGEgaHJlZj0iaHR0cDovL3d3dy56 ZW5zY29wZS5jb20vYmxvZy8zOC93aWRvbnQtdGV4dHBhdHRlcm4tcGx1Z2luIiByZWw9Im5v Zm9sbG93Ij5hYW1fd2lkb250PC9hPi4gVGhleSBib3RoIHVzZSB0aGUgc2FtZSB0YWcgZm9y IHdpZG93IHByZXZlbnRpb24sIGJ1dCB0aGV5IHVzZSBkaWZmZXJlbnQgPHNwYW4gY2xhc3M9 ImNhcHMiPlBIUDwvc3Bhbj4gZnVuY3Rpb25zIHRvIGFjY29tcGxpc2ggdGhpcyBnb2FsLjwv cD4KCgk8cD5UaGUgcHJldmlvdXMgcGx1Z2luIHVzZWQgdGhlIElubWFuIC8gTXVsbGVud2Vn IGltcGxlbWVudGF0aW9uIGZyb20gPGEgaHJlZj0iaHR0cDovL3d3dy5zaGF1bmlubWFuLmNv bS9hcmNoaXZlLzIwMDcvMDEvMDMvd2lkb250XzJfMV93b3JkcHJlc3NfcGx1Z2luIiByZWw9 Im5vZm9sbG93Ij5XaWRvbiYjODIxNzt0IDIuMSBmb3IgV29yZFByZXNzPC9hPi4gSXQgd29y a2VkIHdlbGwgZm9yIG9uZS1saW5lcnMgbGlrZSBoZWFkaW5ncywgYnV0IHdoZW4gdXNlZCB3 aXRoIDxjb2RlPlt0eHA6ZXhjZXJwdCAvXTwvY29kZT4gb3IgPGNvZGU+W3R4cDphcnRpY2xl IC9dPC9jb2RlPiB0aGUgd2hpdGUgc3BhY2UgKHRhYnMgb3Igc3BhY2VzKSBiZXR3ZWVuIGJs b2NrcyBvZiA8YWNyb255bSB0aXRsZT0iRXh0ZW5zaWJsZSBIeXBlcnRleHQgTWFya3VwIExh bmd1YWdlIj48c3BhbiBjbGFzcz0iY2FwcyI+WEhUTUw8L3NwYW4+PC9hY3JvbnltPiBzZWVt ZWQgdG8gdHJpcCBpdCB1cC48L3A+CgoJPHA+VGhlIGFhbV90eXBvZ3JpZnkgcGx1Z2luIHVz ZXMgdGhlIFdpZG9uJiM4MjE3O3QgZnVuY3Rpb24gZnJvbSBIYW1pc2ggTWFjcGhlcnNvbiYj ODIxNztzIDxzcGFuIGNsYXNzPSJjYXBzIj5QSFA8L3NwYW4+IHBvcnQgb2YgVHlwb2dyaWZ5 LiBUaGlzIGhhbmRsZXMgd2hpdGUgc3BhY2UgYmV0dGVyLCBidXQgSSBkb24mIzgyMTc7dCBr bm93IGlmIGl0IGhhcyB0aGUgaW50ZXJuYXRpb25hbGl6YXRpb24gc3VwcG9ydCBvZiBXaW5k b24mIzgyMTc7dCAyLjEuIElmIHlvdSB3cml0ZSBpbiBhIG5vbi1FbmdsaXNoIGxhbmd1YWdl IGFuZCBmaW5kIHRoYXQgdGhlIHdpZG93IHByZXZlbnRpb24gZmVhdHVyZSBvZiB0aGlzIHBs dWdpbiBjYXVzZXMgdHJvdWJsZSwgcGxlYXNlIGxldCBtZSBrbm93LjwvcD4KCgk8aDM+Q29t cGF0aWJpbGl0eSB3aXRoIHVwbV90ZXh0aWxlPC9oMz4KCgk8cD5Zb3Ugc2hvdWxkbiYjODIx Nzt0IGhhdmUgYW55IHRyb3VibGUgdXNpbmcgYWFtX3R5cG9ncmlmeSB0b2dldGhlciB3aXRo IE1hcnkmIzgyMTc7cyA8YSBocmVmPSJodHRwOi8vdXR0ZXJwbHVzaC5jb20vdHhwLXBsdWdp bnMvdXBtLXRleHRpbGUiIHJlbD0ibm9mb2xsb3ciPnVwbV90ZXh0aWxlPC9hPiwgYXMgbG9u ZyBhcyB5b3UgbmVzdCBNYXJ5JiM4MjE3O3MgcGx1Z2luIDxlbT5pbnNpZGU8L2VtPiBtaW5l OjwvcD4KCjxwcmU+PGNvZGU+W3R4cDphYW1fdHlwb2dyaWZ5XVt0eHA6dXBtX3RleHRpbGVd CiAgW3R4cDpleGNlcnB0IC9dClsvdHhwOnVwbV90ZXh0aWxlXVsvdHhwOmFhbV90eXBvZ3Jp ZnldCjwvY29kZT48L3ByZT4KCgk8cD5UZXh0cGF0dGVybiBldmFsdWF0ZXMgcGx1Z2lucyBm cm9tIHRoZSBpbnNpZGUgb3V0LCBhbmQgeW91JiM4MjE3O2xsIHdhbnQgdG8gaGF2ZSBUZXh0 aWxlIGFwcGxpZWQgdG8geW91ciB0ZXh0IGJlZm9yZSBpdCBnZXRzIFR5cG9ncmlmaWVkLjwv cD4KCgk8aDI+UGVyZm9ybWFuY2UgTm90ZXM8L2gyPgoKCTxwPlRoaXMgcGx1Z2luIHVzZXMg YSBmZWF0dXJlIG9mIDxzcGFuIGNsYXNzPSJjYXBzIj5QSFA8L3NwYW4+IGNhbGxlZCA8ZW0+ cmVndWxhciBleHByZXNzaW9uczwvZW0+IHRvIGRvIGl0cyB0aGluZy4gUmVndWxhciBleHBy ZXNzaW9ucyBhcmUgdmVyeSBwb3dlcmZ1bCwgYnV0IGNhbiBhbHNvIGNhdXNlIGEgZHJhaW4g b24gcGVyZm9ybWFuY2UgaWYgeW91IGdvIG92ZXJib2FyZC48L3A+CgoJPHA+SWYgeW91IG5v dGljZSB0aGF0IHlvdXIgc2l0ZSBzZWVtcyBzbG93ZXIgd2hlbiB1c2luZyB0aGlzIHBsdWdp bjo8L3A+CgoJPG9sPgoJCTxsaT5UcnkgdXNpbmcgb25seSB0aGUgZmVhdHVyZXMgdGhhdCB5 b3UgbmVlZC4gSWYgeW91IG9ubHkgd2FudCB0byBhcHBseSBzcGVjaWFsIHN0eWxlcyB0byBh bXBlcnNhbmRzLCB0aGVuIG9ubHkgdXNlIHRoZSA8Y29kZT5hYW1fYW1wbGlmeTwvY29kZT4g dGFnLjwvbGk+CgkJPGxpPlVzZSB0aGUgcGx1Z2luIG9ubHkgb24gc2VsZWN0ZWQgYXJlYXMg b2YgeW91ciBUZXh0cGF0dGVybiB0ZW1wbGF0ZXMsIHdoZXJlIHR5cG9ncmFwaGljYWwgbmlj ZXRpZXMgYXJlIG1vc3Qgbm90aWNlYWJsZS4gVGl0bGVzIGFyZSBhbiBlc3BlY2lhbGx5IGdv b2QgY2FuZGlkYXRlLjwvbGk+CgkJPGxpPklmIGFsbCBlbHNlIGZhaWxzLCB0cnkgYSBjaGFj aGluZyBwbHVnaW4gbGlrZSA8YSBocmVmPSJodHRwOi8vZm9ydW0udGV4dHBhdHRlcm4uY29t L3ZpZXd0b3BpYy5waHA/aWQ9MzE5NSIgcmVsPSJub2ZvbGxvdyI+emVtX2NhY2hlPC9hPiBv ciA8YSBocmVmPSJodHRwOi8vZm9ydW0udGV4dHBhdHRlcm4uY29tL3ZpZXd0b3BpYy5waHA/ aWQ9ODM1MiIgcmVsPSJub2ZvbGxvdyI+YXN5X2pwY2FjaGU8L2E+LjwvbGk+Cgk8L29sPgoK CTxoMj5MaWNlbnNlPC9oMj4KCgk8cD5UaGlzIHBsdWdpbiBpcyBwcm92aWRlZCBieSB0aGUg YXV0aG9yIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgPGEgaHJlZj0iaHR0cDovL2VuLndpa2lw ZWRpYS5vcmcvd2lraS9CU0RfbGljZW5zZSIgcmVsPSJub2ZvbGxvdyI+PHNwYW4gY2xhc3M9 ImNhcHMiPkJTRDwvc3Bhbj4gbGljZW5zZTwvYT4uIFNlZSB0aGUgJiM4MjIwOzxzcGFuIGNs YXNzPSJjYXBzIj5MSUNFTlNFPC9zcGFuPi50eHQmIzgyMjE7IGZpbGUsIGluY2x1ZGVkIGlu IHRoZSBkb3dubG9hZCwgZm9yIGRldGFpbHMuPC9wPgoKCTxoMj5BYm91dCB0aGUgQXV0aG9y PC9oMj4KCgk8cD5BZGFtIE1lc3NpbmdlciBpcyBhIHdlYnNpdGUgZGVzaWduZXIsIGZyb250 LWVuZCBXZWIgZGV2ZWxvcGVyLCBhbmQgZ3JhcGhpYyBkZXNpZ25lci4gQXQgPGEgaHJlZj0i aHR0cDovL3d3dy56ZW5zY29wZS5jb20vIiByZWw9Im5vZm9sbG93Ij56ZW5zY29wZS5jb208 L2E+LCBoZSBtYWludGFpbnMgYSBwb3J0Zm9saW8gYW5kIHdyaXRlcyBhIHdlYmxvZyBhYm91 dCBoaXMgd29yayAocG93ZXJlZCBieSBUZXh0cGF0dGVybiwgb2YgY291cnNlKS48L3A+Ijtz OjM6Im1kNSI7czozMjoiZTE1ZWY3MDBlNjg0M2UwZGE2ZTRhNjczYjZhMGMwYTEiO30=