# Name: etc_url v0.4 # Type: Public plugin # Create/rewrite Textpattern URL # Author: Oleg Loukianov # URL: http://www.iut-fbleau.fr/projet/etc/ # Recommended load order: 5 # ..................................................................... # This is a plugin for Textpattern CMS - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ..................................................................... YToxMTp7czo0OiJuYW1lIjtzOjc6ImV0Y191cmwiO3M6NjoiYXV0aG9yIjtzOjE0OiJPbGVn IExvdWtpYW5vdiI7czoxMDoiYXV0aG9yX3VyaSI7czozNjoiaHR0cDovL3d3dy5pdXQtZmJs ZWF1LmZyL3Byb2pldC9ldGMvIjtzOjc6InZlcnNpb24iO3M6MzoiMC40IjtzOjExOiJkZXNj cmlwdGlvbiI7czozMDoiQ3JlYXRlL3Jld3JpdGUgVGV4dHBhdHRlcm4gVVJMIjtzOjQ6ImNv ZGUiO3M6NzU5NzoiLy8gVFhQIDQuNiB0YWcgcmVnaXN0cmF0aW9uDQppZiAoY2xhc3NfZXhp c3RzKCdUZXh0cGF0dGVybl9UYWdfUmVnaXN0cnknKSkgew0KCVR4cDo6Z2V0KCdUZXh0cGF0 dGVybl9UYWdfUmVnaXN0cnknKS0+cmVnaXN0ZXIoJ2V0Y191cmwnKTsNCn0NCg0KZnVuY3Rp b24gZXRjX3VybCgkYXR0cywgJHRoaW5nPW51bGwpIHsNCglnbG9iYWwgJHByZXRleHQ7DQoJ c3RhdGljICRwYXJ0c2NhY2hlID0gYXJyYXkoKSwgJGh1ID0gbnVsbDsNCg0KCWV4dHJhY3Qo bEF0dHMoYXJyYXkoDQoJCSJkZWJ1ZyI9PicnLA0KCQkidXJsIj0+bnVsbCwNCgkJImNvbnRl eHQiPT4nJywNCgkJInF1ZXJ5Ij0+JycsDQoJCSJzYW5pdGl6ZSI9PicnLA0KCQkibW9kZSI9 PiRwcmV0ZXh0WydwZXJtbGlua19tb2RlJ10sDQoJCSJ0eXBlIj0+bnVsbA0KCSksJGF0dHMp KTsNCg0KCSRwYXJ0cyA9ICRwYXJzZSA9ICRxcyA9IGFycmF5KCk7DQoJJHNhbml0aXplID0g JHNhbml0aXplID8gYXJyYXlfZmlsbF9rZXlzKGRvX2xpc3QoJHNhbml0aXplKSwgdHJ1ZSkg OiBhcnJheSgpOw0KCSRjdXN0b20gPSBmYWxzZTsNCg0KCWlmKCFpc3NldCgkaHUpKSAkaHUg PSBwYXJzZV91cmwoaHUpOw0KDQoJaWYoJGNvbnRleHQpIHtnbG9iYWwgJHsndGhpcycuJGNv bnRleHR9OyBpZihlbXB0eSgkeyd0aGlzJy4kY29udGV4dH0pKSByZXR1cm47fQ0KCWVsc2Vp ZighaXNzZXQoJHBhcnRzY2FjaGVbJGNhY2hla2V5ID0gbWQ1KCRtb2RlLiR1cmwpXSkpDQoJ ew0KCQlpZigkdXJsID09PSBudWxsKQ0KCQkJZm9yZWFjaChhcnJheSgnaWQnLCdzJywnYycs J2NvbnRleHQnLCdxJywnbScsJ3BnJywncCcsJ21vbnRoJywnYXV0aG9yJykgYXMgJGtleSkg e2lmKCRwcmV0ZXh0WyRrZXldID4gJycpICRwYXJ0c1ska2V5XSA9ICRwcmV0ZXh0WyRrZXld O30NCgkJZWxzZWlmKCR1cmwgPiAnJykgew0KCQkJJHBhcnNlID0gcGFyc2VfdXJsKHN0cl9y ZXBsYWNlKGFycmF5KCcmYW1wOycsICcmIzM4OycpLCAnJicsICR1cmwpKSArICRodTsNCgkJ CSRzdWJwYXRoID0gJHByZXRleHRbJ3N1YnBhdGgnXTsNCgkJCSRjdXN0b20gPSAkcGFyc2Vb J2hvc3QnXSAhPSAkaHVbJ2hvc3QnXSB8fCAkcGFyc2VbJ3BhdGgnXVswXSA9PSAnLycgJiYg c3RycG9zKCRwYXJzZVsncGF0aCddLCAkaHVbJ3BhdGgnXSkgIT09IDA7DQoJCQlpZighJGN1 c3RvbSAmJiAkcmVxID0gcHJlZ19yZXBsYWNlKCIvXiRzdWJwYXRoL2kiLCAiLyIsICRwYXJz ZVsncGF0aCddKSkgew0KCQkJCSRwYXJ0cyA9IGV0Y19wYXJzZV9yZXEoJHJlcVswXSA9PT0g Jy8nID8gJHJlcSA6ICcvJy4kcmVxLCAkbW9kZSk7DQoJCQl9DQoJCX0NCgkJaWYoJHVybCAh PT0gbnVsbCkgew0KCQkJaWYoaXNzZXQoJHBhcnNlWydxdWVyeSddKSkgcGFyc2Vfc3RyKCRw YXJzZVsncXVlcnknXSwgJHFzKTsNCgkJCSRwYXJ0cyA9ICRxcyArICRwYXJ0czsNCgkJfQ0K CQllbHNlICRwYXJ0cyA9ICRfR0VUICsgJHBhcnRzOw0KCQkkcGFydHNjYWNoZVskY2FjaGVr ZXldID0gJHBhcnRzOw0KCX0NCgllbHNlICRwYXJ0cyA9ICRwYXJ0c2NhY2hlWyRjYWNoZWtl eV07DQoNCmlmKCRkZWJ1Zykge2VjaG8gJGN1c3RvbSwgJHVybDsgZG1wKCRodSk7IGRtcCgk cGFyc2UpOyBkbXAoJHBhcnRzKTt9DQoNCgkkcXMgPSBhcnJheSgpOw0KCWlmKCRxdWVyeSkg Zm9yZWFjaChkb19saXN0KCRxdWVyeSwgJyYnKSBhcyAkcGFydCkgew0KCQlpZigkcGFydCA9 PT0gJyonKSAkcGFydHMgPSBhcnJheSgpOw0KCQllbHNlaWYoJHBhcnQgPT09ICcjJykgdW5z ZXQoJHBhcnNlWydmcmFnbWVudCddKTsNCgkJZWxzZWlmKHN0cnBvcyhydHJpbSgkcGFydCwg Jz0nKSwgJz0nKSA9PT0gZmFsc2UpIHVuc2V0KCRwYXJ0c1t1cmxkZWNvZGUoJHBhcnQpXSk7 DQogCQllbHNlICRxc1tdID0gJHBhcnQ7DQoJfQ0KDQoJaWYoJHFzKSBwYXJzZV9zdHIoaW1w bG9kZSgnJicsICRxcyksICRxcyk7DQoNCglmb3JlYWNoKCRxcyBhcyAkcSA9PiAkdikgaWYo IWlzc2V0KCRzYW5pdGl6ZVskcV0pKSAkcGFydHNbJHFdID0gJHY7DQoJCWVsc2VpZihpc19h cnJheSgkdikpICRwYXJ0c1skcV0gPSBhcnJheV9tYXAoJ3N0cmlwU3BhY2UnLCAkdiwgYXJy YXlfZmlsbCgwLCBjb3VudCgkdiksIDEpKTsNCgkJZWxzZSAkcGFydHNbJHFdID0gc3RyaXBT cGFjZSgkdiwgMSk7DQoNCglpZihpc3NldCgkdHlwZSkpIHsNCgkJaWYoJGVuY29kZSA9ICgk dHlwZVswXSA9PT0gJyYnKSkgJHR5cGUgPSBzdWJzdHIoJHR5cGUsIDEpOw0KCQlpZihpc3Nl dCgkcGFydHNbJ3VybF8nLiR0eXBlXSkpICRwYXJ0c1skdHlwZV0gPSAkcGFydHNbJ3VybF8n LiR0eXBlXTsNCgkJaWYoIWlzc2V0KCRwYXJ0c1skdHlwZV0pKSByZXR1cm4gJyc7DQoJCWlm KGlzX2FycmF5KCRwYXJ0c1skdHlwZV0pKSAkcGFydHNbJHR5cGVdID0gaW1wbG9kZSgnLCcs ICRwYXJ0c1skdHlwZV0pOw0KCQlyZXR1cm4gKCRlbmNvZGUgPyB1cmxlbmNvZGUoJHBhcnRz WyR0eXBlXSkgOiBodG1sc3BlY2lhbGNoYXJzKCRwYXJ0c1skdHlwZV0pKTsNCgl9DQoNCgl1 bnNldCgkcGFydHNbJ3VybF9pZCddLCAkcGFydHNbJ3VybF9zJ10pOw0KDQoJaWYoJGN1c3Rv bSkgaWYoaXNfY2FsbGFibGUoJ2h0dHBfYnVpbGRfdXJsJykpIHsNCgkJCSRwYXJzZVsncXVl cnknXSA9ICgkcGFydHMgPyBsdHJpbShqb2luX3FzKCRwYXJ0cyksICc/JykgOiBudWxsKTsN CgkJCSR1cmwgPSBodHRwX2J1aWxkX3VybCgkcGFyc2UpOw0KCQl9IGVsc2Ugew0KCQkJJHVy bCA9ICR1cmwgJiYgaXNzZXQoJHBhcnNlWydxdWVyeSddKSA/IHN0cl9yZXBsYWNlKCc/Jy4k cGFyc2VbJ3F1ZXJ5J10sIGpvaW5fcXMoJHBhcnRzKSwgJHVybCkgOiAoaXNzZXQoJHBhcnNl WydmcmFnbWVudCddKSA/IHN0cl9yZXBsYWNlKCcjJy4kcGFyc2VbJ2ZyYWdtZW50J10sIGpv aW5fcXMoJHBhcnRzKS4nIycuJHBhcnNlWydmcmFnbWVudCddLCAkdXJsKSA6ICR1cmwuam9p bl9xcygkcGFydHMpKTsNCgkJfQ0KCWVsc2Ugew0KCQlpZigkY29udGV4dCB8fCAhZW1wdHko JHBhcnRzWydpZCddKSkgew0KCQkJaWYoJGNvbnRleHQgPT09ICdhcnRpY2xlJykgew0KCQkJ CSR1cmwgPSBwZXJtbGlua3VybCgkdGhpc2FydGljbGUpOw0KCQkJfQ0KCQkJZWxzZWlmKCRj b250ZXh0ID09PSAnbGluaycpIHsNCgkJCQkkdXJsID0gJHRoaXNsaW5rWyd1cmwnXTsNCgkJ CX0NCgkJCWVsc2VpZigkY29udGV4dCA9PT0gJ2ZpbGUnKSB7DQoJCQkJJHVybCA9IGZpbGVk b3dubG9hZHVybCgkdGhpc2ZpbGVbJ2lkJ10sICR0aGlzZmlsZVsnZmlsZW5hbWUnXSk7DQoJ CQl9DQoJCQllbHNlaWYoJGNvbnRleHQgPT09ICdpbWFnZScpIHsNCgkJCQkkdXJsID0gaW1h Z2VzcmN1cmwoJHRoaXNpbWFnZVsnaWQnXSwgJHRoaXNpbWFnZVsnZXh0J10pOw0KCQkJfQ0K CQkJZWxzZSAkdXJsID0gJHBhcnRzWydzJ10gPT0gJ2ZpbGVfZG93bmxvYWQnID8gZmlsZWRv d25sb2FkdXJsKCRwYXJ0c1snaWQnXSwgaXNzZXQoJHBhcnRzWydmaWxlbmFtZSddKSA/ICRw YXJ0c1snZmlsZW5hbWUnXSA6ICcnKSA6IHBlcm1saW5rdXJsX2lkKCRwYXJ0c1snaWQnXSk7 DQoJCQlmb3JlYWNoKGFycmF5KCdpZCcsJ3MnLCdjJywnY29udGV4dCcsJ3EnLCdtJywncGcn LCdwJywnbW9udGgnLCdhdXRob3InKSBhcyAka2V5KSB1bnNldCgkcGFydHNbJGtleV0pOw0K CQkJaWYoJHBhcnRzKSAkdXJsIC49IHN0cnBvcygkdXJsLCAnPycpICE9PSBmYWxzZSA/ICcm YW1wOycubHRyaW0oam9pbl9xcygkcGFydHMpLCAnPycpIDogam9pbl9xcygkcGFydHMpOw0K CQl9DQoJCWVsc2UgJHVybCA9IHBhZ2VsaW5rdXJsKCRwYXJ0cyk7DQoJCWlmKGlzc2V0KCRw YXJzZVsnc2NoZW1lJ10pICYmICRwYXJzZVsnc2NoZW1lJ10gIT0gJGh1WydzY2hlbWUnXSkg JHVybCA9IHByZWdfcmVwbGFjZSgnL14nLiRodVsnc2NoZW1lJ10uJy8nLCAkcGFyc2VbJ3Nj aGVtZSddLCAkdXJsKTsNCgkJaWYoaXNzZXQoJHBhcnNlWydmcmFnbWVudCddKSkgJHVybCAu PSAnIycuJHBhcnNlWydmcmFnbWVudCddOw0KCX0NCglyZXR1cm4gJHRoaW5nID09PSBudWxs ID8gJHVybCA6ICI8YSBocmVmPSckdXJsJz4iLnBhcnNlKCR0aGluZykuJzwvYT4nOw0KfQ0K DQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tDQpmdW5jdGlvbiBldGNfcGFyc2VfcmVxKCRyZXEsICRtb2RlKQ0Kew0K CWdsb2JhbCAkcHJlZnM7DQoJJG91dCA9IGFycmF5KCk7DQoJaWYgKCRyZXEpIHsNCgkJZXh0 cmFjdChjaG9wVXJsKCRyZXEpKTsNCg0KCQkvL2ZpcnN0IHdlIHNuaWZmIG91dCBzb21lIG9m IHRoZSBwcmVzZXQgdXJsIHNjaGVtZXMNCgkJaWYgKHN0cmxlbigkdTEpKSB7DQoJCQlzd2l0 Y2goJHUxKSB7DQoJCQkJY2FzZSAnYXRvbSc6DQoJCQkJCSRvdXRbJ2ZlZWQnXSA9ICdhdG9t JzsgYnJlYWs7DQoJCQkJY2FzZSAncnNzJzoNCgkJCQkJJG91dFsnZmVlZCddID0gJ3Jzcyc7 IGJyZWFrOw0KDQoJCQkJLy8gdXJsZGVjb2RlKHN0cnRvbG93ZXIodXJsZW5jb2RlKCkpKSBs b29rcyB1Z2x5IGJ1dCBpcyB0aGUgb25seSB3YXkgdG8NCgkJCQkvLyBtYWtlIGl0IG11bHRp Ynl0ZS1zYWZlIHdpdGhvdXQgYnJlYWtpbmcgYmFja3dhcmRzLWNvbXBhdGliaWxpdHkNCgkJ CQljYXNlIHVybGRlY29kZShzdHJ0b2xvd2VyKHVybGVuY29kZShnVHh0KCdzZWN0aW9uJykp KSk6DQoJCQkJCSRvdXRbJ3MnXSA9ICR1MjsgYnJlYWs7DQoJCQkJY2FzZSB1cmxkZWNvZGUo c3RydG9sb3dlcih1cmxlbmNvZGUoZ1R4dCgnY2F0ZWdvcnknKSkpKToNCgkJCQkJaWYgKCR1 Mykgew0KCQkJCQkJJG91dFsnYyddID0gJHUzOw0KCQkJCQl9IGVsc2Ugew0KCQkJCQkJJG91 dFsnYyddID0gJHUyOw0KCQkJCQl9DQoJCQkJCWJyZWFrOw0KCQkJCWNhc2UgdXJsZGVjb2Rl KHN0cnRvbG93ZXIodXJsZW5jb2RlKGdUeHQoJ2F1dGhvcicpKSkpOg0KCQkJCQlpZiAoJHUz KSB7DQoJCQkJCQkkb3V0WydhdXRob3InXSA9ICR1MzsNCgkJCQkJfSBlbHNlIHsNCgkJCQkJ CSRvdXRbJ2F1dGhvciddID0gJHUyOw0KCQkJCQl9DQoJCQkJCWJyZWFrOw0KCQkJCWNhc2Ug dXJsZGVjb2RlKHN0cnRvbG93ZXIodXJsZW5jb2RlKGdUeHQoJ2ZpbGVfZG93bmxvYWQnKSkp KToNCgkJCQkJJG91dFsncyddID0gJ2ZpbGVfZG93bmxvYWQnOw0KCQkJCQkkb3V0WydpZCdd ID0gKCFlbXB0eSgkdTIpKSA/ICR1MiA6ICcnOw0KCQkJCQkkb3V0WydmaWxlbmFtZSddID0g KCFlbXB0eSgkdTMpKSA/ICR1MyA6ICcnOw0KCQkJCQlicmVhazsNCgkJCQlkZWZhdWx0Og0K CQkJCQkvLyB0aGVuIHNlZSBpZiB0aGUgcHJlZnMtZGVmaW5lZCBwZXJtbGluayBzY2hlbWUg aXMgdXNhYmxlDQoJCQkJCXN3aXRjaCAoJG1vZGUgLyokcHJlZnNbJ3Blcm1saW5rX21vZGUn XSovKSB7DQoJCQkJCQljYXNlICdzZWN0aW9uX2lkX3RpdGxlJzoNCgkJCQkJCQlpZiAoZW1w dHkoJHUyKSkgew0KCQkJCQkJCQkkb3V0WydzJ10gPSAkdTE7DQoJCQkJCQkJfQ0KCQkJCQkJ CWVsc2Ugew0KCQkJCQkJCQkkcnMgPSBsb29rdXBCeUlEU2VjdGlvbigkdTIsICR1MSk7DQoJ CQkJCQkJCSRvdXRbJ3MnXSA9IEAkcnNbJ1NlY3Rpb24nXTsNCgkJCQkJCQkJJG91dFsnaWQn XSA9IEAkcnNbJ0lEJ107DQoJCQkJCQkJCSRvdXRbJ3VybF9zJ10gPSAkdTE7DQoJCQkJCQkJ CSRvdXRbJ3VybF9pZCddID0gJHUyOw0KCQkJCQkJCX0NCgkJCQkJCQlicmVhazsNCgkJCQkJ CWNhc2UgJ3llYXJfbW9udGhfZGF5X3RpdGxlJzoNCgkJCQkJCQlpZiAoZW1wdHkoJHUyKSkg ew0KCQkJCQkJCQkkb3V0WydzJ10gPSAkdTE7DQoJCQkJCQkJfQ0KCQkJCQkJCWVsc2VpZiAo ZW1wdHkoJHU0KSl7DQoJCQkJCQkJCSRtb250aCA9ICIkdTEtJHUyIjsNCgkJCQkJCQkJaWYg KCFlbXB0eSgkdTMpKSAkbW9udGguPSAiLSR1MyI7DQoJCQkJCQkJCWlmIChwcmVnX21hdGNo KCcvXGQrLVxkKyg/Oi1cZCspPy8nLCAkbW9udGgpKSB7DQoJCQkJCQkJCQkkb3V0Wydtb250 aCddID0gJG1vbnRoOw0KCQkJCQkJCQkJJG91dFsncyddID0gJ2RlZmF1bHQnOw0KCQkJCQkJ CQl9DQoJCQkJCQkJfWVsc2V7DQoJCQkJCQkJCSR3aGVuID0gIiR1MS0kdTItJHUzIjsNCgkJ CQkJCQkJJHJzID0gbG9va3VwQnlEYXRlVGl0bGUoJHdoZW4sJHU0KTsNCgkJCQkJCQkJJG91 dFsnaWQnXSA9ICghZW1wdHkoJHJzWydJRCddKSkgPyAkcnNbJ0lEJ10gOiAnJzsNCgkJCQkJ CQkJJG91dFsncyddID0gKCFlbXB0eSgkcnNbJ1NlY3Rpb24nXSkpID8gJHJzWydTZWN0aW9u J10gOiAnJzsNCgkJCQkJCQl9DQoJCQkJCQkJYnJlYWs7DQoJCQkJCQljYXNlICdzZWN0aW9u X3RpdGxlJzoNCgkJCQkJCQlpZiAoZW1wdHkoJHUyKSkgew0KCQkJCQkJCQkkb3V0WydzJ10g PSAkdTE7DQoJCQkJCQkJfQ0KCQkJCQkJCWVsc2Ugew0KCQkJCQkJCQkkcnMgPSBsb29rdXBC eVRpdGxlU2VjdGlvbigkdTIsJHUxKTsNCgkJCQkJCQkJJG91dFsnaWQnXSA9IGlzc2V0KCRy c1snSUQnXSkgPyAkcnNbJ0lEJ10gOiAnJzsNCgkJCQkJCQkJJG91dFsncyddID0gaXNzZXQo JHJzWydTZWN0aW9uJ10pID8gJHJzWydTZWN0aW9uJ10gOiAnJzsNCgkJCQkJCQl9DQoJCQkJ CQkJYnJlYWs7DQoJCQkJCQljYXNlICd0aXRsZV9vbmx5JzoNCgkJCQkJCQkkcnMgPSBsb29r dXBCeVRpdGxlKCR1MSk7DQoJCQkJCQkJJG91dFsnaWQnXSA9IEAkcnNbJ0lEJ107DQoJCQkJ CQkJJG91dFsncyddID0gKGVtcHR5KCRyc1snU2VjdGlvbiddKSA/ICR1MSA6ICRyc1snU2Vj dGlvbiddKTsNCgkJCQkJCQlicmVhazsNCgkJCQkJCWNhc2UgJ2lkX3RpdGxlJzoNCgkJCQkJ CQlpZiAoaXNfbnVtZXJpYygkdTEpKQ0KCQkJCQkJCXsNCgkJCQkJCQkJJHJzID0gbG9va3Vw QnlJRCgkdTEpOw0KCQkJCQkJCQkkb3V0Wyd1cmxfaWQnXSA9ICR1MTsNCgkJCQkJCQkJJG91 dFsnaWQnXSA9ICghZW1wdHkoJHJzWydJRCddKSkgPyAkcnNbJ0lEJ10gOiAnJzsNCgkJCQkJ CQkJJG91dFsncyddID0gKCFlbXB0eSgkcnNbJ1NlY3Rpb24nXSkpID8gJHJzWydTZWN0aW9u J10gOiAnJzsNCgkJCQkJCQl9ZWxzZXsNCgkJCQkJCQkJLy8gV2UgZG9uJ3Qgd2FudCB0byBt aXNzIHRoZSAvc2VjdGlvbi8gcGFnZXMNCgkJCQkJCQkJJG91dFsncyddPSAkdTE7DQoJCQkJ CQkJfQ0KCQkJCQkJCWJyZWFrOw0KCQkJCQl9DQoJCQkJCWJyZWFrOyAvLyBwcmVmcy1kZWZp bmVkIHBlcm1saW5rIHNjaGVtZSBjYXNlDQoJCQl9DQoJCX0gZWxzZSB7DQoJCQkkb3V0Wydz J10gPSAnZGVmYXVsdCc7DQoJCX0NCgl9DQoNCgkvLyBSZXNvbHZlIEF1dGhvcklEIGZyb20g QXV0aG9ybmFtZQ0KCWlmIChpc3NldCgkb3V0WydhdXRob3InXSkpDQoJew0KCQkkbmFtZSA9 IHNhZmVfZmllbGQoJ25hbWUnLCAndHhwX3VzZXJzJywgIlJlYWxOYW1lIGxpa2UgJyIuZG9T bGFzaCgkb3V0WydhdXRob3InXSkuIiciKTsNCgkJJG91dFsnYXV0aG9yJ10gPSAkbmFtZSA/ ICRuYW1lIDogJyc7DQoJfQ0KDQoJJG91dFsnaWQnXSA9ICFlbXB0eSgkb3V0WydpZCddKSA/ IGludHZhbCgkb3V0WydpZCddKSA6ICcnOw0KCSRvdXRbJ3MnXSA9IChlbXB0eSgkb3V0Wydz J10pKSA/ICdkZWZhdWx0JyA6ICRvdXRbJ3MnXTsNCg0KCXJldHVybiAkb3V0Ow0KfSI7czo0 OiJ0eXBlIjtzOjE6IjAiO3M6NToib3JkZXIiO3M6MToiNSI7czo1OiJmbGFncyI7czoxOiIw IjtzOjQ6ImhlbHAiO3M6MTk2MDoiPHA+VGhpcyB2ZXJ5IHNpbXBsZSBwbHVnaW4gd2lsbCB0 YWtlIGFuIDxzdHJvbmc+dXJsPC9zdHJvbmc+IGFuZCBhcHBlbmQgKG9yIHJld3JpdGUpIHNv bWUgPHN0cm9uZz5xdWVyeTwvc3Ryb25nPiBzdHJpbmcgdG8gaXQuIFRoZSByZXN1bHRpbmcg dXJsIHdpbGwgcmVzcGVjdCB0aGUgY2hvc2VuIHBlcm1hbGluayBtb2RlLCBsaWtlIHRoaXM6 PC9wPgoKPHByZT48Y29kZT4mbHQ7dHhwOmV0Y191cmwgdXJsPSZxdW90O2h0dHA6Ly9teS53 ZWIuc2l0ZS9zZWN0aW9uL3RhZy8/cT1ldGMmYW1wO3BnPTImcXVvdDsgcXVlcnk9JnF1b3Q7 cGc9MyZxdW90OyAvJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+d2lsbCBwcm9kdWNlIDxjb2Rl Pmh0dHA6Ly9teS53ZWIuc2l0ZS90YWcvP3E9ZXRjJmFtcDtwZz0zPC9jb2RlPiBpbiA8Y29k ZT4vc2VjdGlvbi90aXRsZTwvY29kZT4gbW9kZSwgYW5kIDxjb2RlPmh0dHA6Ly9teS53ZWIu c2l0ZS9pbmRleC5waHA/cz10YWcmcT1ldGMmYW1wO3BnPTM8L2NvZGU+IGluIG1lc3N5IG1v ZGUuPC9wPgoKCTxwPlNlbWFudGljIHR4cCBwYXJhbWV0ZXJzIChsaWtlIHNlY3Rpb24gb3Ig Y2F0ZWdvcnkpIHdpbGwgaGVuY2UgcmVjZWl2ZSBhIHNwZWNpYWwgdHJlYXRtZW50LCByZXNw ZWN0aW5nIHRoZSBjaG9zZW4gcGVybWFsaW5rIG1vZGUuPC9wPgoKCTxoND5BdHRyaWJ1dGVz PC9oND4KCgk8dWw+CgkJPGxpPjxzdHJvbmc+dXJsPC9zdHJvbmc+OiBVUkwgdG8gcmV3cml0 ZSwgZGVmYXVsdCBpcyB0aGUgY3VycmVudCBwYWdlIFVSTC48L2xpPgoJCTxsaT48c3Ryb25n PmNvbnRleHQ8L3N0cm9uZz46IGFydGljbGUsIGZpbGUsIGltYWdlIG9yIGxpbmsuIFRvIGJl IHVzZWQgaW4gYW4gYXJ0aWNsZSAoZmlsZSwgLi4uKSBmb3JtIGZvciBjdXN0b20gc2NoZW1l cyBjb21wYXRpYmlsaXR5IGFuZC9vciBmYXN0ZXIgcHJvY2Vzc2luZy4gRW1wdHkgYnkgZGVm YXVsdC48L2xpPgoJCTxsaT48c3Ryb25nPnF1ZXJ5PC9zdHJvbmc+OiA8Y29kZT4mYW1wOzwv Y29kZT4tc2VwYXJhdGVkIGxpc3Qgb2YgdG9rZW5zIDxjb2RlPmtleTwvY29kZT4gb3IgPGNv ZGU+a2V5PXZhbHVlPC9jb2RlPiwgbGlrZSB0aGlzOiA8Y29kZT5rZXkxPXZhbDEmYW1wO2tl eTImYW1wO2tleTM9dmFsMzwvY29kZT4uIElmIDxjb2RlPnZhbDwvY29kZT4gaXMgbm90IHNl dCwgaXQgd2lsbCBiZSByZW1vdmVkIGZyb20gPGNvZGU+dXJsPC9jb2RlPi48L2xpPgoJCTxs aT48c3Ryb25nPnNhbml0aXplPC9zdHJvbmc+OiBjb21tYS1zZXBhcmF0ZWQgVVJMIHBhcmFt ZXRlcnMgdGhhdCBzaG91bGQgYmUgdHJhbnNmb3JtZWQgZm9sbG93aW5nIHRoZSBzYW1lIHJ1 bGVzIGFzIGZvciBhcnRpY2xlIHRpdGxlcy48L2xpPgoJCTxsaT48c3Ryb25nPnR5cGU8L3N0 cm9uZz46IFVSTCBwYXJhbWV0ZXIgdG8gcmV0dXJuLCBkZWZhdWx0IG5vbmUuIElmIDxjb2Rl PnR5cGU8L2NvZGU+IHN0YXJ0cyB3aXRoIDxjb2RlPiZhbXA7PC9jb2RlPiwgaXQncyB2YWx1 ZSB3aWxsIGJlIFVSTC1lbmNvZGVkLjwvbGk+CgkJPGxpPjxzdHJvbmc+bW9kZTwvc3Ryb25n Pjogb3B0aW9uYWwgVFhQIDxjb2RlPnBlcm1saW5rIG1vZGU8L2NvZGU+IHVzZWQgdG8gcGFy c2UgPGNvZGU+dXJsPC9jb2RlPi48L2xpPgoJPC91bD4KCgk8aDQ+SGlzdG9yeTwvaDQ+CgoJ PHA+PHN0cm9uZz5WZXJzaW9uIDAuMTwvc3Ryb25nPjogaW5pdGlhbCByZWxlYXNlLjxiciAv Pgo8c3Ryb25nPlZlcnNpb24gMC4yPC9zdHJvbmc+OiB3b3JrcyBpbiBhbGwgdXJsIG1vZGVz IG5vdy4gQWRkZWQgPHN0cm9uZz5jdXN0b208L3N0cm9uZz4gYXR0cmlidXRlLjxiciAvPgo8 c3Ryb25nPlZlcnNpb24gMC4zPC9zdHJvbmc+OiBBZGRlZCA8c3Ryb25nPnNhbml0aXplPC9z dHJvbmc+IGFuZCA8c3Ryb25nPnR5cGU8L3N0cm9uZz4gYXR0cmlidXRlcywgcmVtb3ZlZCA8 c3Ryb25nPmN1c3RvbTwvc3Ryb25nPiBhdHRyaWJ1dGUuPC9wPiI7czozOiJtZDUiO3M6MzI6 Ijc1NDdkZmZmNTY4OTQ0ZmM3ZjBjMGY4ZjY1ZThhZjQ0Ijt9