2019-11-04 15:13:15 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								module . exports  =  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/******/  ( function ( modules ,  runtime )  {  // webpackBootstrap
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/******/  	"use strict" ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/******/  	// The module cache
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/******/  	var  installedModules  =  { } ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/******/  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/******/  	// The require function
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/******/  	function  _ _webpack _require _ _ ( moduleId )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/******/  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/******/  		// Check if module is in cache
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/******/  		if ( installedModules [ moduleId ] )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/******/  			return  installedModules [ moduleId ] . exports ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/******/  		}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/******/  		// Create a new module (and put it into the cache)
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/******/  		var  module  =  installedModules [ moduleId ]  =  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/******/  			i :  moduleId ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/******/  			l :  false ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/******/  			exports :  { }  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/******/  		} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/******/  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/******/  		// Execute the module function
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/******/  		modules [ moduleId ] . call ( module . exports ,  module ,  module . exports ,  _ _webpack _require _ _ ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/******/  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/******/  		// Flag the module as loaded
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/******/  		module . l  =  true ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/******/  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/******/  		// Return the exports of the module
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/******/  		return  module . exports ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/******/  	}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/******/  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/******/  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/******/  	_ _webpack _require _ _ . ab  =  _ _dirname  +  "/" ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/******/  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/******/  	// the startup function
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/******/  	function  startup ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/******/  		// Load entry module and return exports
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/******/  		return  _ _webpack _require _ _ ( 778 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/******/  	} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/******/  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/******/  	// run startup
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/******/  	return  startup ( ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/******/  } )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/************************************************************************/  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/******/  ( {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  1 :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  ( function ( _ _unusedmodule ,  exports ,  _ _webpack _require _ _ )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								"use strict" ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  _ _awaiter  =  ( this  &&  this . _ _awaiter )  ||  function  ( thisArg ,  _arguments ,  P ,  generator )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    function  adopt ( value )  {  return  value  instanceof  P  ?  value  :  new  P ( function  ( resolve )  {  resolve ( value ) ;  } ) ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  new  ( P  ||  ( P  =  Promise ) ) ( function  ( resolve ,  reject )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        function  fulfilled ( value )  {  try  {  step ( generator . next ( value ) ) ;  }  catch  ( e )  {  reject ( e ) ;  }  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        function  rejected ( value )  {  try  {  step ( generator [ "throw" ] ( value ) ) ;  }  catch  ( e )  {  reject ( e ) ;  }  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        function  step ( result )  {  result . done  ?  resolve ( result . value )  :  adopt ( result . value ) . then ( fulfilled ,  rejected ) ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        step ( ( generator  =  generator . apply ( thisArg ,  _arguments  ||  [ ] ) ) . next ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Object . defineProperty ( exports ,  "__esModule" ,  {  value :  true  } ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  childProcess  =  _ _webpack _require _ _ ( 129 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  path  =  _ _webpack _require _ _ ( 622 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  util _1  =  _ _webpack _require _ _ ( 669 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  ioUtil  =  _ _webpack _require _ _ ( 672 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  exec  =  util _1 . promisify ( childProcess . exec ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Copies  a  file  or  folder . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Based  off  of  shelljs  -  https : //github.com/shelljs/shelljs/blob/9237f66c52e5daa40458f94f9565e18e8132f5a6/src/cp.js
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param      source     source  path 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param      dest       destination  path 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param      options    optional .  See  CopyOptions . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  cp ( source ,  dest ,  options  =  { } )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  _ _awaiter ( this ,  void  0 ,  void  0 ,  function *  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  {  force ,  recursive  }  =  readCopyOptions ( options ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  destStat  =  ( yield  ioUtil . exists ( dest ) )  ?  yield  ioUtil . stat ( dest )  :  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // Dest is an existing file, but not forcing
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( destStat  &&  destStat . isFile ( )  &&  ! force )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // If dest is an existing directory, should copy inside.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  newDest  =  destStat  &&  destStat . isDirectory ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ?  path . join ( dest ,  path . basename ( source ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            :  dest ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( ! ( yield  ioUtil . exists ( source ) ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            throw  new  Error ( ` no such file or directory:  ${ source } ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  sourceStat  =  yield  ioUtil . stat ( source ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( sourceStat . isDirectory ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( ! recursive )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                throw  new  Error ( ` Failed to copy.  ${ source }  is a directory, but tried to copy without recursive flag. ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                yield  cpDirRecursive ( source ,  newDest ,  0 ,  force ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( path . relative ( source ,  newDest )  ===  '' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                // a file cannot be copied to itself
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                throw  new  Error ( ` ' ${ newDest } ' and ' ${ source } ' are the same file ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            yield  copyFile ( source ,  newDest ,  force ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . cp  =  cp ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Moves  a  path . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param      source     source  path 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param      dest       destination  path 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param      options    optional .  See  MoveOptions . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  mv ( source ,  dest ,  options  =  { } )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  _ _awaiter ( this ,  void  0 ,  void  0 ,  function *  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( yield  ioUtil . exists ( dest ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            let  destExists  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( yield  ioUtil . isDirectory ( dest ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                // If dest is directory copy src into dest
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                dest  =  path . join ( dest ,  path . basename ( source ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                destExists  =  yield  ioUtil . exists ( dest ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( destExists )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                if  ( options . force  ==  null  ||  options . force )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    yield  rmRF ( dest ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    throw  new  Error ( 'Destination already exists' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        yield  mkdirP ( path . dirname ( dest ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        yield  ioUtil . rename ( source ,  dest ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . mv  =  mv ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Remove  a  path  recursively  with  force 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  inputPath  path  to  remove 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  rmRF ( inputPath )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  _ _awaiter ( this ,  void  0 ,  void  0 ,  function *  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( ioUtil . IS _WINDOWS )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // Node doesn't provide a delete operation, only an unlink function. This means that if the file is being used by another
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // program (e.g. antivirus), it won't be deleted. To address this, we shell out the work to rd/del.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                if  ( yield  ioUtil . isDirectory ( inputPath ,  true ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    yield  exec ( ` rd /s /q " ${ inputPath } " ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    yield  exec ( ` del /f /a " ${ inputPath } " ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            catch  ( err )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                // if you try to delete a file that doesn't exist, desired result is achieved
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                // other errors are valid
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                if  ( err . code  !==  'ENOENT' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    throw  err ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // Shelling out fails to remove a symlink folder with missing source, this unlink catches that
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                yield  ioUtil . unlink ( inputPath ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            catch  ( err )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                // if you try to delete a file that doesn't exist, desired result is achieved
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                // other errors are valid
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                if  ( err . code  !==  'ENOENT' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    throw  err ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            let  isDir  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                isDir  =  yield  ioUtil . isDirectory ( inputPath ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            catch  ( err )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                // if you try to delete a file that doesn't exist, desired result is achieved
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                // other errors are valid
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                if  ( err . code  !==  'ENOENT' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    throw  err ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( isDir )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                yield  exec ( ` rm -rf " ${ inputPath } " ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                yield  ioUtil . unlink ( inputPath ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . rmRF  =  rmRF ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Make  a  directory .   Creates  the  full  path  with  folders  in  between 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Will  throw  if  it  fails 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param    fsPath         path  to  create 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ returns  Promise < void > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  mkdirP ( fsPath )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  _ _awaiter ( this ,  void  0 ,  void  0 ,  function *  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        yield  ioUtil . mkdirP ( fsPath ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . mkdirP  =  mkdirP ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Returns  path  of  a  tool  had  the  tool  actually  been  invoked .   Resolves  via  paths . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  If  you  check  and  the  tool  does  not  exist ,  it  will  throw . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param      tool               name  of  the  tool 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param      check              whether  to  check  if  tool  exists 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ returns    Promise < string >    path  to  tool 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  which ( tool ,  check )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  _ _awaiter ( this ,  void  0 ,  void  0 ,  function *  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( ! tool )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            throw  new  Error ( "parameter 'tool' is required" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // recursive when check=true
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( check )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            const  result  =  yield  which ( tool ,  false ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( ! result )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                if  ( ioUtil . IS _WINDOWS )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    throw  new  Error ( ` Unable to locate executable file:  ${ tool } . Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also verify the file has a valid extension for an executable file. ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    throw  new  Error ( ` Unable to locate executable file:  ${ tool } . Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also check the file mode to verify the file is executable. ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // build the list of extensions to try
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            const  extensions  =  [ ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( ioUtil . IS _WINDOWS  &&  process . env . PATHEXT )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                for  ( const  extension  of  process . env . PATHEXT . split ( path . delimiter ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    if  ( extension )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        extensions . push ( extension ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // if it's rooted, return it if exists. otherwise return empty.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( ioUtil . isRooted ( tool ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                const  filePath  =  yield  ioUtil . tryGetExecutablePath ( tool ,  extensions ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                if  ( filePath )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    return  filePath ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                return  '' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // if any path separators, return empty
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( tool . includes ( '/' )  ||  ( ioUtil . IS _WINDOWS  &&  tool . includes ( '\\' ) ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                return  '' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // build the list of directories
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            //
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // Note, technically "where" checks the current directory on Windows. From a toolkit perspective,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // it feels like we should not do this. Checking the current directory seems like more of a use
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // case of a shell, and the which() function exposed by the toolkit should strive for consistency
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // across platforms.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            const  directories  =  [ ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( process . env . PATH )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                for  ( const  p  of  process . env . PATH . split ( path . delimiter ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    if  ( p )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        directories . push ( p ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // return the first match
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            for  ( const  directory  of  directories )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                const  filePath  =  yield  ioUtil . tryGetExecutablePath ( directory  +  path . sep  +  tool ,  extensions ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                if  ( filePath )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    return  filePath ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return  '' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        catch  ( err )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            throw  new  Error ( ` which failed with message  ${ err . message } ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . which  =  which ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  readCopyOptions ( options )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  force  =  options . force  ==  null  ?  true  :  options . force ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  recursive  =  Boolean ( options . recursive ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  {  force ,  recursive  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  cpDirRecursive ( sourceDir ,  destDir ,  currentDepth ,  force )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  _ _awaiter ( this ,  void  0 ,  void  0 ,  function *  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // Ensure there is not a run away recursive copy
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( currentDepth  >=  255 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        currentDepth ++ ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        yield  mkdirP ( destDir ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  files  =  yield  ioUtil . readdir ( sourceDir ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        for  ( const  fileName  of  files )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            const  srcFile  =  ` ${ sourceDir } / ${ fileName } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            const  destFile  =  ` ${ destDir } / ${ fileName } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            const  srcFileStat  =  yield  ioUtil . lstat ( srcFile ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( srcFileStat . isDirectory ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                // Recurse
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                yield  cpDirRecursive ( srcFile ,  destFile ,  currentDepth ,  force ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                yield  copyFile ( srcFile ,  destFile ,  force ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // Change the mode for the newly created directory
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        yield  ioUtil . chmod ( destDir ,  ( yield  ioUtil . stat ( sourceDir ) ) . mode ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Buffered file copy
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  copyFile ( srcFile ,  destFile ,  force )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  _ _awaiter ( this ,  void  0 ,  void  0 ,  function *  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( ( yield  ioUtil . lstat ( srcFile ) ) . isSymbolicLink ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // unlink/re-link it
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                yield  ioUtil . lstat ( destFile ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                yield  ioUtil . unlink ( destFile ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            catch  ( e )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                // Try to override file permission
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                if  ( e . code  ===  'EPERM' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    yield  ioUtil . chmod ( destFile ,  '0666' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    yield  ioUtil . unlink ( destFile ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                // other errors = it doesn't exist, no work to do
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // Copy over symlink
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            const  symlinkFull  =  yield  ioUtil . readlink ( srcFile ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            yield  ioUtil . symlink ( symlinkFull ,  destFile ,  ioUtil . IS _WINDOWS  ?  'junction'  :  null ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        else  if  ( ! ( yield  ioUtil . exists ( destFile ) )  ||  force )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            yield  ioUtil . copyFile ( srcFile ,  destFile ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//# sourceMappingURL=io.js.map
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  } ) ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  9 :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  ( function ( _ _unusedmodule ,  exports ,  _ _webpack _require _ _ )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								"use strict" ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  _ _awaiter  =  ( this  &&  this . _ _awaiter )  ||  function  ( thisArg ,  _arguments ,  P ,  generator )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    function  adopt ( value )  {  return  value  instanceof  P  ?  value  :  new  P ( function  ( resolve )  {  resolve ( value ) ;  } ) ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  new  ( P  ||  ( P  =  Promise ) ) ( function  ( resolve ,  reject )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        function  fulfilled ( value )  {  try  {  step ( generator . next ( value ) ) ;  }  catch  ( e )  {  reject ( e ) ;  }  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        function  rejected ( value )  {  try  {  step ( generator [ "throw" ] ( value ) ) ;  }  catch  ( e )  {  reject ( e ) ;  }  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        function  step ( result )  {  result . done  ?  resolve ( result . value )  :  adopt ( result . value ) . then ( fulfilled ,  rejected ) ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        step ( ( generator  =  generator . apply ( thisArg ,  _arguments  ||  [ ] ) ) . next ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Object . defineProperty ( exports ,  "__esModule" ,  {  value :  true  } ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  os  =  _ _webpack _require _ _ ( 87 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  events  =  _ _webpack _require _ _ ( 614 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  child  =  _ _webpack _require _ _ ( 129 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/* eslint-disable @typescript-eslint/unbound-method */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  IS _WINDOWS  =  process . platform  ===  'win32' ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Class  for  running  command  line  tools .  Handles  quoting  and  arg  parsing  in  a  platform  agnostic  way . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								class  ToolRunner  extends  events . EventEmitter  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    constructor ( toolPath ,  args ,  options )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        super ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( ! toolPath )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            throw  new  Error ( "Parameter 'toolPath' cannot be null or empty." ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . toolPath  =  toolPath ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . args  =  args  ||  [ ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . options  =  options  ||  { } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    _debug ( message )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( this . options . listeners  &&  this . options . listeners . debug )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            this . options . listeners . debug ( message ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    _getCommandString ( options ,  noPrefix )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  toolPath  =  this . _getSpawnFileName ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  args  =  this . _getSpawnArgs ( options ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        let  cmd  =  noPrefix  ?  ''  :  '[command]' ;  // omit prefix when piped to a second tool
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( IS _WINDOWS )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // Windows + cmd file
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( this . _isCmdFile ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                cmd  +=  toolPath ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                for  ( const  a  of  args )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    cmd  +=  `   ${ a } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // Windows + verbatim
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            else  if  ( options . windowsVerbatimArguments )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                cmd  +=  ` " ${ toolPath } " ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                for  ( const  a  of  args )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    cmd  +=  `   ${ a } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // Windows (regular)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                cmd  +=  this . _windowsQuoteCmdArg ( toolPath ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                for  ( const  a  of  args )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    cmd  +=  `   ${ this . _windowsQuoteCmdArg ( a ) } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // OSX/Linux - this can likely be improved with some form of quoting.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // creating processes on Unix is fundamentally different than Windows.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // on Unix, execvp() takes an arg array.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            cmd  +=  toolPath ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            for  ( const  a  of  args )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                cmd  +=  `   ${ a } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  cmd ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    _processLineBuffer ( data ,  strBuffer ,  onLine )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            let  s  =  strBuffer  +  data . toString ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            let  n  =  s . indexOf ( os . EOL ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            while  ( n  >  - 1 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                const  line  =  s . substring ( 0 ,  n ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                onLine ( line ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                // the rest of the string ...
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                s  =  s . substring ( n  +  os . EOL . length ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                n  =  s . indexOf ( os . EOL ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            strBuffer  =  s ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        catch  ( err )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // streaming lines to console is best effort.  Don't fail a build.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            this . _debug ( ` error processing line. Failed with error  ${ err } ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    _getSpawnFileName ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( IS _WINDOWS )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( this . _isCmdFile ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                return  process . env [ 'COMSPEC' ]  ||  'cmd.exe' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  this . toolPath ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    _getSpawnArgs ( options )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( IS _WINDOWS )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( this . _isCmdFile ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                let  argline  =  ` /D /S /C " ${ this . _windowsQuoteCmdArg ( this . toolPath ) } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                for  ( const  a  of  this . args )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    argline  +=  ' ' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    argline  +=  options . windowsVerbatimArguments 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        ?  a 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        :  this . _windowsQuoteCmdArg ( a ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                argline  +=  '"' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                return  [ argline ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  this . args ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    _endsWith ( str ,  end )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  str . endsWith ( end ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    _isCmdFile ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  upperToolPath  =  this . toolPath . toUpperCase ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  ( this . _endsWith ( upperToolPath ,  '.CMD' )  || 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            this . _endsWith ( upperToolPath ,  '.BAT' ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    _windowsQuoteCmdArg ( arg )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // for .exe, apply the normal quoting rules that libuv applies
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( ! this . _isCmdFile ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return  this . _uvQuoteCmdArg ( arg ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // otherwise apply quoting rules specific to the cmd.exe command line parser.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // the libuv rules are generic and are not designed specifically for cmd.exe
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // command line parser.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // for a detailed description of the cmd.exe command line parser, refer to
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // http://stackoverflow.com/questions/4094699/how-does-the-windows-command-interpreter-cmd-exe-parse-scripts/7970912#7970912
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // need quotes for empty arg
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( ! arg )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return  '""' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // determine whether the arg needs to be quoted
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  cmdSpecialChars  =  [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' ' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            '\t' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            '&' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            '(' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ')' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            '[' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ']' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            '{' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            '}' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            '^' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            '=' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ';' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            '!' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            "'" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            '+' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ',' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            '`' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            '~' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            '|' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            '<' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            '>' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            '"' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        let  needsQuotes  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        for  ( const  char  of  arg )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( cmdSpecialChars . some ( x  =>  x  ===  char ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                needsQuotes  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // short-circuit if quotes not needed
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( ! needsQuotes )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return  arg ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // the following quoting rules are very similar to the rules that by libuv applies.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // 1) wrap the string in quotes
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // 2) double-up quotes - i.e. " => ""
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //    this is different from the libuv quoting rules. libuv replaces " with \", which unfortunately
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //    doesn't work well with a cmd.exe command line.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //    note, replacing " with "" also works well if the arg is passed to a downstream .NET console app.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //    for example, the command line:
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //          foo.exe "myarg:""my val"""
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //    is parsed by a .NET console app into an arg array:
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //          [ "myarg:\"my val\"" ]
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //    which is the same end result when applying libuv quoting rules. although the actual
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //    command line from libuv quoting rules would look like:
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //          foo.exe "myarg:\"my val\""
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // 3) double-up slashes that precede a quote,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //    e.g.  hello \world    => "hello \world"
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //          hello\"world    => "hello\\""world"
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //          hello\\"world   => "hello\\\\""world"
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //          hello world\    => "hello world\\"
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //    technically this is not required for a cmd.exe command line, or the batch argument parser.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //    the reasons for including this as a .cmd quoting rule are:
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //    a) this is optimized for the scenario where the argument is passed from the .cmd file to an
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //       external program. many programs (e.g. .NET console apps) rely on the slash-doubling rule.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //    b) it's what we've been doing previously (by deferring to node default behavior) and we
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //       haven't heard any complaints about that aspect.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // note, a weakness of the quoting rules chosen here, is that % is not escaped. in fact, % cannot be
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // escaped when used on the command line directly - even though within a .cmd file % can be escaped
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // by using %%.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // the saving grace is, on the command line, %var% is left as-is if var is not defined. this contrasts
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // the line parsing rules within a .cmd file, where if var is not defined it is replaced with nothing.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // one option that was explored was replacing % with ^% - i.e. %var% => ^%var^%. this hack would
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // often work, since it is unlikely that var^ would exist, and the ^ character is removed when the
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // variable is used. the problem, however, is that ^ is not removed when %* is used to pass the args
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // to an external program.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // an unexplored potential solution for the % escaping problem, is to create a wrapper .cmd file.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // % can be escaped within a .cmd file.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        let  reverse  =  '"' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        let  quoteHit  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        for  ( let  i  =  arg . length ;  i  >  0 ;  i -- )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // walk the string in reverse
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            reverse  +=  arg [ i  -  1 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( quoteHit  &&  arg [ i  -  1 ]  ===  '\\' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                reverse  +=  '\\' ;  // double the slash
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            else  if  ( arg [ i  -  1 ]  ===  '"' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                quoteHit  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                reverse  +=  '"' ;  // double the quote
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                quoteHit  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        reverse  +=  '"' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  reverse 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            . split ( '' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            . reverse ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            . join ( '' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    _uvQuoteCmdArg ( arg )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // Tool runner wraps child_process.spawn() and needs to apply the same quoting as
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // Node in certain cases where the undocumented spawn option windowsVerbatimArguments
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // is used.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // Since this function is a port of quote_cmd_arg from Node 4.x (technically, lib UV,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // see https://github.com/nodejs/node/blob/v4.x/deps/uv/src/win/process.c for details),
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // pasting copyright notice from Node within this function:
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //      Copyright Joyent, Inc. and other Node contributors. All rights reserved.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //      Permission is hereby granted, free of charge, to any person obtaining a copy
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //      of this software and associated documentation files (the "Software"), to
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //      deal in the Software without restriction, including without limitation the
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //      rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //      sell copies of the Software, and to permit persons to whom the Software is
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //      furnished to do so, subject to the following conditions:
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //      The above copyright notice and this permission notice shall be included in
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //      all copies or substantial portions of the Software.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //      THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //      IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //      FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //      AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //      LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //      FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //      IN THE SOFTWARE.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( ! arg )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // Need double quotation for empty argument
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return  '""' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( ! arg . includes ( ' ' )  &&  ! arg . includes ( '\t' )  &&  ! arg . includes ( '"' ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // No quotation needed
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return  arg ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( ! arg . includes ( '"' )  &&  ! arg . includes ( '\\' ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // No embedded double quotes or backslashes, so I can just wrap
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // quote marks around the whole thing.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return  ` " ${ arg } " ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // Expected input/output:
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //   input : hello"world
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //   output: "hello\"world"
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //   input : hello""world
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //   output: "hello\"\"world"
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //   input : hello\world
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //   output: hello\world
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //   input : hello\\world
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //   output: hello\\world
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //   input : hello\"world
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //   output: "hello\\\"world"
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //   input : hello\\"world
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //   output: "hello\\\\\"world"
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //   input : hello world\
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //   output: "hello world\\" - note the comment in libuv actually reads "hello world\"
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //                             but it appears the comment is wrong, it should be "hello world\\"
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        let  reverse  =  '"' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        let  quoteHit  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        for  ( let  i  =  arg . length ;  i  >  0 ;  i -- )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // walk the string in reverse
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            reverse  +=  arg [ i  -  1 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( quoteHit  &&  arg [ i  -  1 ]  ===  '\\' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                reverse  +=  '\\' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            else  if  ( arg [ i  -  1 ]  ===  '"' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                quoteHit  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                reverse  +=  '\\' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                quoteHit  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        reverse  +=  '"' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  reverse 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            . split ( '' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            . reverse ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            . join ( '' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    _cloneExecOptions ( options )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        options  =  options  ||  { } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  result  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            cwd :  options . cwd  ||  process . cwd ( ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            env :  options . env  ||  process . env , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            silent :  options . silent  ||  false , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            windowsVerbatimArguments :  options . windowsVerbatimArguments  ||  false , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            failOnStdErr :  options . failOnStdErr  ||  false , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ignoreReturnCode :  options . ignoreReturnCode  ||  false , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            delay :  options . delay  ||  10000 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        result . outStream  =  options . outStream  ||  process . stdout ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        result . errStream  =  options . errStream  ||  process . stderr ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  result ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    _getSpawnOptions ( options ,  toolPath )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        options  =  options  ||  { } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  result  =  { } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        result . cwd  =  options . cwd ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        result . env  =  options . env ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        result [ 'windowsVerbatimArguments' ]  = 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            options . windowsVerbatimArguments  ||  this . _isCmdFile ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( options . windowsVerbatimArguments )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            result . argv0  =  ` " ${ toolPath } " ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  result ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  Exec  a  tool . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  Output  will  be  streamed  to  the  live  console . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  Returns  promise  with  return  code 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  @ param      tool      path  to  tool  to  exec 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  @ param      options   optional  exec  options .   See  ExecOptions 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  @ returns    number 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    exec ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  _ _awaiter ( this ,  void  0 ,  void  0 ,  function *  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return  new  Promise ( ( resolve ,  reject )  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                this . _debug ( ` exec tool:  ${ this . toolPath } ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                this . _debug ( 'arguments:' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                for  ( const  arg  of  this . args )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    this . _debug ( `     ${ arg } ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                const  optionsNonNull  =  this . _cloneExecOptions ( this . options ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                if  ( ! optionsNonNull . silent  &&  optionsNonNull . outStream )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    optionsNonNull . outStream . write ( this . _getCommandString ( optionsNonNull )  +  os . EOL ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                const  state  =  new  ExecState ( optionsNonNull ,  this . toolPath ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                state . on ( 'debug' ,  ( message )  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    this . _debug ( message ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                const  fileName  =  this . _getSpawnFileName ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                const  cp  =  child . spawn ( fileName ,  this . _getSpawnArgs ( optionsNonNull ) ,  this . _getSpawnOptions ( this . options ,  fileName ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                const  stdbuffer  =  '' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                if  ( cp . stdout )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    cp . stdout . on ( 'data' ,  ( data )  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        if  ( this . options . listeners  &&  this . options . listeners . stdout )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            this . options . listeners . stdout ( data ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        if  ( ! optionsNonNull . silent  &&  optionsNonNull . outStream )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            optionsNonNull . outStream . write ( data ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        this . _processLineBuffer ( data ,  stdbuffer ,  ( line )  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            if  ( this . options . listeners  &&  this . options . listeners . stdline )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                this . options . listeners . stdline ( line ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                const  errbuffer  =  '' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                if  ( cp . stderr )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    cp . stderr . on ( 'data' ,  ( data )  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        state . processStderr  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        if  ( this . options . listeners  &&  this . options . listeners . stderr )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            this . options . listeners . stderr ( data ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        if  ( ! optionsNonNull . silent  && 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            optionsNonNull . errStream  && 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            optionsNonNull . outStream )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            const  s  =  optionsNonNull . failOnStdErr 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                ?  optionsNonNull . errStream 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                :  optionsNonNull . outStream ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            s . write ( data ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        this . _processLineBuffer ( data ,  errbuffer ,  ( line )  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            if  ( this . options . listeners  &&  this . options . listeners . errline )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                this . options . listeners . errline ( line ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                cp . on ( 'error' ,  ( err )  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    state . processError  =  err . message ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    state . processExited  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    state . processClosed  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    state . CheckComplete ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                cp . on ( 'exit' ,  ( code )  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    state . processExitCode  =  code ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    state . processExited  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    this . _debug ( ` Exit code  ${ code }  received from tool ' ${ this . toolPath } ' ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    state . CheckComplete ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                cp . on ( 'close' ,  ( code )  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    state . processExitCode  =  code ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    state . processExited  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    state . processClosed  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    this . _debug ( ` STDIO streams have closed for tool ' ${ this . toolPath } ' ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    state . CheckComplete ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                state . on ( 'done' ,  ( error ,  exitCode )  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    if  ( stdbuffer . length  >  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        this . emit ( 'stdline' ,  stdbuffer ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    if  ( errbuffer . length  >  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        this . emit ( 'errline' ,  errbuffer ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    cp . removeAllListeners ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    if  ( error )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        reject ( error ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        resolve ( exitCode ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . ToolRunner  =  ToolRunner ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Convert  an  arg  string  to  an  array  of  args .  Handles  escaping 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param     argString    string  of  arguments 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ returns   string [ ]     array  of  arguments 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  argStringToArray ( argString )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  args  =  [ ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    let  inQuotes  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    let  escaped  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    let  arg  =  '' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    function  append ( c )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // we only escape double quotes.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( escaped  &&  c  !==  '"' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            arg  +=  '\\' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        arg  +=  c ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        escaped  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    for  ( let  i  =  0 ;  i  <  argString . length ;  i ++ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  c  =  argString . charAt ( i ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( c  ===  '"' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( ! escaped )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                inQuotes  =  ! inQuotes ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                append ( c ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            continue ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( c  ===  '\\'  &&  escaped )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            append ( c ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            continue ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( c  ===  '\\'  &&  inQuotes )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            escaped  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            continue ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( c  ===  ' '  &&  ! inQuotes )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( arg . length  >  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                args . push ( arg ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                arg  =  '' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            continue ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        append ( c ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( arg . length  >  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        args . push ( arg . trim ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  args ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . argStringToArray  =  argStringToArray ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								class  ExecState  extends  events . EventEmitter  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    constructor ( options ,  toolPath )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        super ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . processClosed  =  false ;  // tracks whether the process has exited and stdio is closed
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . processError  =  '' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . processExitCode  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . processExited  =  false ;  // tracks whether the process has exited
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . processStderr  =  false ;  // tracks whether stderr was written to
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . delay  =  10000 ;  // 10 seconds
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . done  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . timeout  =  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( ! toolPath )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            throw  new  Error ( 'toolPath must not be empty' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . options  =  options ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . toolPath  =  toolPath ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( options . delay )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            this . delay  =  options . delay ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    CheckComplete ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( this . done )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( this . processClosed )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            this . _setResult ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        else  if  ( this . processExited )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            this . timeout  =  setTimeout ( ExecState . HandleTimeout ,  this . delay ,  this ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    _debug ( message )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . emit ( 'debug' ,  message ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    _setResult ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // determine whether there is an error
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        let  error ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( this . processExited )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( this . processError )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                error  =  new  Error ( ` There was an error when attempting to execute the process ' ${ this . toolPath } '. This may indicate the process failed to start. Error:  ${ this . processError } ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            else  if  ( this . processExitCode  !==  0  &&  ! this . options . ignoreReturnCode )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                error  =  new  Error ( ` The process ' ${ this . toolPath } ' failed with exit code  ${ this . processExitCode } ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            else  if  ( this . processStderr  &&  this . options . failOnStdErr )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                error  =  new  Error ( ` The process ' ${ this . toolPath } ' failed because one or more lines were written to the STDERR stream ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // clear the timeout
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( this . timeout )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            clearTimeout ( this . timeout ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            this . timeout  =  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . done  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . emit ( 'done' ,  error ,  this . processExitCode ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    static  HandleTimeout ( state )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( state . done )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( ! state . processClosed  &&  state . processExited )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            const  message  =  ` The STDIO streams did not close within  ${ state . delay  / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                1000 }  seconds  of  the  exit  event  from  process  '${state.toolPath}' .  This  may  indicate  a  child  process  inherited  the  STDIO  streams  and  has  not  yet  exited . ` ;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            state . _debug ( message ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        state . _setResult ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//# sourceMappingURL=toolrunner.js.map
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  } ) ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  16 :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  ( function ( module )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								module . exports  =  require ( "tls" ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  } ) ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  87 :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  ( function ( module )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								module . exports  =  require ( "os" ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  } ) ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  129 :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  ( function ( module )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								module . exports  =  require ( "child_process" ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  } ) ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  139 :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  ( function ( module ,  _ _unusedexports ,  _ _webpack _require _ _ )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Unique ID creation requires a high quality random # generator.  In node.js
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// this is pretty straight-forward - we use the crypto API.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  crypto  =  _ _webpack _require _ _ ( 417 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								module . exports  =  function  nodeRNG ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  crypto . randomBytes ( 16 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  } ) ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  141 :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  ( function ( _ _unusedmodule ,  exports ,  _ _webpack _require _ _ )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								"use strict" ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  net  =  _ _webpack _require _ _ ( 631 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  tls  =  _ _webpack _require _ _ ( 16 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  http  =  _ _webpack _require _ _ ( 605 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  https  =  _ _webpack _require _ _ ( 211 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  events  =  _ _webpack _require _ _ ( 614 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  assert  =  _ _webpack _require _ _ ( 357 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  util  =  _ _webpack _require _ _ ( 669 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . httpOverHttp  =  httpOverHttp ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . httpsOverHttp  =  httpsOverHttp ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . httpOverHttps  =  httpOverHttps ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . httpsOverHttps  =  httpsOverHttps ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  httpOverHttp ( options )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  agent  =  new  TunnelingAgent ( options ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  agent . request  =  http . request ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  agent ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  httpsOverHttp ( options )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  agent  =  new  TunnelingAgent ( options ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  agent . request  =  http . request ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  agent . createSocket  =  createSecureSocket ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-05 10:01:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  agent . defaultPort  =  443 ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 15:13:15 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  return  agent ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  httpOverHttps ( options )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  agent  =  new  TunnelingAgent ( options ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  agent . request  =  https . request ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  agent ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  httpsOverHttps ( options )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  agent  =  new  TunnelingAgent ( options ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  agent . request  =  https . request ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  agent . createSocket  =  createSecureSocket ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-05 10:01:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  agent . defaultPort  =  443 ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 15:13:15 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  return  agent ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  TunnelingAgent ( options )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  self  =  this ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  self . options  =  options  ||  { } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  self . proxyOptions  =  self . options . proxy  ||  { } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  self . maxSockets  =  self . options . maxSockets  ||  http . Agent . defaultMaxSockets ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  self . requests  =  [ ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  self . sockets  =  [ ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  self . on ( 'free' ,  function  onFree ( socket ,  host ,  port ,  localAddress )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  options  =  toOptions ( host ,  port ,  localAddress ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    for  ( var  i  =  0 ,  len  =  self . requests . length ;  i  <  len ;  ++ i )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      var  pending  =  self . requests [ i ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( pending . host  ===  options . host  &&  pending . port  ===  options . port )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // Detect the request to connect same origin server,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // reuse the connection.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        self . requests . splice ( i ,  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        pending . request . onSocket ( socket ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    socket . destroy ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    self . removeSocket ( socket ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								util . inherits ( TunnelingAgent ,  events . EventEmitter ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								TunnelingAgent . prototype . addRequest  =  function  addRequest ( req ,  host ,  port ,  localAddress )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  self  =  this ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  options  =  mergeOptions ( { request :  req } ,  self . options ,  toOptions ( host ,  port ,  localAddress ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( self . sockets . length  >=  this . maxSockets )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // We are over limit so we'll add it to the queue.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    self . requests . push ( options ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // If we are under maxSockets create a new one.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  self . createSocket ( options ,  function ( socket )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    socket . on ( 'free' ,  onFree ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    socket . on ( 'close' ,  onCloseOrRemove ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    socket . on ( 'agentRemove' ,  onCloseOrRemove ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    req . onSocket ( socket ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    function  onFree ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      self . emit ( 'free' ,  socket ,  options ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    function  onCloseOrRemove ( err )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      self . removeSocket ( socket ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      socket . removeListener ( 'free' ,  onFree ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      socket . removeListener ( 'close' ,  onCloseOrRemove ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      socket . removeListener ( 'agentRemove' ,  onCloseOrRemove ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								TunnelingAgent . prototype . createSocket  =  function  createSocket ( options ,  cb )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  self  =  this ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  placeholder  =  { } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  self . sockets . push ( placeholder ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  connectOptions  =  mergeOptions ( { } ,  self . proxyOptions ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    method :  'CONNECT' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    path :  options . host  +  ':'  +  options . port , 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-05 10:01:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    agent :  false , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    headers :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      host :  options . host  +  ':'  +  options . port 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 15:13:15 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-05 10:01:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  if  ( options . localAddress )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    connectOptions . localAddress  =  options . localAddress ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 15:13:15 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  if  ( connectOptions . proxyAuth )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    connectOptions . headers  =  connectOptions . headers  ||  { } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    connectOptions . headers [ 'Proxy-Authorization' ]  =  'Basic '  + 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        new  Buffer ( connectOptions . proxyAuth ) . toString ( 'base64' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  debug ( 'making CONNECT request' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  connectReq  =  self . request ( connectOptions ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  connectReq . useChunkedEncodingByDefault  =  false ;  // for v0.6
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  connectReq . once ( 'response' ,  onResponse ) ;  // for v0.6
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  connectReq . once ( 'upgrade' ,  onUpgrade ) ;    // for v0.6
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  connectReq . once ( 'connect' ,  onConnect ) ;    // for v0.7 or later
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  connectReq . once ( 'error' ,  onError ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  connectReq . end ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  function  onResponse ( res )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // Very hacky. This is necessary to avoid http-parser leaks.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    res . upgrade  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  function  onUpgrade ( res ,  socket ,  head )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // Hacky.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    process . nextTick ( function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      onConnect ( res ,  socket ,  head ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  function  onConnect ( res ,  socket ,  head )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    connectReq . removeAllListeners ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    socket . removeAllListeners ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-02-05 10:01:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( res . statusCode  !==  200 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 15:13:15 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								      debug ( 'tunneling socket could not be established, statusCode=%d' , 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-05 10:01:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        res . statusCode ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      socket . destroy ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 15:13:15 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								      var  error  =  new  Error ( 'tunneling socket could not be established, '  + 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-05 10:01:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        'statusCode='  +  res . statusCode ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      error . code  =  'ECONNRESET' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      options . request . emit ( 'error' ,  error ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      self . removeSocket ( placeholder ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( head . length  >  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      debug ( 'got illegal response body from proxy' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      socket . destroy ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      var  error  =  new  Error ( 'got illegal response body from proxy' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 15:13:15 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								      error . code  =  'ECONNRESET' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      options . request . emit ( 'error' ,  error ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      self . removeSocket ( placeholder ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-05 10:01:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      return ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 15:13:15 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-05 10:01:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    debug ( 'tunneling connection has established' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    self . sockets [ self . sockets . indexOf ( placeholder ) ]  =  socket ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  cb ( socket ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 15:13:15 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  function  onError ( cause )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    connectReq . removeAllListeners ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    debug ( 'tunneling socket could not be established, cause=%s\n' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          cause . message ,  cause . stack ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  error  =  new  Error ( 'tunneling socket could not be established, '  + 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                          'cause='  +  cause . message ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    error . code  =  'ECONNRESET' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    options . request . emit ( 'error' ,  error ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    self . removeSocket ( placeholder ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								TunnelingAgent . prototype . removeSocket  =  function  removeSocket ( socket )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  pos  =  this . sockets . indexOf ( socket ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( pos  ===  - 1 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  this . sockets . splice ( pos ,  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  pending  =  this . requests . shift ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( pending )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // If we have pending requests and a socket gets closed a new one
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // needs to be created to take over in the pool for the one that closed.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    this . createSocket ( pending ,  function ( socket )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      pending . request . onSocket ( socket ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  createSecureSocket ( options ,  cb )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  self  =  this ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  TunnelingAgent . prototype . createSocket . call ( self ,  options ,  function ( socket )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  hostHeader  =  options . request . getHeader ( 'host' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  tlsOptions  =  mergeOptions ( { } ,  self . options ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      socket :  socket , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      servername :  hostHeader  ?  hostHeader . replace ( /:.*$/ ,  '' )  :  options . host 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // 0 is dummy port for v0.6
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  secureSocket  =  tls . connect ( 0 ,  tlsOptions ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    self . sockets [ self . sockets . indexOf ( socket ) ]  =  secureSocket ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    cb ( secureSocket ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  toOptions ( host ,  port ,  localAddress )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( typeof  host  ===  'string' )  {  // since v0.10
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      host :  host , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      port :  port , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      localAddress :  localAddress 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  host ;  // for v0.11 or later
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  mergeOptions ( target )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  for  ( var  i  =  1 ,  len  =  arguments . length ;  i  <  len ;  ++ i )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  overrides  =  arguments [ i ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( typeof  overrides  ===  'object' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      var  keys  =  Object . keys ( overrides ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      for  ( var  j  =  0 ,  keyLen  =  keys . length ;  j  <  keyLen ;  ++ j )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        var  k  =  keys [ j ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( overrides [ k ]  !==  undefined )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          target [ k ]  =  overrides [ k ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  target ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  debug ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  ( process . env . NODE _DEBUG  &&  /\btunnel\b/ . test ( process . env . NODE _DEBUG ) )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  debug  =  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  args  =  Array . prototype . slice . call ( arguments ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( typeof  args [ 0 ]  ===  'string' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      args [ 0 ]  =  'TUNNEL: '  +  args [ 0 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      args . unshift ( 'TUNNEL:' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    console . error . apply ( console ,  args ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  else  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  debug  =  function ( )  { } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . debug  =  debug ;  // for test
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  } ) ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  154 :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  ( function ( _ _unusedmodule ,  exports ,  _ _webpack _require _ _ )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								"use strict" ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  _ _awaiter  =  ( this  &&  this . _ _awaiter )  ||  function  ( thisArg ,  _arguments ,  P ,  generator )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    function  adopt ( value )  {  return  value  instanceof  P  ?  value  :  new  P ( function  ( resolve )  {  resolve ( value ) ;  } ) ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  new  ( P  ||  ( P  =  Promise ) ) ( function  ( resolve ,  reject )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        function  fulfilled ( value )  {  try  {  step ( generator . next ( value ) ) ;  }  catch  ( e )  {  reject ( e ) ;  }  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        function  rejected ( value )  {  try  {  step ( generator [ "throw" ] ( value ) ) ;  }  catch  ( e )  {  reject ( e ) ;  }  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        function  step ( result )  {  result . done  ?  resolve ( result . value )  :  adopt ( result . value ) . then ( fulfilled ,  rejected ) ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        step ( ( generator  =  generator . apply ( thisArg ,  _arguments  ||  [ ] ) ) . next ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  _ _importStar  =  ( this  &&  this . _ _importStar )  ||  function  ( mod )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( mod  &&  mod . _ _esModule )  return  mod ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  result  =  { } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( mod  !=  null )  for  ( var  k  in  mod )  if  ( Object . hasOwnProperty . call ( mod ,  k ) )  result [ k ]  =  mod [ k ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    result [ "default" ]  =  mod ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  result ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Object . defineProperty ( exports ,  "__esModule" ,  {  value :  true  } ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  core  =  _ _importStar ( _ _webpack _require _ _ ( 470 ) ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  fs  =  _ _importStar ( _ _webpack _require _ _ ( 747 ) ) ;  
						 
					
						
							
								
									
										
										
										
											2020-02-05 10:01:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								const  auth _1  =  _ _webpack _require _ _ ( 226 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  http _client _1  =  _ _webpack _require _ _ ( 539 ) ;  
						 
					
						
							
								
									
										
										
										
											2020-01-06 13:36:33 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								const  utils  =  _ _importStar ( _ _webpack _require _ _ ( 443 ) ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  isSuccessStatusCode ( statusCode )  {  
						 
					
						
							
								
									
										
										
										
											2020-02-05 10:01:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( ! statusCode )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2020-01-06 13:36:33 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    return  statusCode  >=  200  &&  statusCode  <  300 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  isRetryableStatusCode ( statusCode )  {  
						 
					
						
							
								
									
										
										
										
											2020-02-05 10:01:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( ! statusCode )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2020-01-06 13:36:33 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    const  retryableStatusCodes  =  [ 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-05 10:01:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        http _client _1 . HttpCodes . BadGateway , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        http _client _1 . HttpCodes . ServiceUnavailable , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        http _client _1 . HttpCodes . GatewayTimeout 
							 
						 
					
						
							
								
									
										
										
										
											2020-01-06 13:36:33 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  retryableStatusCodes . includes ( statusCode ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2020-02-05 10:01:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  getCacheApiUrl ( resource )  {  
						 
					
						
							
								
									
										
										
										
											2019-11-15 10:31:02 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    // Ideally we just use ACTIONS_CACHE_URL
 
							 
						 
					
						
							
								
									
										
										
										
											2020-01-06 13:36:33 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    const  baseUrl  =  ( process . env [ "ACTIONS_CACHE_URL" ]  || 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-15 10:31:02 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        process . env [ "ACTIONS_RUNTIME_URL" ]  || 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        "" ) . replace ( "pipelines" ,  "artifactcache" ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-01-06 13:36:33 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( ! baseUrl )  { 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-15 10:31:02 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        throw  new  Error ( "Cache Service Url not found, unable to restore cache." ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-05 10:01:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    const  url  =  ` ${ baseUrl } _apis/artifactcache/ ${ resource } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    core . debug ( ` Resource Url:  ${ url } ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  url ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-15 10:31:02 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  createAcceptHeader ( type ,  apiVersion )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  ` ${ type } ;api-version= ${ apiVersion } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  getRequestOptions ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  requestOptions  =  { 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-05 10:01:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        headers :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            Accept :  createAcceptHeader ( "application/json" ,  "6.0-preview.1" ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-15 10:31:02 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  requestOptions ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2020-02-05 10:01:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  createHttpClient ( )  {  
						 
					
						
							
								
									
										
										
										
											2020-01-06 13:36:33 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    const  token  =  process . env [ "ACTIONS_RUNTIME_TOKEN" ]  ||  "" ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-05 10:01:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    const  bearerCredentialHandler  =  new  auth _1 . BearerCredentialHandler ( token ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  new  http _client _1 . HttpClient ( "actions/cache" ,  [ bearerCredentialHandler ] ,  getRequestOptions ( ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-01-06 13:36:33 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-11-04 15:13:15 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								function  getCacheEntry ( keys )  {  
						 
					
						
							
								
									
										
										
										
											2020-01-06 13:36:33 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    var  _a ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 15:13:15 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    return  _ _awaiter ( this ,  void  0 ,  void  0 ,  function *  ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-05 10:01:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        const  httpClient  =  createHttpClient ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-01-06 13:36:33 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        const  resource  =  ` cache?keys= ${ encodeURIComponent ( keys . join ( "," ) ) } ` ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-05 10:01:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        const  response  =  yield  httpClient . getJson ( getCacheApiUrl ( resource ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 15:13:15 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        if  ( response . statusCode  ===  204 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2020-01-06 13:36:33 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( ! isSuccessStatusCode ( response . statusCode ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 15:13:15 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								            throw  new  Error ( ` Cache service responded with  ${ response . statusCode } ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  cacheResult  =  response . result ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-01-06 13:36:33 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        const  cacheDownloadUrl  =  ( _a  =  cacheResult )  ===  null  ||  _a  ===  void  0  ?  void  0  :  _a . archiveLocation ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( ! cacheDownloadUrl )  { 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 15:13:15 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								            throw  new  Error ( "Cache not found." ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2020-01-06 13:36:33 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        core . setSecret ( cacheDownloadUrl ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-21 14:57:29 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        core . debug ( ` Cache Result: ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        core . debug ( JSON . stringify ( cacheResult ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 15:13:15 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        return  cacheResult ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . getCacheEntry  =  getCacheEntry ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  pipeResponseToStream ( response ,  stream )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  _ _awaiter ( this ,  void  0 ,  void  0 ,  function *  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  new  Promise ( resolve  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            response . message . pipe ( stream ) . on ( "close" ,  ( )  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                resolve ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2020-01-06 13:36:33 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  downloadCache ( archiveLocation ,  archivePath )  {  
						 
					
						
							
								
									
										
										
										
											2019-11-15 10:31:02 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    return  _ _awaiter ( this ,  void  0 ,  void  0 ,  function *  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  stream  =  fs . createWriteStream ( archivePath ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-05 10:01:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        const  httpClient  =  new  http _client _1 . HttpClient ( "actions/cache" ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-01-06 13:36:33 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        const  downloadResponse  =  yield  httpClient . get ( archiveLocation ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-15 10:31:02 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        yield  pipeResponseToStream ( downloadResponse ,  stream ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . downloadCache  =  downloadCache ;  
						 
					
						
							
								
									
										
										
										
											2020-01-06 13:36:33 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								// Reserve Cache
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  reserveCache ( key )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  _a ,  _b ,  _c ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 15:13:15 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    return  _ _awaiter ( this ,  void  0 ,  void  0 ,  function *  ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-05 10:01:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        const  httpClient  =  createHttpClient ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-01-06 13:36:33 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        const  reserveCacheRequest  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            key 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-05 10:01:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        const  response  =  yield  httpClient . postJson ( getCacheApiUrl ( "caches" ) ,  reserveCacheRequest ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-01-06 13:36:33 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return  _c  =  ( _b  =  ( _a  =  response )  ===  null  ||  _a  ===  void  0  ?  void  0  :  _a . result )  ===  null  ||  _b  ===  void  0  ?  void  0  :  _b . cacheId ,  ( _c  !==  null  &&  _c  !==  void  0  ?  _c  :  - 1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . reserveCache  =  reserveCache ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  getContentRange ( start ,  end )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // Format: `bytes start-end/filesize
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // start and end are inclusive
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // filesize can be *
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // For a 200 byte chunk starting at byte 0:
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // Content-Range: bytes 0-199/*
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  ` bytes  ${ start } - ${ end } /* ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2020-02-05 10:01:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  uploadChunk ( httpClient ,  resourceUrl ,  data ,  start ,  end )  {  
						 
					
						
							
								
									
										
										
										
											2020-01-06 13:36:33 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    return  _ _awaiter ( this ,  void  0 ,  void  0 ,  function *  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        core . debug ( ` Uploading chunk of size  ${ end  - 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            start  + 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            1 }  bytes  at  offset  $ { start }  with  content  range :  $ { getContentRange ( start ,  end ) } ` );
 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-05 10:01:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        const  additionalHeaders  =  { 
							 
						 
					
						
							
								
									
										
										
										
											2020-01-06 13:36:33 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            "Content-Type" :  "application/octet-stream" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            "Content-Range" :  getContentRange ( start ,  end ) 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 15:13:15 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        } ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-01-06 13:36:33 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        const  uploadChunkRequest  =  ( )  =>  _ _awaiter ( this ,  void  0 ,  void  0 ,  function *  ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-05 10:01:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            return  yield  httpClient . sendStream ( "PATCH" ,  resourceUrl ,  data ,  additionalHeaders ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-01-06 13:36:33 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  response  =  yield  uploadChunkRequest ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-05 10:01:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( isSuccessStatusCode ( response . message . statusCode ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2020-01-06 13:36:33 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-05 10:01:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( isRetryableStatusCode ( response . message . statusCode ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            core . debug ( ` Received  ${ response . message . statusCode } , retrying chunk at offset  ${ start } . ` ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-01-06 13:36:33 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            const  retryResponse  =  yield  uploadChunkRequest ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-05 10:01:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            if  ( isSuccessStatusCode ( retryResponse . message . statusCode ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2020-01-06 13:36:33 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-05 10:01:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        throw  new  Error ( ` Cache service responded with  ${ response . message . statusCode }  during chunk upload. ` ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-01-06 13:36:33 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2020-01-06 14:10:16 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  parseEnvNumber ( key )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  value  =  Number ( process . env [ key ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( Number . isNaN ( value )  ||  value  <  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  undefined ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  value ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2020-02-05 10:01:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  uploadFile ( httpClient ,  cacheId ,  archivePath )  {  
						 
					
						
							
								
									
										
										
										
											2020-01-06 14:10:16 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    var  _a ,  _b ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-01-06 13:36:33 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    return  _ _awaiter ( this ,  void  0 ,  void  0 ,  function *  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // Upload Chunks
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  fileSize  =  fs . statSync ( archivePath ) . size ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-05 10:01:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        const  resourceUrl  =  getCacheApiUrl ( ` caches/ ${ cacheId . toString ( ) } ` ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-01-06 13:36:33 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        const  fd  =  fs . openSync ( archivePath ,  "r" ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-01-06 14:10:16 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        const  concurrency  =  ( _a  =  parseEnvNumber ( "CACHE_UPLOAD_CONCURRENCY" ) ,  ( _a  !==  null  &&  _a  !==  void  0  ?  _a  :  4 ) ) ;  // # of HTTP requests in parallel
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  MAX _CHUNK _SIZE  =  ( _b  =  parseEnvNumber ( "CACHE_UPLOAD_CHUNK_SIZE" ) ,  ( _b  !==  null  &&  _b  !==  void  0  ?  _b  :  32  *  1024  *  1024 ) ) ;  // 32 MB Chunks
 
							 
						 
					
						
							
								
									
										
										
										
											2020-01-06 13:36:33 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        core . debug ( ` Concurrency:  ${ concurrency }  and Chunk Size:  ${ MAX _CHUNK _SIZE } ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  parallelUploads  =  [ ... new  Array ( concurrency ) . keys ( ) ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        core . debug ( "Awaiting all uploads" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        let  offset  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            yield  Promise . all ( parallelUploads . map ( ( )  =>  _ _awaiter ( this ,  void  0 ,  void  0 ,  function *  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                while  ( offset  <  fileSize )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    const  chunkSize  =  Math . min ( fileSize  -  offset ,  MAX _CHUNK _SIZE ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    const  start  =  offset ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    const  end  =  offset  +  chunkSize  -  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    offset  +=  MAX _CHUNK _SIZE ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    const  chunk  =  fs . createReadStream ( archivePath ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        fd , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        start , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        end , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        autoClose :  false 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-05 10:01:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    yield  uploadChunk ( httpClient ,  resourceUrl ,  chunk ,  start ,  end ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-01-06 13:36:33 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } ) ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        finally  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            fs . closeSync ( fd ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2020-02-05 10:01:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  commitCache ( httpClient ,  cacheId ,  filesize )  {  
						 
					
						
							
								
									
										
										
										
											2020-01-06 13:36:33 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    return  _ _awaiter ( this ,  void  0 ,  void  0 ,  function *  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  commitCacheRequest  =  {  size :  filesize  } ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-05 10:01:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return  yield  httpClient . postJson ( getCacheApiUrl ( ` caches/ ${ cacheId . toString ( ) } ` ) ,  commitCacheRequest ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-01-06 13:36:33 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  saveCache ( cacheId ,  archivePath )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  _ _awaiter ( this ,  void  0 ,  void  0 ,  function *  ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-05 10:01:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        const  httpClient  =  createHttpClient ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-01-06 13:36:33 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        core . debug ( "Upload cache" ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-05 10:01:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        yield  uploadFile ( httpClient ,  cacheId ,  archivePath ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-01-06 13:36:33 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        // Commit Cache
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        core . debug ( "Commiting cache" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  cacheSize  =  utils . getArchiveFileSize ( archivePath ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-05 10:01:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        const  commitCacheResponse  =  yield  commitCache ( httpClient ,  cacheId ,  cacheSize ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-01-06 13:36:33 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( ! isSuccessStatusCode ( commitCacheResponse . statusCode ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            throw  new  Error ( ` Cache service responded with  ${ commitCacheResponse . statusCode }  during commit cache. ` ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 15:13:15 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        core . info ( "Cache saved successfully" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . saveCache  =  saveCache ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  } ) ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  211 :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  ( function ( module )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								module . exports  =  require ( "https" ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  } ) ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-02-05 10:01:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/***/  226 :  
						 
					
						
							
								
									
										
										
										
											2019-11-04 15:13:15 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								/***/  ( function ( _ _unusedmodule ,  exports )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								"use strict" ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Object . defineProperty ( exports ,  "__esModule" ,  {  value :  true  } ) ;  
						 
					
						
							
								
									
										
										
										
											2020-02-05 10:01:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								class  BasicCredentialHandler  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    constructor ( username ,  password )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . username  =  username ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . password  =  password ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    prepareRequest ( options )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        options . headers [ 'Authorization' ]  =  'Basic '  +  Buffer . from ( this . username  +  ':'  +  this . password ) . toString ( 'base64' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // This handler cannot handle 401
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    canHandleAuthentication ( response )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    handleAuthentication ( httpClient ,  requestInfo ,  objs )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . BasicCredentialHandler  =  BasicCredentialHandler ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								class  BearerCredentialHandler  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    constructor ( token )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . token  =  token ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // currently implements pre-authorization
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // TODO: support preAuth = false where it hooks on 401
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    prepareRequest ( options )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        options . headers [ 'Authorization' ]  =  'Bearer '  +  this . token ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // This handler cannot handle 401
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    canHandleAuthentication ( response )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    handleAuthentication ( httpClient ,  requestInfo ,  objs )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . BearerCredentialHandler  =  BearerCredentialHandler ;  
						 
					
						
							
								
									
										
										
										
											2019-11-04 15:13:15 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								class  PersonalAccessTokenCredentialHandler  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    constructor ( token )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . token  =  token ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // currently implements pre-authorization
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // TODO: support preAuth = false where it hooks on 401
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    prepareRequest ( options )  { 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-05 10:01:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        options . headers [ 'Authorization' ]  =  'Basic '  +  Buffer . from ( 'PAT:'  +  this . token ) . toString ( 'base64' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 15:13:15 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // This handler cannot handle 401
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    canHandleAuthentication ( response )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    handleAuthentication ( httpClient ,  requestInfo ,  objs )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . PersonalAccessTokenCredentialHandler  =  PersonalAccessTokenCredentialHandler ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  } ) ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  357 :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  ( function ( module )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								module . exports  =  require ( "assert" ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  } ) ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  413 :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  ( function ( module ,  _ _unusedexports ,  _ _webpack _require _ _ )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								module . exports  =  _ _webpack _require _ _ ( 141 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  } ) ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  417 :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  ( function ( module )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								module . exports  =  require ( "crypto" ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  } ) ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  431 :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  ( function ( _ _unusedmodule ,  exports ,  _ _webpack _require _ _ )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								"use strict" ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Object . defineProperty ( exports ,  "__esModule" ,  {  value :  true  } ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  os  =  _ _webpack _require _ _ ( 87 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Commands 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Command  Format : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *    # # [ name  key = value ; key = value ] message 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Examples : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *    # # [ warning ] This  is  the  user  warning  message 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *    # # [ set - secret  name = mypassword ] definitelyNotAPassword ! 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  issueCommand ( command ,  properties ,  message )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  cmd  =  new  Command ( command ,  properties ,  message ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    process . stdout . write ( cmd . toString ( )  +  os . EOL ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . issueCommand  =  issueCommand ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  issue ( name ,  message  =  '' )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    issueCommand ( name ,  { } ,  message ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . issue  =  issue ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  CMD _STRING  =  '::' ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								class  Command  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    constructor ( command ,  properties ,  message )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( ! command )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            command  =  'missing.command' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . command  =  command ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . properties  =  properties ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . message  =  message ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    toString ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        let  cmdStr  =  CMD _STRING  +  this . command ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( this . properties  &&  Object . keys ( this . properties ) . length  >  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            cmdStr  +=  ' ' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            for  ( const  key  in  this . properties )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                if  ( this . properties . hasOwnProperty ( key ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    const  val  =  this . properties [ key ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    if  ( val )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        // safely append the val - avoid blowing up when attempting to
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        // call .replace() if message is not a string for some reason
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        cmdStr  +=  ` ${ key } = ${ escape ( ` ${ val  ||  '' } ` ) } , ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        cmdStr  +=  CMD _STRING ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // safely append the message - avoid blowing up when attempting to
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // call .replace() if message is not a string for some reason
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  message  =  ` ${ this . message  ||  '' } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        cmdStr  +=  escapeData ( message ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  cmdStr ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  escapeData ( s )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  s . replace ( /\r/g ,  '%0D' ) . replace ( /\n/g ,  '%0A' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  escape ( s )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  s 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        . replace ( /\r/g ,  '%0D' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        . replace ( /\n/g ,  '%0A' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        . replace ( /]/g ,  '%5D' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        . replace ( /;/g ,  '%3B' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//# sourceMappingURL=command.js.map
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  } ) ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  443 :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  ( function ( _ _unusedmodule ,  exports ,  _ _webpack _require _ _ )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								"use strict" ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  _ _awaiter  =  ( this  &&  this . _ _awaiter )  ||  function  ( thisArg ,  _arguments ,  P ,  generator )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    function  adopt ( value )  {  return  value  instanceof  P  ?  value  :  new  P ( function  ( resolve )  {  resolve ( value ) ;  } ) ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  new  ( P  ||  ( P  =  Promise ) ) ( function  ( resolve ,  reject )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        function  fulfilled ( value )  {  try  {  step ( generator . next ( value ) ) ;  }  catch  ( e )  {  reject ( e ) ;  }  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        function  rejected ( value )  {  try  {  step ( generator [ "throw" ] ( value ) ) ;  }  catch  ( e )  {  reject ( e ) ;  }  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        function  step ( result )  {  result . done  ?  resolve ( result . value )  :  adopt ( result . value ) . then ( fulfilled ,  rejected ) ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        step ( ( generator  =  generator . apply ( thisArg ,  _arguments  ||  [ ] ) ) . next ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  _ _importStar  =  ( this  &&  this . _ _importStar )  ||  function  ( mod )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( mod  &&  mod . _ _esModule )  return  mod ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  result  =  { } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( mod  !=  null )  for  ( var  k  in  mod )  if  ( Object . hasOwnProperty . call ( mod ,  k ) )  result [ k ]  =  mod [ k ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    result [ "default" ]  =  mod ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  result ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Object . defineProperty ( exports ,  "__esModule" ,  {  value :  true  } ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  core  =  _ _importStar ( _ _webpack _require _ _ ( 470 ) ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  io  =  _ _importStar ( _ _webpack _require _ _ ( 1 ) ) ;  
						 
					
						
							
								
									
										
										
										
											2019-11-15 10:31:02 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								const  fs  =  _ _importStar ( _ _webpack _require _ _ ( 747 ) ) ;  
						 
					
						
							
								
									
										
										
										
											2019-11-04 15:13:15 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								const  os  =  _ _importStar ( _ _webpack _require _ _ ( 87 ) ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  path  =  _ _importStar ( _ _webpack _require _ _ ( 622 ) ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  uuidV4  =  _ _importStar ( _ _webpack _require _ _ ( 826 ) ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  constants _1  =  _ _webpack _require _ _ ( 694 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// From https://github.com/actions/toolkit/blob/master/packages/tool-cache/src/tool-cache.ts#L23
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  createTempDirectory ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  _ _awaiter ( this ,  void  0 ,  void  0 ,  function *  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  IS _WINDOWS  =  process . platform  ===  "win32" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        let  tempDirectory  =  process . env [ "RUNNER_TEMP" ]  ||  "" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( ! tempDirectory )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            let  baseLocation ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( IS _WINDOWS )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                // On Windows use the USERPROFILE env variable
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                baseLocation  =  process . env [ "USERPROFILE" ]  ||  "C:\\" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                if  ( process . platform  ===  "darwin" )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    baseLocation  =  "/Users" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    baseLocation  =  "/home" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            tempDirectory  =  path . join ( baseLocation ,  "actions" ,  "temp" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  dest  =  path . join ( tempDirectory ,  uuidV4 . default ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        yield  io . mkdirP ( dest ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  dest ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . createTempDirectory  =  createTempDirectory ;  
						 
					
						
							
								
									
										
										
										
											2019-11-15 10:31:02 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  getArchiveFileSize ( path )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  fs . statSync ( path ) . size ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . getArchiveFileSize  =  getArchiveFileSize ;  
						 
					
						
							
								
									
										
										
										
											2019-11-04 15:13:15 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								function  isExactKeyMatch ( key ,  cacheResult )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  ! ! ( cacheResult  && 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        cacheResult . cacheKey  && 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        cacheResult . cacheKey . localeCompare ( key ,  undefined ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            sensitivity :  "accent" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } )  ===  0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . isExactKeyMatch  =  isExactKeyMatch ;  
						 
					
						
							
								
									
										
										
										
											2019-11-15 10:31:02 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  setCacheState ( state )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    core . saveState ( constants _1 . State . CacheResult ,  JSON . stringify ( state ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . setCacheState  =  setCacheState ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  setCacheHitOutput ( isCacheHit )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    core . setOutput ( constants _1 . Outputs . CacheHit ,  isCacheHit . toString ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . setCacheHitOutput  =  setCacheHitOutput ;  
						 
					
						
							
								
									
										
										
										
											2019-11-04 15:13:15 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								function  setOutputAndState ( key ,  cacheResult )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    setCacheHitOutput ( isExactKeyMatch ( key ,  cacheResult ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // Store the cache result if it exists
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    cacheResult  &&  setCacheState ( cacheResult ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . setOutputAndState  =  setOutputAndState ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  getCacheState ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  stateData  =  core . getState ( constants _1 . State . CacheResult ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    core . debug ( ` State:  ${ stateData } ` ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-15 10:31:02 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( stateData )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  JSON . parse ( stateData ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  undefined ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 15:13:15 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . getCacheState  =  getCacheState ;  
						 
					
						
							
								
									
										
										
										
											2019-11-21 14:57:29 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  logWarning ( message )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  warningPrefix  =  "[warning]" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    core . info ( ` ${ warningPrefix } ${ message } ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . logWarning  =  logWarning ;  
						 
					
						
							
								
									
										
										
										
											2019-11-04 15:13:15 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								function  resolvePath ( filePath )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( filePath [ 0 ]  ===  "~" )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  home  =  os . homedir ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( ! home )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            throw  new  Error ( "Unable to resolve `~` to HOME" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  path . join ( home ,  filePath . slice ( 1 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  path . resolve ( filePath ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . resolvePath  =  resolvePath ;  
						 
					
						
							
								
									
										
										
										
											2019-11-15 10:31:02 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  getSupportedEvents ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  [ constants _1 . Events . Push ,  constants _1 . Events . PullRequest ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . getSupportedEvents  =  getSupportedEvents ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Currently the cache token is only authorized for push and pull_request events
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// All other events will fail when reading and saving the cache
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// See GitHub Context https://help.github.com/actions/automating-your-workflow-with-github-actions/contexts-and-expression-syntax-for-github-actions#github-context
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  isValidEvent ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  githubEvent  =  process . env [ constants _1 . Events . Key ]  ||  "" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  getSupportedEvents ( ) . includes ( githubEvent ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . isValidEvent  =  isValidEvent ;  
						 
					
						
							
								
									
										
										
										
											2019-11-04 15:13:15 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  } ) ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  470 :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  ( function ( _ _unusedmodule ,  exports ,  _ _webpack _require _ _ )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								"use strict" ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  _ _awaiter  =  ( this  &&  this . _ _awaiter )  ||  function  ( thisArg ,  _arguments ,  P ,  generator )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    function  adopt ( value )  {  return  value  instanceof  P  ?  value  :  new  P ( function  ( resolve )  {  resolve ( value ) ;  } ) ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  new  ( P  ||  ( P  =  Promise ) ) ( function  ( resolve ,  reject )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        function  fulfilled ( value )  {  try  {  step ( generator . next ( value ) ) ;  }  catch  ( e )  {  reject ( e ) ;  }  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        function  rejected ( value )  {  try  {  step ( generator [ "throw" ] ( value ) ) ;  }  catch  ( e )  {  reject ( e ) ;  }  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        function  step ( result )  {  result . done  ?  resolve ( result . value )  :  adopt ( result . value ) . then ( fulfilled ,  rejected ) ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        step ( ( generator  =  generator . apply ( thisArg ,  _arguments  ||  [ ] ) ) . next ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Object . defineProperty ( exports ,  "__esModule" ,  {  value :  true  } ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  command _1  =  _ _webpack _require _ _ ( 431 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  os  =  _ _webpack _require _ _ ( 87 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  path  =  _ _webpack _require _ _ ( 622 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  The  code  to  exit  an  action 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  ExitCode ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								( function  ( ExitCode )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  A  code  indicating  that  the  action  was  successful 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ExitCode [ ExitCode [ "Success" ]  =  0 ]  =  "Success" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  A  code  indicating  that  the  action  was  a  failure 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ExitCode [ ExitCode [ "Failure" ]  =  1 ]  =  "Failure" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ) ( ExitCode  =  exports . ExitCode  ||  ( exports . ExitCode  =  { } ) ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//-----------------------------------------------------------------------
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Variables
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//-----------------------------------------------------------------------
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Sets  env  variable  for  this  action  and  future  actions  in  the  job 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  name  the  name  of  the  variable  to  set 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  val  the  value  of  the  variable 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  exportVariable ( name ,  val )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    process . env [ name ]  =  val ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    command _1 . issueCommand ( 'set-env' ,  {  name  } ,  val ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . exportVariable  =  exportVariable ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Registers  a  secret  which  will  get  masked  from  logs 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  secret  value  of  the  secret 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  setSecret ( secret )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    command _1 . issueCommand ( 'add-mask' ,  { } ,  secret ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . setSecret  =  setSecret ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Prepends  inputPath  to  the  PATH  ( for  this  action  and  future  actions ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  inputPath 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  addPath ( inputPath )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    command _1 . issueCommand ( 'add-path' ,  { } ,  inputPath ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    process . env [ 'PATH' ]  =  ` ${ inputPath } ${ path . delimiter } ${ process . env [ 'PATH' ] } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . addPath  =  addPath ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Gets  the  value  of  an  input .   The  value  is  also  trimmed . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param      name      name  of  the  input  to  get 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param      options   optional .  See  InputOptions . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ returns    string 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  getInput ( name ,  options )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  val  =  process . env [ ` INPUT_ ${ name . replace ( / /g ,  '_' ) . toUpperCase ( ) } ` ]  ||  '' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( options  &&  options . required  &&  ! val )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        throw  new  Error ( ` Input required and not supplied:  ${ name } ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  val . trim ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . getInput  =  getInput ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Sets  the  value  of  an  output . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param      name      name  of  the  output  to  set 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param      value     value  to  store 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  setOutput ( name ,  value )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    command _1 . issueCommand ( 'set-output' ,  {  name  } ,  value ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . setOutput  =  setOutput ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//-----------------------------------------------------------------------
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Results
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//-----------------------------------------------------------------------
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Sets  the  action  status  to  failed . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  When  the  action  exits  it  will  be  with  an  exit  code  of  1 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  message  add  error  issue  message 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  setFailed ( message )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    process . exitCode  =  ExitCode . Failure ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    error ( message ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . setFailed  =  setFailed ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//-----------------------------------------------------------------------
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Logging Commands
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//-----------------------------------------------------------------------
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Writes  debug  message  to  user  log 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  message  debug  message 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  debug ( message )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    command _1 . issueCommand ( 'debug' ,  { } ,  message ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . debug  =  debug ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Adds  an  error  issue 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  message  error  issue  message 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  error ( message )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    command _1 . issue ( 'error' ,  message ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . error  =  error ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Adds  an  warning  issue 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  message  warning  issue  message 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  warning ( message )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    command _1 . issue ( 'warning' ,  message ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . warning  =  warning ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Writes  info  to  log  with  console . log . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  message  info  message 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  info ( message )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    process . stdout . write ( message  +  os . EOL ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . info  =  info ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Begin  an  output  group . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Output  until  the  next  ` groupEnd `  will  be  foldable  in  this  group 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  name  The  name  of  the  output  group 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  startGroup ( name )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    command _1 . issue ( 'group' ,  name ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . startGroup  =  startGroup ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  End  an  output  group . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  endGroup ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    command _1 . issue ( 'endgroup' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . endGroup  =  endGroup ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Wrap  an  asynchronous  function  call  in  a  group . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Returns  the  same  type  as  the  function  itself . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  name  The  name  of  the  group 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  fn  The  function  to  wrap  in  the  group 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  group ( name ,  fn )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  _ _awaiter ( this ,  void  0 ,  void  0 ,  function *  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        startGroup ( name ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        let  result ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            result  =  yield  fn ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        finally  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            endGroup ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  result ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . group  =  group ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//-----------------------------------------------------------------------
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Wrapper action state
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//-----------------------------------------------------------------------
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Saves  state  for  current  action ,  the  state  can  only  be  retrieved  by  this  action ' s  post  job  execution . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param      name      name  of  the  state  to  store 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param      value     value  to  store 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  saveState ( name ,  value )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    command _1 . issueCommand ( 'save-state' ,  {  name  } ,  value ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . saveState  =  saveState ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Gets  the  value  of  an  state  set  by  this  action ' s  main  execution . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param      name      name  of  the  state  to  get 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ returns    string 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  getState ( name )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  process . env [ ` STATE_ ${ name } ` ]  ||  '' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . getState  =  getState ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//# sourceMappingURL=core.js.map
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  } ) ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-02-05 10:01:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/***/  539 :  
						 
					
						
							
								
									
										
										
										
											2019-11-04 15:13:15 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								/***/  ( function ( _ _unusedmodule ,  exports ,  _ _webpack _require _ _ )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								"use strict" ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Object . defineProperty ( exports ,  "__esModule" ,  {  value :  true  } ) ;  
						 
					
						
							
								
									
										
										
										
											2020-02-05 10:01:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								const  url  =  _ _webpack _require _ _ ( 835 ) ;  
						 
					
						
							
								
									
										
										
										
											2019-11-04 15:13:15 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								const  http  =  _ _webpack _require _ _ ( 605 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  https  =  _ _webpack _require _ _ ( 211 ) ;  
						 
					
						
							
								
									
										
										
										
											2020-02-05 10:01:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								const  pm  =  _ _webpack _require _ _ ( 950 ) ;  
						 
					
						
							
								
									
										
										
										
											2019-11-04 15:13:15 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								let  tunnel ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  HttpCodes ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								( function  ( HttpCodes )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    HttpCodes [ HttpCodes [ "OK" ]  =  200 ]  =  "OK" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    HttpCodes [ HttpCodes [ "MultipleChoices" ]  =  300 ]  =  "MultipleChoices" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    HttpCodes [ HttpCodes [ "MovedPermanently" ]  =  301 ]  =  "MovedPermanently" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    HttpCodes [ HttpCodes [ "ResourceMoved" ]  =  302 ]  =  "ResourceMoved" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    HttpCodes [ HttpCodes [ "SeeOther" ]  =  303 ]  =  "SeeOther" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    HttpCodes [ HttpCodes [ "NotModified" ]  =  304 ]  =  "NotModified" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    HttpCodes [ HttpCodes [ "UseProxy" ]  =  305 ]  =  "UseProxy" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    HttpCodes [ HttpCodes [ "SwitchProxy" ]  =  306 ]  =  "SwitchProxy" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    HttpCodes [ HttpCodes [ "TemporaryRedirect" ]  =  307 ]  =  "TemporaryRedirect" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    HttpCodes [ HttpCodes [ "PermanentRedirect" ]  =  308 ]  =  "PermanentRedirect" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    HttpCodes [ HttpCodes [ "BadRequest" ]  =  400 ]  =  "BadRequest" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    HttpCodes [ HttpCodes [ "Unauthorized" ]  =  401 ]  =  "Unauthorized" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    HttpCodes [ HttpCodes [ "PaymentRequired" ]  =  402 ]  =  "PaymentRequired" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    HttpCodes [ HttpCodes [ "Forbidden" ]  =  403 ]  =  "Forbidden" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    HttpCodes [ HttpCodes [ "NotFound" ]  =  404 ]  =  "NotFound" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    HttpCodes [ HttpCodes [ "MethodNotAllowed" ]  =  405 ]  =  "MethodNotAllowed" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    HttpCodes [ HttpCodes [ "NotAcceptable" ]  =  406 ]  =  "NotAcceptable" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    HttpCodes [ HttpCodes [ "ProxyAuthenticationRequired" ]  =  407 ]  =  "ProxyAuthenticationRequired" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    HttpCodes [ HttpCodes [ "RequestTimeout" ]  =  408 ]  =  "RequestTimeout" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    HttpCodes [ HttpCodes [ "Conflict" ]  =  409 ]  =  "Conflict" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    HttpCodes [ HttpCodes [ "Gone" ]  =  410 ]  =  "Gone" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    HttpCodes [ HttpCodes [ "InternalServerError" ]  =  500 ]  =  "InternalServerError" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    HttpCodes [ HttpCodes [ "NotImplemented" ]  =  501 ]  =  "NotImplemented" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    HttpCodes [ HttpCodes [ "BadGateway" ]  =  502 ]  =  "BadGateway" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    HttpCodes [ HttpCodes [ "ServiceUnavailable" ]  =  503 ]  =  "ServiceUnavailable" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    HttpCodes [ HttpCodes [ "GatewayTimeout" ]  =  504 ]  =  "GatewayTimeout" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ) ( HttpCodes  =  exports . HttpCodes  ||  ( exports . HttpCodes  =  { } ) ) ;  
						 
					
						
							
								
									
										
										
										
											2020-02-05 10:01:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								var  Headers ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								( function  ( Headers )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    Headers [ "Accept" ]  =  "accept" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    Headers [ "ContentType" ]  =  "content-type" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ) ( Headers  =  exports . Headers  ||  ( exports . Headers  =  { } ) ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  MediaTypes ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								( function  ( MediaTypes )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    MediaTypes [ "ApplicationJson" ]  =  "application/json" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ) ( MediaTypes  =  exports . MediaTypes  ||  ( exports . MediaTypes  =  { } ) ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Returns  the  proxy  URL ,  depending  upon  the  supplied  url  and  proxy  environment  variables . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  serverUrl   The  server  URL  where  the  request  will  be  sent .  For  example ,  https : //api.github.com
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  getProxyUrl ( serverUrl )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    let  proxyUrl  =  pm . getProxyUrl ( url . parse ( serverUrl ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  proxyUrl  ?  proxyUrl . href  :  '' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . getProxyUrl  =  getProxyUrl ;  
						 
					
						
							
								
									
										
										
										
											2019-11-04 15:13:15 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								const  HttpRedirectCodes  =  [ HttpCodes . MovedPermanently ,  HttpCodes . ResourceMoved ,  HttpCodes . SeeOther ,  HttpCodes . TemporaryRedirect ,  HttpCodes . PermanentRedirect ] ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  HttpResponseRetryCodes  =  [ HttpCodes . BadGateway ,  HttpCodes . ServiceUnavailable ,  HttpCodes . GatewayTimeout ] ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  RetryableHttpVerbs  =  [ 'OPTIONS' ,  'GET' ,  'DELETE' ,  'HEAD' ] ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  ExponentialBackoffCeiling  =  10 ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  ExponentialBackoffTimeSlice  =  5 ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								class  HttpClientResponse  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    constructor ( message )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . message  =  message ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    readBody ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-05 10:01:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return  new  Promise ( async  ( resolve ,  reject )  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            let  output  =  Buffer . alloc ( 0 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 15:13:15 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								            this . message . on ( 'data' ,  ( chunk )  =>  { 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-05 10:01:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                output  =  Buffer . concat ( [ output ,  chunk ] ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 15:13:15 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								            } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            this . message . on ( 'end' ,  ( )  =>  { 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-05 10:01:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                resolve ( output . toString ( ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 15:13:15 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								            } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-05 10:01:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 15:13:15 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . HttpClientResponse  =  HttpClientResponse ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  isHttps ( requestUrl )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    let  parsedUrl  =  url . parse ( requestUrl ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  parsedUrl . protocol  ===  'https:' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . isHttps  =  isHttps ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								class  HttpClient  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    constructor ( userAgent ,  handlers ,  requestOptions )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . _ignoreSslError  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . _allowRedirects  =  true ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-05 10:01:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        this . _allowRedirectDowngrade  =  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 15:13:15 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        this . _maxRedirects  =  50 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . _allowRetries  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . _maxRetries  =  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . _keepAlive  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . _disposed  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . userAgent  =  userAgent ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . handlers  =  handlers  ||  [ ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . requestOptions  =  requestOptions ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( requestOptions )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( requestOptions . ignoreSslError  !=  null )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                this . _ignoreSslError  =  requestOptions . ignoreSslError ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            this . _socketTimeout  =  requestOptions . socketTimeout ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( requestOptions . allowRedirects  !=  null )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                this . _allowRedirects  =  requestOptions . allowRedirects ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-05 10:01:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            if  ( requestOptions . allowRedirectDowngrade  !=  null )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                this . _allowRedirectDowngrade  =  requestOptions . allowRedirectDowngrade ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 15:13:15 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								            if  ( requestOptions . maxRedirects  !=  null )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                this . _maxRedirects  =  Math . max ( requestOptions . maxRedirects ,  0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( requestOptions . keepAlive  !=  null )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                this . _keepAlive  =  requestOptions . keepAlive ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( requestOptions . allowRetries  !=  null )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                this . _allowRetries  =  requestOptions . allowRetries ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( requestOptions . maxRetries  !=  null )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                this . _maxRetries  =  requestOptions . maxRetries ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    options ( requestUrl ,  additionalHeaders )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  this . request ( 'OPTIONS' ,  requestUrl ,  null ,  additionalHeaders  ||  { } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    get ( requestUrl ,  additionalHeaders )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  this . request ( 'GET' ,  requestUrl ,  null ,  additionalHeaders  ||  { } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    del ( requestUrl ,  additionalHeaders )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  this . request ( 'DELETE' ,  requestUrl ,  null ,  additionalHeaders  ||  { } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    post ( requestUrl ,  data ,  additionalHeaders )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  this . request ( 'POST' ,  requestUrl ,  data ,  additionalHeaders  ||  { } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    patch ( requestUrl ,  data ,  additionalHeaders )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  this . request ( 'PATCH' ,  requestUrl ,  data ,  additionalHeaders  ||  { } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    put ( requestUrl ,  data ,  additionalHeaders )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  this . request ( 'PUT' ,  requestUrl ,  data ,  additionalHeaders  ||  { } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    head ( requestUrl ,  additionalHeaders )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  this . request ( 'HEAD' ,  requestUrl ,  null ,  additionalHeaders  ||  { } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    sendStream ( verb ,  requestUrl ,  stream ,  additionalHeaders )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  this . request ( verb ,  requestUrl ,  stream ,  additionalHeaders ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-05 10:01:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  Gets  a  typed  object  from  an  endpoint 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  Be  aware  that  not  found  returns  a  null .   Other  errors  ( 4 xx ,  5 xx )  reject  the  promise 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    async  getJson ( requestUrl ,  additionalHeaders  =  { } )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        additionalHeaders [ Headers . Accept ]  =  this . _getExistingOrDefaultHeader ( additionalHeaders ,  Headers . Accept ,  MediaTypes . ApplicationJson ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        let  res  =  await  this . get ( requestUrl ,  additionalHeaders ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  this . _processResponse ( res ,  this . requestOptions ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    async  postJson ( requestUrl ,  obj ,  additionalHeaders  =  { } )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        let  data  =  JSON . stringify ( obj ,  null ,  2 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        additionalHeaders [ Headers . Accept ]  =  this . _getExistingOrDefaultHeader ( additionalHeaders ,  Headers . Accept ,  MediaTypes . ApplicationJson ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        additionalHeaders [ Headers . ContentType ]  =  this . _getExistingOrDefaultHeader ( additionalHeaders ,  Headers . ContentType ,  MediaTypes . ApplicationJson ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        let  res  =  await  this . post ( requestUrl ,  data ,  additionalHeaders ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  this . _processResponse ( res ,  this . requestOptions ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    async  putJson ( requestUrl ,  obj ,  additionalHeaders  =  { } )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        let  data  =  JSON . stringify ( obj ,  null ,  2 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        additionalHeaders [ Headers . Accept ]  =  this . _getExistingOrDefaultHeader ( additionalHeaders ,  Headers . Accept ,  MediaTypes . ApplicationJson ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        additionalHeaders [ Headers . ContentType ]  =  this . _getExistingOrDefaultHeader ( additionalHeaders ,  Headers . ContentType ,  MediaTypes . ApplicationJson ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        let  res  =  await  this . put ( requestUrl ,  data ,  additionalHeaders ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  this . _processResponse ( res ,  this . requestOptions ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    async  patchJson ( requestUrl ,  obj ,  additionalHeaders  =  { } )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        let  data  =  JSON . stringify ( obj ,  null ,  2 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        additionalHeaders [ Headers . Accept ]  =  this . _getExistingOrDefaultHeader ( additionalHeaders ,  Headers . Accept ,  MediaTypes . ApplicationJson ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        additionalHeaders [ Headers . ContentType ]  =  this . _getExistingOrDefaultHeader ( additionalHeaders ,  Headers . ContentType ,  MediaTypes . ApplicationJson ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        let  res  =  await  this . patch ( requestUrl ,  data ,  additionalHeaders ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  this . _processResponse ( res ,  this . requestOptions ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 15:13:15 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  Makes  a  raw  http  request . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  All  other  methods  such  as  get ,  post ,  patch ,  and  request  ultimately  call  this . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  Prefer  get ,  del ,  post  and  patch 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     * / 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-05 10:01:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    async  request ( verb ,  requestUrl ,  data ,  headers )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( this . _disposed )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            throw  new  Error ( "Client has already been disposed." ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        let  parsedUrl  =  url . parse ( requestUrl ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        let  info  =  this . _prepareRequest ( verb ,  parsedUrl ,  headers ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // Only perform retries on reads since writes may not be idempotent.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        let  maxTries  =  ( this . _allowRetries  &&  RetryableHttpVerbs . indexOf ( verb )  !=  - 1 )  ?  this . _maxRetries  +  1  :  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        let  numTries  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        let  response ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        while  ( numTries  <  maxTries )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            response  =  await  this . requestRaw ( info ,  data ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // Check if it's an authentication challenge
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( response  &&  response . message  &&  response . message . statusCode  ===  HttpCodes . Unauthorized )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                let  authenticationHandler ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                for  ( let  i  =  0 ;  i  <  this . handlers . length ;  i ++ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    if  ( this . handlers [ i ] . canHandleAuthentication ( response ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        authenticationHandler  =  this . handlers [ i ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 15:13:15 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								                        break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-05 10:01:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                if  ( authenticationHandler )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    return  authenticationHandler . handleAuthentication ( this ,  info ,  data ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    // We have received an unauthorized response but have no handlers to handle it.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    // Let the response return to the caller.
 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 15:13:15 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								                    return  response ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-05 10:01:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            let  redirectsRemaining  =  this . _maxRedirects ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            while  ( HttpRedirectCodes . indexOf ( response . message . statusCode )  !=  - 1 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                &&  this . _allowRedirects 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                &&  redirectsRemaining  >  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                const  redirectUrl  =  response . message . headers [ "location" ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                if  ( ! redirectUrl )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    // if there's no location to redirect to, we won't
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                let  parsedRedirectUrl  =  url . parse ( redirectUrl ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                if  ( parsedUrl . protocol  ==  'https:'  &&  parsedUrl . protocol  !=  parsedRedirectUrl . protocol  &&  ! this . _allowRedirectDowngrade )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    throw  new  Error ( "Redirect from HTTPS to HTTP protocol. This downgrade is not allowed for security reasons. If you want to allow this behavior, set the allowRedirectDowngrade option to true." ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 15:13:15 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-05 10:01:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                // we need to finish reading the response before reassigning response
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                // which will leak the open socket.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                await  response . readBody ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                // let's make the request with the new redirectUrl
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                info  =  this . _prepareRequest ( verb ,  parsedRedirectUrl ,  headers ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                response  =  await  this . requestRaw ( info ,  data ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                redirectsRemaining -- ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 15:13:15 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-05 10:01:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            if  ( HttpResponseRetryCodes . indexOf ( response . message . statusCode )  ==  - 1 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                // If not a retry code, return immediately instead of retrying
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                return  response ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            numTries  +=  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( numTries  <  maxTries )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                await  response . readBody ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                await  this . _performExponentialBackoff ( numTries ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  response ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 15:13:15 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  Needs  to  be  called  if  keepAlive  is  set  to  true  in  request  options . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    dispose ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( this . _agent )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            this . _agent . destroy ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . _disposed  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  Raw  request . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  @ param  info 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  @ param  data 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    requestRaw ( info ,  data )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  new  Promise ( ( resolve ,  reject )  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            let  callbackForResult  =  function  ( err ,  res )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                if  ( err )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    reject ( err ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                resolve ( res ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            this . requestRawWithCallback ( info ,  data ,  callbackForResult ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  Raw  request  with  callback . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  @ param  info 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  @ param  data 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  @ param  onResult 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    requestRawWithCallback ( info ,  data ,  onResult )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        let  socket ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( typeof  ( data )  ===  'string' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            info . options . headers [ "Content-Length" ]  =  Buffer . byteLength ( data ,  'utf8' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        let  callbackCalled  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        let  handleResult  =  ( err ,  res )  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( ! callbackCalled )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                callbackCalled  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                onResult ( err ,  res ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        let  req  =  info . httpModule . request ( info . options ,  ( msg )  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            let  res  =  new  HttpClientResponse ( msg ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            handleResult ( null ,  res ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        req . on ( 'socket' ,  ( sock )  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            socket  =  sock ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // If we ever get disconnected, we want the socket to timeout eventually
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        req . setTimeout ( this . _socketTimeout  ||  3  *  60000 ,  ( )  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( socket )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                socket . end ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            handleResult ( new  Error ( 'Request timeout: '  +  info . options . path ) ,  null ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        req . on ( 'error' ,  function  ( err )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // err has statusCode property
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // res should have headers
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            handleResult ( err ,  null ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( data  &&  typeof  ( data )  ===  'string' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            req . write ( data ,  'utf8' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( data  &&  typeof  ( data )  !==  'string' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            data . on ( 'close' ,  function  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                req . end ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            data . pipe ( req ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            req . end ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-05 10:01:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  Gets  an  http  agent .  This  function  is  useful  when  you  need  an  http  agent  that  handles 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  routing  through  a  proxy  server  -  depending  upon  the  url  and  proxy  environment  variables . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  @ param  serverUrl   The  server  URL  where  the  request  will  be  sent .  For  example ,  https : //api.github.com
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    getAgent ( serverUrl )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        let  parsedUrl  =  url . parse ( serverUrl ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  this . _getAgent ( parsedUrl ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 15:13:15 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    _prepareRequest ( method ,  requestUrl ,  headers )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  info  =  { } ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-05 10:01:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        info . parsedUrl  =  requestUrl ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 15:13:15 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        const  usingSsl  =  info . parsedUrl . protocol  ===  'https:' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        info . httpModule  =  usingSsl  ?  https  :  http ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  defaultPort  =  usingSsl  ?  443  :  80 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        info . options  =  { } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        info . options . host  =  info . parsedUrl . hostname ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        info . options . port  =  info . parsedUrl . port  ?  parseInt ( info . parsedUrl . port )  :  defaultPort ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        info . options . path  =  ( info . parsedUrl . pathname  ||  '' )  +  ( info . parsedUrl . search  ||  '' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        info . options . method  =  method ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        info . options . headers  =  this . _mergeHeaders ( headers ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-05 10:01:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( this . userAgent  !=  null )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            info . options . headers [ "user-agent" ]  =  this . userAgent ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        info . options . agent  =  this . _getAgent ( info . parsedUrl ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 15:13:15 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        // gives handlers an opportunity to participate
 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-05 10:01:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( this . handlers )  { 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 15:13:15 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								            this . handlers . forEach ( ( handler )  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                handler . prepareRequest ( info . options ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  info ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    _mergeHeaders ( headers )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  lowercaseKeys  =  obj  =>  Object . keys ( obj ) . reduce ( ( c ,  k )  =>  ( c [ k . toLowerCase ( ) ]  =  obj [ k ] ,  c ) ,  { } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( this . requestOptions  &&  this . requestOptions . headers )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return  Object . assign ( { } ,  lowercaseKeys ( this . requestOptions . headers ) ,  lowercaseKeys ( headers ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  lowercaseKeys ( headers  ||  { } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-05 10:01:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _getExistingOrDefaultHeader ( additionalHeaders ,  header ,  _default )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  lowercaseKeys  =  obj  =>  Object . keys ( obj ) . reduce ( ( c ,  k )  =>  ( c [ k . toLowerCase ( ) ]  =  obj [ k ] ,  c ) ,  { } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        let  clientHeader ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( this . requestOptions  &&  this . requestOptions . headers )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            clientHeader  =  lowercaseKeys ( this . requestOptions . headers ) [ header ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  additionalHeaders [ header ]  ||  clientHeader  ||  _default ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    _getAgent ( parsedUrl )  { 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 15:13:15 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        let  agent ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-05 10:01:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        let  proxyUrl  =  pm . getProxyUrl ( parsedUrl ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        let  useProxy  =  proxyUrl  &&  proxyUrl . hostname ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 15:13:15 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        if  ( this . _keepAlive  &&  useProxy )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            agent  =  this . _proxyAgent ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( this . _keepAlive  &&  ! useProxy )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            agent  =  this . _agent ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // if agent is already assigned use that agent.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( ! ! agent )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return  agent ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  usingSsl  =  parsedUrl . protocol  ===  'https:' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        let  maxSockets  =  100 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( ! ! this . requestOptions )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            maxSockets  =  this . requestOptions . maxSockets  ||  http . globalAgent . maxSockets ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( useProxy )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // If using proxy, need tunnel
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( ! tunnel )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                tunnel  =  _ _webpack _require _ _ ( 413 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            const  agentOptions  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                maxSockets :  maxSockets , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                keepAlive :  this . _keepAlive , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                proxy :  { 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-05 10:01:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    proxyAuth :  proxyUrl . auth , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    host :  proxyUrl . hostname , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    port :  proxyUrl . port 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 15:13:15 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								                } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            let  tunnelAgent ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-05 10:01:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            const  overHttps  =  proxyUrl . protocol  ===  'https:' ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 15:13:15 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								            if  ( usingSsl )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                tunnelAgent  =  overHttps  ?  tunnel . httpsOverHttps  :  tunnel . httpsOverHttp ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                tunnelAgent  =  overHttps  ?  tunnel . httpOverHttps  :  tunnel . httpOverHttp ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            agent  =  tunnelAgent ( agentOptions ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            this . _proxyAgent  =  agent ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // if reusing agent across request and tunneling agent isn't assigned create a new agent
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( this . _keepAlive  &&  ! agent )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            const  options  =  {  keepAlive :  this . _keepAlive ,  maxSockets :  maxSockets  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            agent  =  usingSsl  ?  new  https . Agent ( options )  :  new  http . Agent ( options ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            this . _agent  =  agent ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-05 10:01:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        // if not using private agent and tunnel agent isn't setup then use global agent
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( ! agent )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            agent  =  usingSsl  ?  https . globalAgent  :  http . globalAgent ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( usingSsl  &&  this . _ignoreSslError )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // we don't want to set NODE_TLS_REJECT_UNAUTHORIZED=0 since that will affect request for entire process
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // http.RequestOptions doesn't expose a way to modify RequestOptions.agent.options
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // we have to cast it to any and change it directly
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            agent . options  =  Object . assign ( agent . options  ||  { } ,  {  rejectUnauthorized :  false  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  agent ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    _performExponentialBackoff ( retryNumber )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        retryNumber  =  Math . min ( ExponentialBackoffCeiling ,  retryNumber ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  ms  =  ExponentialBackoffTimeSlice  *  Math . pow ( 2 ,  retryNumber ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  new  Promise ( resolve  =>  setTimeout ( ( )  =>  resolve ( ) ,  ms ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    static  dateTimeDeserializer ( key ,  value )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( typeof  value  ===  'string' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            let  a  =  new  Date ( value ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( ! isNaN ( a . valueOf ( ) ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                return  a ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  value ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    async  _processResponse ( res ,  options )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  new  Promise ( async  ( resolve ,  reject )  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            const  statusCode  =  res . message . statusCode ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            const  response  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                statusCode :  statusCode , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                result :  null , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                headers :  { } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // not found leads to null obj returned
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( statusCode  ==  HttpCodes . NotFound )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                resolve ( response ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            let  obj ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            let  contents ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // get the result from the body
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                contents  =  await  res . readBody ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                if  ( contents  &&  contents . length  >  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    if  ( options  &&  options . deserializeDates )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        obj  =  JSON . parse ( contents ,  HttpClient . dateTimeDeserializer ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        obj  =  JSON . parse ( contents ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    response . result  =  obj ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                response . headers  =  res . message . headers ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            catch  ( err )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                // Invalid resource (contents not json);  leaving result obj null
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // note that 3xx redirects are handled by the http layer.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( statusCode  >  299 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                let  msg ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                // if exception/error in body, attempt to get better error
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                if  ( obj  &&  obj . message )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    msg  =  obj . message ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                else  if  ( contents  &&  contents . length  >  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    // it may be the case that the exception is in the body message as string
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    msg  =  contents ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    msg  =  "Failed request: ("  +  statusCode  +  ")" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                let  err  =  new  Error ( msg ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                // attach statusCode and body obj (if available) to the error object
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                err [ 'statusCode' ]  =  statusCode ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                if  ( response . result )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    err [ 'result' ]  =  response . result ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                reject ( err ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                resolve ( response ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . HttpClient  =  HttpClient ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  } ) ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  605 :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  ( function ( module )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								module . exports  =  require ( "http" ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  } ) ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  614 :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  ( function ( module )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								module . exports  =  require ( "events" ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  } ) ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  622 :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  ( function ( module )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								module . exports  =  require ( "path" ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  } ) ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  631 :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  ( function ( module )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								module . exports  =  require ( "net" ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  } ) ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  669 :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  ( function ( module )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								module . exports  =  require ( "util" ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  } ) ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  672 :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  ( function ( _ _unusedmodule ,  exports ,  _ _webpack _require _ _ )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								"use strict" ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  _ _awaiter  =  ( this  &&  this . _ _awaiter )  ||  function  ( thisArg ,  _arguments ,  P ,  generator )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    function  adopt ( value )  {  return  value  instanceof  P  ?  value  :  new  P ( function  ( resolve )  {  resolve ( value ) ;  } ) ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  new  ( P  ||  ( P  =  Promise ) ) ( function  ( resolve ,  reject )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        function  fulfilled ( value )  {  try  {  step ( generator . next ( value ) ) ;  }  catch  ( e )  {  reject ( e ) ;  }  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        function  rejected ( value )  {  try  {  step ( generator [ "throw" ] ( value ) ) ;  }  catch  ( e )  {  reject ( e ) ;  }  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        function  step ( result )  {  result . done  ?  resolve ( result . value )  :  adopt ( result . value ) . then ( fulfilled ,  rejected ) ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        step ( ( generator  =  generator . apply ( thisArg ,  _arguments  ||  [ ] ) ) . next ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  _a ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Object . defineProperty ( exports ,  "__esModule" ,  {  value :  true  } ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  assert _1  =  _ _webpack _require _ _ ( 357 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  fs  =  _ _webpack _require _ _ ( 747 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  path  =  _ _webpack _require _ _ ( 622 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								_a  =  fs . promises ,  exports . chmod  =  _a . chmod ,  exports . copyFile  =  _a . copyFile ,  exports . lstat  =  _a . lstat ,  exports . mkdir  =  _a . mkdir ,  exports . readdir  =  _a . readdir ,  exports . readlink  =  _a . readlink ,  exports . rename  =  _a . rename ,  exports . rmdir  =  _a . rmdir ,  exports . stat  =  _a . stat ,  exports . symlink  =  _a . symlink ,  exports . unlink  =  _a . unlink ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . IS _WINDOWS  =  process . platform  ===  'win32' ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  exists ( fsPath )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  _ _awaiter ( this ,  void  0 ,  void  0 ,  function *  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            yield  exports . stat ( fsPath ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        catch  ( err )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( err . code  ===  'ENOENT' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            throw  err ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . exists  =  exists ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  isDirectory ( fsPath ,  useStat  =  false )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  _ _awaiter ( this ,  void  0 ,  void  0 ,  function *  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  stats  =  useStat  ?  yield  exports . stat ( fsPath )  :  yield  exports . lstat ( fsPath ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  stats . isDirectory ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . isDirectory  =  isDirectory ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  On  OSX / Linux ,  true  if  path  starts  with  '/' .  On  Windows ,  true  for  paths  like : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  \ ,  \ hello ,  \ \ hello \ share ,  C : ,  and  C : \ hello  ( and  corresponding  alternate  separator  cases ) . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  isRooted ( p )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    p  =  normalizeSeparators ( p ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( ! p )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        throw  new  Error ( 'isRooted() parameter "p" cannot be empty' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( exports . IS _WINDOWS )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  ( p . startsWith ( '\\' )  ||  /^[A-Z]:/i . test ( p )  // e.g. \ or \hello or \\hello
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ) ;  // e.g. C: or C:\hello
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  p . startsWith ( '/' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . isRooted  =  isRooted ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Recursively  create  a  directory  at  ` fsPath ` . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  This  implementation  is  optimistic ,  meaning  it  attempts  to  create  the  full 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  path  first ,  and  backs  up  the  path  stack  from  there . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  fsPath  The  path  to  create 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  maxDepth  The  maximum  recursion  depth 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  depth  The  current  recursion  depth 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  mkdirP ( fsPath ,  maxDepth  =  1000 ,  depth  =  1 )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  _ _awaiter ( this ,  void  0 ,  void  0 ,  function *  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        assert _1 . ok ( fsPath ,  'a path argument must be provided' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        fsPath  =  path . resolve ( fsPath ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( depth  >=  maxDepth ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return  exports . mkdir ( fsPath ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            yield  exports . mkdir ( fsPath ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        catch  ( err )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            switch  ( err . code )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                case  'ENOENT' :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    yield  mkdirP ( path . dirname ( fsPath ) ,  maxDepth ,  depth  +  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    yield  exports . mkdir ( fsPath ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                default :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    let  stats ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        stats  =  yield  exports . stat ( fsPath ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    catch  ( err2 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        throw  err ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    if  ( ! stats . isDirectory ( ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        throw  err ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 15:13:15 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-05 10:01:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . mkdirP  =  mkdirP ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Best  effort  attempt  to  determine  whether  a  file  exists  and  is  executable . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  filePath     file  path  to  check 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  extensions   additional  file  extensions  to  try 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ return  if  file  exists  and  is  executable ,  returns  the  file  path .  otherwise  empty  string . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  tryGetExecutablePath ( filePath ,  extensions )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  _ _awaiter ( this ,  void  0 ,  void  0 ,  function *  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        let  stats  =  undefined ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // test file exists
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            stats  =  yield  exports . stat ( filePath ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 15:13:15 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-05 10:01:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        catch  ( err )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( err . code  !==  'ENOENT' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                // eslint-disable-next-line no-console
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                console . log ( ` Unexpected error attempting to determine if executable file exists ' ${ filePath } ':  ${ err } ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 15:13:15 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-05 10:01:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( stats  &&  stats . isFile ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( exports . IS _WINDOWS )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                // on Windows, test for valid extension
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                const  upperExt  =  path . extname ( filePath ) . toUpperCase ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                if  ( extensions . some ( validExt  =>  validExt . toUpperCase ( )  ===  upperExt ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    return  filePath ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 15:13:15 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-05 10:01:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                if  ( isUnixExecutable ( stats ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    return  filePath ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 15:13:15 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-05 10:01:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        // try each extension
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  originalFilePath  =  filePath ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        for  ( const  extension  of  extensions )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            filePath  =  originalFilePath  +  extension ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            stats  =  undefined ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                stats  =  yield  exports . stat ( filePath ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 15:13:15 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-05 10:01:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            catch  ( err )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                if  ( err . code  !==  'ENOENT' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    // eslint-disable-next-line no-console
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    console . log ( ` Unexpected error attempting to determine if executable file exists ' ${ filePath } ':  ${ err } ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 15:13:15 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-05 10:01:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            if  ( stats  &&  stats . isFile ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                if  ( exports . IS _WINDOWS )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    // preserve the case of the actual file (since an extension was appended)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        const  directory  =  path . dirname ( filePath ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        const  upperName  =  path . basename ( filePath ) . toUpperCase ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        for  ( const  actualName  of  yield  exports . readdir ( directory ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            if  ( upperName  ===  actualName . toUpperCase ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                filePath  =  path . join ( directory ,  actualName ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    catch  ( err )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        // eslint-disable-next-line no-console
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        console . log ( ` Unexpected error attempting to determine the actual case of the file ' ${ filePath } ':  ${ err } ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    return  filePath ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    if  ( isUnixExecutable ( stats ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        return  filePath ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 15:13:15 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-05 10:01:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return  '' ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 15:13:15 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-05 10:01:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . tryGetExecutablePath  =  tryGetExecutablePath ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  normalizeSeparators ( p )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    p  =  p  ||  '' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( exports . IS _WINDOWS )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // convert slashes on Windows
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        p  =  p . replace ( /\//g ,  '\\' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // remove redundant slashes
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  p . replace ( /\\\\+/g ,  '\\' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 15:13:15 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-05 10:01:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    // remove redundant slashes
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  p . replace ( /\/\/+/g ,  '/' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// on Mac/Linux, test the execute bit
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//     R   W  X  R  W X R W X
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//   256 128 64 32 16 8 4 2 1
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  isUnixExecutable ( stats )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  ( ( stats . mode  &  1 )  >  0  || 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ( ( stats . mode  &  8 )  >  0  &&  stats . gid  ===  process . getgid ( ) )  || 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ( ( stats . mode  &  64 )  >  0  &&  stats . uid  ===  process . getuid ( ) ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//# sourceMappingURL=io-util.js.map
  
						 
					
						
							
								
									
										
										
										
											2019-11-04 15:13:15 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-02-05 10:01:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/***/  } ) ,  
						 
					
						
							
								
									
										
										
										
											2019-11-04 15:13:15 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-02-05 10:01:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/***/  694 :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  ( function ( _ _unusedmodule ,  exports )  {  
						 
					
						
							
								
									
										
										
										
											2019-11-04 15:13:15 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-02-05 10:01:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								"use strict" ;  
						 
					
						
							
								
									
										
										
										
											2019-11-04 15:13:15 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-02-05 10:01:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								Object . defineProperty ( exports ,  "__esModule" ,  {  value :  true  } ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  Inputs ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								( function  ( Inputs )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    Inputs [ "Key" ]  =  "key" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    Inputs [ "Path" ]  =  "path" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    Inputs [ "RestoreKeys" ]  =  "restore-keys" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ) ( Inputs  =  exports . Inputs  ||  ( exports . Inputs  =  { } ) ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  Outputs ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								( function  ( Outputs )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    Outputs [ "CacheHit" ]  =  "cache-hit" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ) ( Outputs  =  exports . Outputs  ||  ( exports . Outputs  =  { } ) ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  State ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								( function  ( State )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    State [ "CacheKey" ]  =  "CACHE_KEY" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    State [ "CacheResult" ]  =  "CACHE_RESULT" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ) ( State  =  exports . State  ||  ( exports . State  =  { } ) ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  Events ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								( function  ( Events )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    Events [ "Key" ]  =  "GITHUB_EVENT_NAME" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    Events [ "Push" ]  =  "push" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    Events [ "PullRequest" ]  =  "pull_request" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ) ( Events  =  exports . Events  ||  ( exports . Events  =  { } ) ) ;  
						 
					
						
							
								
									
										
										
										
											2019-11-04 15:13:15 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-02-05 10:01:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/***/  } ) ,  
						 
					
						
							
								
									
										
										
										
											2019-11-04 15:13:15 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-02-05 10:01:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/***/  722 :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  ( function ( module )  {  
						 
					
						
							
								
									
										
										
										
											2019-11-04 15:13:15 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-02-05 10:01:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Convert  array  of  16  byte  values  to  UUID  string  format  of  the  form : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  XXXXXXXX - XXXX - XXXX - XXXX - XXXXXXXXXXXX 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  byteToHex  =  [ ] ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								for  ( var  i  =  0 ;  i  <  256 ;  ++ i )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  byteToHex [ i ]  =  ( i  +  0x100 ) . toString ( 16 ) . substr ( 1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-11-04 15:13:15 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-02-05 10:01:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  bytesToUuid ( buf ,  offset )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  i  =  offset  ||  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  bth  =  byteToHex ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // join used to fix memory issue caused by concatenation: https://bugs.chromium.org/p/v8/issues/detail?id=3175#c4
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  ( [ bth [ buf [ i ++ ] ] ,  bth [ buf [ i ++ ] ] ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									bth [ buf [ i ++ ] ] ,  bth [ buf [ i ++ ] ] ,  '-' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									bth [ buf [ i ++ ] ] ,  bth [ buf [ i ++ ] ] ,  '-' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									bth [ buf [ i ++ ] ] ,  bth [ buf [ i ++ ] ] ,  '-' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									bth [ buf [ i ++ ] ] ,  bth [ buf [ i ++ ] ] ,  '-' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									bth [ buf [ i ++ ] ] ,  bth [ buf [ i ++ ] ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									bth [ buf [ i ++ ] ] ,  bth [ buf [ i ++ ] ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									bth [ buf [ i ++ ] ] ,  bth [ buf [ i ++ ] ] ] ) . join ( '' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-11-04 15:13:15 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-02-05 10:01:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								module . exports  =  bytesToUuid ;  
						 
					
						
							
								
									
										
										
										
											2019-11-04 15:13:15 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-02-05 10:01:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/***/  } ) ,  
						 
					
						
							
								
									
										
										
										
											2019-11-04 15:13:15 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-02-05 10:01:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/***/  747 :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  ( function ( module )  {  
						 
					
						
							
								
									
										
										
										
											2019-11-04 15:13:15 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-02-05 10:01:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								module . exports  =  require ( "fs" ) ;  
						 
					
						
							
								
									
										
										
										
											2019-11-04 15:13:15 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-02-05 10:01:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/***/  } ) ,  
						 
					
						
							
								
									
										
										
										
											2019-11-04 15:13:15 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-02-05 10:01:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/***/  778 :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  ( function ( _ _unusedmodule ,  exports ,  _ _webpack _require _ _ )  {  
						 
					
						
							
								
									
										
										
										
											2019-11-04 15:13:15 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-02-05 10:01:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								"use strict" ;  
						 
					
						
							
								
									
										
										
										
											2019-11-04 15:13:15 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-02-05 10:01:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								var  _ _awaiter  =  ( this  &&  this . _ _awaiter )  ||  function  ( thisArg ,  _arguments ,  P ,  generator )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    function  adopt ( value )  {  return  value  instanceof  P  ?  value  :  new  P ( function  ( resolve )  {  resolve ( value ) ;  } ) ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  new  ( P  ||  ( P  =  Promise ) ) ( function  ( resolve ,  reject )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        function  fulfilled ( value )  {  try  {  step ( generator . next ( value ) ) ;  }  catch  ( e )  {  reject ( e ) ;  }  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        function  rejected ( value )  {  try  {  step ( generator [ "throw" ] ( value ) ) ;  }  catch  ( e )  {  reject ( e ) ;  }  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        function  step ( result )  {  result . done  ?  resolve ( result . value )  :  adopt ( result . value ) . then ( fulfilled ,  rejected ) ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        step ( ( generator  =  generator . apply ( thisArg ,  _arguments  ||  [ ] ) ) . next ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  _ _importStar  =  ( this  &&  this . _ _importStar )  ||  function  ( mod )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( mod  &&  mod . _ _esModule )  return  mod ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  result  =  { } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( mod  !=  null )  for  ( var  k  in  mod )  if  ( Object . hasOwnProperty . call ( mod ,  k ) )  result [ k ]  =  mod [ k ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    result [ "default" ]  =  mod ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  result ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Object . defineProperty ( exports ,  "__esModule" ,  {  value :  true  } ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  core  =  _ _importStar ( _ _webpack _require _ _ ( 470 ) ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  path  =  _ _importStar ( _ _webpack _require _ _ ( 622 ) ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  cacheHttpClient  =  _ _importStar ( _ _webpack _require _ _ ( 154 ) ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  constants _1  =  _ _webpack _require _ _ ( 694 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  tar _1  =  _ _webpack _require _ _ ( 943 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  utils  =  _ _importStar ( _ _webpack _require _ _ ( 443 ) ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  run ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  _a ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  _ _awaiter ( this ,  void  0 ,  void  0 ,  function *  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // Validate inputs, this can cause task failure
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( ! utils . isValidEvent ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                utils . logWarning ( ` Event Validation Error: The event type  ${ process . env [ constants _1 . Events . Key ] }  is not supported. Only  ${ utils 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    . getSupportedEvents ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    . join ( ", " ) }  events  are  supported  at  this  time . ` );
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            const  cachePath  =  utils . resolvePath ( core . getInput ( constants _1 . Inputs . Path ,  {  required :  true  } ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            core . debug ( ` Cache Path:  ${ cachePath } ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            const  primaryKey  =  core . getInput ( constants _1 . Inputs . Key ,  {  required :  true  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            core . saveState ( constants _1 . State . CacheKey ,  primaryKey ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            const  restoreKeys  =  core 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                . getInput ( constants _1 . Inputs . RestoreKeys ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                . split ( "\n" ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                . filter ( x  =>  x  !==  "" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            const  keys  =  [ primaryKey ,  ... restoreKeys ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            core . debug ( "Resolved Keys:" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            core . debug ( JSON . stringify ( keys ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( keys . length  >  10 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                core . setFailed ( ` Key Validation Error: Keys are limited to a maximum of 10. ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            for  ( const  key  of  keys )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                if  ( key . length  >  512 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    core . setFailed ( ` Key Validation Error:  ${ key }  cannot be larger than 512 characters. ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                const  regex  =  /^[^,]*$/ ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                if  ( ! regex . test ( key ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    core . setFailed ( ` Key Validation Error:  ${ key }  cannot contain commas. ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                const  cacheEntry  =  yield  cacheHttpClient . getCacheEntry ( keys ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                if  ( ! ( ( _a  =  cacheEntry )  ===  null  ||  _a  ===  void  0  ?  void  0  :  _a . archiveLocation ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    core . info ( ` Cache not found for input keys:  ${ keys . join ( ", " ) } . ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                const  archivePath  =  path . join ( yield  utils . createTempDirectory ( ) ,  "cache.tgz" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                core . debug ( ` Archive Path:  ${ archivePath } ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                // Store the cache result
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                utils . setCacheState ( cacheEntry ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                // Download the cache from the cache entry
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                yield  cacheHttpClient . downloadCache ( cacheEntry . archiveLocation ,  archivePath ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                const  archiveFileSize  =  utils . getArchiveFileSize ( archivePath ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                core . info ( ` Cache Size: ~ ${ Math . round ( archiveFileSize  /  ( 1024  *  1024 ) ) }  MB ( ${ archiveFileSize }  B) ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                yield  tar _1 . extractTar ( archivePath ,  cachePath ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                const  isExactKeyMatch  =  utils . isExactKeyMatch ( primaryKey ,  cacheEntry ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                utils . setCacheHitOutput ( isExactKeyMatch ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                core . info ( ` Cache restored from key:  ${ cacheEntry  &&  cacheEntry . cacheKey } ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            catch  ( error )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                utils . logWarning ( error . message ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                utils . setCacheHitOutput ( false ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        catch  ( error )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            core . setFailed ( error . message ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								run ( ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . default  =  run ;  
						 
					
						
							
								
									
										
										
										
											2019-11-04 15:13:15 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-02-05 10:01:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/***/  } ) ,  
						 
					
						
							
								
									
										
										
										
											2019-11-04 15:13:15 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-02-05 10:01:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/***/  826 :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  ( function ( module ,  _ _unusedexports ,  _ _webpack _require _ _ )  {  
						 
					
						
							
								
									
										
										
										
											2019-11-04 15:13:15 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-02-05 10:01:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								var  rng  =  _ _webpack _require _ _ ( 139 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  bytesToUuid  =  _ _webpack _require _ _ ( 722 ) ;  
						 
					
						
							
								
									
										
										
										
											2019-11-04 15:13:15 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-02-05 10:01:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  v4 ( options ,  buf ,  offset )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  i  =  buf  &&  offset  ||  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 15:13:15 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-02-05 10:01:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  if  ( typeof ( options )  ==  'string' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    buf  =  options  ===  'binary'  ?  new  Array ( 16 )  :  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    options  =  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  options  =  options  ||  { } ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 15:13:15 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-02-05 10:01:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  var  rnds  =  options . random  ||  ( options . rng  ||  rng ) ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 15:13:15 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-02-05 10:01:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  rnds [ 6 ]  =  ( rnds [ 6 ]  &  0x0f )  |  0x40 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  rnds [ 8 ]  =  ( rnds [ 8 ]  &  0x3f )  |  0x80 ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 15:13:15 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-02-05 10:01:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  // Copy bytes to buffer, if provided
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( buf )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    for  ( var  ii  =  0 ;  ii  <  16 ;  ++ ii )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      buf [ i  +  ii ]  =  rnds [ ii ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 15:13:15 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-02-05 10:01:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  return  buf  ||  bytesToUuid ( rnds ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-11-04 15:13:15 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-02-05 10:01:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								module . exports  =  v4 ;  
						 
					
						
							
								
									
										
										
										
											2019-11-04 15:13:15 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-02-05 10:01:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/***/  } ) ,  
						 
					
						
							
								
									
										
										
										
											2019-11-04 15:13:15 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-02-05 10:01:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/***/  835 :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  ( function ( module )  {  
						 
					
						
							
								
									
										
										
										
											2019-11-04 15:13:15 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-02-05 10:01:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								module . exports  =  require ( "url" ) ;  
						 
					
						
							
								
									
										
										
										
											2019-11-04 15:13:15 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-01-06 13:36:33 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/***/  } ) ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  943 :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  ( function ( _ _unusedmodule ,  exports ,  _ _webpack _require _ _ )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								"use strict" ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  _ _awaiter  =  ( this  &&  this . _ _awaiter )  ||  function  ( thisArg ,  _arguments ,  P ,  generator )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    function  adopt ( value )  {  return  value  instanceof  P  ?  value  :  new  P ( function  ( resolve )  {  resolve ( value ) ;  } ) ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  new  ( P  ||  ( P  =  Promise ) ) ( function  ( resolve ,  reject )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        function  fulfilled ( value )  {  try  {  step ( generator . next ( value ) ) ;  }  catch  ( e )  {  reject ( e ) ;  }  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        function  rejected ( value )  {  try  {  step ( generator [ "throw" ] ( value ) ) ;  }  catch  ( e )  {  reject ( e ) ;  }  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        function  step ( result )  {  result . done  ?  resolve ( result . value )  :  adopt ( result . value ) . then ( fulfilled ,  rejected ) ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        step ( ( generator  =  generator . apply ( thisArg ,  _arguments  ||  [ ] ) ) . next ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  _ _importStar  =  ( this  &&  this . _ _importStar )  ||  function  ( mod )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( mod  &&  mod . _ _esModule )  return  mod ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  result  =  { } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( mod  !=  null )  for  ( var  k  in  mod )  if  ( Object . hasOwnProperty . call ( mod ,  k ) )  result [ k ]  =  mod [ k ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    result [ "default" ]  =  mod ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  result ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Object . defineProperty ( exports ,  "__esModule" ,  {  value :  true  } ) ;  
						 
					
						
							
								
									
										
										
										
											2020-04-09 10:29:33 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								const  core  =  _ _importStar ( _ _webpack _require _ _ ( 470 ) ) ;  
						 
					
						
							
								
									
										
										
										
											2020-01-06 13:36:33 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								const  exec _1  =  _ _webpack _require _ _ ( 986 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  io  =  _ _importStar ( _ _webpack _require _ _ ( 1 ) ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  fs _1  =  _ _webpack _require _ _ ( 747 ) ;  
						 
					
						
							
								
									
										
										
										
											2020-04-09 10:29:33 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								<< << << <  HEAD  
						 
					
						
							
								
									
										
										
										
											2020-01-06 13:36:33 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  getTarPath ( )  {  
						 
					
						
							
								
									
										
										
										
											2020-04-09 10:29:33 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								=== === =  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  path  =  _ _importStar ( _ _webpack _require _ _ ( 622 ) ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  constants _1  =  _ _webpack _require _ _ ( 694 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  isGnuTar ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  _ _awaiter ( this ,  void  0 ,  void  0 ,  function *  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        core . debug ( "Checking tar --version" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        let  versionOutput  =  "" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        yield  exec _1 . exec ( "tar --version" ,  [ ] ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ignoreReturnCode :  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            silent :  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            listeners :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                stdout :  ( data )  =>  ( versionOutput  +=  data . toString ( ) ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                stderr :  ( data )  =>  ( versionOutput  +=  data . toString ( ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        core . debug ( versionOutput . trim ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  versionOutput . toUpperCase ( ) . includes ( "GNU TAR" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . isGnuTar  =  isGnuTar ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  getTarPath ( args )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								>>> >>> >  4 fa017f ...  Fallback  to  GNU  tar  if  BSD  tar  is  unavailable  
						 
					
						
							
								
									
										
										
										
											2020-01-06 13:36:33 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    return  _ _awaiter ( this ,  void  0 ,  void  0 ,  function *  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // Explicitly use BSD Tar on Windows
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  IS _WINDOWS  =  process . platform  ===  "win32" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( IS _WINDOWS )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            const  systemTar  =  ` ${ process . env [ "windir" ] } \\ System32 \\ tar.exe ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( fs _1 . existsSync ( systemTar ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                return  systemTar ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-09 10:29:33 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            else  if  ( isGnuTar ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                args . push ( "--force-local" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2020-01-06 13:36:33 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  yield  io . which ( "tar" ,  true ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2020-04-09 10:29:33 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								<< << << <  HEAD  
						 
					
						
							
								
									
										
										
										
											2020-01-06 13:36:33 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  execTar ( args )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  _a ,  _b ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  _ _awaiter ( this ,  void  0 ,  void  0 ,  function *  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            yield  exec _1 . exec ( ` " ${ yield  getTarPath ( ) } " ` ,  args ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-09 10:29:33 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								=== === =  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  execTar ( args ,  cwd )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  _a ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  _ _awaiter ( this ,  void  0 ,  void  0 ,  function *  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            yield  exec _1 . exec ( ` " ${ yield  getTarPath ( args ) } " ` ,  args ,  {  cwd :  cwd  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								>>> >>> >  4 fa017f ...  Fallback  to  GNU  tar  if  BSD  tar  is  unavailable  
						 
					
						
							
								
									
										
										
										
											2020-01-06 13:36:33 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        catch  ( error )  { 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-09 10:29:33 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            throw  new  Error ( ` Tar failed with error:  ${ ( _a  =  error )  ===  null  ||  _a  ===  void  0  ?  void  0  :  _a . message } ` ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-01-06 13:36:33 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2020-04-09 10:29:33 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								<< << << <  HEAD  
						 
					
						
							
								
									
										
										
										
											2020-01-06 13:36:33 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  extractTar ( archivePath ,  targetDirectory )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  _ _awaiter ( this ,  void  0 ,  void  0 ,  function *  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // Create directory to extract tar into
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        yield  io . mkdirP ( targetDirectory ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  args  =  [ "-xz" ,  "-f" ,  archivePath ,  "-C" ,  targetDirectory ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-09 10:29:33 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								=== === =  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  getWorkingDirectory ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  _a ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  _a  =  process . env [ "GITHUB_WORKSPACE" ] ,  ( _a  !==  null  &&  _a  !==  void  0  ?  _a  :  process . cwd ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  extractTar ( archivePath )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  _a ,  _b ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  _ _awaiter ( this ,  void  0 ,  void  0 ,  function *  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // Create directory to extract tar into
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  workingDirectory  =  getWorkingDirectory ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        yield  io . mkdirP ( workingDirectory ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  args  =  [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            "-xz" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            "-f" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ( _a  =  archivePath )  ===  null  ||  _a  ===  void  0  ?  void  0  :  _a . replace ( /\\/g ,  "/" ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            "-P" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            "-C" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ( _b  =  workingDirectory )  ===  null  ||  _b  ===  void  0  ?  void  0  :  _b . replace ( /\\/g ,  "/" ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								>>> >>> >  4 fa017f ...  Fallback  to  GNU  tar  if  BSD  tar  is  unavailable  
						 
					
						
							
								
									
										
										
										
											2020-01-06 13:36:33 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        yield  execTar ( args ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . extractTar  =  extractTar ;  
						 
					
						
							
								
									
										
										
										
											2020-04-09 10:29:33 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								<< << << <  HEAD  
						 
					
						
							
								
									
										
										
										
											2020-01-06 13:36:33 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  createTar ( archivePath ,  sourceDirectory )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  _ _awaiter ( this ,  void  0 ,  void  0 ,  function *  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  args  =  [ "-cz" ,  "-f" ,  archivePath ,  "-C" ,  sourceDirectory ,  "." ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        yield  execTar ( args ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-09 10:29:33 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								=== === =  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  createTar ( archiveFolder ,  sourceDirectories )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  _a ,  _b ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  _ _awaiter ( this ,  void  0 ,  void  0 ,  function *  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // Write source directories to manifest.txt to avoid command length limits
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  manifestFilename  =  "manifest.txt" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        fs _1 . writeFileSync ( path . join ( archiveFolder ,  manifestFilename ) ,  sourceDirectories . join ( "\n" ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  workingDirectory  =  getWorkingDirectory ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  args  =  [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            "-cz" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            "-f" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								<< << << <  HEAD  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            constants _1 . CacheFilename , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            "-P" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								=== === =  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ( _a  =  constants _1 . CacheFilename )  ===  null  ||  _a  ===  void  0  ?  void  0  :  _a . replace ( /\\/g ,  "/" ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								>>> >>> >  Fallback  to  GNU  tar  if  BSD  tar  is  unavailable  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            "-C" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ( _b  =  workingDirectory )  ===  null  ||  _b  ===  void  0  ?  void  0  :  _b . replace ( /\\/g ,  "/" ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            "--files-from" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            manifestFilename 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        yield  execTar ( args ,  archiveFolder ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								>>> >>> >  4 fa017f ...  Fallback  to  GNU  tar  if  BSD  tar  is  unavailable  
						 
					
						
							
								
									
										
										
										
											2020-01-06 13:36:33 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . createTar  =  createTar ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-02-05 10:01:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/***/  } ) ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  950 :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  ( function ( _ _unusedmodule ,  exports ,  _ _webpack _require _ _ )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								"use strict" ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Object . defineProperty ( exports ,  "__esModule" ,  {  value :  true  } ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  url  =  _ _webpack _require _ _ ( 835 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  getProxyUrl ( reqUrl )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    let  usingSsl  =  reqUrl . protocol  ===  'https:' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    let  proxyUrl ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( checkBypass ( reqUrl ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  proxyUrl ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    let  proxyVar ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( usingSsl )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        proxyVar  =  process . env [ "https_proxy" ]  || 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            process . env [ "HTTPS_PROXY" ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        proxyVar  =  process . env [ "http_proxy" ]  || 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            process . env [ "HTTP_PROXY" ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( proxyVar )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        proxyUrl  =  url . parse ( proxyVar ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  proxyUrl ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . getProxyUrl  =  getProxyUrl ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  checkBypass ( reqUrl )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( ! reqUrl . hostname )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    let  noProxy  =  process . env [ "no_proxy" ]  ||  process . env [ "NO_PROXY" ]  ||  '' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( ! noProxy )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // Determine the request port
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    let  reqPort ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( reqUrl . port )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        reqPort  =  Number ( reqUrl . port ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    else  if  ( reqUrl . protocol  ===  'http:' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        reqPort  =  80 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    else  if  ( reqUrl . protocol  ===  'https:' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        reqPort  =  443 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // Format the request hostname and hostname with port
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    let  upperReqHosts  =  [ reqUrl . hostname . toUpperCase ( ) ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( typeof  reqPort  ===  'number' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        upperReqHosts . push ( ` ${ upperReqHosts [ 0 ] } : ${ reqPort } ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // Compare request host against noproxy
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    for  ( let  upperNoProxyItem  of  noProxy . split ( ',' ) . map ( x  =>  x . trim ( ) . toUpperCase ( ) ) . filter ( x  =>  x ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( upperReqHosts . some ( x  =>  x  ===  upperNoProxyItem ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . checkBypass  =  checkBypass ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-11-04 15:13:15 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								/***/  } ) ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  986 :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  ( function ( _ _unusedmodule ,  exports ,  _ _webpack _require _ _ )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								"use strict" ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  _ _awaiter  =  ( this  &&  this . _ _awaiter )  ||  function  ( thisArg ,  _arguments ,  P ,  generator )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    function  adopt ( value )  {  return  value  instanceof  P  ?  value  :  new  P ( function  ( resolve )  {  resolve ( value ) ;  } ) ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  new  ( P  ||  ( P  =  Promise ) ) ( function  ( resolve ,  reject )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        function  fulfilled ( value )  {  try  {  step ( generator . next ( value ) ) ;  }  catch  ( e )  {  reject ( e ) ;  }  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        function  rejected ( value )  {  try  {  step ( generator [ "throw" ] ( value ) ) ;  }  catch  ( e )  {  reject ( e ) ;  }  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        function  step ( result )  {  result . done  ?  resolve ( result . value )  :  adopt ( result . value ) . then ( fulfilled ,  rejected ) ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        step ( ( generator  =  generator . apply ( thisArg ,  _arguments  ||  [ ] ) ) . next ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Object . defineProperty ( exports ,  "__esModule" ,  {  value :  true  } ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  tr  =  _ _webpack _require _ _ ( 9 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Exec  a  command . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Output  will  be  streamed  to  the  live  console . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Returns  promise  with  return  code 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param      commandLine         command  to  execute  ( can  include  additional  args ) .  Must  be  correctly  escaped . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param      args                optional  arguments  for  tool .  Escaping  is  handled  by  the  lib . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param      options             optional  exec  options .   See  ExecOptions 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ returns    Promise < number >     exit  code 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  exec ( commandLine ,  args ,  options )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  _ _awaiter ( this ,  void  0 ,  void  0 ,  function *  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  commandArgs  =  tr . argStringToArray ( commandLine ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( commandArgs . length  ===  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            throw  new  Error ( ` Parameter 'commandLine' cannot be null or empty. ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // Path to tool to execute should be first arg
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  toolPath  =  commandArgs [ 0 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        args  =  commandArgs . slice ( 1 ) . concat ( args  ||  [ ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  runner  =  new  tr . ToolRunner ( toolPath ,  args ,  options ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  runner . exec ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exports . exec  =  exec ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//# sourceMappingURL=exec.js.map
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/***/  } )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/******/  } ) ;