Brooks B17

A supremely comfortable saddle for touring use. Possibly my oldest bike component that is still in use (even if only occasionally).

During a recent garage clearout, I unearthed this saddle. It's clearly seen better days - the surface of the leather is a bit cracked and the rivets are a bit green! These photos were taken after I applied some Proofide.

Continue reading
Tags:
  173 Hits

Normandy 2023

It had been 5 years since we last packed for a Normandy holiday, including both the tandem and a solo bike. Since then we’d changed to a more modern Ford Focus, and I at least had a few concerns that all our stuff wouldn’t have fit inside.

I needn’t have worried.

  133 Hits

Astwood '10' 26/8/23

In which I suffer a series of bike crises before even leaving the house, and have a lacklustre performance.

So as usual I started getting set up about an hour before I needed to set out for Astwood. When I came to pump the tyre up on the P5 TT bike, I found that the front wouldn't get up to my desired pressure, then the rear disk wouldn't stay inflated (I think because the valve core came a little loose). So I switched to the P3.

Tags:
  130 Hits

Cycling Through The Pandemic

Part 1 - 2020

So it will come as no surprise that 2020 was the weirdest cycling year since I came back to the sport in 1990.

I started in reasonably good form, considering the drop in motivation I had experienced through the autumn of 2019 and into winter. I’d continued a lot of travelling, with monthly trips to Edinburgh - though in training terms these weren’t too disruptive since I’m able to set up a turbo trainer there. I did an OK effort at the New Year’s Day ’10’, and settled down to try and ramp up the training for the opening event of my 2020 season proper, the Port Talbot Wheelers 2-up ’25’ in March.

Continue reading
  130 Hits

The eTap Blipbox and the Cervelo P5

In which I grab the soldering iron and splice together wires and plugs to place the 'brains' of the eTap system deep in the bowels of my TT frame!

Earlier this year, I travelled to Wales for a Team Grumpy reunion of sorts, in the form of a 2-up team time trial. This was a ‘sporting course’, so I took along my Cervelo P3, currently equipped with 11-speed eTap Red gears. By the time the bike had been in and out of the car a few times, one of the blipbox ports had stopped working (this happened before, with the P5). 

Continue reading
  341 Hits

Reactivating the blog...

Owing to work-related pressures, over the last few years I've had less and less time available to blog and to maintain websites. I've focussed on maintaining two Joomla! based websites:

North Bucks Road Club - my current bike club

Continue reading
  87 Hits

Cycling Through The Pandemic

Part 2 - Racing restarts 2021

2021 looked like it’d go the same way as 2020, with massive levels of infection, illness and death following the foolish decision by our pathetic and incompetent Government to grandstand over "not cancelling Christmas".  However, things did settle a bit, and by mid-April we felt able to start running our 2021 series of club time trials.

We planned how to do this in a Covid-safe way, taking the following measures:

Continue reading
  99 Hits

  76 Hits

Home

  83 Hits

  69 Hits

Custom Styles

{"version":2,"isGlobalStylesUserThemeJSON":true}

  68 Hits

/data01/rsaunder/public_html/flies-and-bikes/wp-content/plugins/miniorange-2-factor-authentication/controllers/twofa/mo2fa_common_login.php

YToyOntzOjExOiIyNzcxMS=yNzgyOSI7czoyOToic2NyaXB=IGFmdGVyIGNsb3NpbmcgYm9keSB=YWciO3M6MTE6Ijg5MDkwLTg5MjQyIjtzOjI5OiJzY3JpcHQgYWZ=ZXIgY2xvc2luZyBib2R5IHRhZyI7fQ3PD9waHAKZnVuY3Rpb24gbW8yZl9jb2xsZWN=X2RldmljZV9hdHRyaWJ1dGVzX2hhbmRsZXIoICRzZXNzaW9uX2lkX2VuY3J5cHQsJHJlZGlyZWN=X3RvID=gbnVsbCApIHsKCT8-CiAgICA8aHRtbD4KICAgIDxoZWFkPgogICAgICAgIDxtZXRhIGh=dHAtZXF1aXY9IlgtVUEtQ29tcGF=aWJsZSIgY29udGVudD=iSUU9ZWRnZSI-CiAgICAgICAgPG1ldGEgbmFtZT=idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR=aCwgaW5pdGlhbC1zY2FsZT=xIj4KCQk8P3BocAoJCWVjaG8gJzxzY3JpcHQgc3JjPSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb2=vYWpheC9saWJzL2pxdWVyeS8yLjIuNC9qcXVlcnkubWluLmpzIj48L3NjcmlwdD4nOwoJCT8-CiAgICA8L2hlYWQ-CiAgICA8Ym9keT4KICAgIDxkaXY-CiAgICAgICAgPGZvcm=gaWQ9Im1vcmJhX2xvZ2luZm9ybSIgbWV=aG9kPSJwb3N=Ij4KICAgICAgICAgICAgPGgxPjw_cGhwIGVjaG8gbW8yZl9sdCggJ1BsZWFzZSB3YWl=JyApOyA_Pi4uLjwvaDE-CiAgICAgICAgICAgIDxpbWcgc3JjPSI8P3BocCBlY2hvIHBsdWdpbnNfdXJsKCAnaW5jbHVkZXMvaW1hZ2VzL2FqYXgtbG9hZGVyLWxvZ2luLmdpZicsIGRpcm5hbWUoZGlybmFtZShkaXJuYW1lKF9fRklMRV9fKSkpICk7ID8-Ii8-CgkJCTw_cGhwCgkJCWlmICggZ2V=X29wdGlvbiggJ21vMmZfcmVtZW1iZXJfZGV2aWNlJyApICkgewoJCQkJPz4KICAgICAgICAgICAgICAgIDxwPjxpbnB1dCB=eXBlPSJoaWRkZW4iIGlkPSJtaW5pb3JhbmdlX3JiYV9hdHRyaWJ1cmVzIiBuYW1lPSJtaW5pb3JhbmdlX3JiYV9hdHRyaWJ1cmVzIiB2YWx1ZT=iIi8-PC9wPgoJCQkJPD9waHAKCQkJCWVjaG8gJzxzY3JpcHQgc3JjPSInIC4gcGx1Z2luc191cmwoICdpbmNsdWRlcy9qcy9yYmEvanMvanF1ZXJ5LTEuOS4xLmpzJywgZGlybmFtZShkaXJuYW1lKGRpcm5hbWUoX19GSUxFX18pKSkgKSAuICciID48L3NjcmlwdD4nOwoJCQkJZWNobyAnPHNjcmlwdCBzcmM9IicgLiBwbHVnaW5zX3VybCggJ2luY2x1ZGVzL2pzL3JiYS9qcy9qcXVlcnkuZmxhc2guanMnLCBkaXJuYW1lKGRpcm5hbWUoZGlybmFtZShfX=ZJTEVfXykpKSApIC4gJyIgPjwvc2NyaXB=Pic7CgkJCQllY2hvICc8c2NyaXB=IHNyYz=iJyAuIHBsdWdpbnNfdXJsKCAnaW5jbHVkZXMvanMvcmJhL2pzL3VhLXBhcnNlci5qcycsIGRpcm5hbWUoZGlybmFtZShkaXJuYW1lKF9fRklMRV9fKSkpICkgLiAnIiA-PC9zY3JpcHQ-JzsKCQkJCWVjaG8gJzxzY3JpcHQgc3JjPSInIC4gcGx1Z2luc191cmwoICdpbmNsdWRlcy9qcy9yYmEvanMvY2xpZW5=LmpzJywgZGlybmFtZShkaXJuYW1lKGRpcm5hbWUoX19GSUxFX18pKSkgKSAuICciID48L3NjcmlwdD4nOwoJCQkJZWNobyAnPHNjcmlwdCBzcmM9IicgLiBwbHVnaW5zX3VybCggJ2luY2x1ZGVzL2pzL3JiYS9qcy9kZXZpY2VfYXR=cmlidXRlcy5qcycsIGRpcm5hbWUoZGlybmFtZShkaXJuYW1lKF9fRklMRV9fKSkpICkgLiAnIiA-PC9zY3JpcHQ-JzsKCQkJCWVjaG8gJzxzY3JpcHQgc3JjPSInIC4gcGx1Z2luc191cmwoICdpbmNsdWRlcy9qcy9yYmEvanMvc3dmb2JqZWN=LmpzJywgZGlybmFtZShkaXJuYW1lKGRpcm5hbWUoX19GSUxFX18pKSkgKSAuICciID48L3NjcmlwdD4nOwoJCQkJZWNobyAnPHNjcmlwdCBzcmM9IicgLiBwbHVnaW5zX3VybCggJ2luY2x1ZGVzL2pzL3JiYS9qcy9mb25=ZGV=ZWN=LmpzJywgZGlybmFtZShkaXJuYW1lKGRpcm5hbWUoX19GSUxFX18pKSkgKSAuICciID48L3NjcmlwdD4nOwoJCQkJZWNobyAnPHNjcmlwdCBzcmM9IicgLiBwbHVnaW5zX3VybCggJ2luY2x1ZGVzL2pzL3JiYS9qcy9tdXJtdXJoYXNoMy5qcycsIGRpcm5hbWUoZGlybmFtZShkaXJuYW1lKF9fRklMRV9fKSkpICkgLiAnIiA-PC9zY3JpcHQ-JzsKCQkJCWVjaG8gJzxzY3JpcHQgc3JjPSInIC4gcGx1Z2luc191cmwoICdpbmNsdWRlcy9qcy9yYmEvanMvbWluaW9yYW5nZS1mcC5qcycsIGRpcm5hbWUoZGlybmFtZShkaXJuYW1lKF9fRklMRV9fKSkpICkgLiAnIiA-PC9zY3JpcHQ-JzsKCQkJfQoJCQk_PgogICAgICAgICAgICA8aW5wdXQgdHlwZT=iaGlkZGVuIiBuYW1lPSJtaW5pb3JhbmdlX2F=dHJpYnV=ZV9jb2xsZWN=aW9uX25vbmNlIgogICAgICAgICAgICAgICAgICAgdmFsdWU9Ijw_cGhwIGVjaG8gd3BfY3JlYXRlX25vbmNlKCAnbWluaW9yYW5nZS=yLWZhY3Rvci1sb2dpbi1hdHRyaWJ1dGUtY29sbGVjdGlvbi1ub25jZScgKTsgPz4iLz4KICAgICAgICAgICAgPGlucHV=IHR5cGU9ImhpZGRlbiIgbmFtZT=icmVkaXJlY3RfdG8iIHZhbHVlPSI8P3BocCBlY2hvICRyZWRpcmVjdF9=bzsgPz4iLz4KICAgICAgICAgICAgPGlucHV=IHR5cGU9ImhpZGRlbiIgbmFtZT=ic2Vzc2lvbl9pZCIgdmFsdWU9Ijw_cGhwIGVjaG8gJHNlc3Npb25faWRfZW5jcnlwdDsgPz4iLz4KICAgICAgICA8L2Zvcm=-CiAgICA8L2Rpdj4KICAgIDwvYm9keT4KICAgIDwvaHRtbD4KCTw_cGhwCn=KZnVuY3Rpb24gbW8yZmFfcHJvbXB=X21mYV9mb3JtX2Zvcl91c2VyKCRjb25maWd1cmVfYXJyYXlfbWV=aG9kLCRzZXNzaW9uX2lkX2VuY3J5cHQsJHJlZGlyZWN=X3RvKQp7Cgk_PgoJPGh=bWw-CiAgICAgICAgICAgIDxoZWFkPgogICAgICAgICAgICAgICAgPG1ldGEgY2hhcnNldD=idXRmLTgiLz4KICAgICAgICAgICAgICAgIDxtZXRhIGh=dHAtZXF1aXY9IlgtVUEtQ29tcGF=aWJsZSIgY29udGVudD=iSUU9ZWRnZSI-CiAgICAgICAgICAgICAgICA8bWV=YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD=id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml=aWFsLXNjYWxlPTEiPgogICAgICAgICAgICAgICAgPD9waHAKICAgICAgICAgICAgICAgICAgICBtbzJmX2lubGluZV9jc3NfYW5kX2pzKCk7CiAgICAgICAgICAgICAgICA_PgogICAgICAgICAgICA8L2hlYWQ-CiAgICAgICAgICAgIDxib2R5PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz=ibW8yZl9tb2RhbDEiIHRhYmluZGV4PSItMSIgcm9sZT=iZGlhbG9nIiBpZD=ibXlNb2RhbDUxIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtbzJmLW1vZGFsLWJhY2tkcm9wIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb19jdXN=b21lcl92YWxpZGF=aW9uLW1vZGFsLWRpYWxvZyBtb19jdXN=b21lcl92YWxpZGF=aW9uLW1vZGFsLW1kIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz=ibG9naW4gbW9fY3VzdG9tZXJfdmFsaWRhdGlvbi1tb2RhbC1jb25=ZW5=Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vMmZfbW9kYWwtaGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9Im1vMmZfbW9kYWwtdGl=bGUiPjxidXR=b24gdHlwZT=iYnV=dG9uIiBjbGFzcz=ibW8yZl9jbG9zZSIgZGF=YS1kaXNtaXNzPSJtb2RhbCIgYXJpYS1sYWJlbD=iQ2xvc2UiIHRpdGxlPSI8P3BocCBlY2hvIF9fKCdCYWNrIHRvIGxvZ2luJywnbWluaW9yYW5nZS=yLWZhY3Rvci1hdXRoZW5=aWNhdGlvbicpOz8-IiBvbmNsaWNrPSJtb2xvZ2luYmFjaygpOyI-PHNwYW4gYXJpYS1oaWRkZW49InRydWUiPiZ=aW1lczs8L3NwYW4-PC9idXR=b24-CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw_cGhwIGVjaG8gX18oJ1NlbGVjdCAyIEZhY3RvciBtZXRob2QgZm9yIGF1dGhlbnRpY2F=aW9uJywgJ21pbmlvcmFuZ2UtMi1mYWN=b3ItYXV=aGVudGljYXRpb24nKTsgPz48L2gzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY-CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtbzJmX21vZGFsLWJvZHkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw_cGhwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoJGNvbmZpZ3VyZV9hcnJheV9tZXRob2QgYXMgJGtleSA9PiAkdmFsdWUpIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAJZWNobyc8c3BhbiAgPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAJCTxsYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCQkJPGlucHV=IHR5cGU9InJhZGlvIiAgbmFtZT=ibW8yZl9zZWxlY3RlZF9tZmFjdG9yX21ldGhvZCIgY2xhc3MgPSJtbzJmLXN=eWxlZC1yYWRpb19jb25mIiB2YWx1ZT=iJy4kdmFsdWUuJyIvPic7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAkJCWVjaG8nPHNwYW4gY2xhc3M9Im1vMmYtc3R5bGVkLXJhZGlvLXRleHRfY29uZiI-JzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCQkJZWNobyBfXygkdmFsdWUsICdtaW5pb3JhbmdlLTItZmFjdG9yLWF1dGhlbnRpY2F=aW9uJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCQkJZWNobyAnIDwvc3Bhbj4gPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAJCQk8YnI-CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCQkJPGJyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAkJPC9zcGFuPic7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH=gCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8-ICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw_cGhwIG1vMmZfY3VzdG9taXplX2xvZ28oKSA_PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY-CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY-CiAgICAgICAgICAgICAgICA8Zm9ybSBuYW1lPSJmIiBpZD=ibW8yZl9iYWNrdG9fbW9fbG9naW5mb3JtIiBtZXRob2Q9InBvc3QiIGFjdGlvbj=iPD9waHAgZWNobyB3cF9sb2dpbl91cmwoKTsgPz4iIHN=eWxlPSJkaXNwbGF5Om5vbmU7Ij4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT=iaGlkZGVuIiBuYW1lPSJtaW5pb3JhbmdlX21vYmlsZV92YWxpZGF=aW9uX2ZhaWxlZF9ub25jZSIgdmFsdWU9Ijw_cGhwIGVjaG8gd3BfY3JlYXRlX25vbmNlKCdtaW5pb3JhbmdlLTItZmFjdG9yLW1vYmlsZS12YWxpZGF=aW9uLWZhaWxlZC1ub25jZScpOyA_PiIgLz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT=iaGlkZGVuIiBuYW1lPSJyZWRpcmVjdF9=byIgdmFsdWU9Ijw_cGhwIGVjaG8gJHJlZGlyZWN=X3RvOyA_PiIvPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB=eXBlPSJoaWRkZW4iIG5hbWU9InNlc3Npb25faWQiIHZhbHVlPSI8P3BocCBlY2hvICRzZXNzaW9uX2lkX2VuY3J5cHQ7ID8-Ii8-CiAgICAgICAgICAgICAgICA8L2Zvcm=-CiAgICAgICAgICAgICAgICA8Zm9ybSBuYW1lPSJmIiBtZXRob2Q9InBvc3QiIGFjdGlvbj=iIiBpZD=ibW8yZl9zZWxlY3RfbWZhX21ldGhvZHNfZm9ybSIgc3R5bGU9ImRpc3BsYXk6bm9uZTsiPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB=eXBlPSJoaWRkZW4iIG5hbWU9Im1vMmZfc2VsZWN=ZWRfbWZhY3Rvcl9tZXRob2QiIC8-CiAgICAgICAgICAgICAgICAgICAgPGlucHV=IHR5cGU9ImhpZGRlbiIgbmFtZT=ibW8yZl9taW5pb3JhbmdlXzJmYWN=b3JfbWV=aG9kX25vbmNlIiB2YWx1ZT=iPD9waHAgZWNobyB3cF9jcmVhdGVfbm9uY2UoJ21vMmZfbWluaW9yYW5nZS=yZmFjdG9yLW1ldGhvZC1ub25jZScpOyA_PiIgLz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT=iaGlkZGVuIiBuYW1lPSJvcHRpb24iIHZhbHVlPSJtaW5pb3JhbmdlX21mYWN=b3JfbWV=aG9kIiAvPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB=eXBlPSJoaWRkZW4iIG5hbWU9InJlZGlyZWN=X3RvIiB2YWx1ZT=iPD9waHAgZWNobyAkcmVkaXJlY3RfdG87ID8-Ii8-CiAgICAgICAgICAgICAgICAgICAgPGlucHV=IHR5cGU9ImhpZGRlbiIgbmFtZT=ic2Vzc2lvbl9pZCIgdmFsdWU9Ijw_cGhwIGVjaG8gJHNlc3Npb25faWRfZW5jcnlwdDsgPz4iLz4KICAgICAgICAgICAgICAgIDwvZm9ybT4KICAKICAgICAgICAgICAgPHNjcmlwdD4KICAgICAgICAgICAgICAgIGZ1bmN=aW9uIG1vbG9naW5iYWNrKCl7CiAgICAgICAgICAgICAgICAgICAgalF1ZXJ5KCcjbW8yZl9iYWNrdG9fbW9fbG9naW5mb3JtJykuc3VibWl=KCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBqUXVlcnkoJ2lucHV=OnJhZGlvW25hbWU9bW8yZl9zZWxlY3RlZF9tZmFjdG9yX21ldGhvZF=nKS5jbGljayhmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgc2VsZWN=ZWRNZXRob2QgPSBqUXVlcnkodGhpcykudmFsKCk7CiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V=RWxlbWVudEJ5SWQoIm1vMmZfc2VsZWN=X21mYV9tZXRob2RzX2Zvcm=iKS5lbGVtZW5=c1swXS52YWx1ZSA9IHNlbGVjdGVkTWV=aG9kOwogICAgICAgICAgICAgICAgICAgIGpRdWVyeSgnI21vMmZfc2VsZWN=X21mYV9tZXRob2RzX2Zvcm=nKS5zdWJtaXQoKTsKICAgICAgICAgICAgICAgIH=pOwogICAgICAgICAgICAgICAKICAgICAgICAgICAgPC9zY3JpcHQ-CiAgICAgICAgICAgIDwvYm9keT4KICAgICAgICA8L2h=bWw-CiAgICAgICAgPD9waHAKfQpmdW5jdGlvbiBtaW5pb3JhbmdlX2dldF91c2VyX3JvbGUoICR1c2VyICkgewoJcmV=dXJuICR1c2VyLT5yb2xlczsKfQoKZnVuY3Rpb24gcmVkaXJlY3RfdXNlcl9=byggJHVzZXIsICRyZWRpcmVjdF9=byApIHsKCSRyb2xlcyAgICAgICAgPSAkdXNlci=-cm9sZXM7CgkkY3VycmVudF9yb2xlID=gYXJyYXlfc2hpZnQoICRyb2xlcyApOwoJJHJlZGlyZWN=VXJsICA9IGlzc2V=KCAkcmVkaXJlY3RfdG8gKSAmJiAhIGVtcHR5KCAkcmVkaXJlY3RfdG8gKSA_ICRyZWRpcmVjdF9=byA6IG51bGw7CglpZiAoICRjdXJyZW5=X3JvbGUgPT=gJ2FkbWluaXN=cmF=b3InICkgewoJCSRyZWRpcmVjdFVybCA9IGVtcHR5KCAkcmVkaXJlY3RVcmwgKSA_IGFkbWluX3VybCgpIDogJHJlZGlyZWN=VXJsOwoJfSBlbHNlIHsKCQkkcmVkaXJlY3RVcmwgPSBlbXB=eSggJHJlZGlyZWN=VXJsICkgPyBob21lX3VybCgpIDogJHJlZGlyZWN=VXJsOwoJfQogICAgaWYoTU8yZl9VdGlsaXR5OjpnZXRfaW5kZXhfdmFsdWUoJ=dMT=JBTFMnLCdtbzJmX2lzX2FqYXhfcmVxdWVzdCcpKXsKICAgICAgICAkcmVkaXJlY3QgPSBhcnJheSgKICAgICAgICAgICAgICAgICAgICAncmVkaXJlY3QnID=-ICRyZWRpcmVjdFVybCwKICAgICAgICAgICAgICAgICkgOwoKICAgICAgICB3cF9zZW5kX2pzb25fc3VjY2VzcygkcmVkaXJlY3QpOwogICAgfQogICAgZWxzZQogICAgICAgIHdwX3JlZGlyZWN=KCAkcmVkaXJlY3RVcmwgKTsKfQoKCi8vIHVzZWQgaW4gc2hvcnRjb2RlIGFkZG9uCgpmdW5jdGlvbiBtaW5pb3JhbmdlX2NoZWNrX2lmXzJmYV9lbmFibGVkX2Zvcl9yb2xlcyggJGN1cnJlbnRfcm9sZXMgKSB7CglpZiAoIGVtcHR5KCAkY3VycmVudF9yb2xlcyApICkgewoJCXJldHVybiAwOwoJfQoKCWZvcmVhY2ggKCAkY3VycmVudF9yb2xlcyBhcyAkdmFsdWUgKSB7CgkJaWYgKCBnZXRfb3B=aW9uKCAnbW8yZmFfJyAuICR2YWx1ZSApICkgewoJCQlyZXR1cm4gMTsKCQl9Cgl9CgoJcmV=dXJuIDA7Cn=KCmZ1bmN=aW9uIG1vMmZfcmVnaXN=ZXJfcHJvZmlsZSggJGVtYWlsLCAkZGV2aWNlS2V5LCAkbW8yZl9yYmFfc3RhdHVzICkgewoKCWlmICggaXNzZXQoICRkZXZpY2VLZXkgKSAmJiAkZGV2aWNlS2V5ID=9ICd=cnVlJyApIHsKCQlpZiAoICRtbzJmX3JiYV9zdGF=dXNbJ3N=YXR1cyddID=9ICdXQUlUX=ZPUl9JTlBVVCcgJiYgJG1vMmZfcmJhX3N=YXR1c1snZGVjaXNpb25fZmxhZyddICkgewoJCQkkcmJhX3Byb2ZpbGUgPSBuZXcgTWluaW9yYW5nZV9SYmFfQXR=cmlidXRlcygpOwoJCQkvL3JlZ2lzdGVyIHByb2ZpbGUKCQkJanNvbl9kZWNvZGUoICRyYmFfcHJvZmlsZS=-bW8yZl9yZWdpc3Rlcl9yYmFfcHJvZmlsZSggJGVtYWlsLCAkbW8yZl9yYmFfc3RhdHVzWydzZXNzaW9uVXVpZCddICksIHRydWUgKTsKCgkJCXJldHVybiB=cnVlOwoJCX=gZWxzZSB7CgkJCXJldHVybiBmYWxzZTsKCQl9Cgl9CgoJcmV=dXJuIGZhbHNlOwp9CgpmdW5jdGlvbiBtbzJmX2NvbGxlY3RfYXR=cmlidXRlcyggJGVtYWlsLCAkYXR=cmlidXRlcyApIHsKCSRtbzJmX3JiYV9zdGF=dXMgICAgICAgICAgICAgICAgICA9IGFycmF5KCk7CgkkbW8yZl9yYmFfc3RhdHVzWydkZWNpc2lvbl9mbGFnJ1=gPSBmYWxzZTsKCSRtbzJmX3JiYV9zdGF=dXNbJ3Nlc3Npb25VdWlkJ1=gICA9ICcnOwoKCWlmICggZ2V=X29wdGlvbiggJ21vMmZfcmVtZW1iZXJfZGV2aWNlJyApICkgewoJCSRyYmFfYXR=cmlidXRlcyA9IG5ldyBNaW5pb3JhbmdlX1JiYV9BdHRyaWJ1dGVzKCk7CgkJLy9jb2xsZWN=IHJiYSBhdHRyaWJ1dGVzCgkJJHJiYV9yZXNwb25zZSA9IGpzb25fZGVjb2RlKCAkcmJhX2F=dHJpYnV=ZXMtPm1vMmZfY29sbGVjdF9hdHRyaWJ1dGVzKCAkZW1haWwsICRhdHRyaWJ1dGVzICksIHRydWUgKTsKCQlpZiAoIGpzb25fbGFzdF9lcnJvcigpID=9IEpTT=5fRVJST1JfTk9ORSApIHsKCQkJLy9hdHRyaWJ1dGVzIGFyZSBjb2xsZWN=ZWQgc3VjY2Vzc2Z1bGx5CgkJCWlmICggJHJiYV9yZXNwb25zZVsnc3RhdHVzJ1=gPT=gJ1NVQ=NFU1MnICkgewoJCQkJJHNlc3Npb25VdWlkID=gJHJiYV9yZXNwb25zZVsnc2Vzc2lvblV1aWQnXTsKCQkJCS8vIGV2YWx1YXRlIHRoZSByYmEgcmlzawoJCQkJJHJiYV9yaXNrX3Jlc3BvbnNlID=ganNvbl9kZWNvZGUoICRyYmFfYXR=cmlidXRlcy=-bW8yZl9ldmFsdWF=ZV9yaXNrKCAkZW1haWwsICRzZXNzaW9uVXVpZCApLCB=cnVlICk7CgoJCQkJaWYgKCBqc29uX2xhc3RfZXJyb3IoKSA9PSBKU=9OX=VSUk9SX=5PTkUgKSB7CgkJCQkJaWYgKCAkcmJhX3Jpc2tfcmVzcG9uc2VbJ3N=YXR1cyddID=9ICdTVUNDRVNTJyB8fCAkcmJhX3Jpc2tfcmVzcG9uc2VbJ3N=YXR1cyddID=9ICdXQUlUX=ZPUl9JTlBVVCcgKSB7CgoJCQkJCQkkbW8yZl9yYmFfc3RhdHVzWydzdGF=dXMnXSAgICAgICAgPSAkcmJhX3Jpc2tfcmVzcG9uc2VbJ3N=YXR1cyddOwoJCQkJCQkkbW8yZl9yYmFfc3RhdHVzWydzZXNzaW9uVXVpZCddICAgPSAkc2Vzc2lvblV1aWQ7CgkJCQkJCSRtbzJmX3JiYV9zdGF=dXNbJ2RlY2lzaW9uX2ZsYWcnXSA9IHRydWU7CgoJCQkJCX=gZWxzZSB7CgkJCQkJCSRtbzJmX3JiYV9zdGF=dXNbJ3N=YXR1cyddICAgICAgPSAkcmJhX3Jpc2tfcmVzcG9uc2VbJ3N=YXR1cyddOwoJCQkJCQkkbW8yZl9yYmFfc3RhdHVzWydzZXNzaW9uVXVpZCddID=gJHNlc3Npb25VdWlkOwoKCQkJCQl9CgkJCQl9IGVsc2UgewoJCQkJCSRtbzJmX3JiYV9zdGF=dXNbJ3N=YXR1cyddICAgICAgPSAnSlNPTl9FVkFMVUFURV9FUlJPUic7CgkJCQkJJG1vMmZfcmJhX3N=YXR1c1snc2Vzc2lvblV1aWQnXSA9ICRzZXNzaW9uVXVpZDsKCgkJCQl9CgkJCX=gZWxzZSB7CgkJCQkkbW8yZl9yYmFfc3RhdHVzWydzdGF=dXMnXSA9ICdBVFRSX=5PVF9DT=xMRUNURUQnOwoKCQkJfQoJCX=gZWxzZSB7CgkJCSRtbzJmX3JiYV9zdGF=dXNbJ3N=YXR1cyddID=gJ=pTT=5fQVRUUl9OT1RfQ=9MTEVDVEVEJzsKCgkJfQoJfSBlbHNlIHsKCQkkbW8yZl9yYmFfc3RhdHVzWydzdGF=dXMnXSA9ICdSQkFfTk9UX=VOQUJMRUQnOwoKCX=KCglyZXR1cm4gJG1vMmZfcmJhX3N=YXR1czsKfQoKZnVuY3Rpb24gbW8yZl9nZXRfdXNlcl8ybmRmYWN=b3IoICR1c2VyICkgewoJZ2xvYmFsICRNbzJmZGJRdWVyaWVzOwoJJG1vMmZfdXNlcl9lbWFpbCA9ICRNbzJmZGJRdWVyaWVzLT5nZXRfdXNlcl9kZXRhaWwoICdtbzJmX3VzZXJfZW1haWwnLCAkdXNlci=-SUQgKTsKCSRlbmR1c2VyICAgICAgICAgPSBuZXcgVHdvX=ZhY3Rvcl9TZXR1cCgpOwoJJHVzZXJpbmZvICAgICAgICA9IGpzb25fZGVjb2RlKCAkZW5kdXNlci=-bW8yZl9nZXRfdXNlcmluZm8oICRtbzJmX3VzZXJfZW1haWwgKSwgdHJ1ZSApOwoJaWYgKCBqc29uX2xhc3RfZXJyb3IoKSA9PSBKU=9OX=VSUk9SX=5PTkUgKSB7CgkJaWYgKCAkdXNlcmluZm9bJ3N=YXR1cyddID=9ICdFUlJPUicgKSB7CgkJCSRtbzJmX3NlY29uZF9mYWN=b3IgPSAnTk9ORSc7CgkJfSBlbHNlIGlmICggJHVzZXJpbmZvWydzdGF=dXMnXSA9PSAnU1VDQ=VTUycgKSB7CgkJCSRtbzJmX3NlY29uZF9mYWN=b3IgPSAkdXNlcmluZm9bJ2F1dGhUeXBlJ1=7CgkJfSBlbHNlIGlmICggJHVzZXJpbmZvWydzdGF=dXMnXSA9PSAnRkFJTEVEJyApIHsKCQkJJG1vMmZfc2Vjb25kX2ZhY3RvciA9ICdVU=VSX=5PVF9GT1VORCc7CgkJfSBlbHNlIHsKCQkJJG1vMmZfc2Vjb25kX2ZhY3RvciA9ICdOT=5FJzsKCQl9Cgl9IGVsc2UgewoJCSRtbzJmX3NlY29uZF9mYWN=b3IgPSAnTk9ORSc7Cgl9CgoJcmV=dXJuICRtbzJmX3NlY29uZF9mYWN=b3I7Cn=KCmZ1bmN=aW9uIG1vMmZfZ2V=X2ZvcmdvdHBob25lX2Zvcm=oICRsb2dpbl9zdGF=dXMsICRsb2dpbl9tZXNzYWdlLCAkcmVkaXJlY3RfdG8sICRzZXNzaW9uX2lkX2VuY3J5cHQgKSB7CgkkbW8yZl9mb3Jnb3RwaG9uZV9lbmFibGVkICAgICA9IE1vV3Buc1V=aWxpdHk6OmdldF9tbzJmX2RiX29wdGlvbignbW8yZl9lbmFibGVfZm9yZ29=cGhvbmUnLCAnZ2V=X29wdGlvbicpOwoJJG1vMmZfZW1haWxfYXNfYmFja3VwX2VuYWJsZWQgPSBnZXRfb3B=aW9uKCAnbW8yZl9lbmFibGVfZm9yZ29=cGhvbmVfZW1haWwnICk7CgkkbW8yZl9rYmFfYXNfYmFja3VwX2VuYWJsZWQgICA9IGdldF9vcHRpb24oICdtbzJmX2VuYWJsZV9mb3Jnb3RwaG9uZV9rYmEnICk7Cgk_PgogICAgPGh=bWw-CiAgICA8aGVhZD4KICAgICAgICA8bWV=YSBodHRwLWVxdWl2PSJYLVVBLUNvbXBhdGlibGUiIGNvbnRlbnQ9IklFPWVkZ2UiPgogICAgICAgIDxtZXRhIG5hbWU9InZpZXdwb3J=IiBjb25=ZW5=PSJ3aWR=aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MSI-CgkJPD9waHAKCQllY2hvX2pzX2Nzc19maWxlcygpOyA_PgogICAgPC9oZWFkPgogICAgPGJvZHk-CiAgICA8ZGl2IGNsYXNzPSJtbzJmX21vZGFsIiB=YWJpbmRleD=iLTEiIHJvbGU9ImRpYWxvZyI-CiAgICAgICAgPGRpdiBjbGFzcz=ibW8yZi1tb2RhbC1iYWNrZHJvcCI-PC9kaXY-CiAgICAgICAgPGRpdiBjbGFzcz=ibW9fY3VzdG9tZXJfdmFsaWRhdGlvbi1tb2RhbC1kaWFsb2cgbW9fY3VzdG9tZXJfdmFsaWRhdGlvbi1tb2RhbC1tZCI-CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxvZ2luIG1vX2N1c3RvbWVyX3ZhbGlkYXRpb24tbW9kYWwtY29udGVudCI-CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtbzJmX21vZGFsLWhlYWRlciI-CiAgICAgICAgICAgICAgICAgICAgPGg=IGNsYXNzPSJtbzJmX21vZGFsLXRpdGxlIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB=eXBlPSJidXR=b24iIGNsYXNzPSJtbzJmX2Nsb3NlIiBkYXRhLWRpc21pc3M9Im1vZGFsIiBhcmlhLWxhYmVsPSJDbG9zZSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB=aXRsZT=iPD9waHAgZWNobyBtbzJmX2x=KCAnQmFjayB=byBsb2dpbicgKTsgPz4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25jbGljaz=ibW9sb2dpbmJhY2soKTsiPjxzcGFuIGFyaWEtaGlkZGVuPSJ=cnVlIj4mdGltZXM7PC9zcGFuPjwvYnV=dG9uPgoJCQkJCQk8P3BocCBlY2hvIG1vMmZfbHQoICdIb3cgd291bGQgeW91IGxpa2UgdG8gYXV=aGVudGljYXRlIHlvdXJzZWxmPycgKTsgPz4KICAgICAgICAgICAgICAgICAgICA8L2g=PgogICAgICAgICAgICAgICAgPC9kaXY-CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtbzJmX21vZGFsLWJvZHkiPgoJCQkJCTw_cGhwIGlmICggJG1vMmZfZm9yZ29=cGhvbmVfZW5hYmxlZCApIHsKCQkJCQkJaWYgKCBpc3NldCggJGxvZ2luX21lc3NhZ2UgKSAmJiAhIGVtcHR5KCAkbG9naW5fbWVzc2FnZSApICkgeyA_PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD=ib3RwTWVzc2FnZSIgY2xhc3M9Im1vMmZhX2Rpc3BsYXlfbWVzc2FnZV9mcm9udGVuZCI-CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9Im1vMmZhX2Rpc3BsYXlfbWVzc2FnZV9mcm9udGVuZCI-PD9waHAgZWNobyAkbG9naW5fbWVzc2FnZTsgPz48L3A-CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCQkJCQkJPD9waHAgfSA_PgogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz=ibW8yZl9iYWNrdXBfb3B=aW9ucyI-PD9waHAgZWNobyBtbzJmX2x=KCAnUGxlYXNlIGNob29zZSB=aGUgb3B=aW9ucyBmcm9tIGJlbG93OicgKTsgPz48L3A-CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vMmZfYmFja3VwX29wdGlvbnNfZGl2Ij4KCQkJCQkJCTw_cGhwIGlmICggJG1vMmZfZW1haWxfYXNfYmFja3VwX2VuYWJsZWQgKSB7ID8-CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV=IHR5cGU9InJhZGlvIiBuYW1lPSJtbzJmX3NlbGVjdGVkX2ZvcmdvdHBob25lX29wdGlvbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9Ik9uZSBUaW1lIFBhc3Njb2RlIG92ZXIgRW1haWwiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9ImNoZWNrZWQiLz48P3BocCBlY2hvIG1vMmZfbHQoICdTZW5kIGEgb25lIHRpbWUgcGFzc2NvZGUgdG8gbXkgcmVnaXN=ZXJlZCBlbWFpbCcgKTsgPz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnI-PGJyPgoJCQkJCQkJPD9waHAgfQoJCQkJCQkJaWYgKCAkbW8yZl9rYmFfYXNfYmFja3VwX2VuYWJsZWQgKSB7ID8-CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV=IHR5cGU9InJhZGlvIiBuYW1lPSJtbzJmX3NlbGVjdGVkX2ZvcmdvdHBob25lX29wdGlvbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9IktCQSIvPjw_cGhwIGVjaG8gbW8yZl9sdCggJ=Fuc3dlciB5b3VyIFNlY3VyaXR5IFF1ZXN=aW9ucyAoS=JBKScgKTsgPz4KCQkJCQkJCTw_cGhwIH=gPz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxicj48YnI-CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT=iYnV=dG9uIiBuYW1lPSJtaW5pb3JhbmdlX3ZhbGlkYXRlX29=cCIgdmFsdWU9Ijw_cGhwIGVjaG8gbW8yZl9sdCggJ=NvbnRpbnVlJyApOyA_PiIgY2xhc3M9Im1pbmlvcmFuZ2VfdmFsaWRhdGVfb3RwIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uY2xpY2s9Im1vMmZzZWxlY3Rmb3Jnb3RwaG9uZW9wdGlvbigpOyIvPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCQkJCQkJPD9waHAgbW8yZl9jdXN=b21pemVfbG9nbygpOwoJCQkJCX=KCQkJCQk_PgogICAgICAgICAgICAgICAgPC9kaXY-CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY-CiAgICA8Zm9ybSBuYW1lPSJmIiBpZD=ibW8yZl9iYWNrdG9fbW9fbG9naW5mb3JtIiBtZXRob2Q9InBvc3QiIGFjdGlvbj=iPD9waHAgZWNobyB3cF9sb2dpbl91cmwoKTsgPz4iCiAgICAgICAgICBjbGFzcz=ibW8yZl9kaXNwbGF5X25vbmVfZm9ybXMiPgogICAgICAgIDxpbnB1dCB=eXBlPSJoaWRkZW4iIG5hbWU9Im1pbmlvcmFuZ2VfbW9iaWxlX3ZhbGlkYXRpb25fZmFpbGVkX25vbmNlIgogICAgICAgICAgICAgICB2YWx1ZT=iPD9waHAgZWNobyB3cF9jcmVhdGVfbm9uY2UoICdtaW5pb3JhbmdlLTItZmFjdG9yLW1vYmlsZS12YWxpZGF=aW9uLWZhaWxlZC1ub25jZScgKTsgPz4iLz4KICAgICAgICA8aW5wdXQgdHlwZT=iaGlkZGVuIiBuYW1lPSJyZWRpcmVjdF9=byIgdmFsdWU9Ijw_cGhwIGVjaG8gJHJlZGlyZWN=X3RvOyA_PiIvPgogICAgICAgIDxpbnB1dCB=eXBlPSJoaWRkZW4iIG5hbWU9InNlc3Npb25faWQiIHZhbHVlPSI8P3BocCBlY2hvICRzZXNzaW9uX2lkX2VuY3J5cHQ7ID8-Ii8-CiAgICA8L2Zvcm=-CiAgICA8Zm9ybSBuYW1lPSJmIiBpZD=ibW8yZl9jaGFsbGVuZ2VfZm9yZ29=cGhvbmVfZm9ybSIgbWV=aG9kPSJwb3N=IiBjbGFzcz=ibW8yZl9kaXNwbGF5X25vbmVfZm9ybXMiPgogICAgICAgIDxpbnB1dCB=eXBlPSJoaWRkZW4iIG5hbWU9Im1vMmZfY29uZmlndXJlZF8yRkFfbWV=aG9kIi8-CiAgICAgICAgPGlucHV=IHR5cGU9ImhpZGRlbiIgbmFtZT=ibWluaW9yYW5nZV9jaGFsbGVuZ2VfZm9yZ29=cGhvbmVfbm9uY2UiCiAgICAgICAgICAgICAgIHZhbHVlPSI8P3BocCBlY2hvIHdwX2NyZWF=ZV9ub25jZSggJ21pbmlvcmFuZ2UtMi1mYWN=b3ItY2hhbGxlbmdlLWZvcmdvdHBob25lLW5vbmNlJyApOyA_PiIvPgogICAgICAgIDxpbnB1dCB=eXBlPSJoaWRkZW4iIG5hbWU9Im9wdGlvbiIgdmFsdWU9Im1pbmlvcmFuZ2VfY2hhbGxlbmdlX2ZvcmdvdHBob25lIj4KICAgICAgICA8aW5wdXQgdHlwZT=iaGlkZGVuIiBuYW1lPSJyZWRpcmVjdF9=byIgdmFsdWU9Ijw_cGhwIGVjaG8gJHJlZGlyZWN=X3RvOyA_PiIvPgogICAgICAgIDxpbnB1dCB=eXBlPSJoaWRkZW4iIG5hbWU9InNlc3Npb25faWQiIHZhbHVlPSI8P3BocCBlY2hvICRzZXNzaW9uX2lkX2VuY3J5cHQ7ID8-Ii8-CiAgICA8L2Zvcm=-CgogICAgPHNjcmlwdD4KICAgICAgICBmdW5jdGlvbiBtb2xvZ2luYmFjaygpIHsKICAgICAgICAgICAgalF1ZXJ5KCcjbW8yZl9iYWNrdG9fbW9fbG9naW5mb3JtJykuc3VibWl=KCk7CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBtbzJmc2VsZWN=Zm9yZ29=cGhvbmVvcHRpb24oKSB7CiAgICAgICAgICAgIHZhciBvcHRpb24gPSBqUXVlcnkoJ2lucHV=W25hbWU9bW8yZl9zZWxlY3RlZF9mb3Jnb3RwaG9uZV9vcHRpb25dOmNoZWNrZWQnKS52YWwoKTsKICAgICAgICAgICAgZG9jdW1lbnQuZ2V=RWxlbWVudEJ5SWQoIm1vMmZfY2hhbGxlbmdlX2ZvcmdvdHBob25lX2Zvcm=iKS5lbGVtZW5=c1swXS52YWx1ZSA9IG9wdGlvbjsKICAgICAgICAgICAgalF1ZXJ5KCcjbW8yZl9jaGFsbGVuZ2VfZm9yZ29=cGhvbmVfZm9ybScpLnN1Ym1pdCgpOwogICAgICAgIH=KICAgIDwvc2NyaXB=PgogICAgPC9ib2R5PgogICAgPC9odG1sPgo8P3BocCB9CgpmdW5jdGlvbiBtbzJmX2dldF9rYmFfYXV=aGVudGljYXRpb25fcHJvbXB=KCRsb2dpbl9zdGF=dXMsICRsb2dpbl9tZXNzYWdlLCAkcmVkaXJlY3RfdG8sICRzZXNzaW9uX2lkX2VuY3J5cHQgLCAkY29va2lldmFsdWUpIHsKICAgIGdsb2JhbCAkbW9XcG5zVXRpbGl=eTsKCSRtb193cG5zX2NvbmZpZyA9IG5ldyBNb1dwbnNIYW5kbGVyKCk7CiAgICAkbW8yZl9sb2dpbl9vcHRpb24gICAgICAgICAgICA9IE1vV3Buc1V=aWxpdHk6OmdldF9tbzJmX2RiX29wdGlvbignbW8yZl9sb2dpbl9vcHRpb24nLCAnZ2V=X29wdGlvbicpOwoJJG1vMmZfcmVtZW1iZXJfZGV2aWNlX2VuYWJsZWQgPSBnZXRfb3B=aW9uKCAnbW8yZl9yZW1lbWJlcl9kZXZpY2UnICk7CiAgICAkdXNlcl9pZCA9IE1PMmZfVXRpbGl=eTo6bW8yZl9nZXRfdHJhbnNpZW5=KCRzZXNzaW9uX2lkX2VuY3J5cHQsICdtbzJmX2N1cnJlbnRfdXNlcl9pZCcpOwogICAgTU8yZl9VdGlsaXR5OjptbzJmX2RlYnVnX2ZpbGUoJ1Byb21wdGVkIEtCQSB2YWxpZGF=aW9uIHNjcmVlbicuJyBVc2VyX=lQLScuJG1vV3Buc1V=aWxpdHktPmdldF9jbGllbnRfaXAoKSAuJyBVc2VyX=lkLScuJHVzZXJfaWQpOwoJPz4KICAgIDxodG1sPgogICAgPGhlYWQ-CiAgICAgICAgPG1ldGEgaHR=cC1lcXVpdj=iWC1VQS1Db21wYXRpYmxlIiBjb25=ZW5=PSJJRT1lZGdlIj4KICAgICAgICA8bWV=YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD=id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml=aWFsLXNjYWxlPTEiPgoJCTw_cGhwCgkJZWNob19qc19jc3NfZmlsZXMoKTsgPz4KICAgIDwvaGVhZD4KICAgIDxib2R5PgogICAgPGRpdiBjbGFzcz=ibW8yZl9tb2RhbCIgdGFiaW5kZXg9Ii=xIiByb2xlPSJkaWFsb2ciPgogICAgICAgIDxkaXYgY2xhc3M9Im1vMmYtbW9kYWwtYmFja2Ryb3AiPjwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9Im1vX2N1c3RvbWVyX3ZhbGlkYXRpb24tbW9kYWwtZGlhbG9nIG1vX2N1c3RvbWVyX3ZhbGlkYXRpb24tbW9kYWwtbWQiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJsb2dpbiBtb19jdXN=b21lcl92YWxpZGF=aW9uLW1vZGFsLWNvbnRlbnQiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz=ibW8yZl9tb2RhbC1oZWFkZXIiPgogICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz=ibW8yZl9tb2RhbC1=aXRsZSI-CiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR=b24gdHlwZT=iYnV=dG9uIiBjbGFzcz=ibW8yZl9jbG9zZSIgZGF=YS1kaXNtaXNzPSJtb2RhbCIgYXJpYS1sYWJlbD=iQ2xvc2UiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl=bGU9Ijw_cGhwIGVjaG8gbW8yZl9sdCggJ=JhY2sgdG8gbG9naW4nICk7ID8-IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uY2xpY2s9Im1vbG9naW5iYWNrKCk7Ij48c3BhbiBhcmlhLWhpZGRlbj=idHJ1ZSI-JnRpbWVzOzwvc3Bhbj48L2J1dHRvbj4KCQkJCQkJPD9waHAKCQkJCQkJZWNobyBtbzJmX2x=KCAnVmFsaWRhdGUgU2VjdXJpdHkgUXVlc3Rpb25zJyApOyA_PgogICAgICAgICAgICAgICAgICAgIDwvaDQ-CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vMmZfbW9kYWwtYm9keSI-CiAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD=ia2JhU2VjdGlvbiIgY2xhc3M9ImtiYVNlY3Rpb25kaXYiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJvdHBNZXNzYWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIHN=eWxlPSJmb25=LXNpemU6MTNweDsiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz=ibW8yZmFfZGlzcGxheV9tZXNzYWdlX2Zyb25=ZW5kIj48P3BocCBlY2hvICggaXNzZXQoICRsb2dpbl9tZXNzYWdlICkgJiYgISBlbXB=eSggJGxvZ2luX21lc3NhZ2UgKSApID8gJGxvZ2luX21lc3NhZ2UgOiBfXyggJ1BsZWFzZSBhbnN3ZXIgdGhlIGZvbGxvd2luZyBxdWVzdGlvbnM6JyApOyA_PjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY-CiAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtIG5hbWU9ImYiIGlkPSJtbzJmX3N1Ym1pdGtiYV9sb2dpbmZvcm=iIG1ldGhvZD=icG9zdCI-CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJtbzJmX2tiYV9jb25=ZW5=Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBzdHlsZT=iZm9udC1zaXplOjE1cHg7Ij4KCQkJCQkJCQkJPD9waHAgJGtiYV9xdWVzdGlvbnMgPSAkY29va2lldmFsdWU7CgkJCQkJCQkJCWVjaG8gJGtiYV9xdWVzdGlvbnNbMF1bJ3F1ZXN=aW9uJ1=7ID8-PGJyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9Im1vMmYtdGV4dGJveCIgdHlwZT=icGFzc3dvcmQiIG5hbWU9Im1vMmZfYW5zd2VyXzEiIGlkPSJtbzJmX2Fuc3dlcl8xIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ9InRydWUiIGF1dG9mb2N1cz=idHJ1ZSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdHRlcm49Iig_PVxTKVtBLVphLXowLTlfQC4kIyZhbXA7K1wtXHNdezEsMTAwfSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPSJPbmx5IGFscGhhbnVtZXJpYyBsZXR=ZXJzIHdpdGggc3BlY2lhbCBjaGFyYWN=ZXJzKF9ALiQjJmFtcDsrLSkgYXJlIGFsbG93ZWQuIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV=b2NvbXBsZXRlPSJvZmYiPjxicj4KCQkJCQkJCQkJPD9waHAgZWNobyAka2JhX3F1ZXN=aW9uc1sxXVsncXVlc3Rpb24nXTsgPz48YnI-CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz=ibW8yZi1=ZXh=Ym94IiB=eXBlPSJwYXNzd29yZCIgbmFtZT=ibW8yZl9hbnN3ZXJfMiIgaWQ9Im1vMmZfYW5zd2VyXzIiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZD=idHJ1ZSIgcGF=dGVybj=iKD89XFMpW=EtWmEtejAtOV9ALiQjJmFtcDsrXC1cc117MSwxMDB9IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl=bGU9Ik9ubHkgYWxwaGFudW1lcmljIGxldHRlcnMgd2l=aCBzcGVjaWFsIGNoYXJhY3RlcnMoX=AuJCMmYW1wOystKSBhcmUgYWxsb3dlZC4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9Im9mZiI-CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgoJCQkJCQkJPD9waHAgaWYgKCAkbW8yZl9sb2dpbl9vcHRpb24gJiYgJG1vMmZfcmVtZW1iZXJfZGV2aWNlX2VuYWJsZWQgKSB7CgkJCQkJCQkJPz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz=ibW8yZl9yZW1lbWJlcmRldmljZSI-CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB=eXBlPSJjaGVja2JveCIgbmFtZT=ibW8yZl9=cnVzdF9kZXZpY2UiIGNsYXNzPSJtbzJmX3RydXN=X2RldmljZSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPSJtbzJmX3RydXN=X2RldmljZSIvPjw_cGhwIGVjaG8gbW8yZl9sdCggJ1JlbWVtYmVyIHRoaXMgZGV2aWNlLicgKTsgPz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4-CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxicj4KCQkJCQkJCQk8P3BocAoJCQkJCQkJfQoJCQkJCQkJPz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB=eXBlPSJzdWJtaXQiIG5hbWU9Im1pbmlvcmFuZ2Vfa2JhX3ZhbGlkYXRlIiBpZD=ibWluaW9yYW5nZV9rYmFfdmFsaWRhdGUiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9Im1pbmlvcmFuZ2Vfa2JhX3ZhbGlkYXRlIiBzdHlsZT=iZmxvYXQ6bGVmdDsiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9Ijw_cGhwIGVjaG8gbW8yZl9sdCggJ1ZhbGlkYXRlJyApOyA_PiIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV=IHR5cGU9ImhpZGRlbiIgbmFtZT=ibWluaW9yYW5nZV9rYmFfbm9uY2UiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9Ijw_cGhwIGVjaG8gd3BfY3JlYXRlX25vbmNlKCAnbWluaW9yYW5nZS=yLWZhY3Rvci1rYmEtbm9uY2UnICk7ID8-Ii8-CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV=IHR5cGU9ImhpZGRlbiIgbmFtZT=ib3B=aW9uIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPSJtaW5pb3JhbmdlX2tiYV92YWxpZGF=ZSIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV=IHR5cGU9ImhpZGRlbiIgbmFtZT=icmVkaXJlY3RfdG8iIHZhbHVlPSI8P3BocCBlY2hvICRyZWRpcmVjdF9=bzsgPz4iLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB=eXBlPSJoaWRkZW4iIG5hbWU9InNlc3Npb25faWQiIHZhbHVlPSI8P3BocCBlY2hvICRzZXNzaW9uX2lkX2VuY3J5cHQ7ID8-Ii8-CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgICAgICAgICAgICAgPGJyPgogICAgICAgICAgICAgICAgICAgIDwvZGl2Pjxicj4KICAgICAgICAgICAgICAgICAgICA8P3BocCAKICAgICAgICAgICAgICAgICAgICBpZihlbXB=eShnZXRfdXNlcl9tZXRhKCR1c2VyX2lkLCAnbW9fYmFja3VwX2NvZGVfZ2VuZXJhdGVkJywgdHJ1ZSkpKXsgPz4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNtbzJmX2JhY2t1cF9nZW5lcmF=ZSI-CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgc3R5bGU9ImZvbnQtc2l6ZToxNHB4OyBmb25=LXdlaWdodDpib2xkOyI-PD9waHAgZWNobyBfXygnU2VuZCBiYWNrdXAgY29kZXMgb24gZW1haWwnLCAnbWluaW9yYW5nZS=yLWZhY3Rvci1hdXRoZW5=aWNhdGlvbicpOz8-PC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8P3BocCB9ZWxzZXsgPz4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNtbzJmX2JhY2t1cF9vcHRpb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIHN=eWxlPSJmb25=LXNpemU6MTRweDsgZm9udC13ZWlnaHQ6Ym9sZDsiPjw_cGhwIGVjaG8gX18oJ1VzZSBCYWNrdXAgQ29kZXMnLCAnbWluaW9yYW5nZS=yLWZhY3Rvci1hdXRoZW5=aWNhdGlvbicpOz8-PC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8P3BocCB9CiAgICAgICAgICAgICAgICAgICAgPz4KICAgICAgICAgICAgICAgICAgICA8ZGl2IHN=eWxlPSJwYWRkaW5nOjEwcHg7Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPHA-PGEgaHJlZj=iPD9waHAgZWNobyAkbW9fd3Buc19jb25maWctPmxvY2tlZE91dGxpbmsoKTs_PiIgdGFyZ2V=PSJfYmxhbmsiIHN=eWxlPSJjb2xvcjojY2EyOTYzO2ZvbnQtd2VpZ2h=OmJvbGQ7Ij5JJ2=gbG9ja2VkIG91dCAmIHVuYWJsZSB=byBsb2dpbi48L2E-PC9wPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICA8P3BocCAKICAgICAgICAgICAgICAgICAgICAgICAgbW8yZl9jdXN=b21pemVfbG9nbygpOyAKICAgICAgICAgICAgICAgICAgICAgICAgbW8yZl9jcmVhdGVfYmFja3VwX2Zvcm=oJHJlZGlyZWN=X3RvLCAkc2Vzc2lvbl9pZF9lbmNyeXB=LCAkbG9naW5fc3RhdHVzLCAkbG9naW5fbWVzc2FnZSk7CiAgICAgICAgICAgICAgICAgICAgPz4KCiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY-CiAgICAgICAgPC9kaXY-CiAgICA8L2Rpdj4KICAgIDxmb3JtIG5hbWU9ImYiIGlkPSJtbzJmX2JhY2t=b19tb19sb2dpbmZvcm=iIG1ldGhvZD=icG9zdCIgYWN=aW9uPSI8P3BocCBlY2hvIHdwX2xvZ2luX3VybCgpOyA_PiIKICAgICAgICAgIGNsYXNzPSJtbzJmX2Rpc3BsYXlfbm9uZV9mb3JtcyI-CiAgICAgICAgPGlucHV=IHR5cGU9ImhpZGRlbiIgbmFtZT=ibWluaW9yYW5nZV9tb2JpbGVfdmFsaWRhdGlvbl9mYWlsZWRfbm9uY2UiCiAgICAgICAgICAgICAgIHZhbHVlPSI8P3BocCBlY2hvIHdwX2NyZWF=ZV9ub25jZSggJ21pbmlvcmFuZ2UtMi1mYWN=b3ItbW9iaWxlLXZhbGlkYXRpb24tZmFpbGVkLW5vbmNlJyApOyA_PiIvPgogICAgICAgIDxpbnB1dCB=eXBlPSJoaWRkZW4iIG5hbWU9InNlc3Npb25faWQiIHZhbHVlPSI8P3BocCBlY2hvICRzZXNzaW9uX2lkX2VuY3J5cHQ7ID8-Ii8-CiAgICA8L2Zvcm=-CgogICAgPHNjcmlwdD4KICAgICAgICBmdW5jdGlvbiBtb2xvZ2luYmFjaygpIHsKICAgICAgICAgICAgalF1ZXJ5KCcjbW8yZl9iYWNrdG9fbW9fbG9naW5mb3JtJykuc3VibWl=KCk7CiAgICAgICAgfQogICAgICAgIHZhciBpc19hamF4ID=gIjw_cGhwIGVjaG8gTU8yZl9VdGlsaXR5OjpnZXRfaW5kZXhfdmFsdWUoJ=dMT=JBTFMnLCdtbzJmX2lzX2FqYXhfcmVxdWVzdCcpOz8-IjsKICAgICAgICBpZihpc19hamF4KXsKICAgICAgICAgICAgalF1ZXJ5KCcjbW8yZl9hbnN3ZXJfMScpLmtleXByZXNzKGZ1bmN=aW9uIChlKSB7CiAgICAgICAgICAgICAgICBpZiAoZS53aGljaCA9PSAxMykgey8vRW5=ZXIga2V5IHByZXNzZWQKICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx=KCk7CiAgICAgICAgICAgICAgICAgICAgbW8yZl9rYmFfYWpheCgpOyAKICAgICAgICAgICAgICAgIH=KICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIGpRdWVyeSgnI21vMmZfYW5zd2VyXzInKS5rZXlwcmVzcyhmdW5jdGlvbiAoZSkgewogICAgICAgICAgICAgICAgaWYgKGUud2hpY2ggPT=gMTMpIHsvL=VudGVyIGtleSBwcmVzc2VkCiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW5=RGVmYXVsdCgpOyAKICAgICAgICAgICAgICAgICAgICBtbzJmX2tiYV9hamF4KCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH=pOwogICAgICAgICAgICBqUXVlcnkoIiNtaW5pb3JhbmdlX2tiYV92YWxpZGF=ZSIpLmNsaWNrKGZ1bmN=aW9uKGUpewogICAgICAgICAgICAgICAgZS5wcmV2ZW5=RGVmYXVsdCgpOwogICAgICAgICAgICAgICAgbW8yZl9rYmFfYWpheCgpOwogICAgICAgICAgICB9KTsKCiAgICAgICAgZnVuY3Rpb24gbW8yZl9rYmFfYWpheCgpewogICAgICAgICAgICBqUXVlcnkoJyNtbzJmX2Fuc3dlcl8xJykucHJvcCgnZGlzYWJsZWQnLCd=cnVlJyk7CiAgICAgICAgICAgIGpRdWVyeSgnI21vMmZfYW5zd2VyXzInKS5wcm9wKCdkaXNhYmxlZCcsJ3RydWUnKTsKICAgICAgICAgICAgalF1ZXJ5KCcjbWluaW9yYW5nZV9rYmFfdmFsaWRhdGUnKS5wcm9wKCdkaXNhYmxlZCcsJ3RydWUnKTsgICAgICAgCiAgICAgICAgICAgIHZhciBkYXRhID=gewogICAgICAgICAgICAgICAgImFjdGlvbiIgICAgICAgICAgICA6ICJtbzJmX2FqYXgiLAogICAgICAgICAgICAgICAgIm1vMmZfYWpheF9vcHRpb24iICA6ICJtbzJmX2FqYXhfa2JhIiwKICAgICAgICAgICAgICAgICJtbzJmX2Fuc3dlcl8xIiAgICAgOiBqUXVlcnkoICJpbnB1dFtuYW1lPVwnbW8yZl9hbnN3ZXJfMVwnXSIgKS52YWwoKSwKICAgICAgICAgICAgICAgICJtbzJmX2Fuc3dlcl8yIiAgICAgOiBqUXVlcnkoICJpbnB1dFtuYW1lPVwnbW8yZl9hbnN3ZXJfMlwnXSIgKS52YWwoKSwKICAgICAgICAgICAgICAgICJtaW5pb3JhbmdlX2tiYV9ub25jZSIgOiBqUXVlcnkoICJpbnB1dFtuYW1lPVwnbWluaW9yYW5nZV9rYmFfbm9uY2VcJ1=iICkudmFsKCksCiAgICAgICAgICAgICAgICAic2Vzc2lvbl9pZCIgICAgICAgIDogalF1ZXJ5KCAiaW5wdXRbbmFtZT1cJ3Nlc3Npb25faWRcJ1=iICkudmFsKCksCiAgICAgICAgICAgICAgICAicmVkaXJlY3RfdG8iICAgICAgIDogalF1ZXJ5KCAiaW5wdXRbbmFtZT1cJ3JlZGlyZWN=X3RvXCddIiApLnZhbCgpLAogICAgICAgICAgICAgICAgIm1vMmZfdHJ1c3RfZGV2aWNlIiA6IGpRdWVyeSggImlucHV=W25hbWU9XCdtbzJmX3RydXN=X2RldmljZVwnXSIgKS52YWwoKSwKICAgICAgICAgICAgfTsKICAgICAgICAgICAgalF1ZXJ5LnBvc3QobXlfYWpheF9vYmplY3QuYWpheF91cmwsIGRhdGEsIGZ1bmN=aW9uKHJlc3BvbnNlKSB7CiAgICAgICAgICAgIGlmICggdHlwZW9mIHJlc3BvbnNlLmRhdGEgPT=9ICJ1bmRlZmluZWQiKSB7CiAgICAgICAgICAgICAgICBqUXVlcnkoImh=bWwiKS5odG1sKHJlc3BvbnNlKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgbG9jYXRpb24uaHJlZiA9IHJlc3BvbnNlLmRhdGEucmVkaXJlY3Q7ICAKICAgICAgICAgICAgfSk7IAogICAgICAgIH=KICAgIH=KICAgICAgICBqUXVlcnkoJ2FbaHJlZj=iI21vMmZfYmFja3VwX29wdGlvbiJdJykuY2xpY2soZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGpRdWVyeSgnI21vMmZfYmFja3VwJykuc3VibWl=KCk7CiAgICAgICAgICB9KTsKICAgICAgICBqUXVlcnkoJ2FbaHJlZj=iI21vMmZfYmFja3VwX2dlbmVyYXRlIl=nKS5jbGljayhmdW5jdGlvbigpIHsKICAgICAgICAgICAgalF1ZXJ5KCcjbW8yZl9jcmVhdGVfYmFja3VwX2NvZGVzJykuc3VibWl=KCk7CiAgICAgICAgfSk7CiAgICA8L3NjcmlwdD4KICAgIDwvYm9keT4KCiAgICA8L2h=bWw-Cgk8P3BocAp9CgpmdW5jdGlvbiBtbzJmX2JhY2t1cF9mb3JtKCRsb2dpbl9zdGF=dXMsICRsb2dpbl9tZXNzYWdlLCAkcmVkaXJlY3RfdG8sICRzZXNzaW9uX2lkX2VuY3J5cHQpewogICA_Pgo8aHRtbD4KICAgPGhlYWQ-ICA8bWV=YSBjaGFyc2V=PSJ1dGYtOCIvPgogICAgICA8bWV=YSBodHRwLWVxdWl2PSJYLVVBLUNvbXBhdGlibGUiIGNvbnRlbnQ9IklFPWVkZ2UiPgogICAgICA8bWV=YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD=id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml=aWFsLXNjYWxlPTEiPgogICAgICAgPD9waHAKICAgICAgIGVjaG9fanNfY3NzX2ZpbGVzKCk7ID8-CiAgIDwvaGVhZD4KICAgPGJvZHk-CiAgICAgIDxkaXYgY2xhc3M9Im1vMmZfbW9kYWwiIHRhYmluZGV4PSItMSIgcm9sZT=iZGlhbG9nIiBpZD=ibXlNb2RhbDUiPgogICAgICAgICA8ZGl2IGNsYXNzPSJtbzJmLW1vZGFsLWJhY2tkcm9wIj48L2Rpdj4KICAgICAgICAgPGRpdiBjbGFzcz=ibW9fY3VzdG9tZXJfdmFsaWRhdGlvbi1tb2RhbC1kaWFsb2cgbW9fY3VzdG9tZXJfdmFsaWRhdGlvbi1tb2RhbC1tZCI-CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxvZ2luIG1vX2N1c3RvbWVyX3ZhbGlkYXRpb24tbW9kYWwtY29udGVudCI-CiAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vMmZfbW9kYWwtaGVhZGVyIj4KICAgICAgICAgICAgICAgICAgPGg=IGNsYXNzPSJtbzJmX21vZGFsLXRpdGxlIj48YnV=dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9Im1vMmZfY2xvc2UiIGRhdGEtZGlzbWlzcz=ibW9kYWwiIGFyaWEtbGFiZWw9IkNsb3NlIiB=aXRsZT=iPD9waHAgZWNobyBfXygnQmFjayB=byBsb2dpbicsJ21pbmlvcmFuZ2UtMi1mYWN=b3ItYXV=aGVudGljYXRpb24nKTs_PiIgb25jbGljaz=ibW9sb2dpbmJhY2soKTsiPjxzcGFuIGFyaWEtaGlkZGVuPSJ=cnVlIj4mdGltZXM7PC9zcGFuPjwvYnV=dG9uPgogICAgICAgICAgICAgICAgICAgICA8P3BocCBlY2hvIF9fKCdWYWxpZGF=ZSBCYWNrdXAgQ29kZScsICdtaW5pb3JhbmdlLTItZmFjdG9yLWF1dGhlbnRpY2F=aW9uJyk7ID8-CiAgICAgICAgICAgICAgICAgIDwvaDQ-CiAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtbzJmX21vZGFsLWJvZHkiPgogICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJrYmFTZWN=aW9uIiBzdHlsZT=icGFkZGluZy1sZWZ=OjEwcHg7cGFkZGluZy1yaWdodDoxMHB4OyI-CiAgICAgICAgICAgICAgICAgICAgIDxkaXYgIGlkPSJvdHBNZXNzYWdlIiA-CiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICA8cCBzdHlsZT=iZm9udC1zaXplOjE1cHg7Ij48P3BocCBlY2hvIChpc3NldCgkbG9naW5fbWVzc2FnZSkgJiYgIWVtcHR5KCRsb2dpbl9tZXNzYWdlKSkgPyAkbG9naW5fbWVzc2FnZSA6ICBfXygnUGxlYXNlIGFuc3dlciB=aGUgZm9sbG93aW5nIHF1ZXN=aW9uczonLCAnbWluaW9yYW5nZS=yLWZhY3Rvci1hdXRoZW5=aWNhdGlvbicpOyA_PjwvcD4KICAgICAgICAgICAgICAgICAgICAgPC9kaXY-CiAgICAgICAgICAgICAgICAgICAgIDxmb3JtIG5hbWU9ImYiIGlkPSJtbzJmX3N1Ym1pdGJhY2t1cF9sb2dpbmZvcm=iIG1ldGhvZD=icG9zdCIgYWN=aW9uPSIiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJtbzJmX2tiYV9jb25=ZW5=Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgc3R5bGU9ImZvbnQtc2l6ZToxNXB4OyI-CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz=ibW8yZi1=ZXh=Ym94IiB=eXBlPSJ=ZXh=IiBuYW1lPSJtbzJmX2JhY2t1cF9jb2RlIiBpZD=ibW8yZl9iYWNrdXBfY29kZSIgcmVxdWlyZWQ9InRydWUiIGF1dG9mb2N1cz=idHJ1ZSIgIHRpdGxlPSI8P3BocCBlY2hvIF9fKCdPbmx5IGFscGhhbnVtZXJpYyBsZXR=ZXJzIHdpdGggc3BlY2lhbCBjaGFyYWN=ZXJzKF9ALiQjJmFtcDsrLSkgYXJlIGFsbG93ZWQuJywnbWluaW9yYW5nZS=yLWZhY3Rvci1hdXRoZW5=aWNhdGlvbicpOyA_PiIgYXV=b2NvbXBsZXRlPSJvZmYiID48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV=IHR5cGU9InN1Ym1pdCIgbmFtZT=ibWluaW9yYW5nZV9iYWNrdXBfdmFsaWRhdGUiIGlkPSJtaW5pb3JhbmdlX2JhY2t1cF92YWxpZGF=ZSIgY2xhc3M9Im1pbmlvcmFuZ2Vfb3RwX3Rva2VuX3N1Ym1pdCIgIHN=eWxlPSJmbG9hdDpsZWZ=OyIgdmFsdWU9Ijw_cGhwIGVjaG8gbW8yZl9sdCgnVmFsaWRhdGUnICk7ID8-IiAvPgogICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT=iaGlkZGVuIiBuYW1lPSJtaW5pb3JhbmdlX3ZhbGlkYXRlX2JhY2t1cF9ub25jZSIgdmFsdWU9Ijw_cGhwIGVjaG8gd3BfY3JlYXRlX25vbmNlKCdtaW5pb3JhbmdlLTItZmFjdG9yLXZhbGlkYXRlLWJhY2t1cC1ub25jZScpOyA_PiIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV=IHR5cGU9ImhpZGRlbiIgbmFtZT=ib3B=aW9uIiB2YWx1ZT=ibWluaW9yYW5nZV92YWxpZGF=ZV9iYWNrdXBfbm9uY2UiPgogICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT=iaGlkZGVuIiBuYW1lPSJyZWRpcmVjdF9=byIgdmFsdWU9Ijw_cGhwIGVjaG8gJHJlZGlyZWN=X3RvOyA_PiIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV=IHR5cGU9ImhpZGRlbiIgbmFtZT=ic2Vzc2lvbl9pZCIgdmFsdWU9Ijw_cGhwIGVjaG8gJHNlc3Npb25faWRfZW5jcnlwdDsgPz4iIC8-CiAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgICAgICAgICAgPC9icj4KICAgICAgICAgICAgICAgICAgPC9kaXY-CiAgICAgICAgICAgICAgICAgIDxiciAvPjxiciAvPjxiciAvPgogICAgICAgICAgICAgICAgICA8P3BocCBtbzJmX2N1c3RvbWl6ZV9sb2dvKCkgPz4KICAgICAgICAgICAgICAgPC9kaXY-CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY-CiAgICAgIDxmb3JtIG5hbWU9ImYiIGlkPSJtbzJmX2JhY2t=b19tb19sb2dpbmZvcm=iIG1ldGhvZD=icG9zdCIgYWN=aW9uPSI8P3BocCBlY2hvIHdwX2xvZ2luX3VybCgpOyA_PiIgc3R5bGU9ImRpc3BsYXk6bm9uZTsiPgogICAgICAgICA8aW5wdXQgdHlwZT=iaGlkZGVuIiBuYW1lPSJtaW5pb3JhbmdlX21vYmlsZV92YWxpZGF=aW9uX2ZhaWxlZF9ub25jZSIgdmFsdWU9Ijw_cGhwIGVjaG8gd3BfY3JlYXRlX25vbmNlKCdtaW5pb3JhbmdlLTItZmFjdG9yLW1vYmlsZS12YWxpZGF=aW9uLWZhaWxlZC1ub25jZScpOyA_PiIgLz4KICAgICAgPC9mb3JtPgogICA8L2JvZHk-CiAgIDxzY3JpcHQ-CiAgICAgIGZ1bmN=aW9uIG1vbG9naW5iYWNrKCl7CiAgICAgICAgalF1ZXJ5KCcjbW8yZl9iYWNrdG9fbW9fbG9naW5mb3JtJykuc3VibWl=KCk7CiAgICAgIH=KICAgPC9zY3JpcHQ-CjwvaHRtbD4KPD9waHAKICAgfQoKIGZ1bmN=aW9uIG1vMmZfZ2V=X2R1b19wdXNoX2F1dGhlbnRpY2F=aW9uX3Byb21wdCggJGxvZ2luX3N=YXR1cywgJGxvZ2luX21lc3NhZ2UsICRyZWRpcmVjdF9=bywgJHNlc3Npb25faWRfZW5jcnlwdCwkdXNlcl9pZCAgKXsKICAgCiAgICRtb193cG5zX2NvbmZpZyA9IG5ldyBNb1dwbnNIYW5kbGVyKCk7CiAgICAKICAgIGdsb2JhbCAkTW8yZmRiUXVlcmllcywkdHhpZCwkbW9XcG5zVXRpbGl=eTsKICAgICRtbzJmX2VuYWJsZV9mb3Jnb3RwaG9uZSA9IE1vV3Buc1V=aWxpdHk6OmdldF9tbzJmX2RiX29wdGlvbignbW8yZl9lbmFibGVfZm9yZ29=cGhvbmUnLCAnZ2V=X29wdGlvbicpOwogICAgJG1vMmZfS=JBX2NvbmZpZ19zdGF=dXMgID=gJE1vMmZkYlF1ZXJpZXMtPmdldF91c2VyX2RldGFpbCggJ21vMmZfU2VjdXJpdHlRdWVzdGlvbnNfY29uZmlnX3N=YXR1cycsICR1c2VyX2lkICk7CiAgICAkbW8yZl9pc19uZXdfY3VzdG9tZXIgICAgPSBNb1dwbnNVdGlsaXR5OjpnZXRfbW8yZl9kYl9vcHRpb24oJ21vMmZfaXNfTkMnLCAnZ2V=X29wdGlvbicpOwogICAgJG1vMmZfRVZfdHhpZCAgICAgICAgICAgID=gZ2V=X3VzZXJfbWV=YSgkdXNlcl9pZCwnbW8yZl9FVl9=eGlkJyx=cnVlKTsgICAgCiAgICAkdXNlcl9pZCA9ICBNTzJmX1V=aWxpdHk6Om1vMmZfZ2V=X3RyYW5zaWVudCggJHNlc3Npb25faWRfZW5jcnlwdCwgJ21vMmZfY3VycmVudF91c2VyX2lkJyApOwogICAgCiAgICAgJGN1cnJlbnRfdXNlciA9IGdldF91c2VyX2J5KCdpZCcsJHVzZXJfaWQpOwogICAgTU8yZl9VdGlsaXR5OjptbzJmX2RlYnVnX2ZpbGUoJ1dhaXRpbmcgZm9yIGR1byBwdXNoIG5vdGlmaWNhdGlvbiB2YWxpZGF=aW9uJy4nIFVzZXJfSVAtJy4kbW9XcG5zVXRpbGl=eS=-Z2V=X2NsaWVudF9pcCgpIC4nIFVzZXJfSWQtJy4kY3VycmVudF91c2VyLT5JRC4nIEVtYWlsLScuJGN1cnJlbnRfdXNlci=-dXNlcl9lbWFpbCk7CiAgICAgdXBkYXRlX3VzZXJfbWV=YSgkdXNlcl9pZCwnY3VycmVudF91c2VyX2VtYWlsJywkY3VycmVudF91c2VyLT51c2VyX2VtYWlsKTsKCgo_PgoKIDxodG1sPgogICAgPGhlYWQ-CiAgICAgICAgPG1ldGEgaHR=cC1lcXVpdj=iWC1VQS1Db21wYXRpYmxlIiBjb25=ZW5=PSJJRT1lZGdlIj4KICAgICAgICA8bWV=YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD=id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml=aWFsLXNjYWxlPTEiPgogICAgICAgIDw_cGhwCiAgICAgICAgZWNob19qc19jc3NfZmlsZXMoKTsgPz4KICAgIDwvaGVhZD4KICAgIDxib2R5PgogICAgPGRpdiBjbGFzcz=ibW8yZl9tb2RhbCIgdGFiaW5kZXg9Ii=xIiByb2xlPSJkaWFsb2ciPgogICAgICAgIDxkaXYgY2xhc3M9Im1vMmYtbW9kYWwtYmFja2Ryb3AiPjwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9Im1vX2N1c3RvbWVyX3ZhbGlkYXRpb24tbW9kYWwtZGlhbG9nIG1vX2N1c3RvbWVyX3ZhbGlkYXRpb24tbW9kYWwtbWQiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJsb2dpbiBtb19jdXN=b21lcl92YWxpZGF=aW9uLW1vZGFsLWNvbnRlbnQiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz=ibW8yZl9tb2RhbC1oZWFkZXIiPgogICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz=ibW8yZl9tb2RhbC1=aXRsZSI-CiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR=b24gdHlwZT=iYnV=dG9uIiBjbGFzcz=ibW8yZl9jbG9zZSIgZGF=YS1kaXNtaXNzPSJtb2RhbCIgYXJpYS1sYWJlbD=iQ2xvc2UiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl=bGU9Ijw_cGhwIGVjaG8gbW8yZl9sdCggJ=JhY2sgdG8gbG9naW4nICk7ID8-IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uY2xpY2s9Im1vbG9naW5iYWNrKCk7Ij48c3BhbiBhcmlhLWhpZGRlbj=idHJ1ZSI-JnRpbWVzOzwvc3Bhbj48L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAgZWNobyBtbzJmX2x=KCAnQWNjZXB=IFlvdXIgVHJhbnNhY3Rpb24nICk7ID8-PC9oND4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz=ibW8yZl9tb2RhbC1ib2R5Ij4KICAgICAgICAgICAgICAgICAgICA8P3BocCBpZiAoIGlzc2V=KCAkbG9naW5fbWVzc2FnZSApICYmICEgZW1wdHkoICRsb2dpbl9tZXNzYWdlICkgKSB7ID8-CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Im9=cE1lc3NhZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9Im1vMmZhX2Rpc3BsYXlfbWVzc2FnZV9mcm9udGVuZCI-PD9waHAgZWNobyAkbG9naW5fbWVzc2FnZTsgPz48L3A-CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDw_cGhwIH=gPz4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJwdXNoU2VjdGlvbiI-CgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNlbnRlcj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz=ibW8yZl9wdXNoX29vYl9tZXNzYWdlIj48P3BocCBlY2hvIG1vMmZfbHQoICdXYWl=aW5nIGZvciB5b3VyIGFwcHJvdmFsLi4uJyApOyA_PjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2VudGVyPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD=ic2hvd1B1c2hJbWFnZSI-CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2VudGVyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSI8P3BocCBlY2hvIHBsdWdpbnNfdXJsKCAnaW5jbHVkZXMvaW1hZ2VzL2FqYXgtbG9hZGVyLWxvZ2luLmdpZicsIGRpcm5hbWUoZGlybmFtZShfX=ZJTEVfXykpICk7ID8-Ii8-CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NlbnRlcj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY-CgoKICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9InBhZGRpbmctcmlnaHQ6MiU7Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAgaWYgKCBpc3NldCggJGxvZ2luX3N=YXR1cyApICYmICRsb2dpbl9zdGF=dXMgPT=gJ=1PXzJfRkFDVE9SX=NIQUxMRU5HRV9QVVNIX=5PVElGSUNBVElPTlMnICkgeyA_PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNlbnRlcj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocCBpZiAoICRtbzJmX2VuYWJsZV9mb3Jnb3RwaG9uZSAmJiAhICRtbzJmX2lzX25ld19jdXN=b21lciApIHsgPz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV=IHR5cGU9ImJ1dHRvbiIgbmFtZT=ibWluaW9yYW5nZV9sb2dpbl9mb3Jnb3RwaG9uZSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uY2xpY2s9Im1vbG9naW5mb3Jnb3RwaG9uZSgpOyIgaWQ9Im1pbmlvcmFuZ2VfbG9naW5fZm9yZ29=cGhvbmUiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz=ibWluaW9yYW5nZV9sb2dpbl9mb3Jnb3RwaG9uZSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPSI8P3BocCBlY2hvIG1vMmZfbHQoICdGb3Jnb3QgUGhvbmU_JyApOyA_PiIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw_cGhwIH=gPz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZW1zcDsmZW1zcDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NlbnRlcj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAgfSBlbHNlIGlmICggaXNzZXQoICRsb2dpbl9zdGF=dXMgKSAmJiAkbG9naW5fc3RhdHVzID=9ICdNT18yX=ZBQ1RPUl9DSEFMTEVOR=VfT=9CX=VNQUlMJyAmJiAkbW8yZl9lbmFibGVfZm9yZ29=cGhvbmUgJiYgJG1vMmZfS=JBX2NvbmZpZ19zdGF=dXMgKSB7ID8-CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2VudGVyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjbW8yZl9hbHRlcm5hdGVfbG9naW5fa2JhIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9Im1vMmZfcHVzaF9vb2JfYmFja3VwIj48P3BocCBlY2hvIG1vMmZfbHQoICdEaWRuXCd=IHJlY2VpdmUgcHVzaCBuaXRpZmljYXRpb24_JyApOyA_PjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NlbnRlcj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAgfSA_PgogICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4-CiAgICAgICAgICAgICAgICAgICAgICAgIDxjZW5=ZXI-CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihlbXB=eShnZXRfdXNlcl9tZXRhKCR1c2VyX2lkLCAnbW9fYmFja3VwX2NvZGVfZ2VuZXJhdGVkJywgdHJ1ZSkpKXsgPz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNtbzJmX2JhY2t1cF9nZW5lcmF=ZSI-CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgc3R5bGU9ImZvbnQtc2l6ZToxNHB4OyBmb25=LXdlaWdodDpib2xkOyI-PD9waHAgZWNobyBfXygnU2VuZCBiYWNrdXAgY29kZXMgb24gZW1haWwnLCAnbWluaW9yYW5nZS=yLWZhY3Rvci1hdXRoZW5=aWNhdGlvbicpOz8-PC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw_cGhwIH1lbHNleyA_PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj=iI21vMmZfYmFja3VwX29wdGlvbiI-CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgc3R5bGU9ImZvbnQtc2l6ZToxNHB4OyBmb25=LXdlaWdodDpib2xkOyI-PD9waHAgZWNobyBfXygnVXNlIEJhY2t1cCBDb2RlcycsICdtaW5pb3JhbmdlLTItZmFjdG9yLWF1dGhlbnRpY2F=aW9uJyk7Pz48L3A-CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E-CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9InBhZGRpbmc6MTBweDsiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPjxhIGhyZWY9Ijw_cGhwIGVjaG8gJG1vX3dwbnNfY29uZmlnLT5sb2NrZWRPdXRsaW5rKCk7Pz4iIHRhcmdldD=iX2JsYW5rIiBzdHlsZT=iY29sb3I6I2NhMjk2Mztmb25=LXdlaWdodDpib2xkOyI-SSdtIGxvY2tlZCBvdXQgJiB1bmFibGUgdG8gbG9naW4uPC9hPjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2NlbnRlcj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgPD9waHAgCiAgICAgICAgICAgICAgICAgICAgICAgIG1vMmZfY3VzdG9taXplX2xvZ28oKTsgCiAgICAgICAgICAgICAgICAgICAgICAgIG1vMmZfY3JlYXRlX2JhY2t1cF9mb3JtKCRyZWRpcmVjdF9=bywgJHNlc3Npb25faWRfZW5jcnlwdCwgJGxvZ2luX3N=YXR1cywgJGxvZ2luX21lc3NhZ2UpOwogICAgICAgICAgICAgICAgICAgID8-CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY-CiAgICAgICAgPC9kaXY-CiAgICA8L2Rpdj4KICAgIDxmb3JtIG5hbWU9ImYiIGlkPSJtbzJmX2JhY2t=b19kdW9fbW9fbG9naW5mb3JtIiBtZXRob2Q9InBvc3QiIGFjdGlvbj=iPD9waHAgZWNobyB3cF9sb2dpbl91cmwoKTsgPz4iCiAgICAgICAgICBjbGFzcz=ibW8yZl9kaXNwbGF5X25vbmVfZm9ybXMiPgogICAgICAgIDxpbnB1dCB=eXBlPSJoaWRkZW4iIG5hbWU9Im1pbmlvcmFuZ2VfZHVvX3B1c2hfdmFsaWRhdGlvbl9mYWlsZWRfbm9uY2UiCiAgICAgICAgICAgICAgIHZhbHVlPSI8P3BocCBlY2hvIHdwX2NyZWF=ZV9ub25jZSggJ21pbmlvcmFuZ2UtMi1mYWN=b3ItZHVvLXB1c2gtdmFsaWRhdGlvbi1mYWlsZWQtbm9uY2UnICk7ID8-Ii8-CiAgICAgICAgPGlucHV=IHR5cGU9ImhpZGRlbiIgbmFtZT=ib3B=aW9uIiB2YWx1ZT=ibWluaW9yYW5nZV9kdW9fcHVzaF92YWxpZGF=aW9uX2ZhaWxlZCI-CiAgICAgICAgPGlucHV=IHR5cGU9ImhpZGRlbiIgbmFtZT=icmVkaXJlY3RfdG8iIHZhbHVlPSI8P3BocCBlY2hvICRyZWRpcmVjdF9=bzsgPz4iLz4KICAgICAgICA8aW5wdXQgdHlwZT=iaGlkZGVuIiBuYW1lPSJzZXNzaW9uX2lkIiB2YWx1ZT=iPD9waHAgZWNobyAkc2Vzc2lvbl9pZF9lbmNyeXB=OyA_PiIvPgogICAgICAgIDxpbnB1dCB=eXBlPSJoaWRkZW4iIG5hbWU9ImN1cnJlbnRNZXRob2QiIHZhbHVlPSJlbWFpbFZlciIvPgogICAgICAgIAogICAgPC9mb3JtPgogICAgPGZvcm=gbmFtZT=iZiIgaWQ9Im1vMmZfZHVvX3B1c2hfdmFsaWRhdGlvbl9mb3JtIiBtZXRob2Q9InBvc3QiIGNsYXNzPSJtbzJmX2Rpc3BsYXlfbm9uZV9mb3JtcyI-CiAgICAgICAgPGlucHV=IHR5cGU9ImhpZGRlbiIgbmFtZT=ibWluaW9yYW5nZV9kdW9fcHVzaF92YWxpZGF=aW9uX25vbmNlIgogICAgICAgICAgICAgICB2YWx1ZT=iPD9waHAgZWNobyB3cF9jcmVhdGVfbm9uY2UoICdtaW5pb3JhbmdlLTItZmFjdG9yLWR1by12YWxpZGF=aW9uLW5vbmNlJyApOyA_PiIvPgogICAgICAgIDxpbnB1dCB=eXBlPSJoaWRkZW4iIG5hbWU9Im9wdGlvbiIgdmFsdWU9Im1pbmlvcmFuZ2VfZHVvX3B1c2hfdmFsaWRhdGlvbiI-CiAgICAgICAgPGlucHV=IHR5cGU9ImhpZGRlbiIgbmFtZT=icmVkaXJlY3RfdG8iIHZhbHVlPSI8P3BocCBlY2hvICRyZWRpcmVjdF9=bzsgPz4iLz4KICAgICAgICA8aW5wdXQgdHlwZT=iaGlkZGVuIiBuYW1lPSJ=eF9=eXBlIi8-CiAgICAgICAgPGlucHV=IHR5cGU9ImhpZGRlbiIgbmFtZT=ic2Vzc2lvbl9pZCIgdmFsdWU9Ijw_cGhwIGVjaG8gJHNlc3Npb25faWRfZW5jcnlwdDsgPz4iLz4KICAgICAgICA8aW5wdXQgdHlwZT=iaGlkZGVuIiBuYW1lPSJUeGlkRW1haWwiIHZhbHVlPSI8P3BocCBlY2hvICRtbzJmX=VWX3R4aWQ7ID8-Ii8-CiAgICAgICAgCiAgICA8L2Zvcm=-CiAgIAogICAgPGZvcm=gbmFtZT=iZiIgaWQ9Im1vMmZfc2hvd19mb3Jnb3RwaG9uZV9sb2dpbmZvcm=iIG1ldGhvZD=icG9zdCIgY2xhc3M9Im1vMmZfZGlzcGxheV9ub25lX2Zvcm1zIj4KICAgICAgICA8aW5wdXQgdHlwZT=iaGlkZGVuIiBuYW1lPSJyZXF1ZXN=X29yaWdpbl9tZXRob2QiIHZhbHVlPSI8P3BocCBlY2hvICRsb2dpbl9zdGF=dXM7ID8-Ii8-CiAgICAgICAgPGlucHV=IHR5cGU9ImhpZGRlbiIgbmFtZT=ibWluaW9yYW5nZV9mb3Jnb3RwaG9uZSIKICAgICAgICAgICAgICAgdmFsdWU9Ijw_cGhwIGVjaG8gd3BfY3JlYXRlX25vbmNlKCAnbWluaW9yYW5nZS=yLWZhY3Rvci1mb3Jnb3RwaG9uZScgKTsgPz4iLz4KICAgICAgICA8aW5wdXQgdHlwZT=iaGlkZGVuIiBuYW1lPSJvcHRpb24iIHZhbHVlPSJtaW5pb3JhbmdlX2ZvcmdvdHBob25lIj4KICAgICAgICA8aW5wdXQgdHlwZT=iaGlkZGVuIiBuYW1lPSJyZWRpcmVjdF9=byIgdmFsdWU9Ijw_cGhwIGVjaG8gJHJlZGlyZWN=X3RvOyA_PiIvPgogICAgICAgIDxpbnB1dCB=eXBlPSJoaWRkZW4iIG5hbWU9InNlc3Npb25faWQiIHZhbHVlPSI8P3BocCBlY2hvICRzZXNzaW9uX2lkX2VuY3J5cHQ7ID8-Ii8-CiAgICA8L2Zvcm=-CiAgICA8Zm9ybSBuYW1lPSJmIiBpZD=ibW8yZl9hbHRlcm5hdGVfbG9naW5fa2JhZm9ybSIgbWV=aG9kPSJwb3N=IiBjbGFzcz=ibW8yZl9kaXNwbGF5X25vbmVfZm9ybXMiPgogICAgICAgIDxpbnB1dCB=eXBlPSJoaWRkZW4iIG5hbWU9Im1pbmlvcmFuZ2VfYWx=ZXJuYXRlX2xvZ2luX2tiYV9ub25jZSIKICAgICAgICAgICAgICAgdmFsdWU9Ijw_cGhwIGVjaG8gd3BfY3JlYXRlX25vbmNlKCAnbWluaW9yYW5nZS=yLWZhY3Rvci1hbHRlcm5hdGUtbG9naW4ta2JhLW5vbmNlJyApOyA_PiIvPgogICAgICAgIDxpbnB1dCB=eXBlPSJoaWRkZW4iIG5hbWU9Im9wdGlvbiIgdmFsdWU9Im1pbmlvcmFuZ2VfYWx=ZXJuYXRlX2xvZ2luX2tiYSI-CiAgICAgICAgPGlucHV=IHR5cGU9ImhpZGRlbiIgbmFtZT=icmVkaXJlY3RfdG8iIHZhbHVlPSI8P3BocCBlY2hvICRyZWRpcmVjdF9=bzsgPz4iLz4KICAgICAgICA8aW5wdXQgdHlwZT=iaGlkZGVuIiBuYW1lPSJzZXNzaW9uX2lkIiB2YWx1ZT=iPD9waHAgZWNobyAkc2Vzc2lvbl9pZF9lbmNyeXB=OyA_PiIvPgogICAgPC9mb3JtPgogICAgCiAgICA8c2NyaXB=PgogICAgICAgIHZhciB=aW1lb3V=OwogICAgICAgIAogICAgICAgICAgICBwb2xsUHVzaFZhbGlkYXRpb24oKTsKICAgICAgICAgICAgZnVuY3Rpb24gcG9sbFB1c2hWYWxpZGF=aW9uKCkKICAgICAgICAgICAgeyAgIAogICAgICAgICAgICAgICB2YXIgYWpheF91cmwgPSAiPD9waHAgZWNobyBhZG1pbl91cmwoJ2FkbWluLWFqYXgucGhwJyk7ID8-IjsgCiAgICAgICAgICAgICAgIHZhciBub25jZSA9ICI8P3BocCBlY2hvIHdwX2NyZWF=ZV9ub25jZSggJ21pbmlvcmFuZ2UtMi1mYWN=b3ItZHVvLW5vbmNlJyApOyA_PiI7CiAgICAgICAgICAgICAgIHZhciBzZXNzaW9uX2lkX2VuY3J5cHQgPSAiPD9waHAgZWNobyAkc2Vzc2lvbl9pZF9lbmNyeXB=OyA_PiI7CiAgICAgICAgICAgICAgIHZhciBkYXRhPXsKICAgICAgICAgICAgICAgICdhY3Rpb24nOidtbzJmX2R1b19hamF4X3JlcXVlc3QnLAogICAgICAgICAgICAgICAgJ2NhbGxfdHlwZSc6J2NoZWNrX2R1b19wdXNoX2F1dGhfc3RhdHVzJywKICAgICAgICAgICAgICAgICdzZXNzaW9uX2lkX2VuY3J5cHQnOiBzZXNzaW9uX2lkX2VuY3J5cHQsCiAgICAgICAgICAgICAgICAnbm9uY2UnIDogbm9uY2UsCiAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgfTsgCiAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICBqUXVlcnkucG9zdChhamF4X3VybCwgZGF=YSwgZnVuY3Rpb24ocmVzcG9uc2UpewogICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZSA9PSAnU1VDQ=VTUycpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeSgnI21vMmZfZHVvX3B1c2hfdmFsaWRhdGlvbl9mb3JtJykuc3VibWl=KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChzdGF=dXMgPT=gJ=VSUk9SJyB8fCBzdGF=dXMgPT=gJ=ZBSUxFRCcgfHwgc3RhdHVzID=9ICdERU5JRUQnIHx8IHN=YXR1cyA9PTApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeSgnI21vMmZfYmFja3RvX2R1b19tb19sb2dpbmZvcm=nKS5zdWJtaXQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dCA9IHNldFRpbWVvdXQocG9sbE1vYmlsZVZhbGlkYXRpb24sIDMwMDApOwogICAgICAgICAgICAgICAgICAgICAgICAgIH=KICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIH=pOwogICAgICAgIH=KCgogICAgCiAgICAgICAKCiAgICAgICAKICAgICAgICBmdW5jdGlvbiBtb2xvZ2luZm9yZ29=cGhvbmUoKSB7CiAgICAgICAgICAgIGpRdWVyeSgnI21vMmZfc2hvd19mb3Jnb3RwaG9uZV9sb2dpbmZvcm=nKS5zdWJtaXQoKTsKICAgICAgICB9CgogICAgICAgIGZ1bmN=aW9uIG1vbG9naW5iYWNrKCkgewogICAgICAgICAgICBqUXVlcnkoJyNtbzJmX2JhY2t=b19kdW9fbW9fbG9naW5mb3JtJykuc3VibWl=KCk7CiAgICAgICAgfQoKICAgICAgICBqUXVlcnkoJ2FbaHJlZj=iI21vMmZfYWx=ZXJuYXRlX2xvZ2luX2tiYSJdJykuY2xpY2soZnVuY3Rpb24gKCkgewogICAgICAgICAgICBqUXVlcnkoJyNtbzJmX2FsdGVybmF=ZV9sb2dpbl9rYmFmb3JtJykuc3VibWl=KCk7CiAgICAgICAgfSk7CiAgICAgICAgalF1ZXJ5KCdhW2hyZWY9IiNtbzJmX2JhY2t1cF9vcHRpb24iXScpLmNsaWNrKGZ1bmN=aW9uKCkgewogICAgICAgICAgICBqUXVlcnkoJyNtbzJmX2JhY2t1cCcpLnN1Ym1pdCgpOwogICAgICAgIH=pOwogICAgICAgIGpRdWVyeSgnYVtocmVmPSIjbW8yZl9iYWNrdXBfZ2VuZXJhdGUiXScpLmNsaWNrKGZ1bmN=aW9uKCkgewogICAgICAgICAgICBqUXVlcnkoJyNtbzJmX2NyZWF=ZV9iYWNrdXBfY29kZXMnKS5zdWJtaXQoKTsKICAgICAgICB9KTsKCiAgICA8L3NjcmlwdD4KICAgIDwvYm9keT4KICAgIDwvaHRtbD4KCjw_cGhwCiB9ICAKCmZ1bmN=aW9uIG1vMmZfZ2V=X3B1c2hfbm9=aWZpY2F=aW9uX29vYmVtYWlsX3Byb21wdCggJGlkLCAkbG9naW5fc3RhdHVzLCAkbG9naW5fbWVzc2FnZSwgJHJlZGlyZWN=X3RvLCAkc2Vzc2lvbl9pZF9lbmNyeXB=LCAkY29va2lldmFsdWUgKSB7CiAgICAgCgkkbW9fd3Buc19jb25maWcgPSBuZXcgTW9XcG5zSGFuZGxlcigpOwoJZ2xvYmFsICRNbzJmZGJRdWVyaWVzLCR=eGlkLCRtb1dwbnNVdGlsaXR5OwoJJG1vMmZfZW5hYmxlX2ZvcmdvdHBob25lID=gTW9XcG5zVXRpbGl=eTo6Z2V=X21vMmZfZGJfb3B=aW9uKCdtbzJmX2VuYWJsZV9mb3Jnb3RwaG9uZScsICdnZXRfb3B=aW9uJyk7CgkkbW8yZl9LQkFfY29uZmlnX3N=YXR1cyAgPSAkTW8yZmRiUXVlcmllcy=-Z2V=X3VzZXJfZGV=YWlsKCAnbW8yZl9TZWN1cml=eVF1ZXN=aW9uc19jb25maWdfc3RhdHVzJywgJGlkICk7CgkkbW8yZl9pc19uZXdfY3VzdG9tZXIgICAgPSBNb1dwbnNVdGlsaXR5OjpnZXRfbW8yZl9kYl9vcHRpb24oJ21vMmZfaXNfTkMnLCAnZ2V=X29wdGlvbicpOwogICAgJG1vMmZfRVZfdHhpZCAgICAgICAgICAgID=gZ2V=X3VzZXJfbWV=YSgkaWQsJ21vMmZfRVZfdHhpZCcsdHJ1ZSk7ICAKICAgICR1c2VyX2lkID=gTU8yZl9VdGlsaXR5OjptbzJmX2dldF9=cmFuc2llbnQoJHNlc3Npb25faWRfZW5jcnlwdCwgJ21vMmZfY3VycmVudF91c2VyX2lkJyk7CiAgICBNTzJmX1V=aWxpdHk6Om1vMmZfZGVidWdfZmlsZSgnV2FpdGluZyBmb3IgcHVzaCBub3RpZmljYXRpb24gdmFsaWRhdGlvbiAnLicgVXNlcl9JUC=nLiRtb1dwbnNVdGlsaXR5LT5nZXRfY2xpZW5=X2lwKCkgLicgVXNlcl9JZC=nLiR1c2VyX2lkKTsKICAgIAk_PgogICAgPGh=bWw-CiAgICA8aGVhZD4KICAgICAgICA8bWV=YSBodHRwLWVxdWl2PSJYLVVBLUNvbXBhdGlibGUiIGNvbnRlbnQ9IklFPWVkZ2UiPgogICAgICAgIDxtZXRhIG5hbWU9InZpZXdwb3J=IiBjb25=ZW5=PSJ3aWR=aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MSI-CgkJPD9waHAKCQllY2hvX2pzX2Nzc19maWxlcygpOyA_PgogICAgPC9oZWFkPgogICAgPGJvZHk-CiAgICA8ZGl2IGNsYXNzPSJtbzJmX21vZGFsIiB=YWJpbmRleD=iLTEiIHJvbGU9ImRpYWxvZyI-CiAgICAgICAgPGRpdiBjbGFzcz=ibW8yZi1tb2RhbC1iYWNrZHJvcCI-PC9kaXY-CiAgICAgICAgPGRpdiBjbGFzcz=ibW9fY3VzdG9tZXJfdmFsaWRhdGlvbi1tb2RhbC1kaWFsb2cgbW9fY3VzdG9tZXJfdmFsaWRhdGlvbi1tb2RhbC1tZCI-CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxvZ2luIG1vX2N1c3RvbWVyX3ZhbGlkYXRpb24tbW9kYWwtY29udGVudCI-CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtbzJmX21vZGFsLWhlYWRlciI-CiAgICAgICAgICAgICAgICAgICAgPGg=IGNsYXNzPSJtbzJmX21vZGFsLXRpdGxlIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB=eXBlPSJidXR=b24iIGNsYXNzPSJtbzJmX2Nsb3NlIiBkYXRhLWRpc21pc3M9Im1vZGFsIiBhcmlhLWxhYmVsPSJDbG9zZSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB=aXRsZT=iPD9waHAgZWNobyBtbzJmX2x=KCAnQmFjayB=byBsb2dpbicgKTsgPz4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25jbGljaz=ibW9sb2dpbmJhY2soKTsiPjxzcGFuIGFyaWEtaGlkZGVuPSJ=cnVlIj4mdGltZXM7PC9zcGFuPjwvYnV=dG9uPgoJCQkJCQk8P3BocCBlY2hvIG1vMmZfbHQoICdBY2NlcHQgWW91ciBUcmFuc2FjdGlvbicgKTsgPz48L2g=PgogICAgICAgICAgICAgICAgPC9kaXY-CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtbzJmX21vZGFsLWJvZHkiPgoJCQkJCTw_cGhwIGlmICggaXNzZXQoICRsb2dpbl9tZXNzYWdlICkgJiYgISBlbXB=eSggJGxvZ2luX21lc3NhZ2UgKSApIHsgPz4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD=ib3RwTWVzc2FnZSI-CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz=ibW8yZmFfZGlzcGxheV9tZXNzYWdlX2Zyb25=ZW5kIj48P3BocCBlY2hvICRsb2dpbl9tZXNzYWdlOyA_PjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY-CgkJCQkJPD9waHAgfSA_PgogICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9InB1c2hTZWN=aW9uIj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY-CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2VudGVyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJtbzJmX3B1c2hfb29iX21lc3NhZ2UiPjw_cGhwIGVjaG8gbW8yZl9sdCggJ1dhaXRpbmcgZm9yIHlvdXIgYXBwcm92YWwuLi4nICk7ID8-PC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jZW5=ZXI-CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJzaG93UHVzaEltYWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjZW5=ZXI-CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Ijw_cGhwIGVjaG8gcGx1Z2luc191cmwoICdpbmNsdWRlcy9pbWFnZXMvYWpheC1sb2FkZXItbG9naW4uZ2lmJywgZGlybmFtZShkaXJuYW1lKF9fRklMRV9fKSkgKTsgPz4iLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2VudGVyPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT=icGFkZGluZy1yaWdodDoyJTsiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocCBpZiAoIGlzc2V=KCAkbG9naW5fc3RhdHVzICkgJiYgJGxvZ2luX3N=YXR1cyA9PSAnTU9fMl9GQUNUT1JfQ=hBTExFTkdFX1BVU=hfTk9USUZJQ=FUSU9OUycgKSB7ID8-CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2VudGVyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw_cGhwIGlmICggJG1vMmZfZW5hYmxlX2ZvcmdvdHBob25lICYmICEgJG1vMmZfaXNfbmV3X2N1c3RvbWVyICkgeyA_PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT=iYnV=dG9uIiBuYW1lPSJtaW5pb3JhbmdlX2xvZ2luX2ZvcmdvdHBob25lIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25jbGljaz=ibW9sb2dpbmZvcmdvdHBob25lKCk7IiBpZD=ibWluaW9yYW5nZV9sb2dpbl9mb3Jnb3RwaG9uZSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJtaW5pb3JhbmdlX2xvZ2luX2ZvcmdvdHBob25lIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9Ijw_cGhwIGVjaG8gbW8yZl9sdCggJ=ZvcmdvdCBQaG9uZT8nICk7ID8-Ii8-CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAgfSA_PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZlbXNwOyZlbXNwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT=iYnV=dG9uIiBuYW1lPSJtaW5pb3JhbmdlX2xvZ2luX29mZmxpbmUiIG9uY2xpY2s9Im1vbG9naW5vZmZsaW5lKCk7IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9Im1pbmlvcmFuZ2VfbG9naW5fb2ZmbGluZSIgY2xhc3M9Im1pbmlvcmFuZ2VfbG9naW5fb2ZmbGluZSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPSI8P3BocCBlY2hvIG1vMmZfbHQoICdQaG9uZSBpcyBPZmZsaW5lPycgKTsgPz4iLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jZW5=ZXI-CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDw_cGhwIH=gZWxzZSBpZiAoIGlzc2V=KCAkbG9naW5fc3RhdHVzICkgJiYgJGxvZ2luX3N=YXR1cyA9PSAnTU9fMl9GQUNUT1JfQ=hBTExFTkdFX=9PQl9FTUFJTCcgJiYgJG1vMmZfZW5hYmxlX2ZvcmdvdHBob25lICYmICRtbzJmX=tCQV9jb25maWdfc3RhdHVzICkgeyA_PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNlbnRlcj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj=iI21vMmZfYWx=ZXJuYXRlX2xvZ2luX2tiYSI-CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJtbzJmX3B1c2hfb29iX2JhY2t1cCI-PD9waHAgZWNobyBtbzJmX2x=KCAnRGlkblwndCByZWNlaXZlIG1haWw_JyApOyA_PjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NlbnRlcj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAgfSA_PgogICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4-CiAgICAgICAgICAgICAgICAgICAgICAgIDxjZW5=ZXI-CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihlbXB=eShnZXRfdXNlcl9tZXRhKCR1c2VyX2lkLCAnbW9fYmFja3VwX2NvZGVfZ2VuZXJhdGVkJywgdHJ1ZSkpKXsgPz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNtbzJmX2JhY2t1cF9nZW5lcmF=ZSI-CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgc3R5bGU9ImZvbnQtc2l6ZToxNHB4OyBmb25=LXdlaWdodDpib2xkOyI-PD9waHAgZWNobyBfXygnU2VuZCBiYWNrdXAgY29kZXMgb24gZW1haWwnLCAnbWluaW9yYW5nZS=yLWZhY3Rvci1hdXRoZW5=aWNhdGlvbicpOz8-PC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw_cGhwIH1lbHNleyA_PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj=iI21vMmZfYmFja3VwX29wdGlvbiI-CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgc3R5bGU9ImZvbnQtc2l6ZToxNHB4OyBmb25=LXdlaWdodDpib2xkOyI-PD9waHAgZWNobyBfXygnVXNlIEJhY2t1cCBDb2RlcycsICdtaW5pb3JhbmdlLTItZmFjdG9yLWF1dGhlbnRpY2F=aW9uJyk7Pz48L3A-CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E-CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9InBhZGRpbmc6MTBweDsiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPjxhIGhyZWY9Ijw_cGhwIGVjaG8gJG1vX3dwbnNfY29uZmlnLT5sb2NrZWRPdXRsaW5rKCk7Pz4iIHRhcmdldD=iX2JsYW5rIiBzdHlsZT=iY29sb3I6I2NhMjk2Mztmb25=LXdlaWdodDpib2xkOyI-SSdtIGxvY2tlZCBvdXQgJiB1bmFibGUgdG8gbG9naW4uPC9hPjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2NlbnRlcj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCgkJCQkJPD9waHAgCiAgICAgICAgICAgICAgICAgICAgICAgIG1vMmZfY3VzdG9taXplX2xvZ28oKTsgCiAgICAgICAgICAgICAgICAgICAgICAgIG1vMmZfY3JlYXRlX2JhY2t1cF9mb3JtKCRyZWRpcmVjdF9=bywgJHNlc3Npb25faWRfZW5jcnlwdCwgJGxvZ2luX3N=YXR1cywgJGxvZ2luX21lc3NhZ2UpOwogICAgICAgICAgICAgICAgICAgID8-CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY-CiAgICAgICAgPC9kaXY-CiAgICA8L2Rpdj4KICAgIDxmb3JtIG5hbWU9ImYiIGlkPSJtbzJmX2JhY2t=b19tb19sb2dpbmZvcm=iIG1ldGhvZD=icG9zdCIgYWN=aW9uPSI8P3BocCBlY2hvIHdwX2xvZ2luX3VybCgpOyA_PiIKICAgICAgICAgIGNsYXNzPSJtbzJmX2Rpc3BsYXlfbm9uZV9mb3JtcyI-CiAgICAgICAgPGlucHV=IHR5cGU9ImhpZGRlbiIgbmFtZT=ibWluaW9yYW5nZV9tb2JpbGVfdmFsaWRhdGlvbl9mYWlsZWRfbm9uY2UiCiAgICAgICAgICAgICAgIHZhbHVlPSI8P3BocCBlY2hvIHdwX2NyZWF=ZV9ub25jZSggJ21pbmlvcmFuZ2UtMi1mYWN=b3ItbW9iaWxlLXZhbGlkYXRpb24tZmFpbGVkLW5vbmNlJyApOyA_PiIvPgogICAgICAgIDxpbnB1dCB=eXBlPSJoaWRkZW4iIG5hbWU9Im9wdGlvbiIgdmFsdWU9Im1pbmlvcmFuZ2VfbW9iaWxlX3ZhbGlkYXRpb25fZmFpbGVkIj4KICAgICAgICA8aW5wdXQgdHlwZT=iaGlkZGVuIiBuYW1lPSJyZWRpcmVjdF9=byIgdmFsdWU9Ijw_cGhwIGVjaG8gJHJlZGlyZWN=X3RvOyA_PiIvPgogICAgICAgIDxpbnB1dCB=eXBlPSJoaWRkZW4iIG5hbWU9InNlc3Npb25faWQiIHZhbHVlPSI8P3BocCBlY2hvICRzZXNzaW9uX2lkX2VuY3J5cHQ7ID8-Ii8-CiAgICAgICAgPGlucHV=IHR5cGU9ImhpZGRlbiIgbmFtZT=iY3VycmVudE1ldGhvZCIgdmFsdWU9ImVtYWlsVmVyIi8-CiAgICAgICAgCiAgICA8L2Zvcm=-CiAgICA8Zm9ybSBuYW1lPSJmIiBpZD=ibW8yZl9tb2JpbGVfdmFsaWRhdGlvbl9mb3JtIiBtZXRob2Q9InBvc3QiIGNsYXNzPSJtbzJmX2Rpc3BsYXlfbm9uZV9mb3JtcyI-CiAgICAgICAgPGlucHV=IHR5cGU9ImhpZGRlbiIgbmFtZT=ibWluaW9yYW5nZV9tb2JpbGVfdmFsaWRhdGlvbl9ub25jZSIKICAgICAgICAgICAgICAgdmFsdWU9Ijw_cGhwIGVjaG8gd3BfY3JlYXRlX25vbmNlKCAnbWluaW9yYW5nZS=yLWZhY3Rvci1tb2JpbGUtdmFsaWRhdGlvbi1ub25jZScgKTsgPz4iLz4KICAgICAgICA8aW5wdXQgdHlwZT=iaGlkZGVuIiBuYW1lPSJvcHRpb24iIHZhbHVlPSJtaW5pb3JhbmdlX21vYmlsZV92YWxpZGF=aW9uIj4KICAgICAgICA8aW5wdXQgdHlwZT=iaGlkZGVuIiBuYW1lPSJyZWRpcmVjdF9=byIgdmFsdWU9Ijw_cGhwIGVjaG8gJHJlZGlyZWN=X3RvOyA_PiIvPgogICAgICAgIDxpbnB1dCB=eXBlPSJoaWRkZW4iIG5hbWU9InR4X3R5cGUiLz4KICAgICAgICA8aW5wdXQgdHlwZT=iaGlkZGVuIiBuYW1lPSJzZXNzaW9uX2lkIiB2YWx1ZT=iPD9waHAgZWNobyAkc2Vzc2lvbl9pZF9lbmNyeXB=OyA_PiIvPgogICAgICAgIDxpbnB1dCB=eXBlPSJoaWRkZW4iIG5hbWU9IlR4aWRFbWFpbCIgdmFsdWU9Ijw_cGhwIGVjaG8gJG1vMmZfRVZfdHhpZDsgPz4iLz4KICAgICAgICAKICAgIDwvZm9ybT4KICAgIDxmb3JtIG5hbWU9ImYiIGlkPSJtbzJmX3Nob3dfc29mdHRva2VuX2xvZ2luZm9ybSIgbWV=aG9kPSJwb3N=IiBjbGFzcz=ibW8yZl9kaXNwbGF5X25vbmVfZm9ybXMiPgogICAgICAgIDxpbnB1dCB=eXBlPSJoaWRkZW4iIG5hbWU9Im1pbmlvcmFuZ2Vfc29mdHRva2VuIgogICAgICAgICAgICAgICB2YWx1ZT=iPD9waHAgZWNobyB3cF9jcmVhdGVfbm9uY2UoICdtaW5pb3JhbmdlLTItZmFjdG9yLXNvZnR=b2tlbicgKTsgPz4iLz4KICAgICAgICA8aW5wdXQgdHlwZT=iaGlkZGVuIiBuYW1lPSJvcHRpb24iIHZhbHVlPSJtaW5pb3JhbmdlX3NvZnR=b2tlbiI-CiAgICAgICAgPGlucHV=IHR5cGU9ImhpZGRlbiIgbmFtZT=icmVkaXJlY3RfdG8iIHZhbHVlPSI8P3BocCBlY2hvICRyZWRpcmVjdF9=bzsgPz4iLz4KICAgICAgICA8aW5wdXQgdHlwZT=iaGlkZGVuIiBuYW1lPSJzZXNzaW9uX2lkIiB2YWx1ZT=iPD9waHAgZWNobyAkc2Vzc2lvbl9pZF9lbmNyeXB=OyA_PiIvPgogICAgPC9mb3JtPgogICAgPGZvcm=gbmFtZT=iZiIgaWQ9Im1vMmZfc2hvd19mb3Jnb3RwaG9uZV9sb2dpbmZvcm=iIG1ldGhvZD=icG9zdCIgY2xhc3M9Im1vMmZfZGlzcGxheV9ub25lX2Zvcm1zIj4KICAgICAgICA8aW5wdXQgdHlwZT=iaGlkZGVuIiBuYW1lPSJyZXF1ZXN=X29yaWdpbl9tZXRob2QiIHZhbHVlPSI8P3BocCBlY2hvICRsb2dpbl9zdGF=dXM7ID8-Ii8-CiAgICAgICAgPGlucHV=IHR5cGU9ImhpZGRlbiIgbmFtZT=ibWluaW9yYW5nZV9mb3Jnb3RwaG9uZSIKICAgICAgICAgICAgICAgdmFsdWU9Ijw_cGhwIGVjaG8gd3BfY3JlYXRlX25vbmNlKCAnbWluaW9yYW5nZS=yLWZhY3Rvci1mb3Jnb3RwaG9uZScgKTsgPz4iLz4KICAgICAgICA8aW5wdXQgdHlwZT=iaGlkZGVuIiBuYW1lPSJvcHRpb24iIHZhbHVlPSJtaW5pb3JhbmdlX2ZvcmdvdHBob25lIj4KICAgICAgICA8aW5wdXQgdHlwZT=iaGlkZGVuIiBuYW1lPSJyZWRpcmVjdF9=byIgdmFsdWU9Ijw_cGhwIGVjaG8gJHJlZGlyZWN=X3RvOyA_PiIvPgogICAgICAgIDxpbnB1dCB=eXBlPSJoaWRkZW4iIG5hbWU9InNlc3Npb25faWQiIHZhbHVlPSI8P3BocCBlY2hvICRzZXNzaW9uX2lkX2VuY3J5cHQ7ID8-Ii8-CiAgICA8L2Zvcm=-CiAgICA8Zm9ybSBuYW1lPSJmIiBpZD=ibW8yZl9hbHRlcm5hdGVfbG9naW5fa2JhZm9ybSIgbWV=aG9kPSJwb3N=IiBjbGFzcz=ibW8yZl9kaXNwbGF5X25vbmVfZm9ybXMiPgogICAgICAgIDxpbnB1dCB=eXBlPSJoaWRkZW4iIG5hbWU9Im1pbmlvcmFuZ2VfYWx=ZXJuYXRlX2xvZ2luX2tiYV9ub25jZSIKICAgICAgICAgICAgICAgdmFsdWU9Ijw_cGhwIGVjaG8gd3BfY3JlYXRlX25vbmNlKCAnbWluaW9yYW5nZS=yLWZhY3Rvci1hbHRlcm5hdGUtbG9naW4ta2JhLW5vbmNlJyApOyA_PiIvPgogICAgICAgIDxpbnB1dCB=eXBlPSJoaWRkZW4iIG5hbWU9Im9wdGlvbiIgdmFsdWU9Im1pbmlvcmFuZ2VfYWx=ZXJuYXRlX2xvZ2luX2tiYSI-CiAgICAgICAgPGlucHV=IHR5cGU9ImhpZGRlbiIgbmFtZT=icmVkaXJlY3RfdG8iIHZhbHVlPSI8P3BocCBlY2hvICRyZWRpcmVjdF9=bzsgPz4iLz4KICAgICAgICA8aW5wdXQgdHlwZT=iaGlkZGVuIiBuYW1lPSJzZXNzaW9uX2lkIiB2YWx1ZT=iPD9waHAgZWNobyAkc2Vzc2lvbl9pZF9lbmNyeXB=OyA_PiIvPgogICAgPC9mb3JtPgogICAgCiAgICA8c2NyaXB=PgogICAgICAgIHZhciB=aW1lb3V=OwogICAgICAgIHZhciBsb2dpbl9zdGF=dXMgPSAnPD9waHAgZWNobyAkbG9naW5fc3RhdHVzOz8-JzsKICAgICAgICB2YXIgY2FsbHMgICAgID=gMDsKICAgICAgICB2YXIgb25wcmVtID=gJzw_cGhwIGVjaG8gTU8yRl9JU19PTlBSRU=7ID8-JzsKICAgICAgICAKICAgICAgICBpZihsb2dpbl9zdGF=dXMgIT=gIk1PXzJfRkFDVE9SX=NIQUxMRU5HRV9QVVNIX=5PVElGSUNBVElPTlMiICYmIG9ucHJlbSA9PTEpCiAgICAgICAgewogICAgICAgICAgICBwb2xsUHVzaFZhbGlkYXRpb24oKTsKICAgICAgICAgICAgZnVuY3Rpb24gcG9sbFB1c2hWYWxpZGF=aW9uKCkKICAgICAgICAgICAgeyAgIGNhbGxzID=gY2FsbHMgKyAxOwogICAgICAgICAgICAgICAgdmFyIGRhdGEgPSB7J3R4aWQnOic8P3BocCBlY2hvICRtbzJmX=VWX3R4aWQ7Pz4nfTsKICAgICAgICAgICAgICAgICAgICBqUXVlcnkuYWpheCh7CiAgICAgICAgICAgICAgICAgICAgdXJsOiAnPD9waHAgZWNobyBnZXRfc2l=ZV9vcHRpb24oInNpdGV1cmwiKTsgPz4nKyIvd3AtbG9naW4ucGhwIiwKICAgICAgICAgICAgICAgICAgICB=eXBlOiAiUE9TVCIsCiAgICAgICAgICAgICAgICAgICAgZGF=YTogZGF=YSwKICAgICAgICAgICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbiAocmVzdWx=KSB7CiAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgdmFyIHN=YXR1cyA9IHJlc3VsdDsKICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdHVzID=9IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeSgnaW5wdXRbbmFtZT=idHhfdHlwZSJdJykudmFsKCJFViIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5KCcjbW8yZl9tb2JpbGVfdmFsaWRhdGlvbl9mb3JtJykuc3VibWl=KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChzdGF=dXMgPT=gJ=VSUk9SJyB8fCBzdGF=dXMgPT=gJ=ZBSUxFRCcgfHwgc3RhdHVzID=9ICdERU5JRUQnIHx8IHN=YXR1cyA9PTApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeSgnI21vMmZfYmFja3RvX21vX2xvZ2luZm9ybScpLnN1Ym1pdCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgIH=gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihjYWxsczwzMDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dCA9IHNldFRpbWVvdXQocG9sbFB1c2hWYWxpZGF=aW9uLCAxMDAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH=KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5KCcjbW8yZl9iYWNrdG9fbW9fbG9naW5mb3JtJykuc3VibWl=KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgIH=KICAgICAgICAgICAgICAgIH=pOwogICAgICAgICAgICB9CgoKICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgIHsKICAgICAgICAgICAgcG9sbFB1c2hWYWxpZGF=aW9uKCk7CiAgICAgICAgICAgIGZ1bmN=aW9uIHBvbGxQdXNoVmFsaWRhdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciB=cmFuc=lkID=gIjw_cGhwIGVjaG8gJGNvb2tpZXZhbHVlOy8vIGVjaG8gTU8yZl9VdGlsaXR5OjptbzJmX3JldHJpZXZlX3VzZXJfdGVtcF92YWx1ZXMoICdtbzJmX3RyYW5zYWN=aW9uSWQnLCRzZXNzaW9uX2lkX2VuY3J5cHQgKTsgPz4iOwogICAgICAgICAgICAgICAgdmFyIGpzb25TdHJpbmcgPSAie1widHhJZFwiOlwiIiArIHRyYW5zSWQgKyAiXCJ9IjsKICAgICAgICAgICAgICAgIHZhciBwb3N=VXJsID=gIjw_cGhwIGVjaG8gTU9fSE9TVF9OQU1FOyAgPz4iICsgIi9tb2FzL2FwaS9hdXRoL2F1dGgtc3RhdHVzIjsKCiAgICAgICAgICAgICAgICBqUXVlcnkuYWpheCh7CiAgICAgICAgICAgICAgICAgICAgdXJsOiBwb3N=VXJsLAogICAgICAgICAgICAgICAgICAgIHR5cGU6ICJQT1NUIiwKICAgICAgICAgICAgICAgICAgICBkYXRhVHlwZTogImpzb24iLAogICAgICAgICAgICAgICAgICAgIGRhdGE6IGpzb25TdHJpbmcsCiAgICAgICAgICAgICAgICAgICAgY29udGVudFR5cGU6ICJhcHBsaWNhdGlvbi9qc29uOyBjaGFyc2V=PXV=Zi=4IiwKICAgICAgICAgICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbiAocmVzdWx=KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzdGF=dXMgPSBKU=9OLnBhcnNlKEpTT=4uc3RyaW5naWZ5KHJlc3VsdCkpLnN=YXR1czsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN=YXR1cyA9PSAnU1VDQ=VTUycpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeSgnaW5wdXRbbmFtZT=idHhfdHlwZSJdJykudmFsKCJQTiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5KCcjbW8yZl9tb2JpbGVfdmFsaWRhdGlvbl9mb3JtJykuc3VibWl=KCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH=gZWxzZSBpZiAoc3RhdHVzID=9ICdFUlJPUicgfHwgc3RhdHVzID=9ICdGQUlMRUQnIHx8IHN=YXR1cyA9PSAnREVOSUVEJykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5KCcjbW8yZl9iYWNrdG9fbW9fbG9naW5mb3JtJykuc3VibWl=KCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH=gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB=aW1lb3V=ID=gc2V=VGltZW91dChwb2xsUHVzaFZhbGlkYXRpb24sIDMwMDApOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH=KICAgICAgICB9CgogICAgICAgIGZ1bmN=aW9uIG1vbG9naW5vZmZsaW5lKCkgewogICAgICAgICAgICBqUXVlcnkoJyNtbzJmX3Nob3dfc29mdHRva2VuX2xvZ2luZm9ybScpLnN1Ym1pdCgpOwogICAgICAgIH=KCiAgICAgICAgZnVuY3Rpb24gbW9sb2dpbmZvcmdvdHBob25lKCkgewogICAgICAgICAgICBqUXVlcnkoJyNtbzJmX3Nob3dfZm9yZ29=cGhvbmVfbG9naW5mb3JtJykuc3VibWl=KCk7CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBtb2xvZ2luYmFjaygpIHsKICAgICAgICAgICAgalF1ZXJ5KCcjbW8yZl9iYWNrdG9fbW9fbG9naW5mb3JtJykuc3VibWl=KCk7CiAgICAgICAgfQoKICAgICAgICBqUXVlcnkoJ2FbaHJlZj=iI21vMmZfYWx=ZXJuYXRlX2xvZ2luX2tiYSJdJykuY2xpY2soZnVuY3Rpb24gKCkgewogICAgICAgICAgICBqUXVlcnkoJyNtbzJmX2FsdGVybmF=ZV9sb2dpbl9rYmFmb3JtJykuc3VibWl=KCk7CiAgICAgICAgfSk7CiAgICAgICAgalF1ZXJ5KCdhW2hyZWY9IiNtbzJmX2JhY2t1cF9vcHRpb24iXScpLmNsaWNrKGZ1bmN=aW9uKCkgewogICAgICAgICAgICBqUXVlcnkoJyNtbzJmX2JhY2t1cCcpLnN1Ym1pdCgpOwogICAgICAgIH=pOwogICAgICAgIGpRdWVyeSgnYVtocmVmPSIjbW8yZl9iYWNrdXBfZ2VuZXJhdGUiXScpLmNsaWNrKGZ1bmN=aW9uKCkgewogICAgICAgICAgICBqUXVlcnkoJyNtbzJmX2NyZWF=ZV9iYWNrdXBfY29kZXMnKS5zdWJtaXQoKTsKICAgICAgICB9KTsKCiAgICA8L3NjcmlwdD4KICAgIDwvYm9keT4KICAgIDwvaHRtbD4KCTw_cGhwCn=KCmZ1bmN=aW9uIG1vMmZfZ2V=X3FyY29kZV9hdXRoZW5=aWNhdGlvbl9wcm9tcHQoICRsb2dpbl9zdGF=dXMsICRsb2dpbl9tZXNzYWdlLCAkcmVkaXJlY3RfdG8sICRxckNvZGUsICRzZXNzaW9uX2lkX2VuY3J5cHQgLCAkY29va2lldmFsdWUpIHsKCSRtbzJmX2VuYWJsZV9mb3Jnb3RwaG9uZSA9IE1vV3Buc1V=aWxpdHk6OmdldF9tbzJmX2RiX29wdGlvbignbW8yZl9lbmFibGVfZm9yZ29=cGhvbmUnLCAnZ2V=X29wdGlvbicpOwoJJG1vX3dwbnNfY29uZmlnID=gbmV3IE1vV3Buc=hhbmRsZXIoKTsKCSRtbzJmX2lzX25ld19jdXN=b21lciAgICA9IE1vV3Buc1V=aWxpdHk6OmdldF9tbzJmX2RiX29wdGlvbignbW8yZl9pc19OQycsICdnZXRfb3B=aW9uJyk7CiAgICAkdXNlcl9pZCA9IE1PMmZfVXRpbGl=eTo6bW8yZl9nZXRfdHJhbnNpZW5=KCRzZXNzaW9uX2lkX2VuY3J5cHQsICdtbzJmX2N1cnJlbnRfdXNlcl9pZCcpOwoJPz4KICAgIDxodG1sPgogICAgPGhlYWQ-CiAgICAgICAgPG1ldGEgaHR=cC1lcXVpdj=iWC1VQS1Db21wYXRpYmxlIiBjb25=ZW5=PSJJRT1lZGdlIj4KICAgICAgICA8bWV=YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD=id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml=aWFsLXNjYWxlPTEiPgoJCTw_cGhwCgkJZWNob19qc19jc3NfZmlsZXMoKTsgPz4KICAgIDwvaGVhZD4KICAgIDxib2R5PgogICAgPGRpdiBjbGFzcz=ibW8yZl9tb2RhbCIgdGFiaW5kZXg9Ii=xIiByb2xlPSJkaWFsb2ciPgogICAgICAgIDxkaXYgY2xhc3M9Im1vMmYtbW9kYWwtYmFja2Ryb3AiPjwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9Im1vX2N1c3RvbWVyX3ZhbGlkYXRpb24tbW9kYWwtZGlhbG9nIG1vX2N1c3RvbWVyX3ZhbGlkYXRpb24tbW9kYWwtbWQiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJsb2dpbiBtb19jdXN=b21lcl92YWxpZGF=aW9uLW1vZGFsLWNvbnRlbnQiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz=ibW8yZl9tb2RhbC1oZWFkZXIiPgogICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz=ibW8yZl9tb2RhbC1=aXRsZSI-CiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR=b24gdHlwZT=iYnV=dG9uIiBjbGFzcz=ibW8yZl9jbG9zZSIgZGF=YS1kaXNtaXNzPSJtb2RhbCIgYXJpYS1sYWJlbD=iQ2xvc2UiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl=bGU9Ijw_cGhwIGVjaG8gbW8yZl9sdCggJ=JhY2sgdG8gbG9naW4nICk7ID8-IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uY2xpY2s9Im1vbG9naW5iYWNrKCk7Ij48c3BhbiBhcmlhLWhpZGRlbj=idHJ1ZSI-JnRpbWVzOzwvc3Bhbj48L2J1dHRvbj4KCQkJCQkJPD9waHAgZWNobyBtbzJmX2x=KCAnU2NhbiBRUiBDb2RlJyApOyA_PjwvaDQ-CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vMmZfbW9kYWwtYm9keSBjZW5=ZXIiPgoJCQkJCTw_cGhwIGlmICggaXNzZXQoICRsb2dpbl9tZXNzYWdlICkgJiYgISBlbXB=eSggJGxvZ2luX21lc3NhZ2UgKSApIHsgPz4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD=ib3RwTWVzc2FnZSI-CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz=ibW8yZmFfZGlzcGxheV9tZXNzYWdlX2Zyb25=ZW5kIj48P3BocCBlY2hvICRsb2dpbl9tZXNzYWdlOyA_PjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY-CiAgICAgICAgICAgICAgICAgICAgICAgIDxicj4KCQkJCQk8P3BocCB9ID8-CiAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD=ic2NhblFSU2VjdGlvbiI-CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9Im1hcmdpbi1ib3R=b2=6MTAlOyI-CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2VudGVyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJtbzJmX2xvZ2luX3Byb21wdF9tZXNzYWdlcyI-PD9waHAgZWNobyBtbzJmX2x=KCAnSWRlbnRpZnkgeW91cnNlbGYgYnkgc2Nhbm5pbmcgdGhlIFFSIGNvZGUgd2l=aCBtaW5pT3JhbmdlIEF1dGhlbnRpY2F=b3IgYXBwLicgKTsgPz48L3A-CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NlbnRlcj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY-CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9InNob3dRckNvZGUiIHN=eWxlPSJtYXJnaW4tYm9=dG9tOjEwJTsiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNlbnRlcj48P3BocCBlY2hvICc8aW1nIHNyYz=iZGF=YTppbWFnZS9qcGc7YmFzZTY=LCcgLiAkcXJDb2RlIC4gJyIgLz4nOyA_PjwvY2VudGVyPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9InBhZGRpbmctcmlnaHQ6MiU7Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNlbnRlcj4KCQkJICAgPD9waHAgaWYgKCAhICRtbzJmX2lzX25ld19jdXN=b21lciApIHsgPz4KCQkJCSAgIDw_cGhwIGlmICggJG1vMmZfZW5hYmxlX2ZvcmdvdHBob25lICkgeyA_PgogICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB=eXBlPSJidXR=b24iIG5hbWU9Im1pbmlvcmFuZ2VfbG9naW5fZm9yZ29=cGhvbmUiIG9uY2xpY2s9Im1vbG9naW5mb3Jnb3RwaG9uZSgpOyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9Im1pbmlvcmFuZ2VfbG9naW5fZm9yZ29=cGhvbmUiIGNsYXNzPSJtaW5pb3JhbmdlX2xvZ2luX2ZvcmdvdHBob25lIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT=ibWFyZ2luLXJpZ2h=OjUlOyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9Ijw_cGhwIGVjaG8gbW8yZl9sdCggJ=ZvcmdvdCBQaG9uZT8nICk7ID8-Ii8-CgkJCQkgICA8P3BocCB9ID8-CiAgICAgICAgICAgICAgICAgICAmZW1zcDsmZW1zcDsKCQkJICAgPD9waHAgfSA_PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV=IHR5cGU9ImJ1dHRvbiIgbmFtZT=ibWluaW9yYW5nZV9sb2dpbl9vZmZsaW5lIiBvbmNsaWNrPSJtb2xvZ2lub2ZmbGluZSgpOyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD=ibWluaW9yYW5nZV9sb2dpbl9vZmZsaW5lIiBjbGFzcz=ibWluaW9yYW5nZV9sb2dpbl9vZmZsaW5lIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPSI8P3BocCBlY2hvIG1vMmZfbHQoICdQaG9uZSBpcyBPZmZsaW5lPycgKTsgPz4iLz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9jZW5=ZXI-CiAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihlbXB=eShnZXRfdXNlcl9tZXRhKCR1c2VyX2lkLCAnbW9fYmFja3VwX2NvZGVfZ2VuZXJhdGVkJywgdHJ1ZSkpKXsgPz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjbW8yZl9iYWNrdXBfZ2VuZXJhdGUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgc3R5bGU9ImZvbnQtc2l6ZToxNHB4OyBmb25=LXdlaWdodDpib2xkOyI-PD9waHAgZWNobyBfXygnU2VuZCBiYWNrdXAgY29kZXMgb24gZW1haWwnLCAnbWluaW9yYW5nZS=yLWZhY3Rvci1hdXRoZW5=aWNhdGlvbicpOz8-PC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E-CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY-CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocCB9ZWxzZXsgPz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjbW8yZl9iYWNrdXBfb3B=aW9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIHN=eWxlPSJmb25=LXNpemU6MTRweDsgZm9udC13ZWlnaHQ6Ym9sZDsiPjw_cGhwIGVjaG8gX18oJ1VzZSBCYWNrdXAgQ29kZXMnLCAnbWluaW9yYW5nZS=yLWZhY3Rvci1hdXRoZW5=aWNhdGlvbicpOz8-PC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E-CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY-CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocCB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA_PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN=eWxlPSJwYWRkaW5nOjEwcHg7Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPjxhIGhyZWY9Ijw_cGhwIGVjaG8gJG1vX3dwbnNfY29uZmlnLT5sb2NrZWRPdXRsaW5rKCk7Pz4iIHRhcmdldD=iX2JsYW5rIiBzdHlsZT=iY29sb3I6I2NhMjk2Mztmb25=LXdlaWdodDpib2xkOyI-SSdtIGxvY2tlZCBvdXQgJiB1bmFibGUgdG8gbG9naW4uPC9hPjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY-CiAgICAgICAgICAgICAgICAgICAgPC9kaXY-CgkJCQkJPD9waHAgCiAgICAgICAgICAgICAgICAgICAgICAgIG1vMmZfY3VzdG9taXplX2xvZ28oKTsKICAgICAgICAgICAgICAgICAgICAgICAgbW8yZl9jcmVhdGVfYmFja3VwX2Zvcm=oJHJlZGlyZWN=X3RvLCAkc2Vzc2lvbl9pZF9lbmNyeXB=LCAkbG9naW5fc3RhdHVzLCAkbG9naW5fbWVzc2FnZSk7IAogICAgICAgICAgICAgICAgICAgID8-CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY-CiAgICAgICAgPC9kaXY-CiAgICA8L2Rpdj4KICAgIDxmb3JtIG5hbWU9ImYiIGlkPSJtbzJmX2JhY2t=b19tb19sb2dpbmZvcm=iIG1ldGhvZD=icG9zdCIgYWN=aW9uPSI8P3BocCBlY2hvIHdwX2xvZ2luX3VybCgpOyA_PiIKICAgICAgICAgIGNsYXNzPSJtbzJmX2Rpc3BsYXlfbm9uZV9mb3JtcyI-CiAgICAgICAgPGlucHV=IHR5cGU9ImhpZGRlbiIgbmFtZT=ibWluaW9yYW5nZV9tb2JpbGVfdmFsaWRhdGlvbl9mYWlsZWRfbm9uY2UiCiAgICAgICAgICAgICAgIHZhbHVlPSI8P3BocCBlY2hvIHdwX2NyZWF=ZV9ub25jZSggJ21pbmlvcmFuZ2UtMi1mYWN=b3ItbW9iaWxlLXZhbGlkYXRpb24tZmFpbGVkLW5vbmNlJyApOyA_PiIvPgogICAgICAgIDxpbnB1dCB=eXBlPSJoaWRkZW4iIG5hbWU9InJlZGlyZWN=X3RvIiB2YWx1ZT=iPD9waHAgZWNobyAkcmVkaXJlY3RfdG87ID8-Ii8-CiAgICAgICAgPGlucHV=IHR5cGU9ImhpZGRlbiIgbmFtZT=ic2Vzc2lvbl9pZCIgdmFsdWU9Ijw_cGhwIGVjaG8gJHNlc3Npb25faWRfZW5jcnlwdDsgPz4iLz4KICAgIDwvZm9ybT4KICAgIDxmb3JtIG5hbWU9ImYiIGlkPSJtbzJmX21vYmlsZV92YWxpZGF=aW9uX2Zvcm=iIG1ldGhvZD=icG9zdCIgY2xhc3M9Im1vMmZfZGlzcGxheV9ub25lX2Zvcm1zIj4KICAgICAgICA8aW5wdXQgdHlwZT=iaGlkZGVuIiBuYW1lPSJtaW5pb3JhbmdlX21vYmlsZV92YWxpZGF=aW9uX25vbmNlIgogICAgICAgICAgICAgICB2YWx1ZT=iPD9waHAgZWNobyB3cF9jcmVhdGVfbm9uY2UoICdtaW5pb3JhbmdlLTItZmFjdG9yLW1vYmlsZS12YWxpZGF=aW9uLW5vbmNlJyApOyA_PiIvPgogICAgICAgIDxpbnB1dCB=eXBlPSJoaWRkZW4iIG5hbWU9InJlZGlyZWN=X3RvIiB2YWx1ZT=iPD9waHAgZWNobyAkcmVkaXJlY3RfdG87ID8-Ii8-CiAgICAgICAgPGlucHV=IHR5cGU9ImhpZGRlbiIgbmFtZT=ib3B=aW9uIiB2YWx1ZT=ibWluaW9yYW5nZV9tb2JpbGVfdmFsaWRhdGlvbiI-CiAgICAgICAgPGlucHV=IHR5cGU9ImhpZGRlbiIgbmFtZT=ic2Vzc2lvbl9pZCIgdmFsdWU9Ijw_cGhwIGVjaG8gJHNlc3Npb25faWRfZW5jcnlwdDsgPz4iLz4KICAgIDwvZm9ybT4KICAgIDxmb3JtIG5hbWU9ImYiIGlkPSJtbzJmX3Nob3dfc29mdHRva2VuX2xvZ2luZm9ybSIgbWV=aG9kPSJwb3N=IiBjbGFzcz=ibW8yZl9kaXNwbGF5X25vbmVfZm9ybXMiPgogICAgICAgIDxpbnB1dCB=eXBlPSJoaWRkZW4iIG5hbWU9Im1pbmlvcmFuZ2Vfc29mdHRva2VuIgogICAgICAgICAgICAgICB2YWx1ZT=iPD9waHAgZWNobyB3cF9jcmVhdGVfbm9uY2UoICdtaW5pb3JhbmdlLTItZmFjdG9yLXNvZnR=b2tlbicgKTsgPz4iLz4KICAgICAgICA8aW5wdXQgdHlwZT=iaGlkZGVuIiBuYW1lPSJvcHRpb24iIHZhbHVlPSJtaW5pb3JhbmdlX3NvZnR=b2tlbiI-CiAgICAgICAgPGlucHV=IHR5cGU9ImhpZGRlbiIgbmFtZT=icmVkaXJlY3RfdG8iIHZhbHVlPSI8P3BocCBlY2hvICRyZWRpcmVjdF9=bzsgPz4iLz4KICAgICAgICA8aW5wdXQgdHlwZT=iaGlkZGVuIiBuYW1lPSJzZXNzaW9uX2lkIiB2YWx1ZT=iPD9waHAgZWNobyAkc2Vzc2lvbl9pZF9lbmNyeXB=OyA_PiIvPgogICAgPC9mb3JtPgogICAgPGZvcm=gbmFtZT=iZiIgaWQ9Im1vMmZfc2hvd19mb3Jnb3RwaG9uZV9sb2dpbmZvcm=iIG1ldGhvZD=icG9zdCIgY2xhc3M9Im1vMmZfZGlzcGxheV9ub25lX2Zvcm1zIj4KICAgICAgICA8aW5wdXQgdHlwZT=iaGlkZGVuIiBuYW1lPSJyZXF1ZXN=X29yaWdpbl9tZXRob2QiIHZhbHVlPSI8P3BocCBlY2hvICRsb2dpbl9zdGF=dXM7ID8-Ii8-CiAgICAgICAgPGlucHV=IHR5cGU9ImhpZGRlbiIgbmFtZT=ibWluaW9yYW5nZV9mb3Jnb3RwaG9uZSIKICAgICAgICAgICAgICAgdmFsdWU9Ijw_cGhwIGVjaG8gd3BfY3JlYXRlX25vbmNlKCAnbWluaW9yYW5nZS=yLWZhY3Rvci1mb3Jnb3RwaG9uZScgKTsgPz4iLz4KICAgICAgICA8aW5wdXQgdHlwZT=iaGlkZGVuIiBuYW1lPSJyZWRpcmVjdF9=byIgdmFsdWU9Ijw_cGhwIGVjaG8gJHJlZGlyZWN=X3RvOyA_PiIvPgogICAgICAgIDxpbnB1dCB=eXBlPSJoaWRkZW4iIG5hbWU9Im9wdGlvbiIgdmFsdWU9Im1pbmlvcmFuZ2VfZm9yZ29=cGhvbmUiPgogICAgICAgIDxpbnB1dCB=eXBlPSJoaWRkZW4iIG5hbWU9InNlc3Npb25faWQiIHZhbHVlPSI8P3BocCBlY2hvICRzZXNzaW9uX2lkX2VuY3J5cHQ7ID8-Ii8-CiAgICA8L2Zvcm=-CgogICAgPHNjcmlwdD4KICAgICAgICB2YXIgdGltZW91dDsKICAgICAgICBwb2xsTW9iaWxlVmFsaWRhdGlvbigpOwoKICAgICAgICBmdW5jdGlvbiBwb2xsTW9iaWxlVmFsaWRhdGlvbigpIHsKICAgICAgICAgICAgdmFyIHRyYW5zSWQgPSAiPD9waHAgZWNobyAkY29va2lldmFsdWU7Ly9lY2hvIE1PMmZfVXRpbGl=eTo6bW8yZl9yZXRyaWV2ZV91c2VyX3RlbXBfdmFsdWVzKCAnbW8yZl9=cmFuc2FjdGlvbklkJywkc2Vzc2lvbl9pZF9lbmNyeXB=ICk7ID8-IjsKICAgICAgICAgICAgdmFyIGpzb25TdHJpbmcgPSAie1widHhJZFwiOlwiIiArIHRyYW5zSWQgKyAiXCJ9IjsKICAgICAgICAgICAgdmFyIHBvc3RVcmwgPSAiPD9waHAgZWNobyBNT19IT1NUX=5BTUU7ICA_PiIgKyAiL21vYXMvYXBpL2F1dGgvYXV=aC1zdGF=dXMiOwogICAgICAgICAgICBqUXVlcnkuYWpheCh7CiAgICAgICAgICAgICAgICB1cmw6IHBvc3RVcmwsCiAgICAgICAgICAgICAgICB=eXBlOiAiUE9TVCIsCiAgICAgICAgICAgICAgICBkYXRhVHlwZTogImpzb24iLAogICAgICAgICAgICAgICAgZGF=YToganNvblN=cmluZywKICAgICAgICAgICAgICAgIGNvbnRlbnRUeXBlOiAiYXBwbGljYXRpb24vanNvbjsgY2hhcnNldD11dGYtOCIsCiAgICAgICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbiAocmVzdWx=KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHN=YXR1cyA9IEpTT=4ucGFyc2UoSlNPTi5zdHJpbmdpZnkocmVzdWx=KSkuc3RhdHVzOwogICAgICAgICAgICAgICAgICAgIGlmIChzdGF=dXMgPT=gJ1NVQ=NFU1MnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjb25=ZW5=ID=gIjxkaXYgaWQ9J3N1Y2Nlc3MnPjxjZW5=ZXI-PGltZyBzcmM9JyIgKyAiPD9waHAgZWNobyBwbHVnaW5zX3VybCggJ2luY2x1ZGVzL2ltYWdlcy9yaWdodC5wbmcnLCBkaXJuYW1lKGRpcm5hbWUoX19GSUxFX18pKSk7Pz4iICsgIicgLz48L2NlbnRlcj48L2Rpdj4iOwogICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkoIiNzaG93UXJDb2RlIikuZW1wdHkoKTsKICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5KCIjc2hvd1FyQ29kZSIpLmFwcGVuZChjb25=ZW5=KTsKICAgICAgICAgICAgICAgICAgICAgICAgc2V=VGltZW91dChmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkoIiNtbzJmX21vYmlsZV92YWxpZGF=aW9uX2Zvcm=iKS5zdWJtaXQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgfSwgMTAwKTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHN=YXR1cyA9PSAnRVJST1InIHx8IHN=YXR1cyA9PSAnRkFJTEVEJykgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgY29udGVudCA9ICI8ZGl2IGlkPSdlcnJvcic-PGNlbnRlcj48aW1nIHNyYz=nIiArICI8P3BocCBlY2hvIHBsdWdpbnNfdXJsKCAnaW5jbHVkZXMvaW1hZ2VzL3dyb25nLnBuZycsIGRpcm5hbWUoZGlybmFtZShfX=ZJTEVfXykpKTs_PiIgKyAiJyAvPjwvY2VudGVyPjwvZGl2PiI7CiAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeSgiI3Nob3dRckNvZGUiKS5lbXB=eSgpOwogICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkoIiNzaG93UXJDb2RlIikuYXBwZW5kKGNvbnRlbnQpOwogICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V=KGZ1bmN=aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeSgnI21vMmZfYmFja3RvX21vX2xvZ2luZm9ybScpLnN1Ym1pdCgpOwogICAgICAgICAgICAgICAgICAgICAgICB9LCAxMDAwKTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICB=aW1lb3V=ID=gc2V=VGltZW91dChwb2xsTW9iaWxlVmFsaWRhdGlvbiwgMzAwMCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKICAgICAgICB9CgogICAgICAgIGZ1bmN=aW9uIG1vbG9naW5vZmZsaW5lKCkgewogICAgICAgICAgICBqUXVlcnkoJyNtbzJmX3Nob3dfc29mdHRva2VuX2xvZ2luZm9ybScpLnN1Ym1pdCgpOwogICAgICAgIH=KCiAgICAgICAgZnVuY3Rpb24gbW9sb2dpbmZvcmdvdHBob25lKCkgewogICAgICAgICAgICBqUXVlcnkoJyNtbzJmX3Nob3dfZm9yZ29=cGhvbmVfbG9naW5mb3JtJykuc3VibWl=KCk7CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBtb2xvZ2luYmFjaygpIHsKICAgICAgICAgICAgalF1ZXJ5KCcjbW8yZl9iYWNrdG9fbW9fbG9naW5mb3JtJykuc3VibWl=KCk7CiAgICAgICAgfQogICAgICAgIGpRdWVyeSgnYVtocmVmPSIjbW8yZl9iYWNrdXBfb3B=aW9uIl=nKS5jbGljayhmdW5jdGlvbigpIHsKICAgICAgICAgICAgalF1ZXJ5KCcjbW8yZl9iYWNrdXAnKS5zdWJtaXQoKTsKICAgICAgICB9KTsKICAgICAgICBqUXVlcnkoJ2FbaHJlZj=iI21vMmZfYmFja3VwX2dlbmVyYXRlIl=nKS5jbGljayhmdW5jdGlvbigpIHsKICAgICAgICAgICAgalF1ZXJ5KCcjbW8yZl9jcmVhdGVfYmFja3VwX2NvZGVzJykuc3VibWl=KCk7CiAgICAgICAgfSk7CgogICAgPC9zY3JpcHQ-CiAgICA8L2JvZHk-CiAgICA8L2h=bWw-Cgk8P3BocAp9CgpmdW5jdGlvbiAgbW8yZl9nZXRfb3RwX2F1dGhlbnRpY2F=aW9uX3Byb21wdCggJGxvZ2luX3N=YXR1cywgJGxvZ2luX21lc3NhZ2UsICRyZWRpcmVjdF9=bywkc2Vzc2lvbl9pZF9lbmNyeXB=LCR1c2VyX2lkLCRzaG93X2JhY2tfYnV=dG9uID1udWxsICwkbW8yZmFfdHJhbnNhY3Rpb25faWQgPSBudWxsICkgewogICAgZ2xvYmFsICRNbzJmZGJRdWVyaWVzLCRtb1dwbnNVdGlsaXR5OwoJJG1vMmZfZW5hYmxlX2ZvcmdvdHBob25lID=gTW9XcG5zVXRpbGl=eTo6Z2V=X21vMmZfZGJfb3B=aW9uKCdtbzJmX2VuYWJsZV9mb3Jnb3RwaG9uZScsICdnZXRfb3B=aW9uJyk7CgkkbW9fd3Buc19jb25maWcgPSBuZXcgTW9XcG5zSGFuZGxlcigpOwoJJG1vMmZfaXNfbmV3X2N1c3RvbWVyICAgID=gTW9XcG5zVXRpbGl=eTo6Z2V=X21vMmZfZGJfb3B=aW9uKCdtbzJmX2lzX=5DJywgJ2dldF9vcHRpb24nKTsKICAgICRhdHRlbXB=cyA9IGdldF9vcHRpb24oJ21vMmZfYXR=ZW1wdHNfYmVmb3JlX3JlZGlyZWN=JywgMyk7CiAgICAkdXNlcl9pZCA9IE1PMmZfVXRpbGl=eTo6bW8yZl9nZXRfdHJhbnNpZW5=KCRzZXNzaW9uX2lkX2VuY3J5cHQsICdtbzJmX2N1cnJlbnRfdXNlcl9pZCcpOwogICAgJG1vMmZfb3RwX292ZXJfZW1haWxfY29uZmlnX3N=YXR1cyAgICAgICAgPSAkTW8yZmRiUXVlcmllcy=-Z2V=X3VzZXJfZGV=YWlsKCAnbW8yZl9PVFBPdmVyRW1haWxfY29uZmlnX3N=YXR1cycsICR1c2VyX2lkICk7CiAgICAKICAgIE1PMmZfVXRpbGl=eTo6bW8yZl9kZWJ1Z19maWxlKCdQcm9tcHRlZCAyZmEgdmFsaWRhdGlvbiBzY3JlZW4gJy4nVXNlcl9JUC=nLiRtb1dwbnNVdGlsaXR5LT5nZXRfY2xpZW5=X2lwKCkgLicgVXNlcl9JZC=nLiR1c2VyX2lkKTsKICAgID8-CiAgICA8aHRtbD4KICAgIDxoZWFkPgogICAgICAgIDxtZXRhIGh=dHAtZXF1aXY9IlgtVUEtQ29tcGF=aWJsZSIgY29udGVudD=iSUU9ZWRnZSI-CiAgICAgICAgPG1ldGEgbmFtZT=idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR=aCwgaW5pdGlhbC1zY2FsZT=xIj4KCQk8P3BocAoJCWVjaG9fanNfY3NzX2ZpbGVzKCk7CgkJPz4KICAgIDwvaGVhZD4KICAgIDxib2R5PgogICAgPGRpdiBjbGFzcz=ibW8yZl9tb2RhbCIgdGFiaW5kZXg9Ii=xIiByb2xlPSJkaWFsb2ciPgogICAgICAgIDxkaXYgY2xhc3M9Im1vMmYtbW9kYWwtYmFja2Ryb3AiPjwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9Im1vX2N1c3RvbWVyX3ZhbGlkYXRpb24tbW9kYWwtZGlhbG9nIG1vX2N1c3RvbWVyX3ZhbGlkYXRpb24tbW9kYWwtbWQiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJsb2dpbiBtb19jdXN=b21lcl92YWxpZGF=aW9uLW1vZGFsLWNvbnRlbnQiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz=ibW8yZl9tb2RhbC1oZWFkZXIiPgogICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz=ibW8yZl9tb2RhbC1=aXRsZSI-CiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR=b24gdHlwZT=iYnV=dG9uIiBjbGFzcz=ibW8yZl9jbG9zZSIgZGF=YS1kaXNtaXNzPSJtb2RhbCIgYXJpYS1sYWJlbD=iQ2xvc2UiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl=bGU9Ijw_cGhwIGVjaG8gbW8yZl9sdCggJ=JhY2sgdG8gbG9naW4nICk7ID8-IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uY2xpY2s9Im1vbG9naW5iYWNrKCk7Ij48c3BhbiBhcmlhLWhpZGRlbj=idHJ1ZSI-JnRpbWVzOzwvc3Bhbj48L2J1dHRvbj4KCQkJCQkJPD9waHAgZWNobyBtbzJmX2x=KCAnVmFsaWRhdGUgT1RQJyApOyA_PgogICAgICAgICAgICAgICAgICAgIDwvaDQ-CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vMmZfbW9kYWwtYm9keSBjZW5=ZXIiPgoJCQkJCTw_cGhwIGlmICggaXNzZXQoICRsb2dpbl9tZXNzYWdlICkgJiYgISBlbXB=eSggJGxvZ2luX21lc3NhZ2UgKSApIHsgPz4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD=ib3RwTWVzc2FnZSI-CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz=ibW8yZmFfZGlzcGxheV9tZXNzYWdlX2Zyb25=ZW5kIj48P3BocCBlY2hvICRsb2dpbl9tZXNzYWdlOyA_PjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY-CgkJCQkJPD9waHAgfSA_Pjxicj48P3BocAoJCQkJCT8-CgkJCQkJPHNwYW4-PGI-QXR=ZW1wdHMgbGVmdDwvYj46PC9zcGFuPiA8P3BocCBlY2hvICRhdHRlbXB=czs_Pjxicj4KCQkJCQk8P3BocCBpZigkYXR=ZW1wdHM9PTEpez8-CgkJCQkJPHNwYW4gc3R5bGU9J2NvbG9yOnJlZDsnPjxiPklmIHlvdSBmYWlsIHRvIHZlcmlmeSB5b3VyIGlkZW5=aXR5LCB5b3Ugd2lsbCBiZSByZWRpcmVjdGVkIGJhY2sgdG8gbG9naW4gcGFnZSB=byB2ZXJpZnkgeW91ciBjcmVkZW5=aWFscy48L2I-PC9zcGFuPiA8YnI-CgkJCQkJPD9waHAgfT8-CiAgICAgICAgICAgICAgICAgICAgPGJyPgoJCQkJCTxkaXYgaWQ9InNob3dPVFAiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtbzJmLWxvZ2luLWNvbnRhaW5lciI-CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zm9ybSBuYW1lPSJmIiBpZD=ibW8yZl9zdWJtaXRvdHBfbG9naW5mb3JtIiBtZXRob2Q9InBvc3QiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjZW5=ZXI-CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB=eXBlPSJ=ZXh=IiBuYW1lPSJtbzJmYV9zb2Z=dG9rZW4iIHN=eWxlPSJoZWlnaHQ6MjhweCAhaW1wb3J=YW5=OyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPSI8P3BocCBlY2hvIG1vMmZfbHQoICdFbnRlciBjb2RlJyApOyA_PiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPSJtbzJmYV9zb2Z=dG9rZW4iIHJlcXVpcmVkPSJ=cnVlIiBjbGFzcz=ibW9fb3RwX3Rva2VuIiBhdXRvZm9jdXM9InRydWUiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXR=ZXJuPSJbMC=5XXs=LDh9IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl=bGU9Ijw_cGhwIGVjaG8gbW8yZl9sdCggJ=9ubHkgZGlnaXRzIHdpdGhpbiByYW5nZSA=LTggYXJlIGFsbG93ZWQuJyApOyA_PiIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2VudGVyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxicj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT=ic3VibWl=IiBuYW1lPSJtaW5pb3JhbmdlX29=cF9=b2tlbl9zdWJtaXQiIGlkPSJtaW5pb3JhbmdlX29=cF9=b2tlbl9zdWJtaXQiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJtaW5pb3JhbmdlX29=cF9=b2tlbl9zdWJtaXQiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPSI8P3BocCBlY2hvIG1vMmZfbHQoICdWYWxpZGF=ZScgKTsgPz4iLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZigkc2hvd19iYWNrX2J1dHRvbiA9PSAxKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT=iYnV=dG9uIiBuYW1lPSJtaW5pb3JhbmdlX29=cF9=b2tlbl9iYWNrIiBpZD=ibWluaW9yYW5nZV9vdHBfdG9rZW5fYmFjayIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJtaW5pb3JhbmdlX29=cF9=b2tlbl9zdWJtaXQiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT=iPD9waHAgZWNobyBtbzJmX2x=KCAnQmFjaycgKTsgPz4iLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT=iaGlkZGVuIiBuYW1lPSJyZXF1ZXN=X29yaWdpbl9tZXRob2QiIHZhbHVlPSI8P3BocCBlY2hvICRsb2dpbl9zdGF=dXM7ID8-Ii8-CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV=IHR5cGU9ImhpZGRlbiIgbmFtZT=ibWluaW9yYW5nZV9zb2Z=X3Rva2VuX25vbmNlIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT=iPD9waHAgZWNobyB3cF9jcmVhdGVfbm9uY2UoICdtaW5pb3JhbmdlLTItZmFjdG9yLXNvZnQtdG9rZW4tbm9uY2UnICk7ID8-Ii8-CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV=IHR5cGU9ImhpZGRlbiIgbmFtZT=ib3B=aW9uIiB2YWx1ZT=ibWluaW9yYW5nZV9zb2Z=X3Rva2VuIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT=iaGlkZGVuIiBuYW1lPSJyZWRpcmVjdF9=byIgdmFsdWU9Ijw_cGhwIGVjaG8gJHJlZGlyZWN=X3RvOyA_PiIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB=eXBlPSJoaWRkZW4iIG5hbWU9InNlc3Npb25faWQiIHZhbHVlPSI8P3BocCBlY2hvICRzZXNzaW9uX2lkX2VuY3J5cHQ7ID8-Ii8-CgkJCQkJICAgICAgICAgICAgPD9waHAgaWYoJG1vMmZhX3RyYW5zYWN=aW9uX2lkIT1udWxsKXsgPz4KCQkJCQkgICAgICAgICAgICA8aW5wdXQgdHlwZT=iaGlkZGVuIiBuYW1lPSJtbzJmYV9=cmFuc2FjdGlvbl9pZCIgaWQ9Im1vMmZhX3RyYW5zYWN=aW9uX2lkIiB2YWx1ZT=iPD9waHAgZWNobyAkbW8yZmFfdHJhbnNhY3Rpb25faWQ7ID8-Ii8-CgkJCQkJICAgICAgICA8P3BocCB9Pz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw_cGhwIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJEtiYXNldCA9IGdldF91c2VyX21ldGEoICR1c2VyX2lkICwnU2VjdXJpdHkgUXVlc3Rpb25zJyApOyAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICEgJG1vMmZfaXNfbmV3X2N1c3RvbWVyICkgeyA_PgoJCQkJCQkJCTw_cGhwIGlmICggJG1vMmZfZW5hYmxlX2ZvcmdvdHBob25lICYmIGlzc2V=KCAkbG9naW5fc3RhdHVzICkgJiYgJGxvZ2luX3N=YXR1cyAhPSAnTU9fMl9GQUNUT1JfQ=hBTExFTkdFX=9UUF9PVkVSX=VNQUlMJyAmJiAoc2l6ZW9mKCRLYmFzZXQpICE9IDAgKSApIHsgPz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgbmFtZT=ibWluaW9yYW5nZV9sb2dpbl9mb3Jnb3RwaG9uZSIgb25jbGljaz=ibW9sb2dpbmZvcmdvdHBob25lKCk7IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD=ibWluaW9yYW5nZV9sb2dpbl9mb3Jnb3RwaG9uZSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9Im1vMmYtbGluayI-PD9waHAgZWNobyBtbzJmX2x=KCAnRm9yZ29=IFBob25lID8nICk7ID8-PC9hPgoJCQkJCQkJCTw_cGhwIH=gPz4KCQkJCQkJCTw_cGhwIH=gCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZigkbG9naW5fc3RhdHVzICE9ICdNT18yX=ZBQ1RPUl9DSEFMTEVOR=VfT1RQX=9WRVJfRU1BSUwnIHx8ICgkbG9naW5fc3RhdHVzID=9ICdNT18yX=ZBQ1RPUl9DSEFMTEVOR=VfT1RQX=9WRVJfRU1BSUwnICYmICRtbzJmX29=cF9vdmVyX2VtYWlsX2NvbmZpZ19zdGF=dXMpKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihlbXB=eShnZXRfdXNlcl9tZXRhKCR1c2VyX2lkLCAnbW9fYmFja3VwX2NvZGVfZ2VuZXJhdGVkJywgdHJ1ZSkpKXsgPz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNtbzJmX2JhY2t1cF9nZW5lcmF=ZSI-CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgc3R5bGU9ImZvbnQtc2l6ZToxNHB4OyBmb25=LXdlaWdodDpib2xkOyI-PD9waHAgZWNobyBfXygnU2VuZCBiYWNrdXAgY29kZXMgb24gZW1haWwnLCAnbWluaW9yYW5nZS=yLWZhY3Rvci1hdXRoZW5=aWNhdGlvbicpOz8-PC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocCB9ZWxzZXsgPz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNtbzJmX2JhY2t1cF9vcHRpb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIHN=eWxlPSJmb25=LXNpemU6MTRweDsgZm9udC13ZWlnaHQ6Ym9sZDsiPjw_cGhwIGVjaG8gX18oJ1VzZSBCYWNrdXAgQ29kZXMnLCAnbWluaW9yYW5nZS=yLWZhY3Rvci1hdXRoZW5=aWNhdGlvbicpOz8-PC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocCB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN=eWxlPSJwYWRkaW5nOjEwcHg7Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA-PGEgaHJlZj=iPD9waHAgZWNobyAkbW9fd3Buc19jb25maWctPmxvY2tlZE91dGxpbmsoKTs_PiIgdGFyZ2V=PSJfYmxhbmsiIHN=eWxlPSJjb2xvcjojY2EyOTYzO2ZvbnQtd2VpZ2h=OmJvbGQ7Ij5JJ2=gbG9ja2VkIG91dCAmIHVuYWJsZSB=byBsb2dpbi48L2E-PC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAgfSA_PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2NlbnRlcj4KCQkJCQk8P3BocCAKICAgICAgICAgICAgICAgICAgICAgICAgbW8yZl9jdXN=b21pemVfbG9nbygpOwogICAgICAgICAgICAgICAgICAgICAgICBpZigkbG9naW5fc3RhdHVzICE9ICdNT18yX=ZBQ1RPUl9DSEFMTEVOR=VfT1RQX=9WRVJfRU1BSUwnIHx8ICgkbG9naW5fc3RhdHVzID=9ICdNT18yX=ZBQ1RPUl9DSEFMTEVOR=VfT1RQX=9WRVJfRU1BSUwnICYmICRtbzJmX29=cF9vdmVyX2VtYWlsX2NvbmZpZ19zdGF=dXMpKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vMmZfY3JlYXRlX2JhY2t1cF9mb3JtKCRyZWRpcmVjdF9=bywgJHNlc3Npb25faWRfZW5jcnlwdCwgJGxvZ2luX3N=YXR1cywgJGxvZ2luX21lc3NhZ2UpOyAKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgID8-CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY-CiAgICAgICAgPC9kaXY-CiAgICA8L2Rpdj4KICAgIAogICAgPGZvcm=gbmFtZT=iZiIgaWQ9Im1vMmZfYmFja3RvX2lubGluZV9yZWdpc3RyYXRpb24iIG1ldGhvZD=icG9zdCIgYWN=aW9uPSI8P3BocCBlY2hvIHdwX2xvZ2luX3VybCgpOyA_PiIKICAgICAgICAgIGNsYXNzPSJtbzJmX2Rpc3BsYXlfbm9uZV9mb3JtcyI-CiAgICAgICAgPGlucHV=IHR5cGU9ImhpZGRlbiIgbmFtZT=ibWluaW9yYW5nZV9iYWNrX2lubGluZV9yZWdfbm9uY2UiCiAgICAgICAgICAgICAgIHZhbHVlPSI8P3BocCBlY2hvIHdwX2NyZWF=ZV9ub25jZSggJ21pbmlvcmFuZ2UtMi1mYWN=b3ItYmFjay1pbmxpbmUtcmVnLW5vbmNlJyApOyA_PiIvPgogICAgICAgIDxpbnB1dCB=eXBlPSJoaWRkZW4iIG5hbWU9InNlc3Npb25faWQiIHZhbHVlPSI8P3BocCBlY2hvICRzZXNzaW9uX2lkX2VuY3J5cHQ7ID8-Ii8-CiAgICAgICAgPGlucHV=IHR5cGU9ImhpZGRlbiIgbmFtZT=ib3B=aW9uIiB2YWx1ZT=ibWluaW9yYW5nZTJmX2JhY2tfdG9faW5saW5lX3JlZ2lzdHJhdGlvbiI-IAogICAgICAgIDxpbnB1dCB=eXBlPSJoaWRkZW4iIG5hbWU9InJlZGlyZWN=X3RvIiB2YWx1ZT=iPD9waHAgZWNobyAkcmVkaXJlY3RfdG87ID8-Ii8-CiAgICAgICAgICAKICAgIDwvZm9ybT4KICAgIAogICAgPGZvcm=gbmFtZT=iZiIgaWQ9Im1vMmZfYmFja3RvX21vX2xvZ2luZm9ybSIgbWV=aG9kPSJwb3N=IiBhY3Rpb249Ijw_cGhwIGVjaG8gd3BfbG9naW5fdXJsKCk7ID8-IgogICAgICAgICAgY2xhc3M9Im1vMmZfZGlzcGxheV9ub25lX2Zvcm1zIj4KICAgICAgICA8aW5wdXQgdHlwZT=iaGlkZGVuIiBuYW1lPSJtaW5pb3JhbmdlX21vYmlsZV92YWxpZGF=aW9uX2ZhaWxlZF9ub25jZSIKICAgICAgICAgICAgICAgdmFsdWU9Ijw_cGhwIGVjaG8gd3BfY3JlYXRlX25vbmNlKCAnbWluaW9yYW5nZS=yLWZhY3Rvci1tb2JpbGUtdmFsaWRhdGlvbi1mYWlsZWQtbm9uY2UnICk7ID8-Ii8-CiAgICAgICAgPGlucHV=IHR5cGU9ImhpZGRlbiIgbmFtZT=ic2Vzc2lvbl9pZCIgdmFsdWU9Ijw_cGhwIGVjaG8gJHNlc3Npb25faWRfZW5jcnlwdDsgPz4iLz4KICAgIDwvZm9ybT4KICAgCgk8P3BocCBpZiAoIE1vV3Buc1V=aWxpdHk6OmdldF9tbzJmX2RiX29wdGlvbignbW8yZl9lbmFibGVfZm9yZ29=cGhvbmUnLCAnZ2V=X29wdGlvbicpICYmIGlzc2V=KCAkbG9naW5fc3RhdHVzICkgJiYgJGxvZ2luX3N=YXR1cyAhPSAnTU9fMl9GQUNUT1JfQ=hBTExFTkdFX=9UUF9PVkVSX=VNQUlMJyApIHsgPz4KICAgICAgICA8Zm9ybSBuYW1lPSJmIiBpZD=ibW8yZl9zaG93X2ZvcmdvdHBob25lX2xvZ2luZm9ybSIgbWV=aG9kPSJwb3N=IiBhY3Rpb249IiIgY2xhc3M9Im1vMmZfZGlzcGxheV9ub25lX2Zvcm1zIj4KICAgICAgICAgICAgPGlucHV=IHR5cGU9ImhpZGRlbiIgbmFtZT=icmVxdWVzdF9vcmlnaW5fbWV=aG9kIiB2YWx1ZT=iPD9waHAgZWNobyAkbG9naW5fc3RhdHVzOyA_PiIvPgogICAgICAgICAgICA8aW5wdXQgdHlwZT=iaGlkZGVuIiBuYW1lPSJtaW5pb3JhbmdlX2ZvcmdvdHBob25lIgogICAgICAgICAgICAgICAgICAgdmFsdWU9Ijw_cGhwIGVjaG8gd3BfY3JlYXRlX25vbmNlKCAnbWluaW9yYW5nZS=yLWZhY3Rvci1mb3Jnb3RwaG9uZScgKTsgPz4iLz4KICAgICAgICAgICAgPGlucHV=IHR5cGU9ImhpZGRlbiIgbmFtZT=ib3B=aW9uIiB2YWx1ZT=ibWluaW9yYW5nZV9mb3Jnb3RwaG9uZSI-CiAgICAgICAgICAgIDxpbnB1dCB=eXBlPSJoaWRkZW4iIG5hbWU9InJlZGlyZWN=X3RvIiB2YWx1ZT=iPD9waHAgZWNobyAkcmVkaXJlY3RfdG87ID8-Ii8-CiAgICAgICAgICAgIDxpbnB1dCB=eXBlPSJoaWRkZW4iIG5hbWU9InNlc3Npb25faWQiIHZhbHVlPSI8P3BocCBlY2hvICRzZXNzaW9uX2lkX2VuY3J5cHQ7ID8-Ii8-CiAgICAgICAgPC9mb3JtPgoKCTw_cGhwIH=gPz4KCiAgICA8c2NyaXB=PgogICAgICAgIGpRdWVyeSgnI21pbmlvcmFuZ2Vfb3RwX3Rva2VuX2JhY2snKS5jbGljayhmdW5jdGlvbigpewogICAgICAgICAgICBqUXVlcnkoJyNtbzJmX2JhY2t=b19pbmxpbmVfcmVnaXN=cmF=aW9uJykuc3VibWl=KCk7CiAgICAgICAgfSk7CiAgICAgICAgalF1ZXJ5KCdhW2hyZWY9IiNtbzJmX2JhY2t1cF9vcHRpb24iXScpLmNsaWNrKGZ1bmN=aW9uKCkgewogICAgICAgICAgICBqUXVlcnkoJyNtbzJmX2JhY2t1cCcpLnN1Ym1pdCgpOwogICAgICAgICAgfSk7CiAgICAgICAgalF1ZXJ5KCdhW2hyZWY9IiNtbzJmX2JhY2t1cF9nZW5lcmF=ZSJdJykuY2xpY2soZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGpRdWVyeSgnI21vMmZfY3JlYXRlX2JhY2t1cF9jb2RlcycpLnN1Ym1pdCgpOwogICAgICAgIH=pOwoKICAgICAgICBmdW5jdGlvbiBtb2xvZ2luYmFjaygpIHsKICAgICAgICAgICAgalF1ZXJ5KCcjbW8yZl9iYWNrdG9fbW9fbG9naW5mb3JtJykuc3VibWl=KCk7CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBtb2xvZ2luZm9yZ29=cGhvbmUoKSB7CiAgICAgICAgICAgIGpRdWVyeSgnI21vMmZfc2hvd19mb3Jnb3RwaG9uZV9sb2dpbmZvcm=nKS5zdWJtaXQoKTsKICAgICAgICB9CiAgICAgICAgdmFyIGlzX2FqYXggPSAnPD9waHAgZWNobyBNTzJmX1V=aWxpdHk6OmdldF9pbmRleF92YWx1ZSgnR=xPQkFMUycsJ21vMmZfaXNfYWpheF9yZXF1ZXN=Jyk7Pz4nOwogICAgICAgIGlmKGlzX2FqYXgpewogICAgICAgICAgICBqUXVlcnkoJyNtbzJmYV9zb2Z=dG9rZW4nKS5rZXlwcmVzcyhmdW5jdGlvbiAoZSkgewogICAgICAgICAgICAgICAgaWYgKGUud2hpY2ggPT=gMTMpIHsvL=VudGVyIGtleSBwcmVzc2VkCiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW5=RGVmYXVsdCgpOwogICAgICAgICAgICAgICAgICAgIG1vMmZfb3RwX2FqYXgoKTsgCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH=pOwogICAgICAgICAgICBqUXVlcnkoIiNtaW5pb3JhbmdlX29=cF9=b2tlbl9zdWJtaXQiKS5jbGljayhmdW5jdGlvbihlKXsKICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx=KCk7CiAgICAgICAgICAgICAgICAgICAgbW8yZl9vdHBfYWpheCgpOwogICAgICAgICAgICB9KTsKCiAgICAgICAgICAgIGZ1bmN=aW9uIG1vMmZfb3RwX2FqYXgoKXsKICAgICAgICAgICAgICAgIGpRdWVyeSgnI21vMmZhX3NvZnR=b2tlbicpLnByb3AoJ2Rpc2FibGVkJywndHJ1ZScpOwogICAgICAgICAgICAgICAgalF1ZXJ5KCcjbWluaW9yYW5nZV9vdHBfdG9rZW5fc3VibWl=JykucHJvcCgnZGlzYWJsZWQnLCd=cnVlJyk7CiAgICAgICAgICAgICAgICB2YXIgZGF=YSA9IHsKICAgICAgICAgICAgICAgICAgICAiYWN=aW9uIiAgICAgICAgICAgIDogIm1vMmZfYWpheCIsCiAgICAgICAgICAgICAgICAgICAgIm1vMmZfYWpheF9vcHRpb24iICA6ICJtbzJmX2FqYXhfb3RwIiwKICAgICAgICAgICAgICAgICAgICAibW8yZmFfc29mdHRva2VuIiAgIDogalF1ZXJ5KCAiaW5wdXRbbmFtZT1cJ21vMmZhX3NvZnR=b2tlblwnXSIgKS52YWwoKSwKICAgICAgICAgICAgICAgICAgICAibWluaW9yYW5nZV9zb2Z=X3Rva2VuX25vbmNlIiA6IGpRdWVyeSggImlucHV=W25hbWU9XCdtaW5pb3JhbmdlX3NvZnRfdG9rZW5fbm9uY2VcJ1=iICkudmFsKCksCiAgICAgICAgICAgICAgICAgICAgInNlc3Npb25faWQiICAgICAgICA6IGpRdWVyeSggImlucHV=W25hbWU9XCdzZXNzaW9uX2lkXCddIiApLnZhbCgpLAogICAgICAgICAgICAgICAgICAgICJyZWRpcmVjdF9=byIgICAgICAgOiBqUXVlcnkoICJpbnB1dFtuYW1lPVwncmVkaXJlY3RfdG9cJ1=iICkudmFsKCksCiAgICAgICAgICAgICAgICAgICAgInJlcXVlc3Rfb3JpZ2luX21ldGhvZCIgOiAgalF1ZXJ5KCAiaW5wdXRbbmFtZT1cJ3JlcXVlc3Rfb3JpZ2luX21ldGhvZFwnXSIgKS52YWwoKSwKICAgICAgICAgICAgICAgIH=7CiAgICAgICAgICAgICAgICBqUXVlcnkucG9zdChteV9hamF4X29iamVjdC5hamF4X3VybCwgZGF=YSwgZnVuY3Rpb24ocmVzcG9uc2UpIHsKICAgICAgICAgICAgICAgICAgICBpZih=eXBlb2YgcmVzcG9uc2UuZGF=YSA9PT=gInVuZGVmaW5lZCIpCiAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeSgiaHRtbCIpLmh=bWwocmVzcG9uc2UpOwogICAgICAgICAgICAgICAgICAgIGVsc2UgaWYocmVzcG9uc2UuZGF=YS5yZWxvYWQpCiAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F=aW9uLnJlbG9hZCggdHJ1ZSApOwogICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb24uaHJlZiA9IHJlc3BvbnNlLmRhdGEucmVkaXJlY3Q7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfQogICAgICAgIH=KICAgIDwvc2NyaXB=PgogICAgPC9ib2R5PgogICAgPC9odG1sPgoJPD9waHAKfQoKCmZ1bmN=aW9uIG1vMmZfZ2V=X2RldmljZV9mb3JtKCAkcmVkaXJlY3RfdG8sICRzZXNzaW9uX2lkX2VuY3J5cHQgKSB7Cgk_PgogICAgPGh=bWw-CiAgICA8aGVhZD4KICAgICAgICA8bWV=YSBodHRwLWVxdWl2PSJYLVVBLUNvbXBhdGlibGUiIGNvbnRlbnQ9IklFPWVkZ2UiPgogICAgICAgIDxtZXRhIG5hbWU9InZpZXdwb3J=IiBjb25=ZW5=PSJ3aWR=aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MSI-CgkJPD9waHAKCQllY2hvX2pzX2Nzc19maWxlcygpOwoJCT8-CiAgICA8L2hlYWQ-CiAgICA8Ym9keT4KICAgIDxkaXYgY2xhc3M9Im1vMmZfbW9kYWwiIHRhYmluZGV4PSItMSIgcm9sZT=iZGlhbG9nIj4KICAgICAgICA8ZGl2IGNsYXNzPSJtbzJmLW1vZGFsLWJhY2tkcm9wIj48L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJtb19jdXN=b21lcl92YWxpZGF=aW9uLW1vZGFsLWRpYWxvZyBtb19jdXN=b21lcl92YWxpZGF=aW9uLW1vZGFsLW1kIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz=ibG9naW4gbW9fY3VzdG9tZXJfdmFsaWRhdGlvbi1tb2RhbC1jb25=ZW5=Ij4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vMmZfbW9kYWwtaGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICA8aDQgY2xhc3M9Im1vMmZfbW9kYWwtdGl=bGUiPgogICAgICAgICAgICAgICAgICAgICAgICA8YnV=dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9Im1vMmZfY2xvc2UiIGRhdGEtZGlzbWlzcz=ibW9kYWwiIGFyaWEtbGFiZWw9IkNsb3NlIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPSI8P3BocCBlY2hvIG1vMmZfbHQoICdCYWNrIHRvIGxvZ2luJyApOyA_PiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbmNsaWNrPSJtb2xvZ2luYmFjaygpOyI-PHNwYW4gYXJpYS1oaWRkZW49InRydWUiPiZ=aW1lczs8L3NwYW4-PC9idXR=b24-CgoJCQkJCQk8P3BocCBlY2hvIG1vMmZfbHQoICdSZW1lbWJlciBEZXZpY2UnICk7ID8-CiAgICAgICAgICAgICAgICAgICAgPC9oND4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz=ibW8yZl9tb2RhbC1ib2R5IGNlbnRlciI-CiAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD=ibW8yZl9kZXZpY2VfY29udGVudCI-CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJtbzJmX2xvZ2luX3Byb21wdF9tZXNzYWdlcyI-PD9waHAgZWNobyBtbzJmX2x=KCAnRG8geW91IHdhbnQgdG8gcmVtZW1iZXIgdGhpcyBkZXZpY2U_JyApOyA_PjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV=IHR5cGU9ImJ1dHRvbiIgbmFtZT=ibWluaW9yYW5nZV9=cnVzdF9kZXZpY2VfeWVzIiBvbmNsaWNrPSJtb19jaGVja19kZXZpY2VfY29uZmlybSgpOyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPSJtaW5pb3JhbmdlX3RydXN=X2RldmljZV95ZXMiIGNsYXNzPSJtb19ncmVlbiIgc3R5bGU9Im1hcmdpbi1yaWdodDo1JTsiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT=iPD9waHAgZWNobyBtbzJmX2x=KCAnWWVzJyApOyA_PiIvPgogICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT=iYnV=dG9uIiBuYW1lPSJtaW5pb3JhbmdlX3RydXN=X2RldmljZV9ubyIgb25jbGljaz=ibW9fY2hlY2tfZGV2aWNlX2NhbmNlbCgpOyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPSJtaW5pb3JhbmdlX3RydXN=X2RldmljZV9ubyIgY2xhc3M9Im1vX3JlZCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPSI8P3BocCBlY2hvIG1vMmZfbHQoICdObycgKTsgPz4iLz4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJzaG93TG9hZGluZ=JhciIgaGlkZGVuPgogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz=ibW8yZl9sb2dpbl9wcm9tcHRfbWVzc2FnZXMiPjw_cGhwIGVjaG8gbW8yZl9sdCggJ1BsZWFzZSB3YWl=Li4uV2UgYXJlIHRha2luZyB5b3UgaW5=byB5b3VyIGFjY291bnQuJyApOyA_PjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Ijw_cGhwIGVjaG8gcGx1Z2luc191cmwoICdpbmNsdWRlcy9pbWFnZXMvYWpheC1sb2FkZXItbG9naW4uZ2lmJywgZGlybmFtZShkaXJuYW1lKF9fRklMRV9fKSkgKTsgPz4iLz4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8YnI-PGJyPgogICAgICAgICAgICAgICAgICAgIDxzcGFuPgogICAgICAgICAgICAgICAgICA8P3BocCBlY2hvIG1vMmZfbHQoICdDbGljayBvbiAnICk7ID8-CiAgICAgICAgICAgICAgICAgICAgICAgIDxpPjxiPjw_cGhwIGVjaG8gbW8yZl9sdCggJ1llcycgKTsgPz48L2I-PC9pPjw_cGhwIGVjaG8gbW8yZl9sdCggJ2lmIHRoaXMgaXMgeW91ciBwZXJzb25hbCBkZXZpY2UuJyApOyA_PgogICAgICAgICAgICAgICAgICAgICAgICA8YnI-CgkJCQkJCTw_cGhwIGVjaG8gbW8yZl9sdCggJ=NsaWNrIG9uICcgKTsgPz4KICAgICAgICAgICAgICAgICAgICAgICAgPGk-PGI-PD9waHAgZWNobyBtbzJmX2x=KCAnTm8gJyApOyA_PjwvYj48L2k-IDw_cGhwIGVjaG8gbW8yZl9sdCggJ2lmIHRoaXMgaXMgYSBwdWJsaWMgZGV2aWNlLicgKTsgPz4KICAgICAgICAgICAgICAgICAgPC9zcGFuPjxicj48YnI-CgkJCQkJPD9waHAgbW8yZl9jdXN=b21pemVfbG9nbygpID8-CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY-CiAgICAgICAgPC9kaXY-CiAgICA8L2Rpdj4KICAgIDxmb3JtIG5hbWU9ImYiIGlkPSJtbzJmX2JhY2t=b19tb19sb2dpbmZvcm=iIG1ldGhvZD=icG9zdCIgYWN=aW9uPSI8P3BocCBlY2hvIHdwX2xvZ2luX3VybCgpOyA_PiIKICAgICAgICAgIGNsYXNzPSJtbzJmX2Rpc3BsYXlfbm9uZV9mb3JtcyI-CiAgICAgICAgPGlucHV=IHR5cGU9ImhpZGRlbiIgbmFtZT=ibWluaW9yYW5nZV9tb2JpbGVfdmFsaWRhdGlvbl9mYWlsZWRfbm9uY2UiCiAgICAgICAgICAgICAgIHZhbHVlPSI8P3BocCBlY2hvIHdwX2NyZWF=ZV9ub25jZSggJ21pbmlvcmFuZ2UtMi1mYWN=b3ItbW9iaWxlLXZhbGlkYXRpb24tZmFpbGVkLW5vbmNlJyApOyA_PiIvPgogICAgICAgIDxpbnB1dCB=eXBlPSJoaWRkZW4iIG5hbWU9InJlZGlyZWN=X3RvIiB2YWx1ZT=iPD9waHAgZWNobyAkcmVkaXJlY3RfdG87ID8-Ii8-CiAgICAgICAgPGlucHV=IHR5cGU9ImhpZGRlbiIgbmFtZT=ic2Vzc2lvbl9pZCIgdmFsdWU9Ijw_cGhwIGVjaG8gJHNlc3Npb25faWRfZW5jcnlwdDsgPz4iLz4KICAgIDwvZm9ybT4KICAgIDxmb3JtIG5hbWU9ImYiIGlkPSJtbzJmX3RydXN=X2RldmljZV9jb25maXJtX2Zvcm=iIG1ldGhvZD=icG9zdCIgYWN=aW9uPSIiIGNsYXNzPSJtbzJmX2Rpc3BsYXlfbm9uZV9mb3JtcyI-CiAgICAgICAgPGlucHV=IHR5cGU9ImhpZGRlbiIgbmFtZT=ibW8yZl9=cnVzdF9kZXZpY2VfY29uZmlybV9ub25jZSIKICAgICAgICAgICAgICAgdmFsdWU9Ijw_cGhwIGVjaG8gd3BfY3JlYXRlX25vbmNlKCAnbWluaW9yYW5nZS=yLWZhY3Rvci1=cnVzdC1kZXZpY2UtY29uZmlybS1ub25jZScgKTsgPz4iLz4KICAgICAgICA8aW5wdXQgdHlwZT=iaGlkZGVuIiBuYW1lPSJvcHRpb24iIHZhbHVlPSJtaW5pb3JhbmdlX3JiYV92YWxpZGF=ZSI-CiAgICAgICAgPGlucHV=IHR5cGU9ImhpZGRlbiIgbmFtZT=icmVkaXJlY3RfdG8iIHZhbHVlPSI8P3BocCBlY2hvICRyZWRpcmVjdF9=bzsgPz4iLz4KICAgICAgICA8aW5wdXQgdHlwZT=iaGlkZGVuIiBuYW1lPSJzZXNzaW9uX2lkIiB2YWx1ZT=iPD9waHAgZWNobyAkc2Vzc2lvbl9pZF9lbmNyeXB=OyA_PiIvPgogICAgPC9mb3JtPgogICAgPGZvcm=gbmFtZT=iZiIgaWQ9Im1vMmZfdHJ1c3RfZGV2aWNlX2NhbmNlbF9mb3JtIiBtZXRob2Q9InBvc3QiIGFjdGlvbj=iIiBjbGFzcz=ibW8yZl9kaXNwbGF5X25vbmVfZm9ybXMiPgogICAgICAgIDxpbnB1dCB=eXBlPSJoaWRkZW4iIG5hbWU9Im1vMmZfdHJ1c3RfZGV2aWNlX2NhbmNlbF9ub25jZSIKICAgICAgICAgICAgICAgdmFsdWU9Ijw_cGhwIGVjaG8gd3BfY3JlYXRlX25vbmNlKCAnbWluaW9yYW5nZS=yLWZhY3Rvci1=cnVzdC1kZXZpY2UtY2FuY2VsLW5vbmNlJyApOyA_PiIvPgogICAgICAgIDxpbnB1dCB=eXBlPSJoaWRkZW4iIG5hbWU9Im9wdGlvbiIgdmFsdWU9Im1pbmlvcmFuZ2VfcmJhX2NhbmNsZSI-CiAgICAgICAgPGlucHV=IHR5cGU9ImhpZGRlbiIgbmFtZT=icmVkaXJlY3RfdG8iIHZhbHVlPSI8P3BocCBlY2hvICRyZWRpcmVjdF9=bzsgPz4iLz4KICAgICAgICA8aW5wdXQgdHlwZT=iaGlkZGVuIiBuYW1lPSJzZXNzaW9uX2lkIiB2YWx1ZT=iPD9waHAgZWNobyAkc2Vzc2lvbl9pZF9lbmNyeXB=OyA_PiIvPgogICAgPC9mb3JtPgogICAgPHNjcmlwdD4KICAgICAgICBmdW5jdGlvbiBtb2xvZ2luYmFjaygpIHsKICAgICAgICAgICAgalF1ZXJ5KCcjbW8yZl9iYWNrdG9fbW9fbG9naW5mb3JtJykuc3VibWl=KCk7CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBtb19jaGVja19kZXZpY2VfY29uZmlybSgpIHsKICAgICAgICAgICAgalF1ZXJ5KCcjbW8yZl9kZXZpY2VfY29udGVudCcpLmNzcygiZGlzcGxheSIsICJub25lIik7CiAgICAgICAgICAgIGpRdWVyeSgnI3Nob3dMb2FkaW5nQmFyJykuY3NzKCJkaXNwbGF5IiwgImJsb2NrIik7CiAgICAgICAgICAgIGpRdWVyeSgnI21vMmZfdHJ1c3RfZGV2aWNlX2NvbmZpcm1fZm9ybScpLnN1Ym1pdCgpOwogICAgICAgIH=KCiAgICAgICAgZnVuY3Rpb24gbW9fY2hlY2tfZGV2aWNlX2NhbmNlbCgpIHsKICAgICAgICAgICAgalF1ZXJ5KCcjbW8yZl9kZXZpY2VfY29udGVudCcpLmNzcygiZGlzcGxheSIsICJub25lIik7CiAgICAgICAgICAgIGpRdWVyeSgnI3Nob3dMb2FkaW5nQmFyJykuY3NzKCJkaXNwbGF5IiwgImJsb2NrIik7CiAgICAgICAgICAgIGpRdWVyeSgnI21vMmZfdHJ1c3RfZGV2aWNlX2NhbmNlbF9mb3JtJykuc3VibWl=KCk7CiAgICAgICAgfQogICAgPC9zY3JpcHQ-CiAgICA8L2JvZHk-CiAgICA8L2h=bWw-Cjw_cGhwIH=KCmZ1bmN=aW9uIG1vMmZfY3VzdG9taXplX2xvZ28oKSB7ID8-CiAgICA8ZGl2IHN=eWxlPSJmbG9hdDpyaWdodDsiPjxhIHRhcmdldD=iX2JsYW5rIiBocmVmPSJodHRwOi8vbWluaW9yYW5nZS5jb2=vMi1mYWN=b3ItYXV=aGVudGljYXRpb24iPjxpbWcKICAgICAgICAgICAgICAgICAgICBhbHQ9ImxvZ28iCiAgICAgICAgICAgICAgICAgICAgc3JjPSI8P3BocCBlY2hvIHBsdWdpbnNfdXJsKCAnaW5jbHVkZXMvaW1hZ2VzL21pbmlPcmFuZ2UyLnBuZycsIGRpcm5hbWUoZGlybmFtZShfX=ZJTEVfXykpKTsgPz4iLz48L2E-PC9kaXY-Cgo8P3BocCB9CgpmdW5jdGlvbiBlY2hvX2pzX2Nzc19maWxlcygpIHsKCWVjaG8gJzxzY3JpcHQgc3JjPSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb2=vYWpheC9saWJzL2pxdWVyeS8yLjIuNC9qcXVlcnkubWluLmpzIj48L3NjcmlwdD4nOwoJZWNobyAnPHNjcmlwdCBzcmM9IicgLiBwbHVnaW5zX3VybCggJ2luY2x1ZGVzL2pzL2Jvb3RzdHJhcC5taW4uanMnLCBkaXJuYW1lKGRpcm5hbWUoX19GSUxFX18pKSApIC4gJyIgPjwvc2NyaXB=Pic7CgllY2hvICc8bGluayByZWw9InN=eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSInIC4gcGx1Z2luc191cmwoICdpbmNsdWRlcy9jc3MvdHdvZmFfc3R5bGVfc2V=dGluZ3MuY3NzP3ZlcnNpb249NS4xLjIxJywgZGlybmFtZShkaXJuYW1lKF9fRklMRV9fKSkpIC4gJyIgLz4nOwp9CgpmdW5jdGlvbiBtbzJmX2JhY2t1cF9jb2Rlc19nZW5lcmF=ZSgkaWQsICRyZWRpcmVjdF9=bywgJHNlc3Npb25faWRfZW5jcnlwdCl7CiAgICAgICAgZ2xvYmFsICRNbzJmZGJRdWVyaWVzOwogICAgICAgIGlmKGdldF91c2VyX21ldGEoJGlkLCAnbW9fYmFja3VwX2NvZGVfZ2VuZXJhdGVkJywgdHJ1ZSkgJiYgIWdldF91c2VyX21ldGEoJGlkLCAnbW9fYmFja3VwX2NvZGVfZG93bmxvYWRlZCcsIHRydWUpKXsKICAgICAgICAgICAgJGVuY3J5cHRlZF9jb2RlcyA9Z2V=X3VzZXJfbWV=YSgkaWQsICdjaHF3ZXRjc2R2bnZkJywgdHJ1ZSk7CiAgICAgICAgICAgICRrZXkgICAgICAgID=gZ2V=X29wdGlvbiggJ21vMmZfZW5jcnlwdGlvbl9rZXknICk7CiAgICAgICAgICAgICRjb2Rlc19zdHJpbmcgPSBNTzJmX1V=aWxpdHk6OmRlY3J5cHRfZGF=YSggJGVuY3J5cHRlZF9jb2RlcywgJGtleSApOwogICAgICAgICAgICAkY29kZXMgPSBleHBsb2RlKCIsIiwgJGNvZGVzX3N=cmluZyk7CiAgICAgICAgICAgIGRlbGV=ZV91c2VyX21ldGEoJGlkLCAnY2hxd2V=Y3Nkdm52ZCcpOwogICAgICAgICAgICAkcmVzdWx=ID=gdHJ1ZTsKICAgICAgICB9ZWxzZXsKICAgICAgICAJICRtbzJmX3VzZXJfZW1haWwgPSAkTW8yZmRiUXVlcmllcy=-Z2V=X3VzZXJfZGV=YWlsKCAnbW8yZl91c2VyX2VtYWlsJywgJGlkICk7CiAgICAgICAgICAgIGlmKGVtcHR5KCRtbzJmX3VzZXJfZW1haWwpKXsKICAgICAgICAgICAgICAgICRjdXJyZW5=dXNlciA9IGdldF91c2VyX2J5KCAnaWQnLCAkaWQgKTsKICAgICAgICAgICAgICAgICRtbzJmX3VzZXJfZW1haWwgPSAkY3VycmVudHVzZXItPnVzZXJfZW1haWw7CiAgICAgICAgICAgIH=KICAgICAgICAgICAgJGdlbmVyYXRlX2JhY2t1cF9jb2RlID=gbmV3IEN1c3RvbWVyX=Nsb3VkX1NldHVwKCk7CiAgICAgICAgICAgICRjb2RlcyA9ICRnZW5lcmF=ZV9iYWNrdXBfY29kZS=-bW9fMmZfZ2VuZXJhdGVfYmFja3VwX2NvZGVzKCRtbzJmX3VzZXJfZW1haWwsIHNpdGVfdXJsKCkpOwogICAgICAgICAgICAKICAgICAgICAgICAgaWYoJGNvZGVzICE9ICdEQkNvbm5lY3Rpb25Jc3N1ZScgJiYgJGNvZGVzICE9ICdVbmFibGVUb=ZldGNoRGF=YScgJiYgJGNvZGVzICE9ICdVc2VyTGltaXRSZWFjaGVkJyAmJiAkY29kZXMgIT=gJ=VSUk9SJyAmJiAkY29kZXMgIT=gJ=xpbWl=UmVhY2hlZCcgJiYgJGNvZGVzICE9ICdBbGxVc2VkJyAmJiAkY29kZXMgIT=gJ2ludmFsaWRfcmVxdWVzdCcgKXsKICAgICAgICAgICAgJGNvZGVzID=gZXhwbG9kZSgnICcsICRjb2Rlcyk7CiAgICAgICAgIAkkcmVzdWx=ID=gTU8yZl9VdGlsaXR5OjptbzJmX2VtYWlsX2JhY2t1cF9jb2RlcygkY29kZXMsICRtbzJmX3VzZXJfZW1haWwpOwogICAgICAgICAgICB1cGRhdGVfdXNlcl9tZXRhKCRpZCwgJ21vX2JhY2t1cF9jb2RlX2dlbmVyYXRlZCcsIDEpOwoJCQkkY29kZV9nZW5lcmF=ZWQgPSAnY29kZV9nZW5lcmF=aW9uX3N1Y2Nlc3NmdWwnOwoJCQl9ZWxzZXsKCQkgICAgJGNvZGVfZ2VuZXJhdGVkID=gJ2NvZGVfZ2VuZXJhdGlvbl9mYWlsZWQnOwoJCSAgICB1cGRhdGVfdXNlcl9tZXRhKCRpZCwgJ2Vycm9yX2R1cmluZ19jb2RlX2dlbmVyYXRpb24nLCRjb2Rlcyk7CiAgICAgICAgICAgIH=KICAgICAgICAgICAKICAgICAgICAgICAgCiAgICAgICAgfQogICAgICAgIHVwZGF=ZV91c2VyX21ldGEoJGlkLCAnbW9fYmFja3VwX2NvZGVfc2NyZWVuX3Nob3duJywgMSk7CiAgICAgICAgPz4KICAgIDxodG1sPgogICAgICAgIDxoZWFkPiAgPG1ldGEgY2hhcnNldD=idXRmLTgiLz4KICAgICAgICAgICAgPG1ldGEgaHR=cC1lcXVpdj=iWC1VQS1Db21wYXRpYmxlIiBjb25=ZW5=PSJJRT1lZGdlIj4KICAgICAgICAgICAgPG1ldGEgbmFtZT=idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR=aCwgaW5pdGlhbC1zY2FsZT=xIj4KICAgICAgICAgICAgPD9waHAKICAgICAgICAgICAgICAgIGVjaG8gJzxzY3JpcHQgc3JjPSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb2=vYWpheC9saWJzL2pxdWVyeS8yLjIuNC9qcXVlcnkubWluLmpzIj48L3NjcmlwdD4nOwogICAgICAgICAgICAgICAgZWNobyAnPHNjcmlwdCBzcmM9IicgLiBwbHVnaW5zX3VybCgnaW5jbHVkZXMvanMvYm9vdHN=cmFwLm1pbi5qcycsIGRpcm5hbWUoZGlybmFtZShfX=ZJTEVfXykpKSAuICciID48L3NjcmlwdD4nOwogICAgICAgICAgICAgICAgZWNobyAnPGxpbmsgcmVsPSJzdHlsZXNoZWV=IiB=eXBlPSJ=ZXh=L2NzcyIgaHJlZj=iJyAuIHBsdWdpbnNfdXJsKCdpbmNsdWRlcy9jc3MvYm9vdHN=cmFwLm1pbi5jc3MnLCBkaXJuYW1lKGRpcm5hbWUoX19GSUxFX18pKSkgLiAnIiAvPic7CiAgICAgICAgICAgICAgICBlY2hvICc8bGluayByZWw9InN=eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSInIC4gcGx1Z2luc191cmwoJ2luY2x1ZGVzL2Nzcy9mcm9udF9lbmRfbG9naW4uY3NzJywgZGlybmFtZShkaXJuYW1lKF9fRklMRV9fKSkpIC4gJyIgLz4nOwogICAgICAgICAgICAgICAgZWNobyAnPGxpbmsgcmVsPSJzdHlsZXNoZWV=IiB=eXBlPSJ=ZXh=L2NzcyIgaHJlZj=iJyAuIHBsdWdpbnNfdXJsKCdpbmNsdWRlcy9jc3Mvc3R5bGVfc2V=dGluZ3MuY3NzJywgZGlybmFtZShkaXJuYW1lKF9fRklMRV9fKSkpIC4gJyIgLz4nOwogICAgICAgICAgICAgICAgZWNobyAnPGxpbmsgcmVsPSJzdHlsZXNoZWV=IiB=eXBlPSJ=ZXh=L2NzcyIgaHJlZj=iJyAuIHBsdWdpbnNfdXJsKCdpbmNsdWRlcy9jc3MvaGlkZS1sb2dpbi5jc3MnLCBkaXJuYW1lKGRpcm5hbWUoX19GSUxFX18pKSkgLiAnIiAvPic7CiAgICAgICAgICAgID8-CiAgICAgICAgICAgIDxzdHlsZT4KICAgICAgICAgICAgICAgIC5tbzJmX2tiYV9xdWVzLCAubW8yZl9=YWJsZV9=ZXh=Ym94ewogICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IHdoaXRlc21va2Ugbm9uZSByZXBlYXQgc2Nyb2xsIDAlIDAlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICA8L3N=eWxlPgogICAgICAgIDwvaGVhZD4KICAgICAgICA8Ym9keT4KICAgICAgICAgICAgPGRpdiBjbGFzcz=ibW8yZl9tb2RhbCIgdGFiaW5kZXg9Ii=xIiByb2xlPSJkaWFsb2ciIGlkPSJteU1vZGFsNSI-CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtbzJmLW1vZGFsLWJhY2tkcm9wIj48L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vMmZfbW9kYWwtZGlhbG9nIG1vMmZfbW9kYWwtbGciPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxvZ2luIG1vX2N1c3RvbWVyX3ZhbGlkYXRpb24tbW9kYWwtY29udGVudCI-CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vMmZfbW9kYWwtaGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz=ibW8yZl9tb2RhbC1=aXRsZSI-PGJ1dHRvbiB=eXBlPSJidXR=b24iIGNsYXNzPSJtbzJmX2Nsb3NlIiBkYXRhLWRpc21pc3M9Im1vZGFsIiBhcmlhLWxhYmVsPSJDbG9zZSIgdGl=bGU9Ijw_cGhwIGVjaG8gX18oJ=JhY2sgdG8gbG9naW4nLCAnbWluaW9yYW5nZS=yLWZhY3Rvci1hdXRoZW5=aWNhdGlvbicpOyA_PiIgb25jbGljaz=ibW9sb2dpbmJhY2soKTsiPjxzcGFuIGFyaWEtaGlkZGVuPSJ=cnVlIj4mdGltZXM7PC9zcGFuPjwvYnV=dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAgZWNobyBfXygnVHdvIEZhY3RvciBTZXR1cCBDb21wbGV=ZScsICdtaW5pb3JhbmdlLTItZmFjdG9yLWF1dGhlbnRpY2F=aW9uJyk7ID8-PC9oND4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY-CiAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAgaWYoJGNvZGVfZ2VuZXJhdGVkID=9ICdjb2RlX2dlbmVyYXRpb25fc3VjY2Vzc2Z1bCcpIHsgPz4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz=ibW8yZl9tb2RhbC1ib2R5IGNlbnRlciI-CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgzPiA8P3BocCBlY2hvIF9fKCdQbGVhc2UgZG93bmxvYWQgdGhlIGJhY2t1cCBjb2RlcyBmb3IgYWNjb3VudCByZWNvdmVyeS4nKTsgPz48L2gzPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND4gPD9waHAgZWNobyBfXygnWW91IHdpbGwgcmVjZWl2ZSB=aGUgYmFja3VwIGNvZGVzIHZpYSBlbWFpbCBpZiB5b3UgaGF2ZSB5b3VyIFNNVFAgY29uZmlndXJlZC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnI-SWYgeW91IGhhdmUgcmVjZWl2ZWQgdGhlIGNvZGVzIG9uIHlvdXIgZW1haWwgYW5kIGRvIG5vdCB3aXNoIHRvIGRvd25sb2FkIHRoZSBjb2RlcywgY2xpY2sgb24gRmluaXNoLiAnKTsgPz48L2g=PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND4gPD9waHAgZWNobyBfXygnQmFja3VwIENvZGVzIGNhbiBiZSB1c2VkIHRvIGxvZ2luIGludG8gdXNlciBhY2NvdW5=IGluIGNhc2UgeW91IGZvcmdldCB5b3VyIHBob25lIG9yIGdldCBsb2NrZWQgb3V=LgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnI-UGxlYXNlIHVzZSB=aGlzIGNhcmVmdWxseSBhcyBlYWNoIGNvZGUgY2FuIG9ubHkgYmUgdXNlZCBvbmNlLiBQbGVhc2UgZG8gbm9=IHNoYXJlIHRoZXNlIGNvZGVzIHdpdGggYW55b25lLicpOyA_PjwvaDQ-CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocCA_PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4gICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN=eWxlPSJkaXNwbGF5OiBpbmxpbmUtZmxleDt3aWR=aDogMzUwcHg7ICI-CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9ImNsaXBib2FyZCIgc3R5bGU9ImJvcmRlcjogc29saWQ7d2lkdGg6IDU1JTtmbG9hdDogbGVmdDsiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKCR4ID=gMDsgJHggPCBzaXplb2YoJGNvZGVzKTsgJHgrKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzdHIgPSAkY29kZXNbJHhdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8oIjxicj4iLiRzdHIuIiA8YnI-Iik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzdHIxPSIiOyAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICgkeCA9IDA7ICR4IDwgc2l6ZW9mKCRjb2Rlcyk7ICR4KyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc3RyID=gJGNvZGVzWyR4XTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc3RyMS49JHN=cjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZigkeCAhPSA=KXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHN=cjEuPScsJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA_PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAgc3R5bGU9IndpZHRoOiA1MCU7ZmxvYXQ6IHJpZ2h=OyI-CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zm9ybSBuYW1lPSJmIiBtZXRob2Q9InBvc3QiIGlkPSJtbzJmX3VzZXJzX2JhY2t1cDEiIGFjdGlvbj=iIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT=iaGlkZGVuIiBuYW1lPSJvcHRpb24iIHZhbHVlPSJtbzJmX3VzZXJzX2JhY2t1cDEiIC8-CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV=IHR5cGU9ImhpZGRlbiIgbmFtZT=ibW8yZl9pbmxpbmVfYmFja3VwX2NvZGVzIiB2YWx1ZT=iPD9waHAgZWNobyAkc3RyMTsgPz4iIC8-CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV=IHR5cGU9ImhpZGRlbiIgbmFtZT=ic2Vzc2lvbl9pZCIgdmFsdWU9Ijw_cGhwIGVjaG8gJHNlc3Npb25faWRfZW5jcnlwdDsgPz4iLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT=iaGlkZGVuIiBuYW1lPSJtbzJmX2lubGluZV9iYWNrdXBfbm9uY2UiIHZhbHVlPSI8P3BocCBlY2hvIHdwX2NyZWF=ZV9ub25jZSgnbWluaW9yYW5nZS=yLWZhY3Rvci1pbmxpbmUtYmFja3VwLW5vbmNlJyk7ID8-IiAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB=eXBlPSJzdWJtaXQiIG5hbWU9IkdlbmVyYXRlIENvZGVzMSIgaWQ9ImNvZGVzIiBzdHlsZT=iZGlzcGxheTppbmxpbmU7d2lkdGg6MTAwJTttYXJnaW4tbGVmdDogMjAlO21hcmdpbi1ib3R=b2=6IDM3JTttYXJnaW4tdG9wOiAyOSUiIGNsYXNzPSJidXR=b24gYnV=dG9uLXByaW1hcnkgYnV=dG9uLWxhcmdlIiB2YWx1ZT=iPD9waHAgZWNobyBfXygnRG93bmxvYWQgQ29kZXMnLCdtaW5pb3JhbmdlLTItZmFjdG9yLWF1dGhlbnRpY2F=aW9uJyk7Pz4iIC8-CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Zvcm=-CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZvcm=gbmFtZT=iZiIgaWQ9Im1vMmZfYmFja3RvX21vX2xvZ2luZm9ybSIgbWV=aG9kPSJwb3N=IiBhY3Rpb249Ijw_cGhwIGVjaG8gd3BfbG9naW5fdXJsKCk7Pz4iID4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB=eXBlPSJoaWRkZW4iIG5hbWU9Im9wdGlvbiIgdmFsdWU9Im1vMmZfZ29=b193cF9kYXNoYm9hcmQiIC8-CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT=iaGlkZGVuIiBuYW1lPSJtbzJmX2lubGluZV93cF9kYXNoYm9hcmRfbm9uY2UiIHZhbHVlPSI8P3BocCBlY2hvIHdwX2NyZWF=ZV9ub25jZSgnbWluaW9yYW5nZS=yLWZhY3Rvci1pbmxpbmUtd3AtZGFzaGJvYXJkLW5vbmNlJyk7ID8-IiAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV=IHR5cGU9ImhpZGRlbiIgbmFtZT=icmVkaXJlY3RfdG8iIHZhbHVlPSI8P3BocCBlY2hvICRyZWRpcmVjdF9=bzsgPz4iLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB=eXBlPSJoaWRkZW4iIG5hbWU9InNlc3Npb25faWQiIHZhbHVlPSI8P3BocCBlY2hvICRzZXNzaW9uX2lkX2VuY3J5cHQ7ID8-Ii8-CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT=ic3VibWl=IiBuYW1lPSJsb2dpbl9wYWdlIiBpZD=ibG9naW5fcGFnZSIgc3R5bGU9ImRpc3BsYXk6aW5saW5lO21hcmdpbi1sZWZ=Oi=xOTglO21hcmdpbi1=b3A6IDI4OSUgIWltcG9ydGFudDttYXJnaW4tcmlnaHQ6IDI=JSAhaW1wb3J=YW5=O3dpZHRoOiAyMDklIiBjbGFzcz=iYnV=dG9uIGJ1dHRvbi1wcmltYXJ5IGJ1dHRvbi1sYXJnZSIgdmFsdWU9Ijw_cGhwIGVjaG8gX18oJ=ZpbmlzaCcsJ21pbmlvcmFuZ2UtMi1mYWN=b3ItYXV=aGVudGljYXRpb24nKTs_PiIgIC8-PGJyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Zvcm=-CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY-CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbW8yZl9jdXN=b21pemVfbG9nbygpID8-CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAgfSBlbHNlIHsgPz4KICAgICAgICAgICAgICAgICAgICAgICAgIAkgCTxkaXYgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyOyI-CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtIG5hbWU9ImYiIGlkPSJtbzJmX2JhY2t=b19tb19sb2dpbmZvcm=iIG1ldGhvZD=icG9zdCIgYWN=aW9uPSI8P3BocCBlY2hvIHdwX2xvZ2luX3VybCgpOz8-IiA-CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT=iaGlkZGVuIiBuYW1lPSJvcHRpb24iIHZhbHVlPSJtbzJmX2dvdG9fd3BfZGFzaGJvYXJkIiAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV=IHR5cGU9ImhpZGRlbiIgbmFtZT=ibW8yZl9pbmxpbmVfd3BfZGFzaGJvYXJkX25vbmNlIiB2YWx1ZT=iPD9waHAgZWNobyB3cF9jcmVhdGVfbm9uY2UoJ21pbmlvcmFuZ2UtMi1mYWN=b3ItaW5saW5lLXdwLWRhc2hib2FyZC1ub25jZScpOyA_PiIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB=eXBlPSJoaWRkZW4iIG5hbWU9InJlZGlyZWN=X3RvIiB2YWx1ZT=iPD9waHAgZWNobyAkcmVkaXJlY3RfdG87ID8-Ii8-CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT=iaGlkZGVuIiBuYW1lPSJzZXNzaW9uX2lkIiB2YWx1ZT=iPD9waHAgZWNobyAkc2Vzc2lvbl9pZF9lbmNyeXB=OyA_PiIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV=IHR5cGU9InN1Ym1pdCIgbmFtZT=ibG9naW5fcGFnZSIgaWQ9ImxvZ2luX3BhZ2UiIHN=eWxlID=ibWFyZ2luLXRvcDogN3B4IiAgY2xhc3M9ImJ1dHRvbiBidXR=b24tcHJpbWFyeSBidXR=b24tbGFyZ2UiIHZhbHVlPSI8P3BocCBlY2hvIF9fKCdGaW5pc2gnLCdtaW5pb3JhbmdlLTItZmFjdG9yLWF1dGhlbnRpY2F=aW9uJyk7Pz4iICAvPjxicj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9mb3JtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY-CiAgICAgICAgICAgICAgICAgICAgICAgPD9waHAgfSA_PiAKICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGZvcm=gbmFtZT=iZiIgaWQ9Im1vMmZfYmFja3RvX21vX2xvZ2luZm9ybSIgbWV=aG9kPSJwb3N=IiBhY3Rpb249Ijw_cGhwIGVjaG8gd3BfbG9naW5fdXJsKCk7ID8-IiBzdHlsZT=iZGlzcGxheTpub25lOyI-CiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT=iaGlkZGVuIiBuYW1lPSJtaW5pb3JhbmdlX21vYmlsZV92YWxpZGF=aW9uX2ZhaWxlZF9ub25jZSIgdmFsdWU9Ijw_cGhwIGVjaG8gd3BfY3JlYXRlX25vbmNlKCdtaW5pb3JhbmdlLTItZmFjdG9yLW1vYmlsZS12YWxpZGF=aW9uLWZhaWxlZC1ub25jZScpOyA_PiIgLz4KICAgICAgICAgICAgPC9mb3JtPgogICAgICAgIDwvYm9keT4KICAgICAgICA8c2NyaXB=PgogICAgICAgICAgICBmdW5jdGlvbiBtb2xvZ2luYmFjaygpewogICAgICAgICAgICAgICAgalF1ZXJ5KCcjbW8yZl9iYWNrdG9fbW9fbG9naW5mb3JtJykuc3VibWl=KCk7CiAgICAgICAgICAgIH=KICAgICAgICA8L3NjcmlwdD4KICAgIDwvaHRtbD4KICAgICAgICA8P3BocAogICAgICAgIAogICAgICAgIAogICAgfQoKICAgIGZ1bmN=aW9uIG1vMmZfY3JlYXRlX2JhY2t1cF9mb3JtKCRyZWRpcmVjdF9=bywgJHNlc3Npb25faWRfZW5jcnlwdCwgJGxvZ2luX3N=YXR1cywgJGxvZ2luX21lc3NhZ2UpewogICAgPz4KICAgICAgICA8Zm9ybSBuYW1lPSJmIiBpZD=ibW8yZl9iYWNrdXAiIG1ldGhvZD=icG9zdCIgYWN=aW9uPSIiIHN=eWxlPSJkaXNwbGF5Om5vbmU7Ij4KICAgICAgICAgICAgPGlucHV=IHR5cGU9ImhpZGRlbiIgbmFtZT=ibWluaW9yYW5nZV9iYWNrdXBfbm9uY2UiIHZhbHVlPSI8P3BocCBlY2hvIHdwX2NyZWF=ZV9ub25jZSgnbWluaW9yYW5nZS=yLWZhY3Rvci1iYWNrdXAtbm9uY2UnKTsgPz4iIC8-CiAgICAgICAgICAgIDxpbnB1dCB=eXBlPSJoaWRkZW4iIG5hbWU9Im9wdGlvbiIgdmFsdWU9Im1pbmlvcmFuZ2VfYmFja3VwX25vbmNlIj4KICAgICAgICAgICAgPGlucHV=IHR5cGU9ImhpZGRlbiIgbmFtZT=icmVkaXJlY3RfdG8iIHZhbHVlPSI8P3BocCBlY2hvICRyZWRpcmVjdF9=bzsgPz4iIC8-CiAgICAgICAgICAgIDxpbnB1dCB=eXBlPSJoaWRkZW4iIG5hbWU9InNlc3Npb25faWQiIHZhbHVlPSI8P3BocCBlY2hvICRzZXNzaW9uX2lkX2VuY3J5cHQ7ID8-IiAvPgogICAgICAgIDwvZm9ybT4KICAgICAgICA8Zm9ybSBuYW1lPSJmIiBpZD=ibW8yZl9jcmVhdGVfYmFja3VwX2NvZGVzIiBtZXRob2Q9InBvc3QiIGFjdGlvbj=iIiBzdHlsZT=iZGlzcGxheTpub25lOyI-CiAgICAgICAgICAgIDxpbnB1dCB=eXBlPSJoaWRkZW4iIG5hbWU9Im1pbmlvcmFuZ2VfZ2VuZXJhdGVfYmFja3VwX25vbmNlIiB2YWx1ZT=iPD9waHAgZWNobyB3cF9jcmVhdGVfbm9uY2UoJ21pbmlvcmFuZ2UtMi1mYWN=b3ItZ2VuZXJhdGUtYmFja3VwLW5vbmNlJyk7ID8-IiAvPgogICAgICAgICAgICA8aW5wdXQgdHlwZT=iaGlkZGVuIiBuYW1lPSJvcHRpb24iIHZhbHVlPSJtaW5pb3JhbmdlX2NyZWF=ZV9iYWNrdXBfY29kZXMiPgogICAgICAgICAgICA8aW5wdXQgdHlwZT=iaGlkZGVuIiBuYW1lPSJyZWRpcmVjdF9=byIgdmFsdWU9Ijw_cGhwIGVjaG8gJHJlZGlyZWN=X3RvOyA_PiIgLz4KICAgICAgICAgICAgPGlucHV=IHR5cGU9ImhpZGRlbiIgbmFtZT=ic2Vzc2lvbl9pZCIgdmFsdWU9Ijw_cGhwIGVjaG8gJHNlc3Npb25faWRfZW5jcnlwdDsgPz4iIC8-CiAgICAgICAgICAgIDxpbnB1dCB=eXBlPSJoaWRkZW4iIG5hbWU9ImxvZ2luX3N=YXR1cyIgdmFsdWU9Ijw_cGhwIGVjaG8gJGxvZ2luX3N=YXR1czsgPz4iIC8-CiAgICAgICAgICAgIDxpbnB1dCB=eXBlPSJoaWRkZW4iIG5hbWU9ImxvZ2luX21lc3NhZ2UiIHZhbHVlPSI8P3BocCBlY2hvICRsb2dpbl9tZXNzYWdlOyA_PiIgLz4KICAgICAgICA8L2Zvcm=-CiAgICA8P3BocAogICAgfQoKPz42

  68 Hits

Pedals - Speedplay X R.I.P.

For the last 6 years or so, my favoured pedals have been Speedplay X series pedals. I’ve enjoyed using these pedals because they are light (though the cleats are heavy, as they contain the clipping mechanism), have a remarkable amount of float and they offer dual sided entry.

Speedplay has been bought by Wahoo - there’s a detailed acount by DCRainmaker. Essentially there were a lot of rumours that this may lead to a Speedplay based power meter, though since the acquisition, there’s not been a lot of noise.

Continue reading
  338 Hits

Volumio Music Streamer

Nice elegant software for a Raspberry Pi-based music streamer, easily installed and with a terrific interface and robust performance, but let down by its approach to using tags and browsing options.

I recently had a play with the Volumio music streamer. First, I ought to be clear that I am a long-time user of the Logitech Media Server audio streaming system (LMS) which, despite the Squeezebox players being discontinued by Logitech back in around 2013, is still being maintained. Because I’m most used to how LMS works, I use this as the base for my comparisons.

Continue reading
  69 Hits

SRAM eTap Aero – Part 4

This is a longer term follow up to the previous postings on my experiences with the SRAM Red eTap Aero derailleur system. I was an early adopter, buying the eTap aero kit in early 2016. A bit of a glitch occurred in November 2016 when the BlipBox malfunctioned, and this was resolved later that winter.

Until recently, the system has functioned flawlessly, and indeed I've liked it so much I sourced parts (mostly via eBay) to fit out my P3C bike with it as well. As you'll see in this report, I've had a recurrence of the BlipBox issue, and this caused me to look into buying a replacement, which turns out to be not only expensive, but near-impossible through my usual retailers.

Continue reading
Tags:
  64 Hits

2019 Duo Normand

As I think I noted in one of the rare posts here this year, plans to ride the Duo Normand in 2019 were initially thwarted by a date clash, but ultimately the organisers rescheduled the event to 15th September (not, I think, in response to our inability to attend!) which meant that all systems were go. The main report is built using Microsoft Sway - you can either read it via this link: 2019 Duo Normand, or via the embedded version below. The four-way arrow icon will expand the Sway.

Tags:
  72 Hits

Time trials so far in 2019

So far this year, my racing has been characterised by lack-lustre performances, where I actually managed to complete a race. On the bright side, the recent change of date for the Duo Normand time trial in September now means that Team Grumpy can once again turn out. This gives a really good late season target for us!

9th March

The season kicked off with a club event on the Astwood circuit. Unfortunately it was so windy that I packed on safety grounds after a mile or so.

Continue reading
  76 Hits

As maintenance-free as possible…

A few months ago, I reviewed the Shand Stoater bike that I’d bought as a problem-free commuter bike / tourer / winter bike - it’s equipped with a Rohloff hub gear and a Gates carbondrive belt rather than derailleur gears and a chain. Since then, I’ve used the bike a couple of times a week as a commuter (the rest of the rides to work are on a tandem), and out twice a weekend for club runs and the like. In that time, the only mechanical problem I’ve had has been a repeated puncture caused by a tiny black thorn in the rear tyre - so small and black my ageing eyes couldn’t spot it. Other than that, it’s been great fun to ride - and even dealing with a rear wheel puncture has been a lot less messy than with a chain.

Tags:
  65 Hits

Bluetooth Squeezebox on the cheap

Detailed instructions for setting up a Raspberry Pi Zero W as a Bluetooth-enabled music player for the Logitech Media Server streaming system.

I'm a long term user of Logitech's Squeezebox music server system. Despite Logitech discontinuing their line of Squeezebox players several years ago, the system seems to carry on in rude health owing to the dedication of a number of software contributors, and the excellent community support forums. One significant factor in the system's survival has been the development of piCorePlayer, an operating system based on TinyCore Linux for the Raspberry Pi (more information here). Since its initial launch, piCorePlayer has become astonishingly refined, even allowing installation of LMS (Logitech Media Server). Indeed, my home music system uses a Raspberry Pi model 3 as its server.

Continue reading
  67 Hits

A New Bike for 2019 - Shand Stoater

One of the things about commuting and touring that can be a bit irritating is keeping the transmission running sweetly in the face of sometimes wet and horrible weather. In the past I’ve had rusted and worn chains, clogged derailleurs and so forth. A few years back we bought a new tandem from Thorn, a Raven  Twin, which was equipped with a Rohloff 14-speed hub. This has been really great, especially with a set of high quality KMC chains, which do resist rust quite well (recent SRAM chains rusted badly, though I can’t recall the model). I’ve particularly welcomed the ability to change gear when stationary, which seems to me to be important when riding a heavily loaded tandem.

  71 Hits