< - oO6Ejm - Online PHP Interpreter & Debugging Tool
requires JavaScript to work.
esc to close
方倍工作室&
http://w...content-available-to-author-only...s.com/txw1958/&
CopyRight 2014 All Rights Reserved*/&(&TOKEN&, &cochunanbang&);(&caidan&,&请输入以下指令以获得更好的服务\n阵型部分\n【100】或【阵型编辑器】:阵型编辑器\n【106】或【6本阵型】:6本阵型\n【107】或【6本阵型】:7本阵型\n【108】或【6本阵型】:8本阵型\n【109】或【6本阵型】:9本阵型\n【110】或【6本阵型】:10本阵型\n视频部分\n【200】或【部落战】:部落战之最\n【208】或【8本视频】:8本视频\n【209】或【9本视频】:9本视频\n【210】或【10本视频】:10本视频\n数据部分\n【301】或【防御】:防御设施\n【302】或【军事】:军事设施\n【303】或【资源】:资源设施\n【304】或【兵种】:兵种\n【305】或【其他】:其他设施\n钻石加速时间查询请输入%+钻石数量\n例如输入:%90\n升级经验查询请输入exp+查询等级\n例如输入:exp90\n提交您满意的阵型可以直接回复图片即可\n回复【菜单】或【主页】:查看最新指令信息&);&&&$wechatObj = new wechatCallbackapiTest();if (!($_GET['echostr'])) {
$wechatObj-&responseMsg();}else{
$wechatObj-&valid();}&class wechatCallbackapiTest{
//验证签名
public function valid()
$echoStr = $_GET[&echostr&];
$signature = $_GET[&signature&];
$timestamp = $_GET[×tamp&];
$nonce = $_GET[&nonce&];
$token = TOKEN;
$tmpArr = ($token, $timestamp, $nonce);
($tmpArr);
$tmpStr = ($tmpArr);
$tmpStr = ($tmpStr);
if($tmpStr == $signature){
echo $echoStr;
//响应消息
public function responseMsg()
$postStr = $GLOBALS[&HTTP_RAW_POST_DATA&];
if (!($postStr)){
$this-&logger(&R &.$postStr);
$postObj = ($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
$RX_TYPE = ($postObj-&MsgType);&
//消息类型分离
switch ($RX_TYPE)
case &event&:
$result = $this-&receiveEvent($postObj);
case &text&:
$result = $this-&receiveText($postObj);
case &image&:
$result = $this-&receiveImage($postObj);
case &location&:
//$result = $this-&receiveLocation($postObj);
case &voice&:
//$result = $this-&receiveVoice($postObj);
case &video&:
//$result = $this-&receiveVideo($postObj);
case &link&:
//$result = $this-&receiveLink($postObj);
$result = &请输入正确的指令&.$RX_TYPE;
$this-&logger(&T &.$result);
echo $result;
}else {
//接收事件消息
private function receiveEvent($object)
$content = &&;
switch ($object-&Event)
case &subscribe&:
$content = &欢迎关注湖南帮部落微信公众号\n&.caidan;
$content .= (!($object-&EventKey))?(&\n来自二维码场景 &.(&qrscene_&,&&,$object-&EventKey)):&&;
case &unsubscribe&:
$content = &成功取消关注湖南帮部落微信公众号&;
case &SCAN&:
//$content = &扫描场景 &.$object-&EventK
case &CLICK&:
switch ($object-&EventKey)&
case &COMPANY&:
$content = array();&
$content[] = array(&Title&=&&多图文1标题&, &Description&=&&&, &PicUrl&=&&http://d...content-available-to-author-only...i.com/weixin/weather/icon/cartoon.jpg&, &Url& =&&http://m...content-available-to-author-only...s.com/?u=txw1958&);&
$content = &点击菜单:&.$object-&EventK&
case &LOCATION&:
//$content = &上传位置:纬度 &.$object-&Latitude.&;经度 &.$object-&L
case &VIEW&:
//$content = &跳转链接 &.$object-&EventK
case &MASSSENDJOBFINISH&:
//$content = &消息ID:&.$object-&MsgID.&,结果:&.$object-&Status.&,粉丝数:&.$object-&TotalCount.&,过滤:&.$object-&FilterCount.&,发送成功:&.$object-&SentCount.&,发送失败:&.$object-&ErrorC
//$content = &receive a new event: &.$object-&E
if(($content)){
if (($content[0])){
$result = $this-&transmitNews($object, $content);
}else if (($content['MusicUrl'])){
$result = $this-&transmitMusic($object, $content);
}else{
$result = $this-&transmitText($object, $content);
return $result;
}&&&public function calcGemsToTime($gems){ $seconds=0; $days=0; $hours=0; $minutes=0;& if($gems&=0) {
$result=&宝石数量输入错误!\n输入举例:想知道90颗钻石能够加速多长时间\n输入 【%90】 即可&;
return $result;
} else if($gems===0) {
$seconds=0; }else if($gems&=1) {
$seconds=246; }else { $gems=$gems+1; if($gems&=20)
$seconds=(($gems-1)*(3540/19)+60)-1; }else if($gems&=260)
$seconds=(($gems-20)*(82800/240)+3600)-1; }else
$seconds=(($gems-260)*(518400/740)+86400)-1;
} $gems=$gems-1; } $days=($seconds/(24*60*60)); $seconds=$seconds%(24*60*60); $hours=($seconds/(60*60)); $seconds=$seconds%(60*60); $minutes=($seconds/60); $seconds=$seconds%60; $result=(string)$gems.&个钻石可以加速&.(string)$days.&天&.(string)$hours.&时&.(string)$minutes.&分&.(string)$seconds.&秒&; return $result;}&&public function calcTimeToGems($h){& $res=0; $sec=$h*3600;if($sec&0)
$result=&时间输入错误!\n输入举例:想知道加速12小时30分钟需要多少钻石\n输入【spd12.5即可】&;
return $result; }else if($sec===0)
$res=0; }else if($sec&=60)
$res=1; }else if($sec&=3600)
$res=(($sec-60)/(3540/19)+1); }else if($sec&=86400)
$res=(($sec-3600)/((82800/240)+20); }else
$res=(($sec-86400)/(518400/740)+260); }
$result=&加速&.(string)$h.&小时需要【&.(string)$res.&】个宝石&;
return $result; }&public function calcupgradeexp($grade){
$currentexp=0;
$totalexp=0;&
if($grade&1||$grade&300)
$result=&等级输入错误,请输入正确的等级,最低1级最高不超过300级。\n例如:\n查询100级升级经验,输入【exp100】即可&;
return $result;
else if($grade&=200)
$currentexp=($grade-1)*50;
$totalexp=$grade*($grade-1)*25;
else if($grade&=300)
$currentexp=9950+($grade-200)*500;
$totalexp=995000+($grade-200)*9950+($grade-200)*($grade-201)*250;
$result=(string)$grade.&级升级经验是【&.(string)$currentexp.&】\n升至&.(string)$grade.&级需要经验值【&.(string)$totalexp.&】&;
return $result;& }&&&&&&&&&
//接收文本消息
private function receiveText($object)
$keyword = (($object-&Content));
//多客服人工回复模式
if (($keyword, &您好&) || ($keyword, &你好&) || ($keyword, &在吗&)){
//$result = $this-&transmitService($object);
//自动回复模式
else{
if (($keyword, &菜单&) || ($keyword, &帮助&) || ($keyword, &caidan&)){
$content = caidan;&
}else if (($keyword, &%&)){
//钻石2时间
$gems=(int)($keyword,1);
//$gems=100;
$content=$this-&calcGemsToTime($gems);
}else if (($keyword, &exp&)){
//等级经验
$grade=(int)($keyword,3);
//$grade=100;
$content=$this-&calcupgradeexp($grade);
}else if (($keyword, &spd&)){
//时间2钻石
$time=(float)($keyword,3);
$content=$this-&calcTimeToGems($time);
}else if ($keyword===&100& ||$keyword===&阵型编辑器& ){
$content = ();
$content[] = (&Title&=&&阵型编辑器&, &Description&=&&&, &PicUrl&=&&http://1...content-available-to-author-only...p.com/layoutedit.png&, &Url& =&&http://m...content-available-to-author-only...q.com/s?__biz=MzAxMjYxNTkzMQ==&mid=&idx=1&sn=fea18c2fa7bfec#rd&);
}else if ($keyword===&106& ||$keyword===&6本阵型& ){
$content = ();
$content[] = (&Title&=&&6本部落战阵型&, &Description&=&&&, &PicUrl&=&&http://1...content-available-to-author-only...p.com/coc.jpg&, &Url& =&&http://m...content-available-to-author-only...q.com/s?__biz=MzAxMjYxNTkzMQ==&mid=&idx=1&sn=d0bfcac43c0f3&scene=18#rd&);
$content[] = (&Title&=&&6本护资源阵型&, &Description&=&&&, &PicUrl&=&&http://1...content-available-to-author-only...p.com/logo2.jpg&, &Url& =&&http://m...content-available-to-author-only...q.com/s?__biz=MzAxMjYxNTkzMQ==&mid=&idx=2&sn=a423dd8c1ceeec363eee596&scene=18#rd&);
}else if ($keyword===&107& ||$keyword===&7本阵型& ){
$content = ();
$content[] = (&Title&=&&7本部落战阵型&, &Description&=&&&, &PicUrl&=&&http://1...content-available-to-author-only...p.com/coc.jpg&, &Url& =&&http://m...content-available-to-author-only...q.com/s?__biz=MzAxMjYxNTkzMQ==&mid=&idx=1&sn=b8cbab618b6fa989abb0b&scene=18#rd&);
$content[] = (&Title&=&&7本护资源阵型&, &Description&=&&&, &PicUrl&=&&http://1...content-available-to-author-only...p.com/logo2.jpg&, &Url& =&&http://m...content-available-to-author-only...q.com/s?__biz=MzAxMjYxNTkzMQ==&mid=&idx=2&sn=a477bb8e953febc4bcb940ffae7970fb&scene=18#rd&);
}else if ($keyword===&108& ||$keyword===&8本阵型& ){
$content = ();
$content[] = (&Title&=&&8本部落战阵型&, &Description&=&&&, &PicUrl&=&&http://1...content-available-to-author-only...p.com/coc.jpg&, &Url& =&&http://m...content-available-to-author-only...q.com/s?__biz=MzAxMjYxNTkzMQ==&mid=&idx=1&sn=b6f1a39c620e0d6ab78a42b70bc30c6a&scene=18#rd&);
$content[] = (&Title&=&&8本护资源阵型&, &Description&=&&&, &PicUrl&=&&http://1...content-available-to-author-only...p.com/logo2.jpg&, &Url& =&&http://m...content-available-to-author-only...q.com/s?__biz=MzAxMjYxNTkzMQ==&mid=&idx=2&sn=aff7bceb025f&scene=18#rd&);
}else if ($keyword===&109& ||$keyword===&9本阵型& ){
$content = ();
$content[] = (&Title&=&&9本部落战阵型&, &Description&=&&&, &PicUrl&=&&http://1...content-available-to-author-only...p.com/coc.jpg&, &Url& =&&http://m...content-available-to-author-only...q.com/s?__biz=MzAxMjYxNTkzMQ==&mid=&idx=1&sn=ba99c98f#rd&);
$content[] = (&Title&=&&9本护资源阵型&, &Description&=&&&, &PicUrl&=&&http://1...content-available-to-author-only...p.com/logo2.jpg&, &Url& =&&http://m...content-available-to-author-only...q.com/s?__biz=MzAxMjYxNTkzMQ==&mid=&idx=2&sn=b41816ccb871fe7bedc43#rd&);
}else if ($keyword===&110& ||$keyword===&10本阵型& ){
//10本阵型
$content = ();
$content[] = (&Title&=&&10本部落战阵型&, &Description&=&&&, &PicUrl&=&&http://1...content-available-to-author-only...p.com/coc.jpg&, &Url& =&&http://m...content-available-to-author-only...q.com/s?__biz=MzAxMjYxNTkzMQ==&mid=&idx=1&sn=6ef26abd6ea556c83b44#rd&);
$content[] = (&Title&=&&10本护资源阵型&, &Description&=&&&, &PicUrl&=&&http://1...content-available-to-author-only...p.com/logo2.jpg&, &Url& =&&http://m...content-available-to-author-only...q.com/s?__biz=MzAxMjYxNTkzMQ==&mid=&idx=2&sn=2aeea08ce989d74e1913d4#rd&);
}else if ($keyword===&200& ||$keyword===&部落战& ){
//部落战之最
$content = ();
$content[] = (&Title&=&&部作战之最经典的战役&, &Description&=&&收集部落战之最&, &PicUrl&=&&http://1...content-available-to-author-only...p.com/LOGO1.jpg&, &Url& =&&http://m...content-available-to-author-only...q.com/s?__biz=MzAxMjYxNTkzMQ==&mid=&idx=1&sn=d775e6aa79ecf#rd&);
$content[] = (&Title&=&&部作战之最英勇的进攻&, &Description&=&&&, &PicUrl&=&&http://1...content-available-to-author-only...p.com/touxiang.jpg&, &Url& =&&http://m...content-available-to-author-only...q.com/s?__biz=MzAxMjYxNTkzMQ==&mid=&idx=2&sn=5caa7ea69e9f24e241e16b4#rd&);
$content[] = (&Title&=&&部落战之最顽强的防御&, &Description&=&&&, &PicUrl&=&&http://1...content-available-to-author-only...p.com/touxiang.jpg&, &Url& =&&http://m...content-available-to-author-only...q.com/s?__biz=MzAxMjYxNTkzMQ==&mid=&idx=3&sn=314127cbb568b5ba8efbf81#rd&);
}else if ($keyword===&208& ||$keyword===&8本视频& ){
$content = ();
$content[] = (&Title&=&&8本-龙流&, &Description&=&&各种8本经典三星流视频&, &PicUrl&=&&http://1...content-available-to-author-only...p.com/long.jpg&, &Url& =&&http://m...content-available-to-author-only...q.com/s?__biz=MzAxMjYxNTkzMQ==&mid=&idx=1&sn=2fbae7ee904b5#rd&);
$content[] = (&Title&=&&8本-猪流&, &Description&=&&&, &PicUrl&=&&http://1...content-available-to-author-only...p.com/zhu.jpg&, &Url& =&&http://m...content-available-to-author-only...q.com/s?__biz=MzAxMjYxNTkzMQ==&mid=&idx=2&sn=dd72ef809af2d60db56083#rd&);
$content[] = (&Title&=&&8本-石法皮卡流&, &Description&=&&&, &PicUrl&=&&http://1...content-available-to-author-only...p.com/pika.jpg&, &Url& =&&http://m...content-available-to-author-only...q.com/s?__biz=MzAxMjYxNTkzMQ==&mid=&idx=3&sn=146dcf97edc#rd&);
$content[] = (&Title&=&&8本-其他&, &Description&=&&&, &PicUrl&=&&http://1...content-available-to-author-only...p.com/touxiang.jpg&, &Url& =&&http://m...content-available-to-author-only...q.com/s?__biz=MzAxMjYxNTkzMQ==&mid=&idx=4&sn=c54cf352a382f#rd&);
}else if ($keyword===&209& ||$keyword===&9本视频& ){
$content = ();
$content[] = (&Title&=&&9本-石狗球&, &Description&=&&各种9本经典三星流视频&, &PicUrl&=&&http://1...content-available-to-author-only...p.com/shifagouqiu.jpg&, &Url& =&&http://m...content-available-to-author-only...q.com/s?__biz=MzAxMjYxNTkzMQ==&mid=&idx=1&sn=e5aa1bbbb9f9c4c584f6e9#rd&);
$content[] = (&Title&=&&9本-石猪流&, &Description&=&&&, &PicUrl&=&&http://1...content-available-to-author-only...p.com/zhu.jpg&, &Url& =&&http://m...content-available-to-author-only...q.com/s?__biz=MzAxMjYxNTkzMQ==&mid=&idx=2&sn=cb083cde143b#rd&);
$content[] = (&Title&=&&9本-石法皮卡流&, &Description&=&&&, &PicUrl&=&&http://1...content-available-to-author-only...p.com/pika.jpg&, &Url& =&&http://m...content-available-to-author-only...q.com/s?__biz=MzAxMjYxNTkzMQ==&mid=&idx=3&sn=dffb5f00ffa#rd&);
$content[] = (&Title&=&&9本-其他&, &Description&=&&&, &PicUrl&=&&http://1...content-available-to-author-only...p.com/touxiang.jpg&, &Url& =&&http://m...content-available-to-author-only...q.com/s?__biz=MzAxMjYxNTkzMQ==&mid=&idx=4&sn=e1ba7deece3#rd&);
}else if ($keyword===&210& ||$keyword===&10本视频& ){
//10本视频
$content = ();
$content[] = (&Title&=&&10本经典三星视频&, &Description&=&&各种10本经典三星视频&, &PicUrl&=&&http://1...content-available-to-author-only...p.com/coc.jpg&, &Url& =&&http://m...content-available-to-author-only...q.com/s?__biz=MzAxMjYxNTkzMQ==&mid=&idx=1&sn=ba81adb58caf482e6ba1e827fa21d48c#rd&);
}else if ($keyword===&301& ||$keyword===&防御& ){
//防御设施
$content = ();
$content[] = (&Title&=&&防御设施数据查询&, &Description&=&&&, &PicUrl&=&&http://1...content-available-to-author-only...p.com/coc.jpg&, &Url& =&&http://c...content-available-to-author-only...3.com/18291.html&);
}else if ($keyword===&302& ||$keyword===&军事&){
//军事设施
$content = ();
$content[] = (&Title&=&&军事设施数据查询&, &Description&=&&&, &PicUrl&=&&http://1...content-available-to-author-only...p.com/coc.jpg&, &Url& =&&http://c...content-available-to-author-only...3.com/52239.html&);
}else if ($keyword===&303& ||$keyword===&资源&){
//资源设施
$content = ();
$content[] = (&Title&=&&资源设施数据查询&, &Description&=&&&, &PicUrl&=&&http://1...content-available-to-author-only...p.com/coc.jpg&, &Url& =&&http://c...content-available-to-author-only...3.com/17841.html&);
}else if ($keyword===&304& ||$keyword===&兵种&){
$content = ();
$content[] = (&Title&=&&兵种及法术数据查询&, &Description&=&&&, &PicUrl&=&&http://1...content-available-to-author-only...p.com/coc.jpg&, &Url& =&&http://c...content-available-to-author-only...3.com/42037.html&);
}else if ($keyword===&305& ||$keyword===&其他&){
//其他设施
$content = ();
$content[] = (&Title&=&&其他设施数据查询&, &Description&=&&&, &PicUrl&=&&http://1...content-available-to-author-only...p.com/coc.jpg&, &Url& =&&http://c...content-available-to-author-only...3.com/35838.html&);
}else{
$content = &输入有误!\n&.caidan;
if(($content)){
if (($content[0]['PicUrl'])){
$result = $this-&transmitNews($object, $content);
}else if (($content['MusicUrl'])){
$result = $this-&transmitMusic($object, $content);
}else{
$result = $this-&transmitText($object, $content);
return $result;
//接收图片消息
private function receiveImage($object)
$content = &您的图片我们已经收到!感谢您的支持!&;
$result = $this-&transmitText($object, $content);
return $result;
//接收位置消息
private function receiveLocation($object)
$content = &你发送的是位置,纬度为:&.$object-&Location_X.&;经度为:&.$object-&Location_Y.&;缩放级别为:&.$object-&Scale.&;位置为:&.$object-&Label;
$result = $this-&transmitText($object, $content);
return $result;
//接收语音消息
private function receiveVoice($object)
if (($object-&Recognition) && !($object-&Recognition)){
$content = &你刚才说的是:&.$object-&Recognition;
$result = $this-&transmitText($object, $content);
}else{
$content = (&MediaId&=&$object-&MediaId);
$result = $this-&transmitVoice($object, $content);
return $result;
//接收视频消息
private function receiveVideo($object)
$content = (&MediaId&=&$object-&MediaId, &ThumbMediaId&=&$object-&ThumbMediaId, &Title&=&&&, &Description&=&&&);
$result = $this-&transmitVideo($object, $content);
return $result;
//接收链接消息
private function receiveLink($object)
$content = &你发送的是链接,标题为:&.$object-&Title.&;内容为:&.$object-&Description.&;链接地址为:&.$object-&Url;
$result = $this-&transmitText($object, $content);
return $result;
//回复文本消息
private function transmitText($object, $content)
$xmlTpl = &&xml&&ToUserName&&![CDATA[%s]]&&/ToUserName&&FromUserName&&![CDATA[%s]]&&/FromUserName&&CreateTime&%s&/CreateTime&&MsgType&&![CDATA[text]]&&/MsgType&&Content&&![CDATA[%s]]&&/Content&&/xml&&;
$result = ($xmlTpl, $object-&FromUserName, $object-&ToUserName, (), $content);
return $result;
//回复图片消息
private function transmitImage($object, $imageArray)
$itemTpl = &&Image&
&MediaId&&![CDATA[%s]]&&/MediaId&&/Image&&;&
$item_str = ($itemTpl, $imageArray['MediaId']);&
$xmlTpl = &&xml&&ToUserName&&![CDATA[%s]]&&/ToUserName&&FromUserName&&![CDATA[%s]]&&/FromUserName&&CreateTime&%s&/CreateTime&&MsgType&&![CDATA[image]]&&/MsgType&$item_str&/xml&&;&
$result = ($xmlTpl, $object-&FromUserName, $object-&ToUserName, ());
return $result;
//回复语音消息
private function transmitVoice($object, $voiceArray)
$itemTpl = &&Voice&
&MediaId&&![CDATA[%s]]&&/MediaId&&/Voice&&;&
$item_str = ($itemTpl, $voiceArray['MediaId']);&
$xmlTpl = &&xml&&ToUserName&&![CDATA[%s]]&&/ToUserName&&FromUserName&&![CDATA[%s]]&&/FromUserName&&CreateTime&%s&/CreateTime&&MsgType&&![CDATA[voice]]&&/MsgType&$item_str&/xml&&;&
$result = ($xmlTpl, $object-&FromUserName, $object-&ToUserName, ());
return $result;
//回复视频消息
private function transmitVideo($object, $videoArray)
$itemTpl = &&Video&
&MediaId&&![CDATA[%s]]&&/MediaId&
&ThumbMediaId&&![CDATA[%s]]&&/ThumbMediaId&
&Title&&![CDATA[%s]]&&/Title&
&Description&&![CDATA[%s]]&&/Description&&/Video&&;&
$item_str = ($itemTpl, $videoArray['MediaId'], $videoArray['ThumbMediaId'], $videoArray['Title'], $videoArray['Description']);&
$xmlTpl = &&xml&&ToUserName&&![CDATA[%s]]&&/ToUserName&&FromUserName&&![CDATA[%s]]&&/FromUserName&&CreateTime&%s&/CreateTime&&MsgType&&![CDATA[video]]&&/MsgType&$item_str&/xml&&;&
$result = ($xmlTpl, $object-&FromUserName, $object-&ToUserName, ());
return $result;
//回复图文消息
private function transmitNews($object, $newsArray)
if(!($newsArray)){
$itemTpl = &
&Title&&![CDATA[%s]]&&/Title&
&Description&&![CDATA[%s]]&&/Description&
&PicUrl&&![CDATA[%s]]&&/PicUrl&
&Url&&![CDATA[%s]]&&/Url&
$item_str = &&;
foreach ($newsArray as $item){
$item_str .= ($itemTpl, $item['Title'], $item['Description'], $item['PicUrl'], $item['Url']);
$xmlTpl = &&xml&&ToUserName&&![CDATA[%s]]&&/ToUserName&&FromUserName&&![CDATA[%s]]&&/FromUserName&&CreateTime&%s&/CreateTime&&MsgType&&![CDATA[news]]&&/MsgType&&ArticleCount&%s&/ArticleCount&&Articles&$item_str&/Articles&&/xml&&;&
$result = ($xmlTpl, $object-&FromUserName, $object-&ToUserName, (), ($newsArray));
return $result;
//回复音乐消息
private function transmitMusic($object, $musicArray)
$itemTpl = &&Music&
&Title&&![CDATA[%s]]&&/Title&
&Description&&![CDATA[%s]]&&/Description&
&MusicUrl&&![CDATA[%s]]&&/MusicUrl&
&HQMusicUrl&&![CDATA[%s]]&&/HQMusicUrl&&/Music&&;&
$item_str = ($itemTpl, $musicArray['Title'], $musicArray['Description'], $musicArray['MusicUrl'], $musicArray['HQMusicUrl']);&
$xmlTpl = &&xml&&ToUserName&&![CDATA[%s]]&&/ToUserName&&FromUserName&&![CDATA[%s]]&&/FromUserName&&CreateTime&%s&/CreateTime&&MsgType&&![CDATA[music]]&&/MsgType&$item_str&/xml&&;&
$result = ($xmlTpl, $object-&FromUserName, $object-&ToUserName, ());
return $result;
//回复多客服消息
private function transmitService($object)
$xmlTpl = &&xml&&ToUserName&&![CDATA[%s]]&&/ToUserName&&FromUserName&&![CDATA[%s]]&&/FromUserName&&CreateTime&%s&/CreateTime&&MsgType&&![CDATA[transfer_customer_service]]&&/MsgType&&/xml&&;
$result = ($xmlTpl, $object-&FromUserName, $object-&ToUserName, ());
return $result;
}&&&&&&&
//日志记录
private function logger($log_content)
if(($_SERVER['HTTP_APPNAME'])){
sae_set_display_errors(false);
sae_debug($log_content);
sae_set_display_errors(true);
}else if($_SERVER['REMOTE_ADDR'] != &127.0.0.1&){ //LOCAL
$max_size = 10000;
$log_filename = &log.xml&;
if(($log_filename) and ((($log_filename)) & $max_size)){($log_filename);}
($log_filename, ('H:i:s').& &.$log_content.&\r\n&, FILE_APPEND);
}}?&
PD9waHAKLyoKICAgIOaWueWAjeW3peS9nOWupAogICAgaHR0cDovL3cuLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLnMuY29tL3R4dzE5NTgvCiAgICBDb3B5UmlnaHQgMjAxNCBBbGwgUmlnaHRzIFJlc2VydmVkCiovCgpkZWZpbmUoIlRPS0VOIiwgImNvY2h1bmFuYmFuZyIpOwpkZWZpbmUoImNhaWRhbiIsIuivt+i+k+WFpeS7peS4i+aMh+S7pOS7peiOt+W+l+abtOWlveeahOacjeWKoVxu6Zi15Z6L6YOo5YiGXG7jgJAxMDDjgJHmiJbjgJDpmLXlnovnvJbovpHlmajjgJE66Zi15Z6L57yW6L6R5ZmoXG7jgJAxMDbjgJHmiJbjgJA25pys6Zi15Z6L44CROjbmnKzpmLXlnotcbuOAkDEwN+OAkeaIluOAkDbmnKzpmLXlnovjgJE6N+acrOmYteWei1xu44CQMTA444CR5oiW44CQNuacrOmYteWei+OAkTo45pys6Zi15Z6LXG7jgJAxMDnjgJHmiJbjgJA25pys6Zi15Z6L44CROjnmnKzpmLXlnotcbuOAkDExMOOAkeaIluOAkDbmnKzpmLXlnovjgJE6MTDmnKzpmLXlnotcbgrop4bpopHpg6jliIZcbuOAkDIwMOOAkeaIluOAkOmDqOiQveaImOOAkTrpg6jokL3miJjkuYvmnIBcbuOAkDIwOOOAkeaIluOAkDjmnKzop4bpopHjgJE6OOacrOinhumikVxu44CQMjA544CR5oiW44CQOeacrOinhumikeOAkTo55pys6KeG6aKRXG7jgJAyMTDjgJHmiJbjgJAxMOacrOinhumikeOAkToxMOacrOinhumikVxuCuaVsOaNrumDqOWIhlxu44CQMzAx44CR5oiW44CQ6Ziy5b6h44CROumYsuW+oeiuvuaWvVxu44CQMzAy44CR5oiW44CQ5Yab5LqL44CROuWGm+S6i+iuvuaWvVxu44CQMzAz44CR5oiW44CQ6LWE5rqQ44CROui1hOa6kOiuvuaWvVxu44CQMzA044CR5oiW44CQ5YW156eN44CROuWFteenjVxu44CQMzA144CR5oiW44CQ5YW25LuW44CROuWFtuS7luiuvuaWvVxuCumSu+efs+WKoOmAn+aXtumXtOafpeivouivt+i+k+WFpSUr6ZK755+z5pWw6YePXG7kvovlpoLovpPlhaU6JTkwXG7ljYfnuqfnu4/pqozmn6Xor6Lor7fovpPlhaVleHAr5p+l6K+i562J57qnXG7kvovlpoLovpPlhaXvvJpleHA5MFxuCuaPkOS6pOaCqOa7oeaEj+eahOmYteWei+WPr+S7peebtOaOpeWbnuWkjeWbvueJh+WNs+WPr1xu5Zue5aSN44CQ6I+c5Y2V44CR5oiW44CQ5Li76aG144CROuafpeeci+acgOaWsOaMh+S7pOS/oeaBryIpOwoKCgokd2VjaGF0T2JqID0gbmV3IHdlY2hhdENhbGxiYWNrYXBpVGVzdCgpOwppZiAoIWlzc2V0KCRfR0VUWydlY2hvc3RyJ10pKSB7CiAgICAkd2VjaGF0T2JqLT5yZXNwb25zZU1zZygpOwp9ZWxzZXsKICAgICR3ZWNoYXRPYmotPnZhbGlkKCk7Cn0KCmNsYXNzIHdlY2hhdENhbGxiYWNrYXBpVGVzdAp7CiAgICAvL+mqjOivgeetvuWQjQogICAgcHVibGljIGZ1bmN0aW9uIHZhbGlkKCkKICAgIHsKICAgICAgICAkZWNob1N0ciA9ICRfR0VUWyJlY2hvc3RyIl07CiAgICAgICAgJHNpZ25hdHVyZSA9ICRfR0VUWyJzaWduYXR1cmUiXTsKICAgICAgICAkdGltZXN0YW1wID0gJF9HRVRbInRpbWVzdGFtcCJdOwogICAgICAgICRub25jZSA9ICRfR0VUWyJub25jZSJdOwogICAgICAgICR0b2tlbiA9IFRPS0VOOwogICAgICAgICR0bXBBcnIgPSBhcnJheSgkdG9rZW4sICR0aW1lc3RhbXAsICRub25jZSk7CiAgICAgICAgc29ydCgkdG1wQXJyKTsKICAgICAgICAkdG1wU3RyID0gaW1wbG9kZSgkdG1wQXJyKTsKICAgICAgICAkdG1wU3RyID0gc2hhMSgkdG1wU3RyKTsKICAgICAgICBpZigkdG1wU3RyID09ICRzaWduYXR1cmUpewogICAgICAgICAgICBlY2hvICRlY2hvU3RyOwogICAgICAgICAgICBleGl0OwogICAgICAgIH0KICAgIH0KCiAgICAvL+WTjeW6lOa2iOaBrwogICAgcHVibGljIGZ1bmN0aW9uIHJlc3BvbnNlTXNnKCkKICAgIHsKICAgICAgICAkcG9zdFN0ciA9ICRHTE9CQUxTWyJIVFRQX1JBV19QT1NUX0RBVEEiXTsKICAgICAgICBpZiAoIWVtcHR5KCRwb3N0U3RyKSl7CiAgICAgICAgICAgICR0aGlzLT5sb2dnZXIoIlIgIi4kcG9zdFN0cik7CiAgICAgICAgICAgICRwb3N0T2JqID0gc2ltcGxleG1sX2xvYWRfc3RyaW5nKCRwb3N0U3RyLCAnU2ltcGxlWE1MRWxlbWVudCcsIExJQlhNTF9OT0NEQVRBKTsKICAgICAgICAgICAgJFJYX1RZUEUgPSB0cmltKCRwb3N0T2JqLT5Nc2dUeXBlKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAvL+a2iOaBr+exu+Wei+WIhuemuwogICAgICAgICAgICBzd2l0Y2ggKCRSWF9UWVBFKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBjYXNlICJldmVudCI6CiAgICAgICAgICAgICAgICAgICAgJHJlc3VsdCA9ICR0aGlzLT5yZWNlaXZlRXZlbnQoJHBvc3RPYmopOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAidGV4dCI6CiAgICAgICAgICAgICAgICAgICAgJHJlc3VsdCA9ICR0aGlzLT5yZWNlaXZlVGV4dCgkcG9zdE9iaik7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlICJpbWFnZSI6CiAgICAgICAgICAgICAgICAJJHJlc3VsdCA9ICR0aGlzLT5yZWNlaXZlSW1hZ2UoJHBvc3RPYmopOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAibG9jYXRpb24iOgogICAgICAgICAgICAgICAgLy8kcmVzdWx0ID0gJHRoaXMtPnJlY2VpdmVMb2NhdGlvbigkcG9zdE9iaik7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlICJ2b2ljZSI6CiAgICAgICAgICAgICAgICAvLyRyZXN1bHQgPSAkdGhpcy0+cmVjZWl2ZVZvaWNlKCRwb3N0T2JqKTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgInZpZGVvIjoKICAgICAgICAgICAgICAgIC8vJHJlc3VsdCA9ICR0aGlzLT5yZWNlaXZlVmlkZW8oJHBvc3RPYmopOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAibGluayI6CiAgICAgICAgICAgICAgICAvLyRyZXN1bHQgPSAkdGhpcy0+cmVjZWl2ZUxpbmsoJHBvc3RPYmopOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAkcmVzdWx0ID0gIuivt+i+k+WFpeato+ehrueahOaMh+S7pCIuJFJYX1RZUEU7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJHRoaXMtPmxvZ2dlcigiVCAiLiRyZXN1bHQpOwogICAgICAgICAgICBlY2hvICRyZXN1bHQ7CiAgICAgICAgfWVsc2UgewogICAgICAgICAgICBlY2hvICIiOwogICAgICAgICAgICBleGl0OwogICAgICAgIH0KICAgIH0KCiAgICAvL+aOpeaUtuS6i+S7tua2iOaBrwogICAgcHJpdmF0ZSBmdW5jdGlvbiByZWNlaXZlRXZlbnQoJG9iamVjdCkKICAgIHsKICAgICAgICAkY29udGVudCA9ICIiOwogICAgICAgIHN3aXRjaCAoJG9iamVjdC0+RXZlbnQpCiAgICAgICAgewogICAgICAgICAgICBjYXNlICJzdWJzY3JpYmUiOgogICAgICAgICAgICAkY29udGVudCA9ICLmrKLov47lhbPms6jmuZbljZfluK7pg6jokL3lvq7kv6HlhazkvJflj7dcbiIuY2FpZGFuOwogICAgICAgICAgICAgICAgJGNvbnRlbnQgLj0gKCFlbXB0eSgkb2JqZWN0LT5FdmVudEtleSkpPygiXG7mnaXoh6rkuoznu7TnoIHlnLrmma8gIi5zdHJfcmVwbGFjZSgicXJzY2VuZV8iLCIiLCRvYmplY3QtPkV2ZW50S2V5KSk6IiI7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAidW5zdWJzY3JpYmUiOgogICAgICAgICAgICAgICAgJGNvbnRlbnQgPSAi5oiQ5Yqf5Y+W5raI5YWz5rOo5rmW5Y2X5biu6YOo6JC95b6u5L+h5YWs5LyX5Y+3IjsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICJTQ0FOIjoKICAgICAgICAgICAgLy8kY29udGVudCA9ICLmiavmj4/lnLrmma8gIi4kb2JqZWN0LT5FdmVudEtleTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICJDTElDSyI6CiAgICAgICAgICAgIC8qCiAgICAgICAgICAgIHN3aXRjaCAoJG9iamVjdC0+RXZlbnRLZXkpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAiQ09NUEFOWSI6CgkJCQkJCSRjb250ZW50ID0gYXJyYXkoKTsKICAgICAgICAgICAgICAgICAgICAgICAgJGNvbnRlbnRbXSA9IGFycmF5KCJUaXRsZSI9PiLlpJrlm77mlocx5qCH6aKYIiwgIkRlc2NyaXB0aW9uIj0+IiIsICJQaWNVcmwiPT4iaHR0cDovL2QuLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLmkuY29tL3dlaXhpbi93ZWF0aGVyL2ljb24vY2FydG9vbi5qcGciLCAiVXJsIiA9PiJodHRwOi8vbS4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4ucy5jb20vP3U9dHh3MTk1OCIpOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICAkY29udGVudCA9ICLngrnlh7voj5zljZXvvJoiLiRvYmplY3QtPkV2ZW50S2V5OwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKi8KICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICJMT0NBVElPTiI6CiAgICAgICAgICAgIC8vJGNvbnRlbnQgPSAi5LiK5Lyg5L2N572u77ya57qs5bqmICIuJG9iamVjdC0+TGF0aXR1ZGUuIjvnu4/luqYgIi4kb2JqZWN0LT5Mb25naXR1ZGU7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAiVklFVyI6CiAgICAgICAgICAgIC8vJGNvbnRlbnQgPSAi6Lez6L2s6ZO+5o6lICIuJG9iamVjdC0+RXZlbnRLZXk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAiTUFTU1NFTkRKT0JGSU5JU0giOgogICAgICAgICAgICAvLyRjb250ZW50ID0gIua2iOaBr0lE77yaIi4kb2JqZWN0LT5Nc2dJRC4i77yM57uT5p6c77yaIi4kb2JqZWN0LT5TdGF0dXMuIu+8jOeyieS4neaVsO+8miIuJG9iamVjdC0+VG90YWxDb3VudC4i77yM6L+H5ruk77yaIi4kb2JqZWN0LT5GaWx0ZXJDb3VudC4i77yM5Y+R6YCB5oiQ5Yqf77yaIi4kb2JqZWN0LT5TZW50Q291bnQuIu+8jOWPkemAgeWksei0pe+8miIuJG9iamVjdC0+RXJyb3JDb3VudDsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAvLyRjb250ZW50ID0gInJlY2VpdmUgYSBuZXcgZXZlbnQ6ICIuJG9iamVjdC0+RXZlbnQ7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgICAgaWYoaXNfYXJyYXkoJGNvbnRlbnQpKXsKICAgICAgICAgICAgaWYgKGlzc2V0KCRjb250ZW50WzBdKSl7CiAgICAgICAgICAgICAgICAkcmVzdWx0ID0gJHRoaXMtPnRyYW5zbWl0TmV3cygkb2JqZWN0LCAkY29udGVudCk7CiAgICAgICAgICAgIH1lbHNlIGlmIChpc3NldCgkY29udGVudFsnTXVzaWNVcmwnXSkpewogICAgICAgICAgICAgICAgJHJlc3VsdCA9ICR0aGlzLT50cmFuc21pdE11c2ljKCRvYmplY3QsICRjb250ZW50KTsKICAgICAgICAgICAgfQogICAgICAgIH1lbHNlewogICAgICAgICAgICAkcmVzdWx0ID0gJHRoaXMtPnRyYW5zbWl0VGV4dCgkb2JqZWN0LCAkY29udGVudCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHJlc3VsdDsKICAgIH0KCiAgICAKICAgIApwdWJsaWMgZnVuY3Rpb24gY2FsY0dlbXNUb1RpbWUoJGdlbXMpCnsKCSRzZWNvbmRzPTA7CgkkZGF5cz0wOwoJJGhvdXJzPTA7CgkkbWludXRlcz0wOwogICAgCglpZigkZ2Vtczw9MCkKCXsKCQkkcmVzdWx0PSLlrp3nn7PmlbDph4/ovpPlhaXplJnor6/vvIFcbui+k+WFpeS4vuS+i++8muaDs+efpemBkzkw6aKX6ZK755+z6IO95aSf5Yqg6YCf5aSa6ZW/5pe26Ze0XG7ovpPlhaUg44CQJTkw44CRIOWNs+WPryI7CgkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJZWxzZSBpZigkZ2Vtcz09PTApCgl7CgkJJHNlY29uZHM9MDsKCX1lbHNlIGlmKCRnZW1zPD0xKQoJewoJCSRzZWNvbmRzPTI0NjsKCX1lbHNlCgl7CgkkZ2Vtcz0kZ2VtcysxOwoJaWYoJGdlbXM8PTIwKQoJCXsKCQkJJHNlY29uZHM9Y2VpbCgoJGdlbXMtMSkqKDM1NDAvMTkpKzYwKS0xOwoJfWVsc2UgaWYoJGdlbXM8PTI2MCkKCQl7CgkJCSRzZWNvbmRzPWNlaWwoKCRnZW1zLTIwKSooODI4MDAvMjQwKSszNjAwKS0xOwoJfWVsc2UKCQl7CgkJCSRzZWNvbmRzPWNlaWwoKCRnZW1zLTI2MCkqKDUxODQwMC83NDApKzg2NDAwKS0xOwoJCX0KCSRnZW1zPSRnZW1zLTE7Cgl9CgkkZGF5cz1mbG9vcigkc2Vjb25kcy8oMjQqNjAqNjApKTsKCSRzZWNvbmRzPSRzZWNvbmRzJSgyNCo2MCo2MCk7CgkkaG91cnM9Zmxvb3IoJHNlY29uZHMvKDYwKjYwKSk7Cgkkc2Vjb25kcz0kc2Vjb25kcyUoNjAqNjApOwoJJG1pbnV0ZXM9Zmxvb3IoJHNlY29uZHMvNjApOwoJJHNlY29uZHM9JHNlY29uZHMlNjA7CgkkcmVzdWx0PShzdHJpbmcpJGdlbXMuIuS4qumSu+efs+WPr+S7peWKoOmAnyIuKHN0cmluZykkZGF5cy4i5aSpIi4oc3RyaW5nKSRob3Vycy4i5pe2Ii4oc3RyaW5nKSRtaW51dGVzLiLliIYiLihzdHJpbmcpJHNlY29uZHMuIuenkiI7CglyZXR1cm4gJHJlc3VsdDsKfQogICAgCgpwdWJsaWMgZnVuY3Rpb24gY2FsY1RpbWVUb0dlbXMoJGgpCnsKICAgIAoJJHJlcz0wOwoJJHNlYz0kaCozNjAwOwppZigkc2VjPDApCgkJewoJCSRyZXN1bHQ9IuaXtumXtOi+k+WFpemUmeivr++8gVxu6L6T5YWl5Li+5L6L77ya5oOz55+l6YGT5Yqg6YCfMTLlsI/ml7YzMOWIhumSn+mcgOimgeWkmuWwkemSu+efs1xu6L6T5YWl44CQc3BkMTIuNeWNs+WPr+OAkSI7CiAgICAJcmV0dXJuICRyZXN1bHQ7Cgl9ZWxzZSBpZigkc2VjPT09MCkKCQl7CgkJJHJlcz0wOwoJfWVsc2UgaWYoJHNlYzw9NjApCgkJewoJCSRyZXM9MTsKCX1lbHNlIGlmKCRzZWM8PTM2MDApCgkJewoJCSRyZXM9Zmxvb3IoKCRzZWMtNjApLygzNTQwLzE5KSsxKTsKCX1lbHNlIGlmKCRzZWM8PTg2NDAwKQoJCXsKCQkkcmVzPWZsb29yKCgkc2VjLTM2MDApLygoODI4MDAvMjQwKSsyMCk7Cgl9ZWxzZQoJCXsKCQkkcmVzPWZsb29yKCgkc2VjLTg2NDAwKS8oNTE4NDAwLzc0MCkrMjYwKTsKCX0KICAgICRyZXN1bHQ9IuWKoOmAnyIuKHN0cmluZykkaC4i5bCP5pe26ZyA6KaB44CQIi4oc3RyaW5nKSRyZXMuIuOAkeS4quWuneefsyI7CiAgICByZXR1cm4gJHJlc3VsdDsKCX0KICAgCnB1YmxpYyBmdW5jdGlvbiBjYWxjdXBncmFkZWV4cCgkZ3JhZGUpCnsgICAgCiAgICAKICAgICRjdXJyZW50ZXhwPTA7CiAgICAkdG90YWxleHA9MDsKICAgIAogICAgaWYoJGdyYWRlPDF8fCRncmFkZT4zMDApCiAgICB7CiAgICAgICAgJHJlc3VsdD0i562J57qn6L6T5YWl6ZSZ6K+v77yM6K+36L6T5YWl5q2j56Gu55qE562J57qn77yM5pyA5L2OMee6p+acgOmrmOS4jei2hei/hzMwMOe6p+OAglxu5L6L5aaC77yaXG7mn6Xor6IxMDDnuqfljYfnuqfnu4/pqozvvIzovpPlhaXjgJBleHAxMDDjgJHljbPlj68iOwogICAgICAgIHJldHVybiAkcmVzdWx0OwogICAgCX0KICAgIGVsc2UgaWYoJGdyYWRlPD0yMDApCiAgICB7CiAgICAkY3VycmVudGV4cD0oJGdyYWRlLTEpKjUwOwogICAgJHRvdGFsZXhwPSRncmFkZSooJGdyYWRlLTEpKjI1OwogIAkJfQogICAgZWxzZSBpZigkZ3JhZGU8PTMwMCkKICAgIHsKICAgICRjdXJyZW50ZXhwPTk5NTArKCRncmFkZS0yMDApKjUwMDsKICAgICR0b3RhbGV4cD05OTUwMDArKCRncmFkZS0yMDApKjk5NTArKCRncmFkZS0yMDApKigkZ3JhZGUtMjAxKSoyNTA7CQogICAgCX0KICAgIAogICAgJHJlc3VsdD0oc3RyaW5nKSRncmFkZS4i57qn5Y2H57qn57uP6aqM5piv44CQIi4oc3RyaW5nKSRjdXJyZW50ZXhwLiLjgJFcbuWNh+iHsyIuKHN0cmluZykkZ3JhZGUuIue6p+mcgOimgee7j+mqjOWAvOOAkCIuKHN0cmluZykkdG90YWxleHAuIuOAkSI7CiAgICByZXR1cm4gJHJlc3VsdDsKICAgIAoJfQogICAgCiAgICAKICAgIAoKICAgIAogICAgCiAgICAKICAgIAogICAgCiAgICAvL+aOpeaUtuaWh+acrOa2iOaBrwogICAgcHJpdmF0ZSBmdW5jdGlvbiByZWNlaXZlVGV4dCgkb2JqZWN0KQogICAgewogICAgICAgICRrZXl3b3JkID0gc3RydG9sb3dlcih0cmltKCRvYmplY3QtPkNvbnRlbnQpKTsKICAgICAgICAvL+WkmuWuouacjeS6uuW3peWbnuWkjeaooeW8jwogICAgICAgIGlmIChzdHJzdHIoJGtleXdvcmQsICLmgqjlpb0iKSB8fCBzdHJzdHIoJGtleXdvcmQsICLkvaDlpb0iKSB8fCBzdHJzdHIoJGtleXdvcmQsICLlnKjlkJciKSl7CiAgICAgICAgICAgIC8vJHJlc3VsdCA9ICR0aGlzLT50cmFuc21pdFNlcnZpY2UoJG9iamVjdCk7CiAgICAgICAgfQogICAgICAgIC8v6Ieq5Yqo5Zue5aSN5qih5byPCiAgICAgICAgZWxzZXsKICAgICAgICBpZiAoc3Ryc3RyKCRrZXl3b3JkLCAi6I+c5Y2VIikgfHwgc3Ryc3RyKCRrZXl3b3JkLCAi5biu5YqpIikgfHwgc3Ryc3RyKCRrZXl3b3JkLCAiY2FpZGFuIikpewoJCQkvL+iPnOWNlQogICAgICAgICAgICAkY29udGVudCA9IGNhaWRhbjsKICAgICAgICAKICAgICAgICB9ZWxzZSBpZiAoc3Ryc3RyKCRrZXl3b3JkLCAiJSIpKXsgICAgICAgICAgICAgICAgICAgICAgICAgIC8v6ZK755+zMuaXtumXtAogICAgICAgICAgICAkZ2Vtcz0oaW50KXN1YnN0cigka2V5d29yZCwxKTsKICAgICAgICAgICAgLy8kZ2Vtcz0xMDA7CiAgICAgICAgICAgICRjb250ZW50PSR0aGlzLT5jYWxjR2Vtc1RvVGltZSgkZ2Vtcyk7CiAgICAgICAgfWVsc2UgaWYgKHN0cnN0cigka2V5d29yZCwgImV4cCIpKXsgICAgICAgICAgICAgICAgICAgICAgICAvL+etiee6p+e7j+mqjAogICAgICAgICAgICAkZ3JhZGU9KGludClzdWJzdHIoJGtleXdvcmQsMyk7CiAgICAgICAgICAgIC8vJGdyYWRlPTEwMDsKICAgICAgICAgICAgJGNvbnRlbnQ9JHRoaXMtPmNhbGN1cGdyYWRlZXhwKCRncmFkZSk7CiAgICAgICAgICAgIC8vKgogICAgICAgIH1lbHNlIGlmIChzdHJzdHIoJGtleXdvcmQsICJzcGQiKSl7ICAgICAgICAgICAgICAgICAgICAgICAvL+aXtumXtDLpkrvnn7MKICAgICAgICAgICAgJHRpbWU9KGZsb2F0KXN1YnN0cigka2V5d29yZCwzKTsKICAgICAgICAgICAgJGNvbnRlbnQ9JHRoaXMtPmNhbGNUaW1lVG9HZW1zKCR0aW1lKTsgICAgICAgIAogICAgICAgICAgICAvLyovCiAgICAgICAgfWVsc2UgaWYgKCRrZXl3b3JkPT09IjEwMCIgfHwka2V5d29yZD09PSLpmLXlnovnvJbovpHlmagiICl7CgkJCS8vNuacrOmYteWeiwogICAgICAgICAgICAkY29udGVudCA9IGFycmF5KCk7CiAgICAgICAgICAgICRjb250ZW50W10gPSBhcnJheSgiVGl0bGUiPT4i6Zi15Z6L57yW6L6R5ZmoIiwgIkRlc2NyaXB0aW9uIj0+IiIsICJQaWNVcmwiPT4iaHR0cDovLzEuLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLnAuY29tL2xheW91dGVkaXQucG5nIiwgIlVybCIgPT4iaHR0cDovL20uLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLnEuY29tL3M/X19iaXo9TXpBeE1qWXhOVGt6TVE9PSZtaWQ9MjA4MDk4NzMxJmlkeD0xJnNuPWZlYTE4YzJmODY3MThlOGI1YTdiZmVjMzQ5OWFkOWUyI3JkIik7CgkJfWVsc2UgaWYgKCRrZXl3b3JkPT09IjEwNiIgfHwka2V5d29yZD09PSI25pys6Zi15Z6LIiApewoJCQkvLzbmnKzpmLXlnosKICAgICAgICAgICAgJGNvbnRlbnQgPSBhcnJheSgpOwogICAgICAgICAgICAkY29udGVudFtdID0gYXJyYXkoIlRpdGxlIj0+IjbmnKzpg6jokL3miJjpmLXlnosiLCAiRGVzY3JpcHRpb24iPT4iIiwgIlBpY1VybCI9PiJodHRwOi8vMS4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4ucC5jb20vY29jLmpwZyIsICJVcmwiID0+Imh0dHA6Ly9tLi4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5xLmNvbS9zP19fYml6PU16QXhNall4TlRrek1RPT0mbWlkPTIwNzk2MzE4NiZpZHg9MSZzbj1kMGJmY2E5NzE1MTBkNjUwNDM4MjAwMmUwYzQzYzBmMyZzY2VuZT0xOCNyZCIpOwogICAgICAgICAgICAkY29udGVudFtdID0gYXJyYXkoIlRpdGxlIj0+IjbmnKzmiqTotYTmupDpmLXlnosiLCAiRGVzY3JpcHRpb24iPT4iIiwgIlBpY1VybCI9PiJodHRwOi8vMS4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4ucC5jb20vbG9nbzIuanBnIiwgIlVybCIgPT4iaHR0cDovL20uLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLnEuY29tL3M/X19iaXo9TXpBeE1qWXhOVGt6TVE9PSZtaWQ9MjA3OTYzMTg2JmlkeD0yJnNuPWE0MjNkZDhjMWMxNTI1ZTBhODNlZWVjMzYzZWVlNTk2JnNjZW5lPTE4I3JkIik7CgkJfWVsc2UgaWYgKCRrZXl3b3JkPT09IjEwNyIgfHwka2V5d29yZD09PSI35pys6Zi15Z6LIiApewoJCQkvLzfmnKzpmLXlnosKICAgICAgICAgICAgJGNvbnRlbnQgPSBhcnJheSgpOwogICAgICAgICAgICAkY29udGVudFtdID0gYXJyYXkoIlRpdGxlIj0+IjfmnKzpg6jokL3miJjpmLXlnosiLCAiRGVzY3JpcHRpb24iPT4iIiwgIlBpY1VybCI9PiJodHRwOi8vMS4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4ucC5jb20vY29jLmpwZyIsICJVcmwiID0+Imh0dHA6Ly9tLi4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5xLmNvbS9zP19fYml6PU16QXhNall4TlRrek1RPT0mbWlkPTIwNzk2MzMyMiZpZHg9MSZzbj1iOGNiYTM3OTU1ZjJiOTc3YjYxOGI2ZmE5ODlhYmIwYiZzY2VuZT0xOCNyZCIpOwogICAgICAgICAgICAkY29udGVudFtdID0gYXJyYXkoIlRpdGxlIj0+IjfmnKzmiqTotYTmupDpmLXlnosiLCAiRGVzY3JpcHRpb24iPT4iIiwgIlBpY1VybCI9PiJodHRwOi8vMS4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4ucC5jb20vbG9nbzIuanBnIiwgIlVybCIgPT4iaHR0cDovL20uLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLnEuY29tL3M/X19iaXo9TXpBeE1qWXhOVGt6TVE9PSZtaWQ9MjA3OTYzMzIyJmlkeD0yJnNuPWE0NzdiYjhlOTUzZmViYzRiY2I5NDBmZmFlNzk3MGZiJnNjZW5lPTE4I3JkIik7CiAgICAgICAgfWVsc2UgaWYgKCRrZXl3b3JkPT09IjEwOCIgfHwka2V5d29yZD09PSI45pys6Zi15Z6LIiApewoJCQkvLzjmnKzpmLXlnosKICAgICAgICAgICAgJGNvbnRlbnQgPSBhcnJheSgpOwogICAgICAgICAgICAkY29udGVudFtdID0gYXJyYXkoIlRpdGxlIj0+IjjmnKzpg6jokL3miJjpmLXlnosiLCAiRGVzY3JpcHRpb24iPT4iIiwgIlBpY1VybCI9PiJodHRwOi8vMS4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4ucC5jb20vY29jLmpwZyIsICJVcmwiID0+Imh0dHA6Ly9tLi4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5xLmNvbS9zP19fYml6PU16QXhNall4TlRrek1RPT0mbWlkPTIwNzk2MzM1NiZpZHg9MSZzbj1iNmYxYTM5YzYyMGUwZDZhYjc4YTQyYjcwYmMzMGM2YSZzY2VuZT0xOCNyZCIpOwogICAgICAgICAgICAkY29udGVudFtdID0gYXJyYXkoIlRpdGxlIj0+IjjmnKzmiqTotYTmupDpmLXlnosiLCAiRGVzY3JpcHRpb24iPT4iIiwgIlBpY1VybCI9PiJodHRwOi8vMS4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4ucC5jb20vbG9nbzIuanBnIiwgIlVybCIgPT4iaHR0cDovL20uLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLnEuY29tL3M/X19iaXo9TXpBeE1qWXhOVGt6TVE9PSZtaWQ9MjA3OTYzMzU2JmlkeD0yJnNuPWFmNjMyOGQxMzEyNzQ1ZjdiY2ViMDI1ZjcyMDE0MWUyJnNjZW5lPTE4I3JkIik7CiAgICAgICAgfWVsc2UgaWYgKCRrZXl3b3JkPT09IjEwOSIgfHwka2V5d29yZD09PSI55pys6Zi15Z6LIiApewoJCQkvLznmnKzpmLXlnosKICAgICAgICAgICAgJGNvbnRlbnQgPSBhcnJheSgpOwogICAgICAgICAgICAkY29udGVudFtdID0gYXJyYXkoIlRpdGxlIj0+IjnmnKzpg6jokL3miJjpmLXlnosiLCAiRGVzY3JpcHRpb24iPT4iIiwgIlBpY1VybCI9PiJodHRwOi8vMS4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4ucC5jb20vY29jLmpwZyIsICJVcmwiID0+Imh0dHA6Ly9tLi4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5xLmNvbS9zP19fYml6PU16QXhNall4TlRrek1RPT0mbWlkPTIwNzk2MzQwNyZpZHg9MSZzbj02ODgwOGUyNzc0MTZiYTk5Yzk4ZjgyNzRlNDcyYjg5NSNyZCIpOwogICAgICAgICAgICAkY29udGVudFtdID0gYXJyYXkoIlRpdGxlIj0+IjnmnKzmiqTotYTmupDpmLXlnosiLCAiRGVzY3JpcHRpb24iPT4iIiwgIlBpY1VybCI9PiJodHRwOi8vMS4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4ucC5jb20vbG9nbzIuanBnIiwgIlVybCIgPT4iaHR0cDovL20uLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLnEuY29tL3M/X19iaXo9TXpBeE1qWXhOVGt6TVE9PSZtaWQ9MjA3OTYzNDA3JmlkeD0yJnNuPTkwNzY4OTE4MDg1YjQxODE2Y2NiODcxZmU3YmVkYzQzI3JkIik7CiAgICAgICAgfWVsc2UgaWYgKCRrZXl3b3JkPT09IjExMCIgfHwka2V5d29yZD09PSIxMOacrOmYteWeiyIgKXsKCQkJLy8xMOacrOmYteWeiwogICAgICAgICAgICAkY29udGVudCA9IGFycmF5KCk7CiAgICAgICAgICAgICRjb250ZW50W10gPSBhcnJheSgiVGl0bGUiPT4iMTDmnKzpg6jokL3miJjpmLXlnosiLCAiRGVzY3JpcHRpb24iPT4iIiwgIlBpY1VybCI9PiJodHRwOi8vMS4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4ucC5jb20vY29jLmpwZyIsICJVcmwiID0+Imh0dHA6Ly9tLi4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5xLmNvbS9zP19fYml6PU16QXhNall4TlRrek1RPT0mbWlkPTIwNzk2MzQ0MyZpZHg9MSZzbj02ZWYyNmFiZDZlNDk5ODE0MjdiMTgwYTU1NmM4M2I0NCNyZCIpOwogICAgICAgICAgICAkY29udGVudFtdID0gYXJyYXkoIlRpdGxlIj0+IjEw5pys5oqk6LWE5rqQ6Zi15Z6LIiwgIkRlc2NyaXB0aW9uIj0+IiIsICJQaWNVcmwiPT4iaHR0cDovLzEuLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLnAuY29tL2xvZ28yLmpwZyIsICJVcmwiID0+Imh0dHA6Ly9tLi4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5xLmNvbS9zP19fYml6PU16QXhNall4TlRrek1RPT0mbWlkPTIwNzk2MzQ0MyZpZHg9MiZzbj0yYWUyNzMxYTFmMDk2ZWEwOGNlOTg5ZDc0ZTE5MTNkNCNyZCIpOwoJCX1lbHNlIGlmICgka2V5d29yZD09PSIyMDAiIHx8JGtleXdvcmQ9PT0i6YOo6JC95oiYIiApewoJCQkvL+mDqOiQveaImOS5i+acgAogICAgICAgICAgICAkY29udGVudCA9IGFycmF5KCk7CiAgICAgICAgICAgICRjb250ZW50W10gPSBhcnJheSgiVGl0bGUiPT4i6YOo5L2c5oiY5LmL5pyA57uP5YW455qE5oiY5b25IiwgIkRlc2NyaXB0aW9uIj0+IuaUtumbhumDqOiQveaImOS5i+acgCIsICJQaWNVcmwiPT4iaHR0cDovLzEuLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLnAuY29tL0xPR08xLmpwZyIsICJVcmwiID0+Imh0dHA6Ly9tLi4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5xLmNvbS9zP19fYml6PU16QXhNall4TlRrek1RPT0mbWlkPTIwNzk4MTI3MCZpZHg9MSZzbj1kNzc1ZTZhOTI5OTdkNGUwM2E3OWVjZjc1NzgwNDE2OCNyZCIpOwogICAgICAgICAgICAkY29udGVudFtdID0gYXJyYXkoIlRpdGxlIj0+IumDqOS9nOaImOS5i+acgOiLseWLh+eahOi/m+aUuyIsICJEZXNjcmlwdGlvbiI9PiIiLCAiUGljVXJsIj0+Imh0dHA6Ly8xLi4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5wLmNvbS90b3V4aWFuZy5qcGciLCAiVXJsIiA9PiJodHRwOi8vbS4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4ucS5jb20vcz9fX2Jpej1NekF4TWpZeE5Ua3pNUT09Jm1pZD0yMDc5ODEyNzAmaWR4PTImc249NWNhODkzNWY0OWQ3YTdlYTY5ZTlmMjRlMjQxZTE2YjQjcmQiKTsKICAgICAgICAgICAgJGNvbnRlbnRbXSA9IGFycmF5KCJUaXRsZSI9PiLpg6jokL3miJjkuYvmnIDpob3lvLrnmoTpmLLlvqEiLCAiRGVzY3JpcHRpb24iPT4iIiwgIlBpY1VybCI9PiJodHRwOi8vMS4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4ucC5jb20vdG91eGlhbmcuanBnIiwgIlVybCIgPT4iaHR0cDovL20uLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLnEuY29tL3M/X19iaXo9TXpBeE1qWXhOVGt6TVE9PSZtaWQ9MjA3OTgxMjcwJmlkeD0zJnNuPTMxNDEyN2NiYjU2OGI1YjgxODIxMmI5N2E4ZWZiZjgxI3JkIik7CiAgICAgICAgfWVsc2UgaWYgKCRrZXl3b3JkPT09IjIwOCIgfHwka2V5d29yZD09PSI45pys6KeG6aKRIiApewoJCQkvLzjmnKzop4bpopEKICAgICAgICAgICAgJGNvbnRlbnQgPSBhcnJheSgpOwogICAgICAgICAgICAkY29udGVudFtdID0gYXJyYXkoIlRpdGxlIj0+IjjmnKwt6b6Z5rWBIiwgIkRlc2NyaXB0aW9uIj0+IuWQhOenjTjmnKznu4/lhbjkuInmmJ/mtYHop4bpopEiLCAiUGljVXJsIj0+Imh0dHA6Ly8xLi4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5wLmNvbS9sb25nLmpwZyIsICJVcmwiID0+Imh0dHA6Ly9tLi4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5xLmNvbS9zP19fYml6PU16QXhNall4TlRrek1RPT0mbWlkPTIwNzk2NDMxMyZpZHg9MSZzbj0yZjQxOTMwODljMDk4OTA2NDM1NjRiYWU3ZWU5MDRiNSNyZCIpOwogICAgICAgICAgICAkY29udGVudFtdID0gYXJyYXkoIlRpdGxlIj0+IjjmnKwt54yq5rWBIiwgIkRlc2NyaXB0aW9uIj0+IiIsICJQaWNVcmwiPT4iaHR0cDovLzEuLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLnAuY29tL3podS5qcGciLCAiVXJsIiA9PiJodHRwOi8vbS4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4ucS5jb20vcz9fX2Jpej1NekF4TWpZeE5Ua3pNUT09Jm1pZD0yMDc5NjQzMTMmaWR4PTImc249ZGQ3MmVmODA5YWYyZDYwZGI1OTE4MzFiMDI2NTYwODMjcmQiKTsKICAgICAgICAgICAgJGNvbnRlbnRbXSA9IGFycmF5KCJUaXRsZSI9PiI45pysLeefs+azleearuWNoea1gSIsICJEZXNjcmlwdGlvbiI9PiIiLCAiUGljVXJsIj0+Imh0dHA6Ly8xLi4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5wLmNvbS9waWthLmpwZyIsICJVcmwiID0+Imh0dHA6Ly9tLi4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5xLmNvbS9zP19fYml6PU16QXhNall4TlRrek1RPT0mbWlkPTIwNzk2NDMxMyZpZHg9MyZzbj0xNDZkOTM5ODQ5MWZiNGNmOTdlMDA4N2E4M2I4NTVkYyNyZCIpOwogICAgICAgICAgICAkY29udGVudFtdID0gYXJyYXkoIlRpdGxlIj0+IjjmnKwt5YW25LuWIiwgIkRlc2NyaXB0aW9uIj0+IiIsICJQaWNVcmwiPT4iaHR0cDovLzEuLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLnAuY29tL3RvdXhpYW5nLmpwZyIsICJVcmwiID0+Imh0dHA6Ly9tLi4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5xLmNvbS9zP19fYml6PU16QXhNall4TlRrek1RPT0mbWlkPTIwNzk2NDMxMyZpZHg9NCZzbj0wODczMmUyYzljNTRjZjM1MmE4ODEyMjBmODk0MzgyZiNyZCIpOwogICAgICAgIH1lbHNlIGlmICgka2V5d29yZD09PSIyMDkiIHx8JGtleXdvcmQ9PT0iOeacrOinhumikSIgKXsKCQkJLy855pys6KeG6aKRCiAgICAgICAgICAgICRjb250ZW50ID0gYXJyYXkoKTsKICAgICAgICAgICAgJGNvbnRlbnRbXSA9IGFycmF5KCJUaXRsZSI9PiI55pysLeefs+eLl+eQgyIsICJEZXNjcmlwdGlvbiI9PiLlkITnp4055pys57uP5YW45LiJ5pif5rWB6KeG6aKRIiwgIlBpY1VybCI9PiJodHRwOi8vMS4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4ucC5jb20vc2hpZmFnb3VxaXUuanBnIiwgIlVybCIgPT4iaHR0cDovL20uLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLnEuY29tL3M/X19iaXo9TXpBeE1qWXhOVGt6TVE9PSZtaWQ9MjA3OTY0MjI5JmlkeD0xJnNuPWU1YWExYmI2NjEwNmY4N2MwYmI5ZjljNGM1ODRmNmU5I3JkIik7CiAgICAgICAgICAgICRjb250ZW50W10gPSBhcnJheSgiVGl0bGUiPT4iOeacrC3nn7PnjKrmtYEiLCAiRGVzY3JpcHRpb24iPT4iIiwgIlBpY1VybCI9PiJodHRwOi8vMS4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4ucC5jb20vemh1LmpwZyIsICJVcmwiID0+Imh0dHA6Ly9tLi4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5xLmNvbS9zP19fYml6PU16QXhNall4TlRrek1RPT0mbWlkPTIwNzk2NDIyOSZpZHg9MiZzbj0yNDYzNWU3ZTQxMjM4NjM1NzRiNWNiMDgzY2RlMTQzYiNyZCIpOwogICAgICAgICAgICAkY29udGVudFtdID0gYXJyYXkoIlRpdGxlIj0+IjnmnKwt55+z5rOV55qu5Y2h5rWBIiwgIkRlc2NyaXB0aW9uIj0+IiIsICJQaWNVcmwiPT4iaHR0cDovLzEuLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLnAuY29tL3Bpa2EuanBnIiwgIlVybCIgPT4iaHR0cDovL20uLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLnEuY29tL3M/X19iaXo9TXpBeE1qWXhOVGt6TVE9PSZtaWQ9MjA3OTY0MjI5JmlkeD0zJnNuPWRmZmI1ZjAwZmY1MDY5ZDVlYzcxNjkyN2JkOWI0NzBhI3JkIik7CiAgICAgICAgICAgICRjb250ZW50W10gPSBhcnJheSgiVGl0bGUiPT4iOeacrC3lhbbku5YiLCAiRGVzY3JpcHRpb24iPT4iIiwgIlBpY1VybCI9PiJodHRwOi8vMS4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4ucC5jb20vdG91eGlhbmcuanBnIiwgIlVybCIgPT4iaHR0cDovL20uLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLnEuY29tL3M/X19iaXo9TXpBeE1qWXhOVGt6TVE9PSZtaWQ9MjA3OTY0MjI5JmlkeD00JnNuPWUxYmE3ZDY1ODExMzRhODhlZWMyMjE5MWE3ZTQ2NmUzI3JkIik7CiAgICAgICAgfWVsc2UgaWYgKCRrZXl3b3JkPT09IjIxMCIgfHwka2V5d29yZD09PSIxMOacrOinhumikSIgKXsKCQkJLy8xMOacrOinhumikQogICAgICAgICAgICAkY29udGVudCA9IGFycmF5KCk7CiAgICAgICAgICAgICRjb250ZW50W10gPSBhcnJheSgiVGl0bGUiPT4iMTDmnKznu4/lhbjkuInmmJ/op4bpopEiLCAiRGVzY3JpcHRpb24iPT4i5ZCE56eNMTDmnKznu4/lhbjkuInmmJ/op4bpopEiLCAiUGljVXJsIj0+Imh0dHA6Ly8xLi4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5wLmNvbS9jb2MuanBnIiwgIlVybCIgPT4iaHR0cDovL20uLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLnEuY29tL3M/X19iaXo9TXpBeE1qWXhOVGt6TVE9PSZtaWQ9MjA3OTY0MzgxJmlkeD0xJnNuPWJhODFhZGI1OGNhZjQ4MmU2YmExZTgyN2ZhMjFkNDhjI3JkIik7CiAgICAgICAgfWVsc2UgaWYgKCRrZXl3b3JkPT09IjMwMSIgfHwka2V5d29yZD09PSLpmLLlvqEiICl7CgkJCS8v6Ziy5b6h6K6+5pa9CiAgICAgICAgICAgICRjb250ZW50ID0gYXJyYXkoKTsKICAgICAgICAgICAgJGNvbnRlbnRbXSA9IGFycmF5KCJUaXRsZSI9PiLpmLLlvqHorr7mlr3mlbDmja7mn6Xor6IiLCAiRGVzY3JpcHRpb24iPT4iIiwgIlBpY1VybCI9PiJodHRwOi8vMS4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4ucC5jb20vY29jLmpwZyIsICJVcmwiID0+Imh0dHA6Ly9jLi4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi4zLmNvbS8xMzAzLzIyODQxNjYxODI5MS5odG1sIik7CiAgICAgICAgfWVsc2UgaWYgKCRrZXl3b3JkPT09IjMwMiIgfHwka2V5d29yZD09PSLlhpvkuosiKXsKCQkJLy/lhpvkuovorr7mlr0KICAgICAgICAgICAgJGNvbnRlbnQgPSBhcnJheSgpOwogICAgICAgICAgICAkY29udGVudFtdID0gYXJyYXkoIlRpdGxlIj0+IuWGm+S6i+iuvuaWveaVsOaNruafpeivoiIsICJEZXNjcmlwdGlvbiI9PiIiLCAiUGljVXJsIj0+Imh0dHA6Ly8xLi4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5wLmNvbS9jb2MuanBnIiwgIlVybCIgPT4iaHR0cDovL2MuLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLjMuY29tLzEzMDMvMjI4NDE3MDUyMjM5Lmh0bWwiKTsKICAgICAgICB9ZWxzZSBpZiAoJGtleXdvcmQ9PT0iMzAzIiB8fCRrZXl3b3JkPT09Iui1hOa6kCIpewoJCQkvL+i1hOa6kOiuvuaWvQogICAgICAgICAgICAkY29udGVudCA9IGFycmF5KCk7CiAgICAgICAgICAgICRjb250ZW50W10gPSBhcnJheSgiVGl0bGUiPT4i6LWE5rqQ6K6+5pa95pWw5o2u5p+l6K+iIiwgIkRlc2NyaXB0aW9uIj0+IiIsICJQaWNVcmwiPT4iaHR0cDovLzEuLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLnAuY29tL2NvYy5qcGciLCAiVXJsIiA9PiJodHRwOi8vYy4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4uMy5jb20vMTMwMy8yMjg0MTgzMTc4NDEuaHRtbCIpOwogICAgICAgIH1lbHNlIGlmICgka2V5d29yZD09PSIzMDQiIHx8JGtleXdvcmQ9PT0i5YW156eNIil7CgkJCS8v5YW156eNCiAgICAgICAgICAgICRjb250ZW50ID0gYXJyYXkoKTsKICAgICAgICAgICAgJGNvbnRlbnRbXSA9IGFycmF5KCJUaXRsZSI9PiLlhbXnp43lj4rms5XmnK/mlbDmja7mn6Xor6IiLCAiRGVzY3JpcHRpb24iPT4iIiwgIlBpY1VybCI9PiJodHRwOi8vMS4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4ucC5jb20vY29jLmpwZyIsICJVcmwiID0+Imh0dHA6Ly9jLi4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi4zLmNvbS8xMzAzLzIyODQxODc0MjAzNy5odG1sIik7CiAgICAgICAgfWVsc2UgaWYgKCRrZXl3b3JkPT09IjMwNSIgfHwka2V5d29yZD09PSLlhbbku5YiKXsKCQkJLy/lhbbku5borr7mlr0KICAgICAgICAgICAgJGNvbnRlbnQgPSBhcnJheSgpOwogICAgICAgICAgICAkY29udGVudFtdID0gYXJyYXkoIlRpdGxlIj0+IuWFtuS7luiuvuaWveaVsOaNruafpeivoiIsICJEZXNjcmlwdGlvbiI9PiIiLCAiUGljVXJsIj0+Imh0dHA6Ly8xLi4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5wLmNvbS9jb2MuanBnIiwgIlVybCIgPT4iaHR0cDovL2MuLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLjMuY29tLzEzMDMvMjI4NDE5MTM1ODM4Lmh0bWwiKTsKICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgJGNvbnRlbnQgPSAi6L6T5YWl5pyJ6K+v77yBXG4iLmNhaWRhbjsKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgaWYoaXNfYXJyYXkoJGNvbnRlbnQpKXsKICAgICAgICAgICAgICAgIGlmIChpc3NldCgkY29udGVudFswXVsnUGljVXJsJ10pKXsKICAgICAgICAgICAgICAgICAgICAkcmVzdWx0ID0gJHRoaXMtPnRyYW5zbWl0TmV3cygkb2JqZWN0LCAkY29udGVudCk7CiAgICAgICAgICAgICAgICB9ZWxzZSBpZiAoaXNzZXQoJGNvbnRlbnRbJ011c2ljVXJsJ10pKXsKICAgICAgICAgICAgICAgICAgICAkcmVzdWx0ID0gJHRoaXMtPnRyYW5zbWl0TXVzaWMoJG9iamVjdCwgJGNvbnRlbnQpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgICAgICRyZXN1bHQgPSAkdGhpcy0+dHJhbnNtaXRUZXh0KCRvYmplY3QsICRjb250ZW50KTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRyZXN1bHQ7CiAgICB9CgogICAgLy/mjqXmlLblm77niYfmtojmga8KICAgIHByaXZhdGUgZnVuY3Rpb24gcmVjZWl2ZUltYWdlKCRvYmplY3QpCiAgICB7CiAgICAgICAgJGNvbnRlbnQgPSAi5oKo55qE5Zu+54mH5oiR5Lus5bey57uP5pS25Yiw77yB5oSf6LCi5oKo55qE5pSv5oyB77yBIjsKICAgICAgICAkcmVzdWx0ID0gJHRoaXMtPnRyYW5zbWl0VGV4dCgkb2JqZWN0LCAkY29udGVudCk7CiAgICAgICAgcmV0dXJuICRyZXN1bHQ7CiAgICB9CgogICAgLy/mjqXmlLbkvY3nva7mtojmga8KICAgIHByaXZhdGUgZnVuY3Rpb24gcmVjZWl2ZUxvY2F0aW9uKCRvYmplY3QpCiAgICB7CiAgICAgICAgJGNvbnRlbnQgPSAi5L2g5Y+R6YCB55qE5piv5L2N572u77yM57qs5bqm5Li677yaIi4kb2JqZWN0LT5Mb2NhdGlvbl9YLiLvvJvnu4/luqbkuLrvvJoiLiRvYmplY3QtPkxvY2F0aW9uX1kuIu+8m+e8qeaUvue6p+WIq+S4uu+8miIuJG9iamVjdC0+U2NhbGUuIu+8m+S9jee9ruS4uu+8miIuJG9iamVjdC0+TGFiZWw7CiAgICAgICAgJHJlc3VsdCA9ICR0aGlzLT50cmFuc21pdFRleHQoJG9iamVjdCwgJGNvbnRlbnQpOwogICAgICAgIHJldHVybiAkcmVzdWx0OwogICAgfQoKICAgIC8v5o6l5pS26K+t6Z+z5raI5oGvCiAgICBwcml2YXRlIGZ1bmN0aW9uIHJlY2VpdmVWb2ljZSgkb2JqZWN0KQogICAgewogICAgICAgIGlmIChpc3NldCgkb2JqZWN0LT5SZWNvZ25pdGlvbikgJiYgIWVtcHR5KCRvYmplY3QtPlJlY29nbml0aW9uKSl7CiAgICAgICAgICAgICRjb250ZW50ID0gIuS9oOWImuaJjeivtOeahOaYr++8miIuJG9iamVjdC0+UmVjb2duaXRpb247CiAgICAgICAgICAgICRyZXN1bHQgPSAkdGhpcy0+dHJhbnNtaXRUZXh0KCRvYmplY3QsICRjb250ZW50KTsKICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgJGNvbnRlbnQgPSBhcnJheSgiTWVkaWFJZCI9PiRvYmplY3QtPk1lZGlhSWQpOwogICAgICAgICAgICAkcmVzdWx0ID0gJHRoaXMtPnRyYW5zbWl0Vm9pY2UoJG9iamVjdCwgJGNvbnRlbnQpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRyZXN1bHQ7CiAgICB9CgogICAgLy/mjqXmlLbop4bpopHmtojmga8KICAgIHByaXZhdGUgZnVuY3Rpb24gcmVjZWl2ZVZpZGVvKCRvYmplY3QpCiAgICB7CiAgICAgICAgJGNvbnRlbnQgPSBhcnJheSgiTWVkaWFJZCI9PiRvYmplY3QtPk1lZGlhSWQsICJUaHVtYk1lZGlhSWQiPT4kb2JqZWN0LT5UaHVtYk1lZGlhSWQsICJUaXRsZSI9PiIiLCAiRGVzY3JpcHRpb24iPT4iIik7CiAgICAgICAgJHJlc3VsdCA9ICR0aGlzLT50cmFuc21pdFZpZGVvKCRvYmplY3QsICRjb250ZW50KTsKICAgICAgICByZXR1cm4gJHJlc3VsdDsKICAgIH0KCiAgICAvL+aOpeaUtumTvuaOpea2iOaBrwogICAgcHJpdmF0ZSBmdW5jdGlvbiByZWNlaXZlTGluaygkb2JqZWN0KQogICAgewogICAgICAgICRjb250ZW50ID0gIuS9oOWPkemAgeeahOaYr+mTvuaOpe+8jOagh+mimOS4uu+8miIuJG9iamVjdC0+VGl0bGUuIu+8m+WGheWuueS4uu+8miIuJG9iamVjdC0+RGVzY3JpcHRpb24uIu+8m+mTvuaOpeWcsOWdgOS4uu+8miIuJG9iamVjdC0+VXJsOwogICAgICAgICRyZXN1bHQgPSAkdGhpcy0+dHJhbnNtaXRUZXh0KCRvYmplY3QsICRjb250ZW50KTsKICAgICAgICByZXR1cm4gJHJlc3VsdDsKICAgIH0KCiAgICAvL+WbnuWkjeaWh+acrOa2iOaBrwogICAgcHJpdmF0ZSBmdW5jdGlvbiB0cmFuc21pdFRleHQoJG9iamVjdCwgJGNvbnRlbnQpCiAgICB7CiAgICAgICAgJHhtbFRwbCA9ICI8eG1sPgo8VG9Vc2VyTmFtZT48IVtDREFUQVslc11dPjwvVG9Vc2VyTmFtZT4KPEZyb21Vc2VyTmFtZT48IVtDREFUQVslc11dPjwvRnJvbVVzZXJOYW1lPgo8Q3JlYXRlVGltZT4lczwvQ3JlYXRlVGltZT4KPE1zZ1R5cGU+PCFbQ0RBVEFbdGV4dF1dPjwvTXNnVHlwZT4KPENvbnRlbnQ+PCFbQ0RBVEFbJXNdXT48L0NvbnRlbnQ+CjwveG1sPiI7CiAgICAgICAgJHJlc3VsdCA9IHNwcmludGYoJHhtbFRwbCwgJG9iamVjdC0+RnJvbVVzZXJOYW1lLCAkb2JqZWN0LT5Ub1VzZXJOYW1lLCB0aW1lKCksICRjb250ZW50KTsKICAgICAgICByZXR1cm4gJHJlc3VsdDsKICAgIH0KCiAgICAvL+WbnuWkjeWbvueJh+a2iOaBrwogICAgcHJpdmF0ZSBmdW5jdGlvbiB0cmFuc21pdEltYWdlKCRvYmplY3QsICRpbWFnZUFycmF5KQogICAgewogICAgICAgICRpdGVtVHBsID0gIjxJbWFnZT4KICAgIDxNZWRpYUlkPjwhW0NEQVRBWyVzXV0+PC9NZWRpYUlkPgo8L0ltYWdlPiI7CgogICAgICAgICRpdGVtX3N0ciA9IHNwcmludGYoJGl0ZW1UcGwsICRpbWFnZUFycmF5WydNZWRpYUlkJ10pOwoKICAgICAgICAkeG1sVHBsID0gIjx4bWw+CjxUb1VzZXJOYW1lPjwhW0NEQVRBWyVzXV0+PC9Ub1VzZXJOYW1lPgo8RnJvbVVzZXJOYW1lPjwhW0NEQVRBWyVzXV0+PC9Gcm9tVXNlck5hbWU+CjxDcmVhdGVUaW1lPiVzPC9DcmVhdGVUaW1lPgo8TXNnVHlwZT48IVtDREFUQVtpbWFnZV1dPjwvTXNnVHlwZT4KJGl0ZW1fc3RyCjwveG1sPiI7CgogICAgICAgICRyZXN1bHQgPSBzcHJpbnRmKCR4bWxUcGwsICRvYmplY3QtPkZyb21Vc2VyTmFtZSwgJG9iamVjdC0+VG9Vc2VyTmFtZSwgdGltZSgpKTsKICAgICAgICByZXR1cm4gJHJlc3VsdDsKICAgIH0KCiAgICAvL+WbnuWkjeivremfs+a2iOaBrwogICAgcHJpdmF0ZSBmdW5jdGlvbiB0cmFuc21pdFZvaWNlKCRvYmplY3QsICR2b2ljZUFycmF5KQogICAgewogICAgICAgICRpdGVtVHBsID0gIjxWb2ljZT4KICAgIDxNZWRpYUlkPjwhW0NEQVRBWyVzXV0+PC9NZWRpYUlkPgo8L1ZvaWNlPiI7CgogICAgICAgICRpdGVtX3N0ciA9IHNwcmludGYoJGl0ZW1UcGwsICR2b2ljZUFycmF5WydNZWRpYUlkJ10pOwoKICAgICAgICAkeG1sVHBsID0gIjx4bWw+CjxUb1VzZXJOYW1lPjwhW0NEQVRBWyVzXV0+PC9Ub1VzZXJOYW1lPgo8RnJvbVVzZXJOYW1lPjwhW0NEQVRBWyVzXV0+PC9Gcm9tVXNlck5hbWU+CjxDcmVhdGVUaW1lPiVzPC9DcmVhdGVUaW1lPgo8TXNnVHlwZT48IVtDREFUQVt2b2ljZV1dPjwvTXNnVHlwZT4KJGl0ZW1fc3RyCjwveG1sPiI7CgogICAgICAgICRyZXN1bHQgPSBzcHJpbnRmKCR4bWxUcGwsICRvYmplY3QtPkZyb21Vc2VyTmFtZSwgJG9iamVjdC0+VG9Vc2VyTmFtZSwgdGltZSgpKTsKICAgICAgICByZXR1cm4gJHJlc3VsdDsKICAgIH0KCiAgICAvL+WbnuWkjeinhumikea2iOaBrwogICAgcHJpdmF0ZSBmdW5jdGlvbiB0cmFuc21pdFZpZGVvKCRvYmplY3QsICR2aWRlb0FycmF5KQogICAgewogICAgICAgICRpdGVtVHBsID0gIjxWaWRlbz4KICAgIDxNZWRpYUlkPjwhW0NEQVRBWyVzXV0+PC9NZWRpYUlkPgogICAgPFRodW1iTWVkaWFJZD48IVtDREFUQVslc11dPjwvVGh1bWJNZWRpYUlkPgogICAgPFRpdGxlPjwhW0NEQVRBWyVzXV0+PC9UaXRsZT4KICAgIDxEZXNjcmlwdGlvbj48IVtDREFUQVslc11dPjwvRGVzY3JpcHRpb24+CjwvVmlkZW8+IjsKCiAgICAgICAgJGl0ZW1fc3RyID0gc3ByaW50ZigkaXRlbVRwbCwgJHZpZGVvQXJyYXlbJ01lZGlhSWQnXSwgJHZpZGVvQXJyYXlbJ1RodW1iTWVkaWFJZCddLCAkdmlkZW9BcnJheVsnVGl0bGUnXSwgJHZpZGVvQXJyYXlbJ0Rlc2NyaXB0aW9uJ10pOwoKICAgICAgICAkeG1sVHBsID0gIjx4bWw+CjxUb1VzZXJOYW1lPjwhW0NEQVRBWyVzXV0+PC9Ub1VzZXJOYW1lPgo8RnJvbVVzZXJOYW1lPjwhW0NEQVRBWyVzXV0+PC9Gcm9tVXNlck5hbWU+CjxDcmVhdGVUaW1lPiVzPC9DcmVhdGVUaW1lPgo8TXNnVHlwZT48IVtDREFUQVt2aWRlb11dPjwvTXNnVHlwZT4KJGl0ZW1fc3RyCjwveG1sPiI7CgogICAgICAgICRyZXN1bHQgPSBzcHJpbnRmKCR4bWxUcGwsICRvYmplY3QtPkZyb21Vc2VyTmFtZSwgJG9iamVjdC0+VG9Vc2VyTmFtZSwgdGltZSgpKTsKICAgICAgICByZXR1cm4gJHJlc3VsdDsKICAgIH0KCiAgICAvL+WbnuWkjeWbvuaWh+a2iOaBrwogICAgcHJpdmF0ZSBmdW5jdGlvbiB0cmFuc21pdE5ld3MoJG9iamVjdCwgJG5ld3NBcnJheSkKICAgIHsKICAgICAgICBpZighaXNfYXJyYXkoJG5ld3NBcnJheSkpewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgICRpdGVtVHBsID0gIiAgICA8aXRlbT4KICAgICAgICA8VGl0bGU+PCFbQ0RBVEFbJXNdXT48L1RpdGxlPgogICAgICAgIDxEZXNjcmlwdGlvbj48IVtDREFUQVslc11dPjwvRGVzY3JpcHRpb24+CiAgICAgICAgPFBpY1VybD48IVtDREFUQVslc11dPjwvUGljVXJsPgogICAgICAgIDxVcmw+PCFbQ0RBVEFbJXNdXT48L1VybD4KICAgIDwvaXRlbT4KIjsKICAgICAgICAkaXRlbV9zdHIgPSAiIjsKICAgICAgICBmb3JlYWNoICgkbmV3c0FycmF5IGFzICRpdGVtKXsKICAgICAgICAgICAgJGl0ZW1fc3RyIC49IHNwcmludGYoJGl0ZW1UcGwsICRpdGVtWydUaXRsZSddLCAkaXRlbVsnRGVzY3JpcHRpb24nXSwgJGl0ZW1bJ1BpY1VybCddLCAkaXRlbVsnVXJsJ10pOwogICAgICAgIH0KICAgICAgICAkeG1sVHBsID0gIjx4bWw+CjxUb1VzZXJOYW1lPjwhW0NEQVRBWyVzXV0+PC9Ub1VzZXJOYW1lPgo8RnJvbVVzZXJOYW1lPjwhW0NEQVRBWyVzXV0+PC9Gcm9tVXNlck5hbWU+CjxDcmVhdGVUaW1lPiVzPC9DcmVhdGVUaW1lPgo8TXNnVHlwZT48IVtDREFUQVtuZXdzXV0+PC9Nc2dUeXBlPgo8QXJ0aWNsZUNvdW50PiVzPC9BcnRpY2xlQ291bnQ+CjxBcnRpY2xlcz4KJGl0ZW1fc3RyPC9BcnRpY2xlcz4KPC94bWw+IjsKCiAgICAgICAgJHJlc3VsdCA9IHNwcmludGYoJHhtbFRwbCwgJG9iamVjdC0+RnJvbVVzZXJOYW1lLCAkb2JqZWN0LT5Ub1VzZXJOYW1lLCB0aW1lKCksIGNvdW50KCRuZXdzQXJyYXkpKTsKICAgICAgICByZXR1cm4gJHJlc3VsdDsKICAgIH0KCiAgICAvL+WbnuWkjemfs+S5kOa2iOaBrwogICAgcHJpdmF0ZSBmdW5jdGlvbiB0cmFuc21pdE11c2ljKCRvYmplY3QsICRtdXNpY0FycmF5KQogICAgewogICAgICAgICRpdGVtVHBsID0gIjxNdXNpYz4KICAgIDxUaXRsZT48IVtDREFUQVslc11dPjwvVGl0bGU+CiAgICA8RGVzY3JpcHRpb24+PCFbQ0RBVEFbJXNdXT48L0Rlc2NyaXB0aW9uPgogICAgPE11c2ljVXJsPjwhW0NEQVRBWyVzXV0+PC9NdXNpY1VybD4KICAgIDxIUU11c2ljVXJsPjwhW0NEQVRBWyVzXV0+PC9IUU11c2ljVXJsPgo8L011c2ljPiI7CgogICAgICAgICRpdGVtX3N0ciA9IHNwcmludGYoJGl0ZW1UcGwsICRtdXNpY0FycmF5WydUaXRsZSddLCAkbXVzaWNBcnJheVsnRGVzY3JpcHRpb24nXSwgJG11c2ljQXJyYXlbJ011c2ljVXJsJ10sICRtdXNpY0FycmF5WydIUU11c2ljVXJsJ10pOwoKICAgICAgICAkeG1sVHBsID0gIjx4bWw+CjxUb1VzZXJOYW1lPjwhW0NEQVRBWyVzXV0+PC9Ub1VzZXJOYW1lPgo8RnJvbVVzZXJOYW1lPjwhW0NEQVRBWyVzXV0+PC9Gcm9tVXNlck5hbWU+CjxDcmVhdGVUaW1lPiVzPC9DcmVhdGVUaW1lPgo8TXNnVHlwZT48IVtDREFUQVttdXNpY11dPjwvTXNnVHlwZT4KJGl0ZW1fc3RyCjwveG1sPiI7CgogICAgICAgICRyZXN1bHQgPSBzcHJpbnRmKCR4bWxUcGwsICRvYmplY3QtPkZyb21Vc2VyTmFtZSwgJG9iamVjdC0+VG9Vc2VyTmFtZSwgdGltZSgpKTsKICAgICAgICByZXR1cm4gJHJlc3VsdDsKICAgIH0KCiAgICAvL+WbnuWkjeWkmuWuouacjea2iOaBrwogICAgcHJpdmF0ZSBmdW5jdGlvbiB0cmFuc21pdFNlcnZpY2UoJG9iamVjdCkKICAgIHsKICAgICAgICAkeG1sVHBsID0gIjx4bWw+CjxUb1VzZXJOYW1lPjwhW0NEQVRBWyVzXV0+PC9Ub1VzZXJOYW1lPgo8RnJvbVVzZXJOYW1lPjwhW0NEQVRBWyVzXV0+PC9Gcm9tVXNlck5hbWU+CjxDcmVhdGVUaW1lPiVzPC9DcmVhdGVUaW1lPgo8TXNnVHlwZT48IVtDREFUQVt0cmFuc2Zlcl9jdXN0b21lcl9zZXJ2aWNlXV0+PC9Nc2dUeXBlPgo8L3htbD4iOwogICAgICAgICRyZXN1bHQgPSBzcHJpbnRmKCR4bWxUcGwsICRvYmplY3QtPkZyb21Vc2VyTmFtZSwgJG9iamVjdC0+VG9Vc2VyTmFtZSwgdGltZSgpKTsKICAgICAgICByZXR1cm4gJHJlc3VsdDsKICAgIH0KICAgIAoKCiAgICAKICAgIAogICAgCgogICAgLy/ml6Xlv5forrDlvZUKICAgIHByaXZhdGUgZnVuY3Rpb24gbG9nZ2VyKCRsb2dfY29udGVudCkKICAgIHsKICAgICAgICBpZihpc3NldCgkX1NFUlZFUlsnSFRUUF9BUFBOQU1FJ10pKXsgICAvL1NBRQogICAgICAgICAgICBzYWVfc2V0X2Rpc3BsYXlfZXJyb3JzKGZhbHNlKTsKICAgICAgICAgICAgc2FlX2RlYnVnKCRsb2dfY29udGVudCk7CiAgICAgICAgICAgIHNhZV9zZXRfZGlzcGxheV9lcnJvcnModHJ1ZSk7CiAgICAgICAgfWVsc2UgaWYoJF9TRVJWRVJbJ1JFTU9URV9BRERSJ10gIT0gIjEyNy4wLjAuMSIpeyAvL0xPQ0FMCiAgICAgICAgICAgICRtYXhfc2l6ZSA9IDEwMDAwOwogICAgICAgICAgICAkbG9nX2ZpbGVuYW1lID0gImxvZy54bWwiOwogICAgICAgICAgICBpZihmaWxlX2V4aXN0cygkbG9nX2ZpbGVuYW1lKSBhbmQgKGFicyhmaWxlc2l6ZSgkbG9nX2ZpbGVuYW1lKSkgPiAkbWF4X3NpemUpKXt1bmxpbmsoJGxvZ19maWxlbmFtZSk7fQogICAgICAgICAgICBmaWxlX3B1dF9jb250ZW50cygkbG9nX2ZpbGVuYW1lLCBkYXRlKCdIOmk6cycpLiIgIi4kbG9nX2NvbnRlbnQuIlxyXG4iLCBGSUxFX0FQUEVORCk7CiAgICAgICAgfQogICAgfQp9Cj8+
0.02s 24400KB
Standard input is empty
Standard output is empty
PHP Parse error:
syntax error, unexpected ';' in /home/0GjBeH/prog.php on line 211
visibility:
Share or Embed source code
&script src=&/e.js/oO6Ejm& type=&text/javascript& &&/script&}