From okeefe@cybermesa.com Wed Oct 23 14:44:58 2019
From: Brian O'Keefe <okeefe@cybermesa.com>
To: nmglug@lists.nmglug.org
Subject: [nmglug] user agent
Date: Wed, 23 Oct 2019 15:44:49 -0600
Message-ID: <96d08cb0-1846-c47a-30be-5b3d3feb1ce8@cybermesa.com>
In-Reply-To: <8E379347-8000-42F8-B7C1-7F85EC42B5E4@tarmanassociates.com>
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="===============2477208448174990293=="

--===============2477208448174990293==
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: quoted-printable

Thanks Mars. I tried it and it failed.
> $ curl --user-agent "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6;=20
> rv:48.0) Gecko/20100101 Firefox/48.0" https://www.liveauctioneers.com
> curl: (35) error:1407742E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1=20
> alert protocol version
>
My wife can get to the "classic" liveauctioneers page but if she clicks=20
sign in or sign up the next page is the 403 error. I tried changing the=20
domain name as there is a "classic" site that I can access and so can=20
she until she tries signing in. Tried several variants and most worked=20
in a terminal but none of the commands opened a web page. Sorry for=20
sending all of this output.
Thanks and here goes. Now it's just an experiment as the MB Air is going=20
to Dotfoil (wife is fed up). There are many thousands of lines of code=20
beyond this but I wanted to show that at least in a terminal the site=20
was reached.

$ curl --user-agent "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:48.0) Ge=
cko/20100101 Firefox/48.0"https://classic.liveauctioneers.com
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN""http://www.w3.org/Mark=
Up/DTD/xhtml-rdfa-1.dtd">
<html xmlns=3D"http://www.w3.org/1999/xhtml"  xmlns:fb=3D"http://www.facebook=
.com/2008/fbml">
<head>
		<title>Bid in Online Auctions - Live Auctioneers</title>

         <meta name=3D"robots" content=3D"noindex, nofollow">
    =20
    =20
     <link rel=3D"canonical" href=3D"https://classic.liveauctioneers.com">
     <link rel=3D"next" href=3D"https://classic.liveauctioneers.com/browse/pa=
ge2">
     <link rel=3D"alternate" media=3D"only screen and (max-width: 640px)" hre=
f=3D"https://m.liveauctioneers.com">
	<meta name=3D"description" content=3D"Get in on the auction -- bid LIVE onli=
ne on art, antiques, jewelry and collectibles. Find online auctions from arou=
nd the world at Live Auctioneers." />
        =20
     <meta name=3D"google-site-verification" content=3D"cV8cXXQi_UWIpJ6vc9a0D=
hF4AJD4HElapx9KBROkGCk" />
	<meta http-equiv=3D"content-type" content=3D"text/html; charset=3Diso-8859-1=
" />

         <link type=3D"text/css" rel=3D"stylesheet" href=3D"/live_styles/v217=
1852186/live_styles.css" />        <link rel=3D"shortcut icon" href=3D"https:=
//classic.liveauctioneers.com/live_design/images/favicon.png">
                 <link href=3D"https://fonts.googleapis.com/css?family=3DOpen=
+Sans:700,300,400&subset=3Dlatin,cyrillic-ext"  rel=3D"stylesheet" type=3D"te=
xt/css">

                 <script type=3D"text/javascript" src=3D"/live_scripts/v21718=
52186/jquery-1.7.2.min.js"></script>
         <script type=3D"text/javascript" src=3D"/live_scripts/v2171852186/jq=
uery-ui-1.10.3.custom.min.js"></script>
         <script type=3D"text/javascript" src=3D"/scripts/v2171852186/la.js">=
</script>
         <script type=3D"text/javascript" src=3D"/scripts/v2171852186/facebox=
/facebox.js"></script>
         <script type=3D"text/javascript" src=3D"/live_scripts/v2171852186/jq=
uery.placeholder.min.js"></script>
         <script type=3D"text/javascript" src=3D"/live_scripts/v2171852186/sc=
ripts.js"></script>
         <script type=3D"text/javascript" src=3D"/scripts/v2171852186/lib/pv2=
/lib.js"></script>
         <script type=3D"text/javascript" src=3D"/scripts/v2171852186/lib/pv2=
/main.js"></script>
         <script type=3D"text/javascript" src=3D"https://snapabug.appspot.com=
/snapabug.js"  async></script>
         <script type=3D"text/javascript" src=3D"/scripts/lib/jquery.dotdotdo=
t.js"></script>
        =20
         <script type=3D"text/javascript">
             DEFAULT_HOST =3D 'classic.liveauctioneers.com';
             DEFAULT_PROTOCOL =3D 'https';
             DEFAULT_SSL_PROTOCOL =3D 'https';
             RESOURCE_HOST =3D 'classic.liveauctioneers.com';
             RESOURCE_PROTOCOL =3D 'https://';
             if( typeof bidderID =3D=3D 'undefined' ){
                 var bidderID =3D null;
             }
             dataLayer =3D [];
                                     GTM_userInfo =3D [];

            =20
             function loadAuctionDate(date){
                 var hVal=3D'';
                 var cVal =3D '';
                 var hId =3D document.getElementById('auctHouseId') =3D=3D nu=
ll ? 'None' : document.getElementById('auctHouseId').value;
                 var cId =3D document.getElementById('auctCId') =3D=3D null ?=
 'None' : document.getElementById('auctCId').value;
                 if(hId!=3D'None'){
                     hVal=3D'/seller/'+hId
                 }else{
                     if(cId!=3D'None')
                         cVal =3D '/auctions-in-'+cId
                 }
                 if( date =3D=3D 'All' ){
                     newurl =3D '/browse'+hVal+cVal;
                     querydata =3D getQueryData(document.location.href);
                     if (querydata['view'] =3D=3D 'list') {
                         newurl =3D appendQueryPair(newurl, 'view', 'list');
                     }
                     window.location =3D newurl;
                     return true;
                 }
                 var dashorslash =3D ( hVal=3D=3D'' && cVal =3D=3D '' ) ? '/'=
 : '-';
                 newurl =3D '/browse'+hVal+cVal+dashorslash+date;

                 querydata =3D getQueryData(document.location.href);
                 if (querydata['view'] =3D=3D 'list') {
                     newurl =3D appendQueryPair(newurl, 'view', 'list');
                 }

                 goToUrl(newurl);
             }
            =20
         </script>


        =20
                                                 <script type=3D"text/javascr=
ipt" src=3D"/live_scripts/v2171852186/jquery.vticker.js"></script>
         <script type=3D"text/javascript" src=3D"/live_scripts/v2171852186/sl=
ickcustomscroll.js"></script>
         <script type=3D"text/javascript" src=3D"/live_scripts/v2171852186/jq=
uery.jcarousel.min.js"></script>
                =20
         <script type=3D"text/javascript">
         function initTicker(){
             var $scroller =3D $("#scroller");
             $scroller.vTicker('init', {height: 40, showItems: 1});
             $(".next").click(function(event){
                 event.preventDefault();
                 $scroller.vTicker('next', {animate:true});
             });
         }
         $(function(){
             setTimeout(initTicker,1000);
         });
         </script>
        =20
                 <meta property=3D"fb:app_id" content=3D"143214215739939"/>
        =20

<script>
    =20
function loadAuction(){
     var hId =3D document.getElementById('auctHouseId').value;
     var cId =3D document.getElementById('auctCId').value;
     var date =3D document.getElementById('dateSelect').innerHTML;
     var da =3D date.split('-');
     var dVal=3D'/dateSel'+da[2]+'-'+da[1]+'-'+da[0];
     var hVal=3D'';
     var cVal =3D '';
     var firstDate =3D document.getElementById('firstDate').innerHTML;
     var fDate =3D firstDate.split('-');
     var fVal=3D'/fDate'+fDate[2]+'-'+fDate[1]+'-'+fDate[0];
    =20
     if(hId!=3D'None')
             hVal=3D'/hId'+hId
     if(cId!=3D'None')
             cVal =3D '/cId-'+cId
     window.location=3D'/browse'+hVal+cVal+dVal+fVal;
    =20
}

function highlight_current(obj, li, index, state){
     if(index<0 || index>(0+6) || 0){
         $('#highlight_sel, #highlight_sel_dragger').css('display', 'none');
     } else {
         highlight(0)
         var delay =3D ( state=3D=3D'init' ) ? 0 : 400;
         setTimeout(function(){$('#highlight_sel, #highlight_sel_dragger').cs=
s('display', 'block');}, delay);
     }
}

function highlight(sel_date){
     var no_days =3D 7;
     var mod=3Dsel_date%no_days;

     var xpos =3D 0;

     switch (mod)
     {
         case 0:
           xpos=3D -10;
           break;
         case 1:
           xpos=3D 60;
           break;
         case 2:
           xpos=3D 125;
           break;
         case 3:
           xpos=3D 190;
           break;
         case 4:
           xpos=3D 255;
           break;
         case 5:
           xpos=3D 320;
           break;
         case 6:
           xpos=3D 385;
           break;
     }

     document.getElementById('highlight_sel').style.left=3D xpos + 'px';
     document.getElementById('highlight_sel_dragger').style.left=3D xpos + 'p=
x';
}
function loadHouseAuctions(){
     var hId =3D document.getElementById('auctHouseId').value;
     switch (hId) {
         case 'showall':
         case 'None':
         case 'none':
             newurl =3D '/';
             break;

         default:
             newurl =3D '/browse/seller/'+hId;
     }

     querydata =3D getQueryData(document.location.href);
     if (querydata['view'] =3D=3D 'list') {
         newurl =3D appendQueryPair(newurl, 'view', 'list');
     }

     goToUrl(newurl);
}
function loadCountryAuctions(){
     var cId =3D document.getElementById('auctCId').value;
     switch (cId) {
         case 'showall':
         case 'None':
         case 'none':
             newurl =3D '/';
             break;

         default:
             newurl =3D '/browse/auctions-in-'+cId;
     }

     querydata =3D getQueryData(document.location.href);
     if (querydata['view'] =3D=3D 'list') {
         newurl =3D appendQueryPair(newurl, 'view', 'list');
     }

     goToUrl(newurl);
}

function prevNextDate(val){
     var firstDate =3D document.getElementById('firstDate').innerHTML;
     var fDate =3D firstDate.split('-');
     var hVal=3D'';
     var cVal =3D '';
     var hId =3D document.getElementById('auctHouseId').value;
     var cId =3D document.getElementById('auctCId').value;
     if(hId!=3D'None')
             hVal=3D'/hId'+hId
     if(cId!=3D'None')
             cVal =3D '/cId-'+cId
     window.location=3D'/browse/fDate'+fDate[2]+'-'+fDate[1]+'-'+fDate[0]+hVa=
l+cVal+'/'+val;
        =20
}

function pageNavigate(pageNum,archiveflg){
    =20
     var date =3D document.getElementById('dateSelect').innerHTML;
     var hId =3D document.getElementById('auctHouseId').value;
     var cId =3D document.getElementById('auctCId').value;
     var da =3D date.split('-');
     var hVal=3D'';
     var cVal =3D '';
         if(hId!=3D'None')
             hVal=3D'/hId'+hId
         if(cId!=3D'None')
             cVal =3D '/cId-'+cId
     var dVal=3D'/'+date;
     if(archiveflg =3D=3D 0){
         window.location=3D'/browse/page'+pageNum+hVal+cVal;
     }else if (archiveflg =3D=3D 1){
         window.location=3D'/browse/page'+pageNum+hVal+cVal+dVal;
     }
}

function initJcarousel(){
     try{
         if( 1 )
             $('#highlight_sel').css('display', 'block');
         $('#mycarousel').css('display', 'block');
         jQuery('#mycarousel').jcarousel({
             start: 0,
             itemVisibleInCallback: {
                 onBeforeAnimation: highlight_current
             }
         });
     }catch(e){}
}


     jQuery(document).ready(function() {
         initJcarousel();
     });
    =20
</script>
     <script type=3D"text/javascript">

     // <![CDATA[

         jQuery(document).ready(function($) {
             if (window.location.hash =3D=3D '#signup-1' || window.location.h=
ash =3D=3D '#setup') window.location.hash =3D '';

                                 if( location.search.indexOf('openlogin=3D1')=
 > -1 ) {
                                     $('#loginid').trigger('click');
                             }
                    =20
             /*if ($('.placeholder').length > 0) {
                                     $('.placeholder').css('color', '#009ddb'=
);
                             }*/

                                                 if (1 =3D=3D 2) {
                 window.location.hash =3D 'setup';
                 jQuery.facebox({
                     ajax: '//classic.liveauctioneers.com/sign-up/?url=3D/&si=
gnup_step=3D1'
                 });






--===============2477208448174990293==--


From leopoldo@maciasnetwork.com Wed Oct 23 17:47:15 2019
From: leopoldo@maciasnetwork.com
To: nmglug@lists.nmglug.org
Subject: Re: [nmglug] user agent
Date: Wed, 23 Oct 2019 18:47:11 -0600
Message-ID: <1571878031.24979.36.camel@maciasnetwork.com>
In-Reply-To: <96d08cb0-1846-c47a-30be-5b3d3feb1ce8@cybermesa.com>
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="===============2663552261838130166=="

--===============2663552261838130166==
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit

Brian,

On Wed, 2019-10-23 at 15:44 -0600, Brian O'Keefe wrote:
> Thanks Mars. I tried it and it failed.
> > $ curl --user-agent "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; 
> > rv:48.0) Gecko/20100101 Firefox/48.0"
> > https://www.liveauctioneers.com

> > curl: (35) error:1407742E:SSL
> > routines:SSL23_GET_SERVER_HELLO:tlsv1 
> > alert protocol version
This line is very interesting. This line tells me that the server that
is hosting the "new" liveauctioneers.com website does not support TLS
version 1. This makes sense since now-a-days, websites (for security
purposes) are only supporting TLSv2 and TLSv3. I'm not an expert on TLS
handshakes but this might be the reason your wife can access the
classic site (it probably supports the old encryption method of TLS
version 1). So, I stand corrected, in this case, the OS might have to
be updated to update the ssl libraries. In linux, this can be done by
updating the openssl version to one that supports TLS v2 and v3, but on
Mac, I don't think that's possible. Other NMLUGers might know of a way
but updating the OS will probably fix this issue (I apologize).
Updating the OS will update the SSL libraries to one that can support
TLSv2/3 and that will allow access.

There are openssl commands that can be run on linux to show what TLS
versions are supported by the site but I don't know if it's worth
trying to get this done on MACBook. So, I think you are on the right
path to update the OS.
> > 
> 
> My wife can get to the "classic" liveauctioneers page but if she
> clicks 
> sign in or sign up the next page is the 403 error. I tried changing
> the 
> domain name as there is a "classic" site that I can access and so
> can 
> she until she tries signing in. Tried several variants and most
> worked 
> in a terminal but none of the commands opened a web page. Sorry for 
> sending all of this output.
> Thanks and here goes. Now it's just an experiment as the MB Air is
> going 
> to Dotfoil (wife is fed up). There are many thousands of lines of
> code 
> beyond this but I wanted to show that at least in a terminal the
> site 
> was reached.
> 
> $ curl --user-agent "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6;
> rv:48.0) Gecko/20100101 Firefox/48.0"https://classic.liveauctioneers.
> com
> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN""http://www.w3.
> org/MarkUp/DTD/xhtml-rdfa-1.dtd">;
> <html xmlns="http://www.w3.org/1999/xhtml""  xmlns:fb="http://www.fac
> ebook.com/2008/fbml">
> <head>
> 		<title>Bid in Online Auctions - Live
> Auctioneers</title>
> 
>          <meta name="robots" content="noindex, nofollow">
>      
>      
>      <link rel="canonical" href="https://classic.liveauctioneers.com"
> >;
>      <link rel="next" href="https://classic.liveauctioneers.com/brows
> e/page2">;
>      <link rel="alternate" media="only screen and (max-width: 640px)"
> href="https://m.liveauctioneers.com">;
> 	<meta name="description" content="Get in on the auction -- bid
> LIVE online on art, antiques, jewelry and collectibles. Find online
> auctions from around the world at Live Auctioneers." />
>          
>      <meta name="google-site-verification"
> content="cV8cXXQi_UWIpJ6vc9a0DhF4AJD4HElapx9KBROkGCk" />
> 	<meta http-equiv="content-type" content="text/html;
> charset=iso-8859-1" />
> 
>          <link type="text/css" rel="stylesheet"
> href="/live_styles/v2171852186/live_styles.css" />        <link
> rel="shortcut icon" href="https://classic.liveauctioneers.com/live_de
> sign/images/favicon.png">;
>                  <link href="https://fonts.googleapis.com/css?family=
> Open+Sans:700,300,400&subset=latin,cyrillic-ext""  rel="stylesheet"
> type="text/css">
> 
>                  <script type="text/javascript"
> src="/live_scripts/v2171852186/jquery-1.7.2.min.js"></script>
>          <script type="text/javascript"
> src="/live_scripts/v2171852186/jquery-ui-
> 1.10.3.custom.min.js"></script>
>          <script type="text/javascript"
> src="/scripts/v2171852186/la.js"></script>
>          <script type="text/javascript"
> src="/scripts/v2171852186/facebox/facebox.js"></script>
>          <script type="text/javascript"
> src="/live_scripts/v2171852186/jquery.placeholder.min.js"></script>
>          <script type="text/javascript"
> src="/live_scripts/v2171852186/scripts.js"></script>
>          <script type="text/javascript"
> src="/scripts/v2171852186/lib/pv2/lib.js"></script>
>          <script type="text/javascript"
> src="/scripts/v2171852186/lib/pv2/main.js"></script>
>          <script type="text/javascript" src="https://snapabug.appspot
> .com/snapabug.js""  async></script>
>          <script type="text/javascript"
> src="/scripts/lib/jquery.dotdotdot.js"></script>
>          
>          <script type="text/javascript">
>              DEFAULT_HOST = 'classic.liveauctioneers.com';
>              DEFAULT_PROTOCOL = 'https';
>              DEFAULT_SSL_PROTOCOL = 'https';
>              RESOURCE_HOST = 'classic.liveauctioneers.com';
>              RESOURCE_PROTOCOL = 'https://';
>              if( typeof bidderID == 'undefined' ){
>                  var bidderID = null;
>              }
>              dataLayer = [];
>                                      GTM_userInfo = [];
> 
>              
>              function loadAuctionDate(date){
>                  var hVal='';
>                  var cVal = '';
>                  var hId = document.getElementById('auctHouseId') ==
> null ? 'None' : document.getElementById('auctHouseId').value;
>                  var cId = document.getElementById('auctCId') == null
> ? 'None' : document.getElementById('auctCId').value;
>                  if(hId!='None'){
>                      hVal='/seller/'+hId
>                  }else{
>                      if(cId!='None')
>                          cVal = '/auctions-in-'+cId
>                  }
>                  if( date == 'All' ){
>                      newurl = '/browse'+hVal+cVal;
>                      querydata =
> getQueryData(document.location.href);
>                      if (querydata['view'] == 'list') {
>                          newurl = appendQueryPair(newurl, 'view',
> 'list');
>                      }
>                      window.location = newurl;
>                      return true;
>                  }
>                  var dashorslash = ( hVal=='' && cVal == '' ) ? '/' :
> '-';
>                  newurl = '/browse'+hVal+cVal+dashorslash+date;
> 
>                  querydata = getQueryData(document.location.href);
>                  if (querydata['view'] == 'list') {
>                      newurl = appendQueryPair(newurl, 'view',
> 'list');
>                  }
> 
>                  goToUrl(newurl);
>              }
>              
>          </script>
> 
> 
>          
>                                                  <script
> type="text/javascript"
> src="/live_scripts/v2171852186/jquery.vticker.js"></script>
>          <script type="text/javascript"
> src="/live_scripts/v2171852186/slickcustomscroll.js"></script>
>          <script type="text/javascript"
> src="/live_scripts/v2171852186/jquery.jcarousel.min.js"></script>
>                  
>          <script type="text/javascript">
>          function initTicker(){
>              var $scroller = $("#scroller");
>              $scroller.vTicker('init', {height: 40, showItems: 1});
>              $(".next").click(function(event){
>                  event.preventDefault();
>                  $scroller.vTicker('next', {animate:true});
>              });
>          }
>          $(function(){
>              setTimeout(initTicker,1000);
>          });
>          </script>
>          
>                  <meta property="fb:app_id"
> content="143214215739939"/>
>          
> 
> <script>
>      
> function loadAuction(){
>      var hId = document.getElementById('auctHouseId').value;
>      var cId = document.getElementById('auctCId').value;
>      var date = document.getElementById('dateSelect').innerHTML;
>      var da = date.split('-');
>      var dVal='/dateSel'+da[2]+'-'+da[1]+'-'+da[0];
>      var hVal='';
>      var cVal = '';
>      var firstDate = document.getElementById('firstDate').innerHTML;
>      var fDate = firstDate.split('-');
>      var fVal='/fDate'+fDate[2]+'-'+fDate[1]+'-'+fDate[0];
>      
>      if(hId!='None')
>              hVal='/hId'+hId
>      if(cId!='None')
>              cVal = '/cId-'+cId
>      window.location='/browse'+hVal+cVal+dVal+fVal;
>      
> }
> 
> function highlight_current(obj, li, index, state){
>      if(index<0 || index>(0+6) || 0){
>          $('#highlight_sel, #highlight_sel_dragger').css('display',
> 'none');
>      } else {
>          highlight(0)
>          var delay = ( state=='init' ) ? 0 : 400;
>          setTimeout(function(){$('#highlight_sel,
> #highlight_sel_dragger').css('display', 'block');}, delay);
>      }
> }
> 
> function highlight(sel_date){
>      var no_days = 7;
>      var mod=sel_date%no_days;
> 
>      var xpos = 0;
> 
>      switch (mod)
>      {
>          case 0:
>            xpos= -10;
>            break;
>          case 1:
>            xpos= 60;
>            break;
>          case 2:
>            xpos= 125;
>            break;
>          case 3:
>            xpos= 190;
>            break;
>          case 4:
>            xpos= 255;
>            break;
>          case 5:
>            xpos= 320;
>            break;
>          case 6:
>            xpos= 385;
>            break;
>      }
> 
>      document.getElementById('highlight_sel').style.left= xpos +
> 'px';
>      document.getElementById('highlight_sel_dragger').style.left=
> xpos + 'px';
> }
> function loadHouseAuctions(){
>      var hId = document.getElementById('auctHouseId').value;
>      switch (hId) {
>          case 'showall':
>          case 'None':
>          case 'none':
>              newurl = '/';
>              break;
> 
>          default:
>              newurl = '/browse/seller/'+hId;
>      }
> 
>      querydata = getQueryData(document.location.href);
>      if (querydata['view'] == 'list') {
>          newurl = appendQueryPair(newurl, 'view', 'list');
>      }
> 
>      goToUrl(newurl);
> }
> function loadCountryAuctions(){
>      var cId = document.getElementById('auctCId').value;
>      switch (cId) {
>          case 'showall':
>          case 'None':
>          case 'none':
>              newurl = '/';
>              break;
> 
>          default:
>              newurl = '/browse/auctions-in-'+cId;
>      }
> 
>      querydata = getQueryData(document.location.href);
>      if (querydata['view'] == 'list') {
>          newurl = appendQueryPair(newurl, 'view', 'list');
>      }
> 
>      goToUrl(newurl);
> }
> 
> function prevNextDate(val){
>      var firstDate = document.getElementById('firstDate').innerHTML;
>      var fDate = firstDate.split('-');
>      var hVal='';
>      var cVal = '';
>      var hId = document.getElementById('auctHouseId').value;
>      var cId = document.getElementById('auctCId').value;
>      if(hId!='None')
>              hVal='/hId'+hId
>      if(cId!='None')
>              cVal = '/cId-'+cId
>      window.location='/browse/fDate'+fDate[2]+'-'+fDate[1]+'-
> '+fDate[0]+hVal+cVal+'/'+val;
>          
> }
> 
> function pageNavigate(pageNum,archiveflg){
>      
>      var date = document.getElementById('dateSelect').innerHTML;
>      var hId = document.getElementById('auctHouseId').value;
>      var cId = document.getElementById('auctCId').value;
>      var da = date.split('-');
>      var hVal='';
>      var cVal = '';
>          if(hId!='None')
>              hVal='/hId'+hId
>          if(cId!='None')
>              cVal = '/cId-'+cId
>      var dVal='/'+date;
>      if(archiveflg == 0){
>          window.location='/browse/page'+pageNum+hVal+cVal;
>      }else if (archiveflg == 1){
>          window.location='/browse/page'+pageNum+hVal+cVal+dVal;
>      }
> }
> 
> function initJcarousel(){
>      try{
>          if( 1 )
>              $('#highlight_sel').css('display', 'block');
>          $('#mycarousel').css('display', 'block');
>          jQuery('#mycarousel').jcarousel({
>              start: 0,
>              itemVisibleInCallback: {
>                  onBeforeAnimation: highlight_current
>              }
>          });
>      }catch(e){}
> }
> 
> 
>      jQuery(document).ready(function() {
>          initJcarousel();
>      });
>      
> </script>
>      <script type="text/javascript">
> 
>      // <![CDATA[
> 
>          jQuery(document).ready(function($) {
>              if (window.location.hash == '#signup-1' ||
> window.location.hash == '#setup') window.location.hash = '';
> 
>                                  if(
> location.search.indexOf('openlogin=1') > -1 ) {
>                                      $('#loginid').trigger('click');
>                              }
>                      
>              /*if ($('.placeholder').length > 0) {
>                                      $('.placeholder').css('color',
> '#009ddb');
>                              }*/
> 
>                                                  if (1 == 2) {
>                  window.location.hash = 'setup';
>                  jQuery.facebox({
>                      ajax: '//classic.liveauctioneers.com/sign-
> up/?url=/&signup_step=1'
>                  });
> 
> 
> 
> 
> 
> _______________________________________________
> nmglug mailing list
> nmglug@lists.nmglug.org
> http://lists.nmglug.org/listinfo.cgi/nmglug-nmglug.org

--===============2663552261838130166==--


From okeefe@cybermesa.com Wed Oct 23 19:03:11 2019
From: Brian O'Keefe <okeefe@cybermesa.com>
To: nmglug@lists.nmglug.org
Subject: Re: [nmglug] user agent
Date: Wed, 23 Oct 2019 20:03:03 -0600
Message-ID: <1b95a396-2c07-40af-13de-0245787ef988@cybermesa.com>
In-Reply-To: <1571878031.24979.36.camel@maciasnetwork.com>
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="===============7967163920370664570=="

--===============7967163920370664570==
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit

Thanks for the help. Makes perfect sense and it means that an upgrade 
that was years behind schedule will happen.

Cheers

Brian

On 10/23/19 6:47 PM, leopoldo@maciasnetwork.com wrote:
> Brian,
>
> On Wed, 2019-10-23 at 15:44 -0600, Brian O'Keefe wrote:
>> Thanks Mars. I tried it and it failed.
>>> $ curl --user-agent "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6;
>>> rv:48.0) Gecko/20100101 Firefox/48.0"
>>> https://www.liveauctioneers.com
>>> curl: (35) error:1407742E:SSL
>>> routines:SSL23_GET_SERVER_HELLO:tlsv1
>>> alert protocol version
> This line is very interesting. This line tells me that the server that
> is hosting the "new" liveauctioneers.com website does not support TLS
> version 1. This makes sense since now-a-days, websites (for security
> purposes) are only supporting TLSv2 and TLSv3. I'm not an expert on TLS
> handshakes but this might be the reason your wife can access the
> classic site (it probably supports the old encryption method of TLS
> version 1). So, I stand corrected, in this case, the OS might have to
> be updated to update the ssl libraries. In linux, this can be done by
> updating the openssl version to one that supports TLS v2 and v3, but on
> Mac, I don't think that's possible. Other NMLUGers might know of a way
> but updating the OS will probably fix this issue (I apologize).
> Updating the OS will update the SSL libraries to one that can support
> TLSv2/3 and that will allow access.
>
> There are openssl commands that can be run on linux to show what TLS
> versions are supported by the site but I don't know if it's worth
> trying to get this done on MACBook. So, I think you are on the right
> path to update the OS.
>> My wife can get to the "classic" liveauctioneers page but if she
>> clicks
>> sign in or sign up the next page is the 403 error. I tried changing
>> the
>> domain name as there is a "classic" site that I can access and so
>> can
>> she until she tries signing in. Tried several variants and most
>> worked
>> in a terminal but none of the commands opened a web page. Sorry for
>> sending all of this output.
>> Thanks and here goes. Now it's just an experiment as the MB Air is
>> going
>> to Dotfoil (wife is fed up). There are many thousands of lines of
>> code
>> beyond this but I wanted to show that at least in a terminal the
>> site
>> was reached.
>>
>> $ curl --user-agent "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6;
>> rv:48.0) Gecko/20100101 Firefox/48.0"https://classic.liveauctioneers.
>> com
>> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN""http://www.w3.
>> org/MarkUp/DTD/xhtml-rdfa-1.dtd">;
>> <html xmlns="http://www.w3.org/1999/xhtml""  xmlns:fb="http://www.fac
>> ebook.com/2008/fbml">
>> <head>
>> 		<title>Bid in Online Auctions - Live
>> Auctioneers</title>
>>
>>           <meta name="robots" content="noindex, nofollow">
>>       
>>       
>>       <link rel="canonical" href="https://classic.liveauctioneers.com"
>>> ;
>>       <link rel="next" href="https://classic.liveauctioneers.com/brows
>> e/page2">;
>>       <link rel="alternate" media="only screen and (max-width: 640px)"
>> href="https://m.liveauctioneers.com">;
>> 	<meta name="description" content="Get in on the auction -- bid
>> LIVE online on art, antiques, jewelry and collectibles. Find online
>> auctions from around the world at Live Auctioneers." />
>>           
>>       <meta name="google-site-verification"
>> content="cV8cXXQi_UWIpJ6vc9a0DhF4AJD4HElapx9KBROkGCk" />
>> 	<meta http-equiv="content-type" content="text/html;
>> charset=iso-8859-1" />
>>
>>           <link type="text/css" rel="stylesheet"
>> href="/live_styles/v2171852186/live_styles.css" />        <link
>> rel="shortcut icon" href="https://classic.liveauctioneers.com/live_de
>> sign/images/favicon.png">;
>>                   <link href="https://fonts.googleapis.com/css?family=
>> Open+Sans:700,300,400&subset=latin,cyrillic-ext""  rel="stylesheet"
>> type="text/css">
>>
>>                   <script type="text/javascript"
>> src="/live_scripts/v2171852186/jquery-1.7.2.min.js"></script>
>>           <script type="text/javascript"
>> src="/live_scripts/v2171852186/jquery-ui-
>> 1.10.3.custom.min.js"></script>
>>           <script type="text/javascript"
>> src="/scripts/v2171852186/la.js"></script>
>>           <script type="text/javascript"
>> src="/scripts/v2171852186/facebox/facebox.js"></script>
>>           <script type="text/javascript"
>> src="/live_scripts/v2171852186/jquery.placeholder.min.js"></script>
>>           <script type="text/javascript"
>> src="/live_scripts/v2171852186/scripts.js"></script>
>>           <script type="text/javascript"
>> src="/scripts/v2171852186/lib/pv2/lib.js"></script>
>>           <script type="text/javascript"
>> src="/scripts/v2171852186/lib/pv2/main.js"></script>
>>           <script type="text/javascript" src="https://snapabug.appspot
>> .com/snapabug.js""  async></script>
>>           <script type="text/javascript"
>> src="/scripts/lib/jquery.dotdotdot.js"></script>
>>           
>>           <script type="text/javascript">
>>               DEFAULT_HOST = 'classic.liveauctioneers.com';
>>               DEFAULT_PROTOCOL = 'https';
>>               DEFAULT_SSL_PROTOCOL = 'https';
>>               RESOURCE_HOST = 'classic.liveauctioneers.com';
>>               RESOURCE_PROTOCOL = 'https://';
>>               if( typeof bidderID == 'undefined' ){
>>                   var bidderID = null;
>>               }
>>               dataLayer = [];
>>                                       GTM_userInfo = [];
>>
>>               
>>               function loadAuctionDate(date){
>>                   var hVal='';
>>                   var cVal = '';
>>                   var hId = document.getElementById('auctHouseId') ==
>> null ? 'None' : document.getElementById('auctHouseId').value;
>>                   var cId = document.getElementById('auctCId') == null
>> ? 'None' : document.getElementById('auctCId').value;
>>                   if(hId!='None'){
>>                       hVal='/seller/'+hId
>>                   }else{
>>                       if(cId!='None')
>>                           cVal = '/auctions-in-'+cId
>>                   }
>>                   if( date == 'All' ){
>>                       newurl = '/browse'+hVal+cVal;
>>                       querydata =
>> getQueryData(document.location.href);
>>                       if (querydata['view'] == 'list') {
>>                           newurl = appendQueryPair(newurl, 'view',
>> 'list');
>>                       }
>>                       window.location = newurl;
>>                       return true;
>>                   }
>>                   var dashorslash = ( hVal=='' && cVal == '' ) ? '/' :
>> '-';
>>                   newurl = '/browse'+hVal+cVal+dashorslash+date;
>>
>>                   querydata = getQueryData(document.location.href);
>>                   if (querydata['view'] == 'list') {
>>                       newurl = appendQueryPair(newurl, 'view',
>> 'list');
>>                   }
>>
>>                   goToUrl(newurl);
>>               }
>>               
>>           </script>
>>
>>
>>           
>>                                                   <script
>> type="text/javascript"
>> src="/live_scripts/v2171852186/jquery.vticker.js"></script>
>>           <script type="text/javascript"
>> src="/live_scripts/v2171852186/slickcustomscroll.js"></script>
>>           <script type="text/javascript"
>> src="/live_scripts/v2171852186/jquery.jcarousel.min.js"></script>
>>                   
>>           <script type="text/javascript">
>>           function initTicker(){
>>               var $scroller = $("#scroller");
>>               $scroller.vTicker('init', {height: 40, showItems: 1});
>>               $(".next").click(function(event){
>>                   event.preventDefault();
>>                   $scroller.vTicker('next', {animate:true});
>>               });
>>           }
>>           $(function(){
>>               setTimeout(initTicker,1000);
>>           });
>>           </script>
>>           
>>                   <meta property="fb:app_id"
>> content="143214215739939"/>
>>           
>>
>> <script>
>>       
>> function loadAuction(){
>>       var hId = document.getElementById('auctHouseId').value;
>>       var cId = document.getElementById('auctCId').value;
>>       var date = document.getElementById('dateSelect').innerHTML;
>>       var da = date.split('-');
>>       var dVal='/dateSel'+da[2]+'-'+da[1]+'-'+da[0];
>>       var hVal='';
>>       var cVal = '';
>>       var firstDate = document.getElementById('firstDate').innerHTML;
>>       var fDate = firstDate.split('-');
>>       var fVal='/fDate'+fDate[2]+'-'+fDate[1]+'-'+fDate[0];
>>       
>>       if(hId!='None')
>>               hVal='/hId'+hId
>>       if(cId!='None')
>>               cVal = '/cId-'+cId
>>       window.location='/browse'+hVal+cVal+dVal+fVal;
>>       
>> }
>>
>> function highlight_current(obj, li, index, state){
>>       if(index<0 || index>(0+6) || 0){
>>           $('#highlight_sel, #highlight_sel_dragger').css('display',
>> 'none');
>>       } else {
>>           highlight(0)
>>           var delay = ( state=='init' ) ? 0 : 400;
>>           setTimeout(function(){$('#highlight_sel,
>> #highlight_sel_dragger').css('display', 'block');}, delay);
>>       }
>> }
>>
>> function highlight(sel_date){
>>       var no_days = 7;
>>       var mod=sel_date%no_days;
>>
>>       var xpos = 0;
>>
>>       switch (mod)
>>       {
>>           case 0:
>>             xpos= -10;
>>             break;
>>           case 1:
>>             xpos= 60;
>>             break;
>>           case 2:
>>             xpos= 125;
>>             break;
>>           case 3:
>>             xpos= 190;
>>             break;
>>           case 4:
>>             xpos= 255;
>>             break;
>>           case 5:
>>             xpos= 320;
>>             break;
>>           case 6:
>>             xpos= 385;
>>             break;
>>       }
>>
>>       document.getElementById('highlight_sel').style.left= xpos +
>> 'px';
>>       document.getElementById('highlight_sel_dragger').style.left=
>> xpos + 'px';
>> }
>> function loadHouseAuctions(){
>>       var hId = document.getElementById('auctHouseId').value;
>>       switch (hId) {
>>           case 'showall':
>>           case 'None':
>>           case 'none':
>>               newurl = '/';
>>               break;
>>
>>           default:
>>               newurl = '/browse/seller/'+hId;
>>       }
>>
>>       querydata = getQueryData(document.location.href);
>>       if (querydata['view'] == 'list') {
>>           newurl = appendQueryPair(newurl, 'view', 'list');
>>       }
>>
>>       goToUrl(newurl);
>> }
>> function loadCountryAuctions(){
>>       var cId = document.getElementById('auctCId').value;
>>       switch (cId) {
>>           case 'showall':
>>           case 'None':
>>           case 'none':
>>               newurl = '/';
>>               break;
>>
>>           default:
>>               newurl = '/browse/auctions-in-'+cId;
>>       }
>>
>>       querydata = getQueryData(document.location.href);
>>       if (querydata['view'] == 'list') {
>>           newurl = appendQueryPair(newurl, 'view', 'list');
>>       }
>>
>>       goToUrl(newurl);
>> }
>>
>> function prevNextDate(val){
>>       var firstDate = document.getElementById('firstDate').innerHTML;
>>       var fDate = firstDate.split('-');
>>       var hVal='';
>>       var cVal = '';
>>       var hId = document.getElementById('auctHouseId').value;
>>       var cId = document.getElementById('auctCId').value;
>>       if(hId!='None')
>>               hVal='/hId'+hId
>>       if(cId!='None')
>>               cVal = '/cId-'+cId
>>       window.location='/browse/fDate'+fDate[2]+'-'+fDate[1]+'-
>> '+fDate[0]+hVal+cVal+'/'+val;
>>           
>> }
>>
>> function pageNavigate(pageNum,archiveflg){
>>       
>>       var date = document.getElementById('dateSelect').innerHTML;
>>       var hId = document.getElementById('auctHouseId').value;
>>       var cId = document.getElementById('auctCId').value;
>>       var da = date.split('-');
>>       var hVal='';
>>       var cVal = '';
>>           if(hId!='None')
>>               hVal='/hId'+hId
>>           if(cId!='None')
>>               cVal = '/cId-'+cId
>>       var dVal='/'+date;
>>       if(archiveflg == 0){
>>           window.location='/browse/page'+pageNum+hVal+cVal;
>>       }else if (archiveflg == 1){
>>           window.location='/browse/page'+pageNum+hVal+cVal+dVal;
>>       }
>> }
>>
>> function initJcarousel(){
>>       try{
>>           if( 1 )
>>               $('#highlight_sel').css('display', 'block');
>>           $('#mycarousel').css('display', 'block');
>>           jQuery('#mycarousel').jcarousel({
>>               start: 0,
>>               itemVisibleInCallback: {
>>                   onBeforeAnimation: highlight_current
>>               }
>>           });
>>       }catch(e){}
>> }
>>
>>
>>       jQuery(document).ready(function() {
>>           initJcarousel();
>>       });
>>       
>> </script>
>>       <script type="text/javascript">
>>
>>       // <![CDATA[
>>
>>           jQuery(document).ready(function($) {
>>               if (window.location.hash == '#signup-1' ||
>> window.location.hash == '#setup') window.location.hash = '';
>>
>>                                   if(
>> location.search.indexOf('openlogin=1') > -1 ) {
>>                                       $('#loginid').trigger('click');
>>                               }
>>                       
>>               /*if ($('.placeholder').length > 0) {
>>                                       $('.placeholder').css('color',
>> '#009ddb');
>>                               }*/
>>
>>                                                   if (1 == 2) {
>>                   window.location.hash = 'setup';
>>                   jQuery.facebox({
>>                       ajax: '//classic.liveauctioneers.com/sign-
>> up/?url=/&signup_step=1'
>>                   });
>>
>>
>>
>>
>>
>> _______________________________________________
>> nmglug mailing list
>> nmglug@lists.nmglug.org
>> http://lists.nmglug.org/listinfo.cgi/nmglug-nmglug.org
> _______________________________________________
> nmglug mailing list
> nmglug@lists.nmglug.org
> http://lists.nmglug.org/listinfo.cgi/nmglug-nmglug.org
>
>
-- 



--===============7967163920370664570==
Content-Type: text/html
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="attachment.html"
MIME-Version: 1.0

PGh0bWw+CiAgPGhlYWQ+CiAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRl
bnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiAgPC9oZWFkPgogIDxib2R5IHRleHQ9IiMw
MDAwMDAiIGJnY29sb3I9IiNGRkZGRkYiPgogICAgPHA+VGhhbmtzIGZvciB0aGUgaGVscC4gTWFr
ZXMgcGVyZmVjdCBzZW5zZSBhbmQgaXQgbWVhbnMgdGhhdCBhbgogICAgICB1cGdyYWRlIHRoYXQg
d2FzIHllYXJzIGJlaGluZCBzY2hlZHVsZSB3aWxsIGhhcHBlbi48L3A+CiAgICA8cD5DaGVlcnM8
L3A+CiAgICA8cD5Ccmlhbjxicj4KICAgIDwvcD4KICAgIDxkaXYgY2xhc3M9Im1vei1jaXRlLXBy
ZWZpeCI+T24gMTAvMjMvMTkgNjo0NyBQTSwKICAgICAgPGEgY2xhc3M9Im1vei10eHQtbGluay1h
YmJyZXZpYXRlZCIgaHJlZj0ibWFpbHRvOmxlb3BvbGRvQG1hY2lhc25ldHdvcmsuY29tIj5sZW9w
b2xkb0BtYWNpYXNuZXR3b3JrLmNvbTwvYT4gd3JvdGU6PGJyPgogICAgPC9kaXY+CiAgICA8Ymxv
Y2txdW90ZSB0eXBlPSJjaXRlIgogICAgICBjaXRlPSJtaWQ6MTU3MTg3ODAzMS4yNDk3OS4zNi5j
YW1lbEBtYWNpYXNuZXR3b3JrLmNvbSI+CiAgICAgIDxwcmUgY2xhc3M9Im1vei1xdW90ZS1wcmUi
IHdyYXA9IiI+QnJpYW4sCgpPbiBXZWQsIDIwMTktMTAtMjMgYXQgMTU6NDQgLTA2MDAsIEJyaWFu
IE8nS2VlZmUgd3JvdGU6CjwvcHJlPgogICAgICA8YmxvY2txdW90ZSB0eXBlPSJjaXRlIj4KICAg
ICAgICA8cHJlIGNsYXNzPSJtb3otcXVvdGUtcHJlIiB3cmFwPSIiPlRoYW5rcyBNYXJzLiBJIHRy
aWVkIGl0IGFuZCBpdCBmYWlsZWQuCjwvcHJlPgogICAgICAgIDxibG9ja3F1b3RlIHR5cGU9ImNp
dGUiPgogICAgICAgICAgPHByZSBjbGFzcz0ibW96LXF1b3RlLXByZSIgd3JhcD0iIj4kIGN1cmwg
LS11c2VyLWFnZW50ICJNb3ppbGxhLzUuMCAoTWFjaW50b3NoOyBJbnRlbCBNYWMgT1MgWCAxMC42
OyAKcnY6NDguMCkgR2Vja28vMjAxMDAxMDEgRmlyZWZveC80OC4wIgo8YSBjbGFzcz0ibW96LXR4
dC1saW5rLWZyZWV0ZXh0IiBocmVmPSJodHRwczovL3d3dy5saXZlYXVjdGlvbmVlcnMuY29tIj5o
dHRwczovL3d3dy5saXZlYXVjdGlvbmVlcnMuY29tPC9hPgo8L3ByZT4KICAgICAgICA8L2Jsb2Nr
cXVvdGU+CiAgICAgIDwvYmxvY2txdW90ZT4KICAgICAgPHByZSBjbGFzcz0ibW96LXF1b3RlLXBy
ZSIgd3JhcD0iIj4KPC9wcmU+CiAgICAgIDxibG9ja3F1b3RlIHR5cGU9ImNpdGUiPgogICAgICAg
IDxibG9ja3F1b3RlIHR5cGU9ImNpdGUiPgogICAgICAgICAgPHByZSBjbGFzcz0ibW96LXF1b3Rl
LXByZSIgd3JhcD0iIj5jdXJsOiAoMzUpIGVycm9yOjE0MDc3NDJFOlNTTApyb3V0aW5lczpTU0wy
M19HRVRfU0VSVkVSX0hFTExPOnRsc3YxIAphbGVydCBwcm90b2NvbCB2ZXJzaW9uCjwvcHJlPgog
ICAgICAgIDwvYmxvY2txdW90ZT4KICAgICAgPC9ibG9ja3F1b3RlPgogICAgICA8cHJlIGNsYXNz
PSJtb3otcXVvdGUtcHJlIiB3cmFwPSIiPlRoaXMgbGluZSBpcyB2ZXJ5IGludGVyZXN0aW5nLiBU
aGlzIGxpbmUgdGVsbHMgbWUgdGhhdCB0aGUgc2VydmVyIHRoYXQKaXMgaG9zdGluZyB0aGUgIm5l
dyIgbGl2ZWF1Y3Rpb25lZXJzLmNvbSB3ZWJzaXRlIGRvZXMgbm90IHN1cHBvcnQgVExTCnZlcnNp
b24gMS4gVGhpcyBtYWtlcyBzZW5zZSBzaW5jZSBub3ctYS1kYXlzLCB3ZWJzaXRlcyAoZm9yIHNl
Y3VyaXR5CnB1cnBvc2VzKSBhcmUgb25seSBzdXBwb3J0aW5nIFRMU3YyIGFuZCBUTFN2My4gSSdt
IG5vdCBhbiBleHBlcnQgb24gVExTCmhhbmRzaGFrZXMgYnV0IHRoaXMgbWlnaHQgYmUgdGhlIHJl
YXNvbiB5b3VyIHdpZmUgY2FuIGFjY2VzcyB0aGUKY2xhc3NpYyBzaXRlIChpdCBwcm9iYWJseSBz
dXBwb3J0cyB0aGUgb2xkIGVuY3J5cHRpb24gbWV0aG9kIG9mIFRMUwp2ZXJzaW9uIDEpLiBTbywg
SSBzdGFuZCBjb3JyZWN0ZWQsIGluIHRoaXMgY2FzZSwgdGhlIE9TIG1pZ2h0IGhhdmUgdG8KYmUg
dXBkYXRlZCB0byB1cGRhdGUgdGhlIHNzbCBsaWJyYXJpZXMuIEluIGxpbnV4LCB0aGlzIGNhbiBi
ZSBkb25lIGJ5CnVwZGF0aW5nIHRoZSBvcGVuc3NsIHZlcnNpb24gdG8gb25lIHRoYXQgc3VwcG9y
dHMgVExTIHYyIGFuZCB2MywgYnV0IG9uCk1hYywgSSBkb24ndCB0aGluayB0aGF0J3MgcG9zc2li
bGUuIE90aGVyIE5NTFVHZXJzIG1pZ2h0IGtub3cgb2YgYSB3YXkKYnV0IHVwZGF0aW5nIHRoZSBP
UyB3aWxsIHByb2JhYmx5IGZpeCB0aGlzIGlzc3VlIChJIGFwb2xvZ2l6ZSkuClVwZGF0aW5nIHRo
ZSBPUyB3aWxsIHVwZGF0ZSB0aGUgU1NMIGxpYnJhcmllcyB0byBvbmUgdGhhdCBjYW4gc3VwcG9y
dApUTFN2Mi8zIGFuZCB0aGF0IHdpbGwgYWxsb3cgYWNjZXNzLgoKVGhlcmUgYXJlIG9wZW5zc2wg
Y29tbWFuZHMgdGhhdCBjYW4gYmUgcnVuIG9uIGxpbnV4IHRvIHNob3cgd2hhdCBUTFMKdmVyc2lv
bnMgYXJlIHN1cHBvcnRlZCBieSB0aGUgc2l0ZSBidXQgSSBkb24ndCBrbm93IGlmIGl0J3Mgd29y
dGgKdHJ5aW5nIHRvIGdldCB0aGlzIGRvbmUgb24gTUFDQm9vay4gU28sIEkgdGhpbmsgeW91IGFy
ZSBvbiB0aGUgcmlnaHQKcGF0aCB0byB1cGRhdGUgdGhlIE9TLgo8L3ByZT4KICAgICAgPGJsb2Nr
cXVvdGUgdHlwZT0iY2l0ZSI+CiAgICAgICAgPGJsb2NrcXVvdGUgdHlwZT0iY2l0ZSI+CiAgICAg
ICAgICA8cHJlIGNsYXNzPSJtb3otcXVvdGUtcHJlIiB3cmFwPSIiPgo8L3ByZT4KICAgICAgICA8
L2Jsb2NrcXVvdGU+CiAgICAgICAgPHByZSBjbGFzcz0ibW96LXF1b3RlLXByZSIgd3JhcD0iIj4K
TXkgd2lmZSBjYW4gZ2V0IHRvIHRoZSAiY2xhc3NpYyIgbGl2ZWF1Y3Rpb25lZXJzIHBhZ2UgYnV0
IGlmIHNoZQpjbGlja3MgCnNpZ24gaW4gb3Igc2lnbiB1cCB0aGUgbmV4dCBwYWdlIGlzIHRoZSA0
MDMgZXJyb3IuIEkgdHJpZWQgY2hhbmdpbmcKdGhlIApkb21haW4gbmFtZSBhcyB0aGVyZSBpcyBh
ICJjbGFzc2ljIiBzaXRlIHRoYXQgSSBjYW4gYWNjZXNzIGFuZCBzbwpjYW4gCnNoZSB1bnRpbCBz
aGUgdHJpZXMgc2lnbmluZyBpbi4gVHJpZWQgc2V2ZXJhbCB2YXJpYW50cyBhbmQgbW9zdAp3b3Jr
ZWQgCmluIGEgdGVybWluYWwgYnV0IG5vbmUgb2YgdGhlIGNvbW1hbmRzIG9wZW5lZCBhIHdlYiBw
YWdlLiBTb3JyeSBmb3IgCnNlbmRpbmcgYWxsIG9mIHRoaXMgb3V0cHV0LgpUaGFua3MgYW5kIGhl
cmUgZ29lcy4gTm93IGl0J3MganVzdCBhbiBleHBlcmltZW50IGFzIHRoZSBNQiBBaXIgaXMKZ29p
bmcgCnRvIERvdGZvaWwgKHdpZmUgaXMgZmVkIHVwKS4gVGhlcmUgYXJlIG1hbnkgdGhvdXNhbmRz
IG9mIGxpbmVzIG9mCmNvZGUgCmJleW9uZCB0aGlzIGJ1dCBJIHdhbnRlZCB0byBzaG93IHRoYXQg
YXQgbGVhc3QgaW4gYSB0ZXJtaW5hbCB0aGUKc2l0ZSAKd2FzIHJlYWNoZWQuCgokIGN1cmwgLS11
c2VyLWFnZW50ICJNb3ppbGxhLzUuMCAoTWFjaW50b3NoOyBJbnRlbCBNYWMgT1MgWCAxMC42Owpy
djo0OC4wKSBHZWNrby8yMDEwMDEwMSBGaXJlZm94LzQ4LjAiPGEgY2xhc3M9Im1vei10eHQtbGlu
ay1mcmVldGV4dCIgaHJlZj0iaHR0cHM6Ly9jbGFzc2ljLmxpdmVhdWN0aW9uZWVycyI+aHR0cHM6
Ly9jbGFzc2ljLmxpdmVhdWN0aW9uZWVyczwvYT4uCmNvbQombHQ7IURPQ1RZUEUgaHRtbCBQVUJM
SUMgIi0vL1czQy8vRFREIFhIVE1MK1JERmEgMS4wLy9FTiI8YSBjbGFzcz0ibW96LXR4dC1saW5r
LXJmYzIzOTZFIiBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9NYXJrVXAvRFREL3hodG1sLXJkZmEt
MS5kdGQiPiJodHRwOi8vd3d3LnczLgpvcmcvTWFya1VwL0RURC94aHRtbC1yZGZhLTEuZHRkIjwv
YT4mZ3Q7OwombHQ7aHRtbCB4bWxucz08YSBjbGFzcz0ibW96LXR4dC1saW5rLXJmYzIzOTZFIiBo
cmVmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94aHRtbCI8L2E+IiAgeG1sbnM6ZmI9PGEgY2xhc3M9Im1vei10eHQtbGluay1yZmMyMzk2RSIg
aHJlZj0iaHR0cDovL3d3dy5mYWNlYm9vay5jb20vMjAwOC9mYm1sIj4iaHR0cDovL3d3dy5mYWMK
ZWJvb2suY29tLzIwMDgvZmJtbCI8L2E+Jmd0OwombHQ7aGVhZCZndDsKCQkmbHQ7dGl0bGUmZ3Q7
QmlkIGluIE9ubGluZSBBdWN0aW9ucyAtIExpdmUKQXVjdGlvbmVlcnMmbHQ7L3RpdGxlJmd0OwoK
ICAgICAgICAgJmx0O21ldGEgbmFtZT0icm9ib3RzIiBjb250ZW50PSJub2luZGV4LCBub2ZvbGxv
dyImZ3Q7CiAgICAgCiAgICAgCiAgICAgJmx0O2xpbmsgcmVsPSJjYW5vbmljYWwiIGhyZWY9PGEg
Y2xhc3M9Im1vei10eHQtbGluay1yZmMyMzk2RSIgaHJlZj0iaHR0cHM6Ly9jbGFzc2ljLmxpdmVh
dWN0aW9uZWVycy5jb20iPiJodHRwczovL2NsYXNzaWMubGl2ZWF1Y3Rpb25lZXJzLmNvbSI8L2E+
CjwvcHJlPgogICAgICAgIDxibG9ja3F1b3RlIHR5cGU9ImNpdGUiPgogICAgICAgICAgPHByZSBj
bGFzcz0ibW96LXF1b3RlLXByZSIgd3JhcD0iIj47CjwvcHJlPgogICAgICAgIDwvYmxvY2txdW90
ZT4KICAgICAgICA8cHJlIGNsYXNzPSJtb3otcXVvdGUtcHJlIiB3cmFwPSIiPiAgICAgJmx0O2xp
bmsgcmVsPSJuZXh0IiBocmVmPTxhIGNsYXNzPSJtb3otdHh0LWxpbmstcmZjMjM5NkUiIGhyZWY9
Imh0dHBzOi8vY2xhc3NpYy5saXZlYXVjdGlvbmVlcnMuY29tL2Jyb3dzZS9wYWdlMiI+Imh0dHBz
Oi8vY2xhc3NpYy5saXZlYXVjdGlvbmVlcnMuY29tL2Jyb3dzCmUvcGFnZTIiPC9hPiZndDs7CiAg
ICAgJmx0O2xpbmsgcmVsPSJhbHRlcm5hdGUiIG1lZGlhPSJvbmx5IHNjcmVlbiBhbmQgKG1heC13
aWR0aDogNjQwcHgpIgpocmVmPTxhIGNsYXNzPSJtb3otdHh0LWxpbmstcmZjMjM5NkUiIGhyZWY9
Imh0dHBzOi8vbS5saXZlYXVjdGlvbmVlcnMuY29tIj4iaHR0cHM6Ly9tLmxpdmVhdWN0aW9uZWVy
cy5jb20iPC9hPiZndDs7CgkmbHQ7bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iR2V0
IGluIG9uIHRoZSBhdWN0aW9uIC0tIGJpZApMSVZFIG9ubGluZSBvbiBhcnQsIGFudGlxdWVzLCBq
ZXdlbHJ5IGFuZCBjb2xsZWN0aWJsZXMuIEZpbmQgb25saW5lCmF1Y3Rpb25zIGZyb20gYXJvdW5k
IHRoZSB3b3JsZCBhdCBMaXZlIEF1Y3Rpb25lZXJzLiIgLyZndDsKICAgICAgICAgCiAgICAgJmx0
O21ldGEgbmFtZT0iZ29vZ2xlLXNpdGUtdmVyaWZpY2F0aW9uIgpjb250ZW50PSJjVjhjWFhRaV9V
V0lwSjZ2YzlhMERoRjRBSkQ0SEVsYXB4OUtCUk9rR0NrIiAvJmd0OwoJJmx0O21ldGEgaHR0cC1l
cXVpdj0iY29udGVudC10eXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7CmNoYXJzZXQ9aXNvLTg4NTkt
MSIgLyZndDsKCiAgICAgICAgICZsdDtsaW5rIHR5cGU9InRleHQvY3NzIiByZWw9InN0eWxlc2hl
ZXQiCmhyZWY9Ii9saXZlX3N0eWxlcy92MjE3MTg1MjE4Ni9saXZlX3N0eWxlcy5jc3MiIC8mZ3Q7
ICAgICAgICAmbHQ7bGluawpyZWw9InNob3J0Y3V0IGljb24iIGhyZWY9PGEgY2xhc3M9Im1vei10
eHQtbGluay1yZmMyMzk2RSIgaHJlZj0iaHR0cHM6Ly9jbGFzc2ljLmxpdmVhdWN0aW9uZWVycy5j
b20vbGl2ZV9kZXNpZ24vaW1hZ2VzL2Zhdmljb24ucG5nIj4iaHR0cHM6Ly9jbGFzc2ljLmxpdmVh
dWN0aW9uZWVycy5jb20vbGl2ZV9kZQpzaWduL2ltYWdlcy9mYXZpY29uLnBuZyI8L2E+Jmd0OzsK
ICAgICAgICAgICAgICAgICAmbHQ7bGluayBocmVmPTxhIGNsYXNzPSJtb3otdHh0LWxpbmstcmZj
MjM5NkUiIGhyZWY9Imh0dHBzOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vY3NzP2ZhbWlseT1PcGVu
K1NhbnM6NzAwLDMwMCw0MDAmYW1wO3N1YnNldD1sYXRpbixjeXJpbGxpYy1leHQiPiJodHRwczov
L2ZvbnRzLmdvb2dsZWFwaXMuY29tL2Nzcz9mYW1pbHk9Ck9wZW4rU2Fuczo3MDAsMzAwLDQwMCZh
bXA7c3Vic2V0PWxhdGluLGN5cmlsbGljLWV4dCI8L2E+IiAgcmVsPSJzdHlsZXNoZWV0Igp0eXBl
PSJ0ZXh0L2NzcyImZ3Q7CgogICAgICAgICAgICAgICAgICZsdDtzY3JpcHQgdHlwZT0idGV4dC9q
YXZhc2NyaXB0IgpzcmM9Ii9saXZlX3NjcmlwdHMvdjIxNzE4NTIxODYvanF1ZXJ5LTEuNy4yLm1p
bi5qcyImZ3Q7Jmx0Oy9zY3JpcHQmZ3Q7CiAgICAgICAgICZsdDtzY3JpcHQgdHlwZT0idGV4dC9q
YXZhc2NyaXB0IgpzcmM9Ii9saXZlX3NjcmlwdHMvdjIxNzE4NTIxODYvanF1ZXJ5LXVpLQoxLjEw
LjMuY3VzdG9tLm1pbi5qcyImZ3Q7Jmx0Oy9zY3JpcHQmZ3Q7CiAgICAgICAgICZsdDtzY3JpcHQg
dHlwZT0idGV4dC9qYXZhc2NyaXB0IgpzcmM9Ii9zY3JpcHRzL3YyMTcxODUyMTg2L2xhLmpzIiZn
dDsmbHQ7L3NjcmlwdCZndDsKICAgICAgICAgJmx0O3NjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3Jp
cHQiCnNyYz0iL3NjcmlwdHMvdjIxNzE4NTIxODYvZmFjZWJveC9mYWNlYm94LmpzIiZndDsmbHQ7
L3NjcmlwdCZndDsKICAgICAgICAgJmx0O3NjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiCnNy
Yz0iL2xpdmVfc2NyaXB0cy92MjE3MTg1MjE4Ni9qcXVlcnkucGxhY2Vob2xkZXIubWluLmpzIiZn
dDsmbHQ7L3NjcmlwdCZndDsKICAgICAgICAgJmx0O3NjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3Jp
cHQiCnNyYz0iL2xpdmVfc2NyaXB0cy92MjE3MTg1MjE4Ni9zY3JpcHRzLmpzIiZndDsmbHQ7L3Nj
cmlwdCZndDsKICAgICAgICAgJmx0O3NjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiCnNyYz0i
L3NjcmlwdHMvdjIxNzE4NTIxODYvbGliL3B2Mi9saWIuanMiJmd0OyZsdDsvc2NyaXB0Jmd0Owog
ICAgICAgICAmbHQ7c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIKc3JjPSIvc2NyaXB0cy92
MjE3MTg1MjE4Ni9saWIvcHYyL21haW4uanMiJmd0OyZsdDsvc2NyaXB0Jmd0OwogICAgICAgICAm
bHQ7c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPTxhIGNsYXNzPSJtb3otdHh0LWxp
bmstcmZjMjM5NkUiIGhyZWY9Imh0dHBzOi8vc25hcGFidWcuYXBwc3BvdC5jb20vc25hcGFidWcu
anMiPiJodHRwczovL3NuYXBhYnVnLmFwcHNwb3QKLmNvbS9zbmFwYWJ1Zy5qcyI8L2E+IiAgYXN5
bmMmZ3Q7Jmx0Oy9zY3JpcHQmZ3Q7CiAgICAgICAgICZsdDtzY3JpcHQgdHlwZT0idGV4dC9qYXZh
c2NyaXB0IgpzcmM9Ii9zY3JpcHRzL2xpYi9qcXVlcnkuZG90ZG90ZG90LmpzIiZndDsmbHQ7L3Nj
cmlwdCZndDsKICAgICAgICAgCiAgICAgICAgICZsdDtzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2Ny
aXB0IiZndDsKICAgICAgICAgICAgIERFRkFVTFRfSE9TVCA9ICdjbGFzc2ljLmxpdmVhdWN0aW9u
ZWVycy5jb20nOwogICAgICAgICAgICAgREVGQVVMVF9QUk9UT0NPTCA9ICdodHRwcyc7CiAgICAg
ICAgICAgICBERUZBVUxUX1NTTF9QUk9UT0NPTCA9ICdodHRwcyc7CiAgICAgICAgICAgICBSRVNP
VVJDRV9IT1NUID0gJ2NsYXNzaWMubGl2ZWF1Y3Rpb25lZXJzLmNvbSc7CiAgICAgICAgICAgICBS
RVNPVVJDRV9QUk9UT0NPTCA9ICdodHRwczovLyc7CiAgICAgICAgICAgICBpZiggdHlwZW9mIGJp
ZGRlcklEID09ICd1bmRlZmluZWQnICl7CiAgICAgICAgICAgICAgICAgdmFyIGJpZGRlcklEID0g
bnVsbDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGRhdGFMYXllciA9IFtdOwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1RNX3VzZXJJbmZvID0gW107CgogICAgICAg
ICAgICAgCiAgICAgICAgICAgICBmdW5jdGlvbiBsb2FkQXVjdGlvbkRhdGUoZGF0ZSl7CiAgICAg
ICAgICAgICAgICAgdmFyIGhWYWw9Jyc7CiAgICAgICAgICAgICAgICAgdmFyIGNWYWwgPSAnJzsK
ICAgICAgICAgICAgICAgICB2YXIgaElkID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2F1Y3RI
b3VzZUlkJykgPT0KbnVsbCA/ICdOb25lJyA6IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhdWN0
SG91c2VJZCcpLnZhbHVlOwogICAgICAgICAgICAgICAgIHZhciBjSWQgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnYXVjdENJZCcpID09IG51bGwKPyAnTm9uZScgOiBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnYXVjdENJZCcpLnZhbHVlOwogICAgICAgICAgICAgICAgIGlmKGhJZCE9J05vbmUn
KXsKICAgICAgICAgICAgICAgICAgICAgaFZhbD0nL3NlbGxlci8nK2hJZAogICAgICAgICAgICAg
ICAgIH1lbHNlewogICAgICAgICAgICAgICAgICAgICBpZihjSWQhPSdOb25lJykKICAgICAgICAg
ICAgICAgICAgICAgICAgIGNWYWwgPSAnL2F1Y3Rpb25zLWluLScrY0lkCiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgIGlmKCBkYXRlID09ICdBbGwnICl7CiAgICAgICAgICAgICAg
ICAgICAgIG5ld3VybCA9ICcvYnJvd3NlJytoVmFsK2NWYWw7CiAgICAgICAgICAgICAgICAgICAg
IHF1ZXJ5ZGF0YSA9CmdldFF1ZXJ5RGF0YShkb2N1bWVudC5sb2NhdGlvbi5ocmVmKTsKICAgICAg
ICAgICAgICAgICAgICAgaWYgKHF1ZXJ5ZGF0YVsndmlldyddID09ICdsaXN0JykgewogICAgICAg
ICAgICAgICAgICAgICAgICAgbmV3dXJsID0gYXBwZW5kUXVlcnlQYWlyKG5ld3VybCwgJ3ZpZXcn
LAonbGlzdCcpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIHdp
bmRvdy5sb2NhdGlvbiA9IG5ld3VybDsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHZhciBkYXNob3JzbGFzaCA9ICgg
aFZhbD09JycgJmFtcDsmYW1wOyBjVmFsID09ICcnICkgPyAnLycgOgonLSc7CiAgICAgICAgICAg
ICAgICAgbmV3dXJsID0gJy9icm93c2UnK2hWYWwrY1ZhbCtkYXNob3JzbGFzaCtkYXRlOwoKICAg
ICAgICAgICAgICAgICBxdWVyeWRhdGEgPSBnZXRRdWVyeURhdGEoZG9jdW1lbnQubG9jYXRpb24u
aHJlZik7CiAgICAgICAgICAgICAgICAgaWYgKHF1ZXJ5ZGF0YVsndmlldyddID09ICdsaXN0Jykg
ewogICAgICAgICAgICAgICAgICAgICBuZXd1cmwgPSBhcHBlbmRRdWVyeVBhaXIobmV3dXJsLCAn
dmlldycsCidsaXN0Jyk7CiAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICBnb1Rv
VXJsKG5ld3VybCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgJmx0Oy9z
Y3JpcHQmZ3Q7CgoKICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAmbHQ7c2NyaXB0CnR5cGU9InRleHQvamF2YXNjcmlwdCIKc3JjPSIvbGl2
ZV9zY3JpcHRzL3YyMTcxODUyMTg2L2pxdWVyeS52dGlja2VyLmpzIiZndDsmbHQ7L3NjcmlwdCZn
dDsKICAgICAgICAgJmx0O3NjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiCnNyYz0iL2xpdmVf
c2NyaXB0cy92MjE3MTg1MjE4Ni9zbGlja2N1c3RvbXNjcm9sbC5qcyImZ3Q7Jmx0Oy9zY3JpcHQm
Z3Q7CiAgICAgICAgICZsdDtzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IgpzcmM9Ii9saXZl
X3NjcmlwdHMvdjIxNzE4NTIxODYvanF1ZXJ5LmpjYXJvdXNlbC5taW4uanMiJmd0OyZsdDsvc2Ny
aXB0Jmd0OwogICAgICAgICAgICAgICAgIAogICAgICAgICAmbHQ7c2NyaXB0IHR5cGU9InRleHQv
amF2YXNjcmlwdCImZ3Q7CiAgICAgICAgIGZ1bmN0aW9uIGluaXRUaWNrZXIoKXsKICAgICAgICAg
ICAgIHZhciAkc2Nyb2xsZXIgPSAkKCIjc2Nyb2xsZXIiKTsKICAgICAgICAgICAgICRzY3JvbGxl
ci52VGlja2VyKCdpbml0Jywge2hlaWdodDogNDAsIHNob3dJdGVtczogMX0pOwogICAgICAgICAg
ICAgJCgiLm5leHQiKS5jbGljayhmdW5jdGlvbihldmVudCl7CiAgICAgICAgICAgICAgICAgZXZl
bnQucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgICAgICAkc2Nyb2xsZXIudlRpY2tlcign
bmV4dCcsIHthbmltYXRlOnRydWV9KTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9CiAgICAg
ICAgICQoZnVuY3Rpb24oKXsKICAgICAgICAgICAgIHNldFRpbWVvdXQoaW5pdFRpY2tlciwxMDAw
KTsKICAgICAgICAgfSk7CiAgICAgICAgICZsdDsvc2NyaXB0Jmd0OwogICAgICAgICAKICAgICAg
ICAgICAgICAgICAmbHQ7bWV0YSBwcm9wZXJ0eT0iZmI6YXBwX2lkIgpjb250ZW50PSIxNDMyMTQy
MTU3Mzk5MzkiLyZndDsKICAgICAgICAgCgombHQ7c2NyaXB0Jmd0OwogICAgIApmdW5jdGlvbiBs
b2FkQXVjdGlvbigpewogICAgIHZhciBoSWQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYXVj
dEhvdXNlSWQnKS52YWx1ZTsKICAgICB2YXIgY0lkID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J2F1Y3RDSWQnKS52YWx1ZTsKICAgICB2YXIgZGF0ZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdkYXRlU2VsZWN0JykuaW5uZXJIVE1MOwogICAgIHZhciBkYSA9IGRhdGUuc3BsaXQoJy0nKTsK
ICAgICB2YXIgZFZhbD0nL2RhdGVTZWwnK2RhWzJdKyctJytkYVsxXSsnLScrZGFbMF07CiAgICAg
dmFyIGhWYWw9Jyc7CiAgICAgdmFyIGNWYWwgPSAnJzsKICAgICB2YXIgZmlyc3REYXRlID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ZpcnN0RGF0ZScpLmlubmVySFRNTDsKICAgICB2YXIgZkRh
dGUgPSBmaXJzdERhdGUuc3BsaXQoJy0nKTsKICAgICB2YXIgZlZhbD0nL2ZEYXRlJytmRGF0ZVsy
XSsnLScrZkRhdGVbMV0rJy0nK2ZEYXRlWzBdOwogICAgIAogICAgIGlmKGhJZCE9J05vbmUnKQog
ICAgICAgICAgICAgaFZhbD0nL2hJZCcraElkCiAgICAgaWYoY0lkIT0nTm9uZScpCiAgICAgICAg
ICAgICBjVmFsID0gJy9jSWQtJytjSWQKICAgICB3aW5kb3cubG9jYXRpb249Jy9icm93c2UnK2hW
YWwrY1ZhbCtkVmFsK2ZWYWw7CiAgICAgCn0KCmZ1bmN0aW9uIGhpZ2hsaWdodF9jdXJyZW50KG9i
aiwgbGksIGluZGV4LCBzdGF0ZSl7CiAgICAgaWYoaW5kZXgmbHQ7MCB8fCBpbmRleCZndDsoMCs2
KSB8fCAwKXsKICAgICAgICAgJCgnI2hpZ2hsaWdodF9zZWwsICNoaWdobGlnaHRfc2VsX2RyYWdn
ZXInKS5jc3MoJ2Rpc3BsYXknLAonbm9uZScpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGhpZ2hs
aWdodCgwKQogICAgICAgICB2YXIgZGVsYXkgPSAoIHN0YXRlPT0naW5pdCcgKSA/IDAgOiA0MDA7
CiAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKXskKCcjaGlnaGxpZ2h0X3NlbCwKI2hpZ2hs
aWdodF9zZWxfZHJhZ2dlcicpLmNzcygnZGlzcGxheScsICdibG9jaycpO30sIGRlbGF5KTsKICAg
ICB9Cn0KCmZ1bmN0aW9uIGhpZ2hsaWdodChzZWxfZGF0ZSl7CiAgICAgdmFyIG5vX2RheXMgPSA3
OwogICAgIHZhciBtb2Q9c2VsX2RhdGUlbm9fZGF5czsKCiAgICAgdmFyIHhwb3MgPSAwOwoKICAg
ICBzd2l0Y2ggKG1vZCkKICAgICB7CiAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICB4cG9zPSAt
MTA7CiAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgMToKICAgICAgICAgICB4cG9zPSA2
MDsKICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSAyOgogICAgICAgICAgIHhwb3M9IDEy
NTsKICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSAzOgogICAgICAgICAgIHhwb3M9IDE5
MDsKICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSA0OgogICAgICAgICAgIHhwb3M9IDI1
NTsKICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSA1OgogICAgICAgICAgIHhwb3M9IDMy
MDsKICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSA2OgogICAgICAgICAgIHhwb3M9IDM4
NTsKICAgICAgICAgICBicmVhazsKICAgICB9CgogICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdoaWdobGlnaHRfc2VsJykuc3R5bGUubGVmdD0geHBvcyArCidweCc7CiAgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ2hpZ2hsaWdodF9zZWxfZHJhZ2dlcicpLnN0eWxlLmxlZnQ9Cnhwb3Mg
KyAncHgnOwp9CmZ1bmN0aW9uIGxvYWRIb3VzZUF1Y3Rpb25zKCl7CiAgICAgdmFyIGhJZCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdhdWN0SG91c2VJZCcpLnZhbHVlOwogICAgIHN3aXRjaCAo
aElkKSB7CiAgICAgICAgIGNhc2UgJ3Nob3dhbGwnOgogICAgICAgICBjYXNlICdOb25lJzoKICAg
ICAgICAgY2FzZSAnbm9uZSc6CiAgICAgICAgICAgICBuZXd1cmwgPSAnLyc7CiAgICAgICAgICAg
ICBicmVhazsKCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBuZXd1cmwgPSAnL2Jyb3dz
ZS9zZWxsZXIvJytoSWQ7CiAgICAgfQoKICAgICBxdWVyeWRhdGEgPSBnZXRRdWVyeURhdGEoZG9j
dW1lbnQubG9jYXRpb24uaHJlZik7CiAgICAgaWYgKHF1ZXJ5ZGF0YVsndmlldyddID09ICdsaXN0
JykgewogICAgICAgICBuZXd1cmwgPSBhcHBlbmRRdWVyeVBhaXIobmV3dXJsLCAndmlldycsICds
aXN0Jyk7CiAgICAgfQoKICAgICBnb1RvVXJsKG5ld3VybCk7Cn0KZnVuY3Rpb24gbG9hZENvdW50
cnlBdWN0aW9ucygpewogICAgIHZhciBjSWQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYXVj
dENJZCcpLnZhbHVlOwogICAgIHN3aXRjaCAoY0lkKSB7CiAgICAgICAgIGNhc2UgJ3Nob3dhbGwn
OgogICAgICAgICBjYXNlICdOb25lJzoKICAgICAgICAgY2FzZSAnbm9uZSc6CiAgICAgICAgICAg
ICBuZXd1cmwgPSAnLyc7CiAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgIGRlZmF1bHQ6CiAg
ICAgICAgICAgICBuZXd1cmwgPSAnL2Jyb3dzZS9hdWN0aW9ucy1pbi0nK2NJZDsKICAgICB9Cgog
ICAgIHF1ZXJ5ZGF0YSA9IGdldFF1ZXJ5RGF0YShkb2N1bWVudC5sb2NhdGlvbi5ocmVmKTsKICAg
ICBpZiAocXVlcnlkYXRhWyd2aWV3J10gPT0gJ2xpc3QnKSB7CiAgICAgICAgIG5ld3VybCA9IGFw
cGVuZFF1ZXJ5UGFpcihuZXd1cmwsICd2aWV3JywgJ2xpc3QnKTsKICAgICB9CgogICAgIGdvVG9V
cmwobmV3dXJsKTsKfQoKZnVuY3Rpb24gcHJldk5leHREYXRlKHZhbCl7CiAgICAgdmFyIGZpcnN0
RGF0ZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmaXJzdERhdGUnKS5pbm5lckhUTUw7CiAg
ICAgdmFyIGZEYXRlID0gZmlyc3REYXRlLnNwbGl0KCctJyk7CiAgICAgdmFyIGhWYWw9Jyc7CiAg
ICAgdmFyIGNWYWwgPSAnJzsKICAgICB2YXIgaElkID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J2F1Y3RIb3VzZUlkJykudmFsdWU7CiAgICAgdmFyIGNJZCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdhdWN0Q0lkJykudmFsdWU7CiAgICAgaWYoaElkIT0nTm9uZScpCiAgICAgICAgICAgICBo
VmFsPScvaElkJytoSWQKICAgICBpZihjSWQhPSdOb25lJykKICAgICAgICAgICAgIGNWYWwgPSAn
L2NJZC0nK2NJZAogICAgIHdpbmRvdy5sb2NhdGlvbj0nL2Jyb3dzZS9mRGF0ZScrZkRhdGVbMl0r
Jy0nK2ZEYXRlWzFdKyctCicrZkRhdGVbMF0raFZhbCtjVmFsKycvJyt2YWw7CiAgICAgICAgIAp9
CgpmdW5jdGlvbiBwYWdlTmF2aWdhdGUocGFnZU51bSxhcmNoaXZlZmxnKXsKICAgICAKICAgICB2
YXIgZGF0ZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkYXRlU2VsZWN0JykuaW5uZXJIVE1M
OwogICAgIHZhciBoSWQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYXVjdEhvdXNlSWQnKS52
YWx1ZTsKICAgICB2YXIgY0lkID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2F1Y3RDSWQnKS52
YWx1ZTsKICAgICB2YXIgZGEgPSBkYXRlLnNwbGl0KCctJyk7CiAgICAgdmFyIGhWYWw9Jyc7CiAg
ICAgdmFyIGNWYWwgPSAnJzsKICAgICAgICAgaWYoaElkIT0nTm9uZScpCiAgICAgICAgICAgICBo
VmFsPScvaElkJytoSWQKICAgICAgICAgaWYoY0lkIT0nTm9uZScpCiAgICAgICAgICAgICBjVmFs
ID0gJy9jSWQtJytjSWQKICAgICB2YXIgZFZhbD0nLycrZGF0ZTsKICAgICBpZihhcmNoaXZlZmxn
ID09IDApewogICAgICAgICB3aW5kb3cubG9jYXRpb249Jy9icm93c2UvcGFnZScrcGFnZU51bSto
VmFsK2NWYWw7CiAgICAgfWVsc2UgaWYgKGFyY2hpdmVmbGcgPT0gMSl7CiAgICAgICAgIHdpbmRv
dy5sb2NhdGlvbj0nL2Jyb3dzZS9wYWdlJytwYWdlTnVtK2hWYWwrY1ZhbCtkVmFsOwogICAgIH0K
fQoKZnVuY3Rpb24gaW5pdEpjYXJvdXNlbCgpewogICAgIHRyeXsKICAgICAgICAgaWYoIDEgKQog
ICAgICAgICAgICAgJCgnI2hpZ2hsaWdodF9zZWwnKS5jc3MoJ2Rpc3BsYXknLCAnYmxvY2snKTsK
ICAgICAgICAgJCgnI215Y2Fyb3VzZWwnKS5jc3MoJ2Rpc3BsYXknLCAnYmxvY2snKTsKICAgICAg
ICAgalF1ZXJ5KCcjbXljYXJvdXNlbCcpLmpjYXJvdXNlbCh7CiAgICAgICAgICAgICBzdGFydDog
MCwKICAgICAgICAgICAgIGl0ZW1WaXNpYmxlSW5DYWxsYmFjazogewogICAgICAgICAgICAgICAg
IG9uQmVmb3JlQW5pbWF0aW9uOiBoaWdobGlnaHRfY3VycmVudAogICAgICAgICAgICAgfQogICAg
ICAgICB9KTsKICAgICB9Y2F0Y2goZSl7fQp9CgoKICAgICBqUXVlcnkoZG9jdW1lbnQpLnJlYWR5
KGZ1bmN0aW9uKCkgewogICAgICAgICBpbml0SmNhcm91c2VsKCk7CiAgICAgfSk7CiAgICAgCiZs
dDsvc2NyaXB0Jmd0OwogICAgICZsdDtzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiZndDsK
CiAgICAgLy8gJmx0OyFbQ0RBVEFbCgogICAgICAgICBqUXVlcnkoZG9jdW1lbnQpLnJlYWR5KGZ1
bmN0aW9uKCQpIHsKICAgICAgICAgICAgIGlmICh3aW5kb3cubG9jYXRpb24uaGFzaCA9PSAnI3Np
Z251cC0xJyB8fAp3aW5kb3cubG9jYXRpb24uaGFzaCA9PSAnI3NldHVwJykgd2luZG93LmxvY2F0
aW9uLmhhc2ggPSAnJzsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKApsb2Nh
dGlvbi5zZWFyY2guaW5kZXhPZignb3BlbmxvZ2luPTEnKSAmZ3Q7IC0xICkgewogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnI2xvZ2luaWQnKS50cmlnZ2VyKCdjbGljaycp
OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgCiAg
ICAgICAgICAgICAvKmlmICgkKCcucGxhY2Vob2xkZXInKS5sZW5ndGggJmd0OyAwKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCcucGxhY2Vob2xkZXInKS5jc3MoJ2Nv
bG9yJywKJyMwMDlkZGInKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ki8KCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoMSA9PSAyKSB7
CiAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhhc2ggPSAnc2V0dXAnOwogICAgICAg
ICAgICAgICAgIGpRdWVyeS5mYWNlYm94KHsKICAgICAgICAgICAgICAgICAgICAgYWpheDogJy8v
Y2xhc3NpYy5saXZlYXVjdGlvbmVlcnMuY29tL3NpZ24tCnVwLz91cmw9LyZhbXA7c2lnbnVwX3N0
ZXA9MScKICAgICAgICAgICAgICAgICB9KTsKCgoKCgpfX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fXwpubWdsdWcgbWFpbGluZyBsaXN0CjxhIGNsYXNzPSJtb3ot
dHh0LWxpbmstYWJicmV2aWF0ZWQiIGhyZWY9Im1haWx0bzpubWdsdWdAbGlzdHMubm1nbHVnLm9y
ZyI+bm1nbHVnQGxpc3RzLm5tZ2x1Zy5vcmc8L2E+CjxhIGNsYXNzPSJtb3otdHh0LWxpbmstZnJl
ZXRleHQiIGhyZWY9Imh0dHA6Ly9saXN0cy5ubWdsdWcub3JnL2xpc3RpbmZvLmNnaS9ubWdsdWct
bm1nbHVnLm9yZyI+aHR0cDovL2xpc3RzLm5tZ2x1Zy5vcmcvbGlzdGluZm8uY2dpL25tZ2x1Zy1u
bWdsdWcub3JnPC9hPgo8L3ByZT4KICAgICAgPC9ibG9ja3F1b3RlPgogICAgICA8cHJlIGNsYXNz
PSJtb3otcXVvdGUtcHJlIiB3cmFwPSIiPl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fCm5tZ2x1ZyBtYWlsaW5nIGxpc3QKPGEgY2xhc3M9Im1vei10eHQtbGlu
ay1hYmJyZXZpYXRlZCIgaHJlZj0ibWFpbHRvOm5tZ2x1Z0BsaXN0cy5ubWdsdWcub3JnIj5ubWds
dWdAbGlzdHMubm1nbHVnLm9yZzwvYT4KPGEgY2xhc3M9Im1vei10eHQtbGluay1mcmVldGV4dCIg
aHJlZj0iaHR0cDovL2xpc3RzLm5tZ2x1Zy5vcmcvbGlzdGluZm8uY2dpL25tZ2x1Zy1ubWdsdWcu
b3JnIj5odHRwOi8vbGlzdHMubm1nbHVnLm9yZy9saXN0aW5mby5jZ2kvbm1nbHVnLW5tZ2x1Zy5v
cmc8L2E+CgoKPC9wcmU+CiAgICA8L2Jsb2NrcXVvdGU+CiAgICA8ZGl2IGNsYXNzPSJtb3otc2ln
bmF0dXJlIj4tLSA8YnI+CiAgICAgIDxpbWcgc3JjPSJjaWQ6cGFydDEuOEE0ODkzNUIuMDEzMTY1
MUZAY3liZXJtZXNhLmNvbSIgYm9yZGVyPSIwIj48L2Rpdj4KICA8L2JvZHk+CjwvaHRtbD4K

--===============7967163920370664570==
Content-Type: image/png
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="signature.png"
MIME-Version: 1.0

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

--===============7967163920370664570==--


