a  ze(%@s ddlmZddlZddlZddlZddlZddlZddlZddlZddl m Z gdZ ej dkpe edoe edoe ejd ZGd d d ejZejZd8d d Zej dkre gd7Z ddlZd9ddddZddZddZddZGdddeZnFe gd7Z ddlZej dkZddZdd Zd!dZd"dZd#d$Zd%d&ZGd'd(d(Z ee!e j"ed)d*Z#ee!e$j%e#ee!e&j'e#d+d,Z(d-d.Z)eej*e(ej dkrd/d0Z+d1d2Z,eeje+nd3d0Z+d4d2Z,eeje+Gd5d6d6ed7Z-dS):)ABCMetaN)context) send_handle recv_handleForkingPicklerregisterdumpwin32CMSG_LEN SCM_RIGHTSsendmsgcsFeZdZiZejZfddZeddZ edddZ e j Z Z S) rcs*tj||j|_|j|jdSN)super__init___copyreg_dispatch_tablecopydispatch_tableupdate_extra_reducersselfargs __class__M/opt/bitninja-python-dojo/embedded/lib/python3.9/multiprocessing/reduction.pyr&s  zForkingPickler.__init__cCs||j|<dSr)r)clstypereducerrrr+szForkingPickler.registerNcCs t}|||||Sr)ioBytesIOr getbuffer)robjprotocolbufrrrdumps0szForkingPickler.dumps)N)__name__ __module__ __qualname__rcopyregrrr classmethodrr&pickleloads __classcell__rrrrr!s   rcCst|||dSr)rr )r#filer$rrrr :sr ) DupHandle duplicate steal_handleF)source_processcCs6t}|dur|}|dur |}t|||d|tjS)Nr)_winapiGetCurrentProcessDuplicateHandleDUPLICATE_SAME_ACCESS)handleZtarget_process inheritabler3current_processrrrr1Gsr1c CsNttjd|}z,t||tddtjtjBWt|St|0dSNFr)r4 OpenProcessPROCESS_DUP_HANDLEr6r5r7DUPLICATE_CLOSE_SOURCE CloseHandle)Z source_pidr8Zsource_process_handlerrrr2Ss   r2cCst|tj|}||dSr)r0r4r7send)connr8destination_pidZdhrrrr_srcCs |Sr)recvdetach)rArrrrdsrc@seZdZdddZddZdS)r0Nc Csf|durt}ttjd|}z(tt|||dd|_Wt|n t|0||_ ||_ dSr;) osgetpidr4r<r=r6r5_handler?_access_pid)rr8accesspidprocrrrrjs zDupHandle.__init__c Csb|jtkr|jSttjd|j}z*t||jt|j dtj Wt |St |0dS)NF) rIrErFrGr4r<r=r6r5rHr>r?)rrLrrrrDys    zDupHandle.detach)N)r'r(r)rrDrrrrr0hs r0)DupFdsendfdsrecvfdsdarwincCsVtd|}tt|dg}||gtjtj|fgtrR|ddkrRt ddS)NirAz%did not receive acknowledgement of fd) arraybyteslenr socket SOL_SOCKETr ACKNOWLEDGErC RuntimeError)sockfdsmsgrrrrNs  rNc Cstd}|j|}|dt|\}}}}|s:|s:tztrJ|dt|dkrft dt||d\}} } |tj kr| tj krt| |jdkrt | | t|d|dkrtdt||dt|WSWnt tfyYn0t ddS) NrQrrSzreceived %d items of ancdatarrRz Len is {0:n} but msg[0] is {1!r}zInvalid data received)rTitemsizerecvmsgrW CMSG_SPACEEOFErrorrYr@rVrZrXr ValueError frombytesAssertionErrorformatlist IndexError) r[sizea bytes_sizer]ancdataflagsaddr cmsg_level cmsg_type cmsg_datarrrrOs:       rOcCsFt|tjtj}t||gWdn1s80YdSr)rWfromfdfilenoAF_UNIX SOCK_STREAMrN)rAr8rBsrrrrscCsHt|tjtj}t|ddWdS1s:0YdS)Nrr)rWrqrrrsrtrO)rArurrrrscCsFt}|dur |||Str:ddlm}||StddS)Nr)resource_sharerz&SCM_RIGHTS appears not to be available)rget_spawning_popenrMduplicate_for_childHAVE_SEND_HANDLErvrb)fd popen_objrvrrrrMs  rMcCs2|jdurt|j|jjffSt|j|jjffSdSr)__self__getattrr__func__r'mrrr_reduce_methods rc@seZdZddZdS)_CcCsdSrr)rrrrfsz_C.fN)r'r(r)rrrrrrsrcCst|j|jffSr)r~ __objclass__r'rrrr_reduce_method_descriptorsrcCst|j|j|jpiffSr)_rebuild_partialfuncrkeywords)prrr_reduce_partialsrcCstj|g|Ri|Sr) functoolspartial)rrrrrrrsrcCsddlm}t||ffS)Nr) DupSocket)rvr_rebuild_socket)rurrrr_reduce_sockets rcCs|Sr)rD)ZdsrrrrsrcCs"t|}t||j|j|jffSr)rMrrrfamilyrproto)rudfrrrrs cCs|}tj||||dS)N)rr)rDrW)rrrrr{rrrrsc@s`eZdZeZeZeZeZeZej dkr4e Z e Z e Z n e Z eZeZeZeZeZeZeZddZdS)AbstractReducerr cGsNtttjttttjttttj ttt j t tt j tdSr)rrrrrrfappendrint__add__rrrrWrrrrrrs  zAbstractReducer.__init__N)r'r(r)rrr rrsysplatformr2r1r0rNrOrMrrrrrrrrrrrs$ r) metaclass)N)NF).abcrr*rr rEr,rWrrzr__all__rhasattrryPicklerrrr r4r1r2rrobjectr0rTrYrNrOrMrrrrrrfrrrrrrrrrrrrr sj           #