# upm_pending_notify v.0.1.2 # Pending article notification. # Mary Fredborg # http://utterplush.com/txp-plugins/upm-pending-notify # .......................................................................... # A plugin for Textpattern # http://textpattern.com/ # # Adding Plugins to Your Textpattern Installation # http://textpattern.net/wiki/index.php?title=Intermediate_Weblog_Model#Adding_Plugins_to_Your_Textpattern_Installation # .......................................................................... YToxMTp7czo0OiJuYW1lIjtzOjE4OiJ1cG1fcGVuZGluZ19ub3RpZnkiO3M6MTE6ImRlc2Ny aXB0aW9uIjtzOjI5OiJQZW5kaW5nIGFydGljbGUgbm90aWZpY2F0aW9uLiI7czo3OiJ2ZXJz aW9uIjtzOjU6IjAuMS4yIjtzOjQ6InR5cGUiO2k6MTtzOjY6ImF1dGhvciI7czoxMzoiTWFy eSBGcmVkYm9yZyI7czoxMDoiYXV0aG9yX3VyaSI7czo1MjoiaHR0cDovL3V0dGVycGx1c2gu Y29tL3R4cC1wbHVnaW5zL3VwbS1wZW5kaW5nLW5vdGlmeSI7czo0OiJjb2RlIjtzOjU4MzE6 ImlmICh0eHBpbnRlcmZhY2UgPT0gJ2FkbWluJykKCXsKCQkvLyBpIHF1aXRlIGhhdGUgZG9p bmcgaXQgdGhpcyB3YXksIHRoZSB3cml0ZSB0YWIncyBzZXR1cCBpcyBzY3Jld3kKCgkJYWRk X3ByaXZzKCd1cG1fcGVuZGluZ19ub3RpZnlfY3JlYXRlZCcsICcxLDIsMyw0LDUnKTsKCQly ZWdpc3Rlcl9jYWxsYmFjaygndXBtX3BlbmRpbmdfbm90aWZ5X2NyZWF0ZWQnLCAnYXJ0aWNs ZScsICdlZGl0Jyk7CgoJCWFkZF9wcml2cygndXBtX3BlbmRpbmdfbm90aWZ5X3VwZGF0ZWRf cHJlJywgJzEsMiwzLDQsNScpOwoJCXJlZ2lzdGVyX2NhbGxiYWNrKCd1cG1fcGVuZGluZ19u b3RpZnlfdXBkYXRlZF9wcmUnLCAnYXJ0aWNsZScsICcnLCAxKTsKCgkJYWRkX3ByaXZzKCd1 cG1fcGVuZGluZ19ub3RpZnlfdXBkYXRlZF9wb3N0JywgJzEsMiwzLDQsNScpOwoJCXJlZ2lz dGVyX2NhbGxiYWNrKCd1cG1fcGVuZGluZ19ub3RpZnlfdXBkYXRlZF9wb3N0JywgJ2FydGlj bGUnLCAnZWRpdCcpOwoJfQoKLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCWZ1bmN0aW9uIHVwbV9wZW5kaW5nX25v dGlmeV9jcmVhdGVkKCkKCXsKCQlnbG9iYWwgJElEOwoKCQkvLyBub3QgdHJ5aW5nIHRvIGNy ZWF0ZSBhIG5ldyBhcnRpY2xlCgkJLy8gYmVnb25lIQoJCWlmICghZ3BzKCdwdWJsaXNoJykp CgkJewoJCQlyZXR1cm47CgkJfQoKCQkkU3RhdHVzID0gKGludCkgcHMoJ1N0YXR1cycpOwoK CQlpZiAoIWhhc19wcml2cygnYXJ0aWNsZS5wdWJsaXNoJykgJiYgJFN0YXR1cyA+PSA0KQoJ CXsKCQkJJFN0YXR1cyA9IDM7CgkJfQoKCQlpZiAoJFN0YXR1cyA9PSAzKQoJCXsKCQkJJElE CT0gKGludCkgJElEOwoJCQkkVGl0bGUgPSBwcygnVGl0bGUnKTsKCgkJCXVwbV9wZW5kaW5n X25vdGlmeV9wdWJsaXNoZXIoJElELCAkVGl0bGUpOwoJCX0KCX0KCi8vLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCglm dW5jdGlvbiB1cG1fcGVuZGluZ19ub3RpZnlfdXBkYXRlZF9wcmUoKQoJewoJCSRHTE9CQUxT Wyd1cG1fcGVuZGluZ19ub3RpZnknXSA9IGZhbHNlOwoKCQkvLyBhcnRpY2xlIHVwZGF0ZWQK CQlpZiAoZ3BzKCdzYXZlJykpCgkJewoJCQkkSUQgPSAoaW50KSBwcygnSUQnKTsKCgkJCSRT dGF0dXMgPSAoaW50KSBwcygnU3RhdHVzJyk7CgkJCSRvbGRfc3RhdHVzID0gKGludCkgc2Fm ZV9maWVsZCgnU3RhdHVzJywgJ3RleHRwYXR0ZXJuJywgIklEID0gJElEIik7CgoJCQkvLyBv bmx5IG5vdGlmeSBpZi4uLgoKCQkJLy8gLi4ubWFya2VkIGFzIHBlbmRpbmcKCQkJLy8gcHVi bGlzaGVycyBhcmUgbm90aWZpZWQKCQkJLy8gc2VlOiB1cG1fcGVuZGluZ19ub3RpZnlfdXBk YXRlZF9wb3N0KCkKCQkJaWYgKCRTdGF0dXMgPT0gMykKCQkJewoJCQkJJEdMT0JBTFNbJ3Vw bV9wZW5kaW5nX25vdGlmeSddID0gJ3B1Ymxpc2hlcnMnOwoJCQl9CgoJCQkvLyAuLi5tYXJr ZWQgYXMgbGl2ZS9zdGlja3kgYW5kIHdhcyBwcmV2aW91c2x5IHBlbmRpbmcKCQkJLy8gYXV0 aG9yIGlzIG5vdGlmaWVkCgkJCS8vIHNlZTogdXBtX3BlbmRpbmdfbm90aWZ5X3VwZGF0ZWRf cG9zdCgpCgkJCWVsc2VpZiAoJFN0YXR1cyA+IDMgYW5kICRvbGRfc3RhdHVzID09IDMpCgkJ CXsKCQkJCSRHTE9CQUxTWyd1cG1fcGVuZGluZ19ub3RpZnknXSA9ICdhdXRob3InOwoJCQl9 CgkJfQoJfQoKLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQoKCWZ1bmN0aW9uIHVwbV9wZW5kaW5nX25vdGlmeV91cGRh dGVkX3Bvc3QoKQoJewoJCWdsb2JhbCAkdXBtX3BlbmRpbmdfbm90aWZ5LCAkdHhwX3VzZXIs ICRwcmVmczsKCgkJaWYgKCEkdXBtX3BlbmRpbmdfbm90aWZ5KQoJCXsKCQkJcmV0dXJuOwoJ CX0KCgkJJElEID0gKGludCkgcHMoJ0lEJyk7CgkJJFRpdGxlID0gcHMoJ1RpdGxlJyk7CgoJ CXN3aXRjaCAoJHVwbV9wZW5kaW5nX25vdGlmeSkKCQl7CgkJCWNhc2UgJ3B1Ymxpc2hlcnMn OgoJCQkJdXBtX3BlbmRpbmdfbm90aWZ5X3B1Ymxpc2hlcigkSUQsICRUaXRsZSk7CgkJCWJy ZWFrOwoKCQkJY2FzZSAnYXV0aG9yJzoKCQkJCSRBdXRob3JJRCA9IHBzKCdBdXRob3JJRCcp OwoJCQkJJExhc3RNb2RJRCA9IHBzKCdMYXN0TW9kSUQnKTsKCgkJCQl1cG1fcGVuZGluZ19u b3RpZnlfYXV0aG9yKCRJRCwgJFRpdGxlLCAkQXV0aG9ySUQsICRMYXN0TW9kSUQpOwoJCQli cmVhazsKCQl9Cgl9CgovLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoJZnVuY3Rpb24gdXBtX3BlbmRpbmdfbm90aWZ5 X3B1Ymxpc2hlcigkSUQsICRUaXRsZSkKCXsKCQlnbG9iYWwgJHR4cF91c2VyLCAkcHJlZnM7 CgoJCSRwdWJsaXNoZXJzID0gc2FmZV9yb3dzX3N0YXJ0KCdSZWFsTmFtZSwgZW1haWwnLCAn dHhwX3VzZXJzJywgInByaXZzID0gMSBhbmQgbmFtZSAhPSAnIi5kb1NsYXNoKCR0eHBfdXNl cikuIiciKTsKCgkJaWYgKCRwdWJsaXNoZXJzKQoJCXsKCQkJJFRpdGxlID0gKCRUaXRsZSkg PyBzdHJpcF90YWdzKCRUaXRsZSkgOiBnVHh0KCd1bnRpdGxlZCcpOwoJCQkkYXV0aG9yID0g Z2V0X2F1dGhvcl9uYW1lKCR0eHBfdXNlcik7CgoJCQkkc3ViamVjdCA9IHVwbV9wZW5kaW5n X25vdGlmeV9nVHh0KCdlbWFpbF9zdWJqZWN0X3B1Ymxpc2hlcicsIGFycmF5KAoJCQkJJ3tz aXRlbmFtZX0nID0+ICRwcmVmc1snc2l0ZW5hbWUnXSwKCQkJCSd7dGl0bGV9JwkJID0+ICRU aXRsZSwKCQkJKSk7CgoJCQl3aGlsZSAoJHB1Ymxpc2hlciA9IG5leHRSb3coJHB1Ymxpc2hl cnMpKQoJCQl7CgkJCQkkYm9keSA9IHVwbV9wZW5kaW5nX25vdGlmeV9nVHh0KCdlbWFpbF9t ZXNzYWdlX3B1Ymxpc2hlcicsIGFycmF5KAoJCQkJCSd7YXJ0aWNsZV91cmx9JyA9PiBodS4n dGV4dHBhdHRlcm4vaW5kZXgucGhwP2V2ZW50PWFydGljbGUmc3RlcD1lZGl0JklEPScuJElE LAoJCQkJCSd7YXV0aG9yfScJCQk9PiAkYXV0aG9yLAoJCQkJCSd7cHVibGlzaGVyfScJCT0+ ICRwdWJsaXNoZXJbJ1JlYWxOYW1lJ10sCgkJCQkJJ3t0aXRsZX0nCQkJCT0+ICRUaXRsZSwK CQkJCSkpOwoKCQkJCXVwbV9wZW5kaW5nX25vdGlmeV9tYWlsKCRwdWJsaXNoZXJbJ1JlYWxO YW1lJ10sICRwdWJsaXNoZXJbJ2VtYWlsJ10sICRzdWJqZWN0LCAkYm9keSk7CgkJCX0KCQl9 Cgl9CgovLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCgoJZnVuY3Rpb24gdXBtX3BlbmRpbmdfbm90aWZ5X2F1dGhvcigk SUQsICRUaXRsZSwgJEF1dGhvcklELCAkTGFzdE1vZElEKQoJewoJCWdsb2JhbCAkdHhwX3Vz ZXIsICRwcmVmczsKCgkJJGF1dGhvciA9IHNhZmVfcm93KCdSZWFsTmFtZSwgZW1haWwnLCAn dHhwX3VzZXJzJywgIm5hbWUgPSAnIi5kb1NsYXNoKCRBdXRob3JJRCkuIicgYW5kIG5hbWUg IT0gJyIuZG9TbGFzaCgkdHhwX3VzZXIpLiInIik7CgoJCWlmICgkYXV0aG9yKQoJCXsKCQkJ aW5jbHVkZV9vbmNlIHR4cGF0aC4nL3B1Ymxpc2gvdGFnaGFuZGxlcnMucGhwJzsKCgkJCSRU aXRsZSA9ICgkVGl0bGUpID8gc3RyaXBfdGFncygkVGl0bGUpIDogZ1R4dCgndW50aXRsZWQn KTsKCQkJJHVybCA9IHBlcm1saW5rdXJsX2lkKCRJRCk7CgkJCSRwdWJsaXNoZXIgPSBnZXRf YXV0aG9yX25hbWUoJHR4cF91c2VyKTsKCgkJCSRzdWJqZWN0ID0gdXBtX3BlbmRpbmdfbm90 aWZ5X2dUeHQoJ2VtYWlsX3N1YmplY3RfYXV0aG9yJywgYXJyYXkoCgkJCQkne3NpdGVuYW1l fScgPT4gJHByZWZzWydzaXRlbmFtZSddLAoJCQkJJ3t0aXRsZX0nCQkgPT4gJFRpdGxlLAoJ CQkpKTsKCgkJCSRib2R5ID0gdXBtX3BlbmRpbmdfbm90aWZ5X2dUeHQoJ2VtYWlsX21lc3Nh Z2VfYXV0aG9yJywgYXJyYXkoCgkJCQkne2FydGljbGVfdXJsfScgPT4gJHVybCwKCQkJCSd7 YXV0aG9yfScJCQk9PiAkYXV0aG9yWydSZWFsTmFtZSddLAoJCQkJJ3twdWJsaXNoZXJ9JwkJ PT4gJHB1Ymxpc2hlciwKCQkJCSd7dGl0bGV9JwkJCQk9PiAkVGl0bGUsCgkJCSkpOwoKCQkJ dXBtX3BlbmRpbmdfbm90aWZ5X21haWwoJGF1dGhvclsnUmVhbE5hbWUnXSwgJGF1dGhvclsn ZW1haWwnXSwgJHN1YmplY3QsICRib2R5KTsKCQl9Cgl9CgovLy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoJZnVuY3Rp b24gdXBtX3BlbmRpbmdfbm90aWZ5X21haWwoJG5hbWUsICRlbWFpbCwgJHN1YmplY3QsICRi b2R5KQoJewoJCWdsb2JhbCAkcHJlZnM7CgoJCWlmICgkcHJlZnNbJ292ZXJyaWRlX2VtYWls Y2hhcnNldCddKQoJCXsKCQkJJGNoYXJzZXQgPSAnSVNPLTg4NTktMSc7CgoJCQlpZiAoaXNf Y2FsbGFibGUoJ3V0ZjhfZGVjb2RlJykpCgkJCXsKCQkJCSRuYW1lCQkgPSB1dGY4X2RlY29k ZSgkbmFtZSk7CgkJCQkkZW1haWwJID0gdXRmOF9kZWNvZGUoJGVtYWlsKTsKCgkJCQkkc3Vi amVjdCA9IHV0ZjhfZGVjb2RlKCRzdWJqZWN0KTsKCQkJCSRib2R5CQkgPSB1dGY4X2RlY29k ZSgkYm9keSk7CgkJCX0KCQl9CgoJCWVsc2UKCQl7CgkJCSRjaGFyc2V0ID0gJ1VURi04JzsK CQl9CgoJCSRuYW1lID0gZW5jb2RlX21haWxoZWFkZXIoc3RyaXBfcm4oJG5hbWUpLCAncGhy YXNlJyk7CgkJJGVtYWlsID0gc3RyaXBfcm4oJGVtYWlsKTsKCgkJJHN1YmplY3QgPSBlbmNv ZGVfbWFpbGhlYWRlcihzdHJpcF9ybigkc3ViamVjdCksICd0ZXh0Jyk7CgoJCSRzZXAgPSAh aXNfd2luZG93cygpID8gIlxuIiA6ICJcclxuIjsKCgkJJGJvZHkgPSBzdHJfcmVwbGFjZSgi XHJcbiIsICJcbiIsICRib2R5KTsKCQkkYm9keSA9IHN0cl9yZXBsYWNlKCJcciIsICJcbiIs ICRib2R5KTsKCQkkYm9keSA9IHN0cl9yZXBsYWNlKCJcbiIsICRzZXAsICRib2R5KTsKCgkJ cmV0dXJuIG1haWwoIiRuYW1lIDwkZW1haWw+IiwgJHN1YmplY3QsICRib2R5LAoJCQkiRnJv bTogJG5hbWUgPCRlbWFpbD4iLgoJCQkkc2VwLidYLU1haWxlcjogdXBtX3BlbmRpbmdfbm90 aWZ5IFRleHRwYXR0ZXJuIHBsdWdpbicuCgkJCSRzZXAuJ0NvbnRlbnQtVHJhbnNmZXItRW5j b2Rpbmc6IDhiaXQnLgoJCQkkc2VwLidDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJz ZXQ9IicuJGNoYXJzZXQuJyInLgoJCQkkc2VwCgkJKTsKCX0KCi8vLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCglmdW5j dGlvbiB1cG1fcGVuZGluZ19ub3RpZnlfZ1R4dCgkd2hhdCwgJHZhcnMgPSBhcnJheSgpKQoJ ewoJCSRsYW5nID0gYXJyYXkoKTsKCgkJJGxhbmdbJ2VtYWlsX3N1YmplY3RfYXV0aG9yJ10J CSA9ICdbe3NpdGVuYW1lfV0gQXJ0aWNsZSBwdWJsaXNoZWQ6IHt0aXRsZX0nOwoJCSRsYW5n WydlbWFpbF9tZXNzYWdlX2F1dGhvciddCQkgPSA8PDxlbWwKRGVhciB7YXV0aG9yfSwKCntw dWJsaXNoZXJ9IGhhcyBwdWJsaXNoZWQgeW91ciBhcnRpY2xlOgoKe3RpdGxlfQp7YXJ0aWNs ZV91cmx9CmVtbDsKCgkJJGxhbmdbJ2VtYWlsX3N1YmplY3RfcHVibGlzaGVyJ10gPSAnW3tz aXRlbmFtZX1dIEFydGljbGUgc3VibWl0dGVkOiB7dGl0bGV9JzsKCQkkbGFuZ1snZW1haWxf bWVzc2FnZV9wdWJsaXNoZXInXSA9IDw8PGVtbApEZWFyIHtwdWJsaXNoZXJ9LAoKe2F1dGhv cn0gaGFzIHN1Ym1pdHRlZCBhbiBhcnRpY2xlIGZvciByZXZpZXc6Cgp7dGl0bGV9CnthcnRp Y2xlX3VybH0KZW1sOwoKCQlyZXR1cm4gc3RydHIoJGxhbmdbJHdoYXRdLCAkdmFycyk7Cgl9 IjtzOjQ6ImhlbHAiO3M6MTE5MzoiaDEuIHVwbV9wZW5kaW5nX25vdGlmeQoKaDIuIFdoYXQg dGhpcyBwbHVnaW4gZG9lczoKCiMgV2hlbiBzb21lb25lIGNyZWF0ZXMgYW4gYXJ0aWNsZSB3 aXRoIHRoZSBzdGF0dXMgIlBlbmRpbmciLCBhbGwgdGhlICJQdWJsaXNoZXIiIHVzZXJzIHJl Y2VpdmUgYW4gZW1haWwuIFRoaXMgZW1haWwgY29udGFpbnMgdmVyeSBiYXNpYyBpbmZvcm1h dGlvbiBvZiB0aGUgYXJ0aWNsZSwgYW5kIGxpbmsgdG8gZnVydGhlciB2aWV3IGFuZCBtYW5h Z2UgdGhlIGFydGljbGUuIElmIHRoZSBhdXRob3IgaGFwcGVucyB0byBiZSBhIFB1Ymxpc2hl ciwgaGUgZG9lcyBub3QgcmVjZWl2ZSB0aGUgZW1haWwuCiMgV2hlbiBhbiBhcnRpY2xlIGlz IGNoYW5nZWQgZnJvbSAiUGVuZGluZyIgdG8gIkxpdmUiIHN0YXR1cywgdGhlIGFydGljbGUn cyBhdXRob3IgcmVjZWl2ZXMgYSBsaW5rIHRvIHZpZXcgdGhlaXIgYXJ0aWNsZSBvbiB0aGUg bGl2ZSBzaXRlLiBJZiB0aGUgYXV0aG9yIGhhcHBlbnMgdG8gYmUgYSBQdWJsaXNoZXIgKmFu ZCogc2V0IHRoZSBhcnRpY2xlIHRvICJMaXZlIiBoZXJzZWxmLCBzaGUgZG9lcyBub3QgcmVj ZWl2ZSB0aGUgZW1haWwuCgpoMi4gV2hhdCB0aGlzIHBsdWdpbiAqZG9lcyBub3QqIGRvOgoK IyBBdXRob3Igbm90aWZpY2F0aW9ucyBhcmUgKm5vdCogc2VudCBvdXQgd2hlbiBhcnRpY2xl IHN0YXR1cyBpcyBjaGFuZ2VkIHdpdGggdGhlIG11bHRpLWVkaXQgZmVhdHVyZSBvZiB0aGUg QXJ0aWNsZXMgdGFiLiBGb3IgdGVjaG5pY2FsIHJlYXNvbnMsIHRoaXMgY291bGQgdG9vIGVh c2lseSBjYXVzZSBncmFuZCBwcm9ibGVtcyB3aXRoIHlvdXIgc2l0ZSBhbmQgbWFrZSB5b3Vy IHdlYiBob3N0IHZlcnkgdXBzZXQgd2l0aCB5b3UuCiMgQWxsb3cgYWxsIGtpbmRzIG9mIGN1 c3RvbWl6YXRpb25zIHRvIHRoZSBlbWFpbHMgc2VudCBjb25jZXJuaW5nIHdoaWNoIGFydGlj bGUgZmllbGRzIGFyZSBpbmNsdWRlZCBpbiB0aGUgZW1haWwgZm9yIHByZXZpZXcuIFRoZSBw bHVnaW4gcmVtYWlucyBuaWNlIGFuZCBsaWdodGVyLXdlaWdodCBieSBwcm92aWRpbmcgb25s eSB0aGUgZXNzZW50aWFsIGluZm9ybWF0aW9uLgoKaDIuIEhvdyB0byB1c2UgaXQ6CgojIElu c3RhbGwgdGhlIHBsdWdpbiAod2hpY2ggeW91J3ZlIGFscmVhZHkgZG9uZSkuCiMgQWN0aXZh dGUgdGhlIHBsdWdpbi4KIyBBbGwgZG9uZS4iO3M6ODoiaGVscF9yYXciO3M6MTE5MzoiaDEu IHVwbV9wZW5kaW5nX25vdGlmeQoKaDIuIFdoYXQgdGhpcyBwbHVnaW4gZG9lczoKCiMgV2hl biBzb21lb25lIGNyZWF0ZXMgYW4gYXJ0aWNsZSB3aXRoIHRoZSBzdGF0dXMgIlBlbmRpbmci LCBhbGwgdGhlICJQdWJsaXNoZXIiIHVzZXJzIHJlY2VpdmUgYW4gZW1haWwuIFRoaXMgZW1h aWwgY29udGFpbnMgdmVyeSBiYXNpYyBpbmZvcm1hdGlvbiBvZiB0aGUgYXJ0aWNsZSwgYW5k IGxpbmsgdG8gZnVydGhlciB2aWV3IGFuZCBtYW5hZ2UgdGhlIGFydGljbGUuIElmIHRoZSBh dXRob3IgaGFwcGVucyB0byBiZSBhIFB1Ymxpc2hlciwgaGUgZG9lcyBub3QgcmVjZWl2ZSB0 aGUgZW1haWwuCiMgV2hlbiBhbiBhcnRpY2xlIGlzIGNoYW5nZWQgZnJvbSAiUGVuZGluZyIg dG8gIkxpdmUiIHN0YXR1cywgdGhlIGFydGljbGUncyBhdXRob3IgcmVjZWl2ZXMgYSBsaW5r IHRvIHZpZXcgdGhlaXIgYXJ0aWNsZSBvbiB0aGUgbGl2ZSBzaXRlLiBJZiB0aGUgYXV0aG9y IGhhcHBlbnMgdG8gYmUgYSBQdWJsaXNoZXIgKmFuZCogc2V0IHRoZSBhcnRpY2xlIHRvICJM aXZlIiBoZXJzZWxmLCBzaGUgZG9lcyBub3QgcmVjZWl2ZSB0aGUgZW1haWwuCgpoMi4gV2hh dCB0aGlzIHBsdWdpbiAqZG9lcyBub3QqIGRvOgoKIyBBdXRob3Igbm90aWZpY2F0aW9ucyBh cmUgKm5vdCogc2VudCBvdXQgd2hlbiBhcnRpY2xlIHN0YXR1cyBpcyBjaGFuZ2VkIHdpdGgg dGhlIG11bHRpLWVkaXQgZmVhdHVyZSBvZiB0aGUgQXJ0aWNsZXMgdGFiLiBGb3IgdGVjaG5p Y2FsIHJlYXNvbnMsIHRoaXMgY291bGQgdG9vIGVhc2lseSBjYXVzZSBncmFuZCBwcm9ibGVt cyB3aXRoIHlvdXIgc2l0ZSBhbmQgbWFrZSB5b3VyIHdlYiBob3N0IHZlcnkgdXBzZXQgd2l0 aCB5b3UuCiMgQWxsb3cgYWxsIGtpbmRzIG9mIGN1c3RvbWl6YXRpb25zIHRvIHRoZSBlbWFp bHMgc2VudCBjb25jZXJuaW5nIHdoaWNoIGFydGljbGUgZmllbGRzIGFyZSBpbmNsdWRlZCBp biB0aGUgZW1haWwgZm9yIHByZXZpZXcuIFRoZSBwbHVnaW4gcmVtYWlucyBuaWNlIGFuZCBs aWdodGVyLXdlaWdodCBieSBwcm92aWRpbmcgb25seSB0aGUgZXNzZW50aWFsIGluZm9ybWF0 aW9uLgoKaDIuIEhvdyB0byB1c2UgaXQ6CgojIEluc3RhbGwgdGhlIHBsdWdpbiAod2hpY2gg eW91J3ZlIGFscmVhZHkgZG9uZSkuCiMgQWN0aXZhdGUgdGhlIHBsdWdpbi4KIyBBbGwgZG9u ZS4iO3M6MTU6ImFsbG93X2h0bWxfaGVscCI7aTowO3M6MzoibWQ1IjtzOjMyOiIxNzY2MGUy MDE4NDc3OTY1ZDMwMTM4M2I3YTJhNjVhNCI7fQ==