a
    d)                     @   s  d dl Zd dlmZ d dlmZmZmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z) d dl*m+Z+ d dl,m-Z- d dl.m/Z/m0Z0m1Z1 d dl2Z2ej3dddd	 Z4G d
d dZ5dde6dddZ7dS )    N)OrderedDict)%APPENDAPPENDSBINFLOATBINGETBININTBININT1BININT2	BINPERSIDBINPUT
BINUNICODEBUILDbytes_typesdecode_long
EMPTY_DICT
EMPTY_LIST	EMPTY_SETEMPTY_TUPLEGLOBALLONG1LONG_BINGETLONG_BINPUTMARKNEWFALSENEWOBJNEWTRUENONEPROTOREDUCESETITEMSETITEMSSHORT_BINSTRINGSTOPTUPLETUPLE1TUPLE2TUPLE3UnpicklingError)unpack)maxsize)AnyDictList   c               
   C   s   t tjjtjjtjtjd} tjtj	tj
tjtjtjtjtjtjtjf
D ]}|| t|< qHtjD ]}|| |j d|j < q`tjD ]}|| |j d|j < qtjjtjjtjjtjjtjjfD ]}|| d|j < qtjj| d< | S )N)zcollections.OrderedDictztorch.nn.parameter.Parameterztorch.serialization._get_layoutz
torch.Sizeztorch.Tensor.ztorch._utils.z#torch._tensor._rebuild_from_type_v2)r   torchnn	ParameterserializationZ_get_layoutSizeTensorZ	complex32Z	complex64Z
complex128float16float32float64Zint8int16int32int64strZ_tensor_classes
__module____name__Z_storage_classes_utilsZ_rebuild_parameterZ_rebuild_tensorZ_rebuild_tensor_v2Z_rebuild_sparse_tensorZ_rebuild_meta_tensor_no_storageZ_tensorZ_rebuild_from_type_v2)rcttttsf rD   f/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/torch/_weights_only_unpickler.py_get_allowed_globalsD   s>    	

rF   c                   @   s8   e Zd ZddedddZdd Zdd Zd	d
 ZdS )	Unpicklerbytesencodingc                C   s    || _ |j| _|j| _i | _d S N)rJ   readlinereadmemo)selffilerJ   rD   rD   rE   __init__r   s    zUnpickler.__init__c                 C   s  g | _ g | _| jj| _| j}| j}|d}|s2tt|ts@J |d td kr| dd 	d}| dd 	d}| d| }|t
 v r| t
 |  ntd| q"|d td kr| j }| j }|tjjurtd| | tjj|  q"|d td krZ| j }| jd }	|	t
  vrJtd	|	 |	| | jd< q"|d td kr| j }
| jd }t|tju r|j|
  nLt|tjju r||
 n.t|tu r|j|
 ntd
t| q"|d td kr<| j }| jd }t|tur0tdt| || q"|d td kr|  }| jd }t|turtdt| || q"|d t d kr| j | j  }}|| jd |< q"|d t!d kr|  }t"dt#|dD ] }||d  | jd || < qq"|d t$d krD| j | j g | _| jj| _q"|d t%d krn|  }| t&| q"|d t'd kr| jd f| jd< q"|d t(d kr| jd | jd fg| jdd< q"|d t)d kr| jd | jd | jd fg| jdd< q"|d t*d kr"| d q"|d t+d kr@| d q"|d t,d kr^| d q"|d t-d kr|| d q"|d t.d kr| g  q"|d t/d kr| i  q"|d t0d kr| t1  q"|d t2d kr| t3d|dd  q"|d t4d kr,| | dd  q"|d t5d krX| t3d|dd  q"|d t6d kr| t3d| dd  q"|d t7d krt3d|dd }|t8krtdt9||dd}| | q"|d t:d kr$|dd }||}| j;dkr|	| j;d}| | q"|d t<d kr| j }t|t&urnt|t=u rntdt| t|t&u rt#|dkrtj>?|d dkrtd|d  | | @| q"|d tAd tBd fv r|d tAd kr|dnt3d|dd }| | jC|  q"|d tDd tEd fv r|d tDd krP|dnt3d|dd }|dk rttFd | jd | jC|< q"|d tGd kr|dd }||}| tH| q"|d tId kr|dd  q"|d tJd kr| j }|S td!|d  q"dS )"zRead a pickled object representation from the open file.

        Return the reconstituted object hierarchy specified in the file.
        r-   r   Nzutf-8r.   zUnsupported class z(Trying to instantiate unsupported class z0Trying to call reduce for unrecognized function z:Can only build Tensor, parameter or dict objects, but got z"Can only append to lists, but got zCan only extend lists, but got    FTrD   z<i   z<Hz>d   z<IzString is too longsurrogatepassrH   strictz1persistent_load id must be tuple or int, but got Zstoragez4Only persistent_load of storage is allowed, but got znegative argumentzUnsupported operand )K	metastackstackappendrM   rL   EOFError
isinstancer   r   decoderF   RuntimeErrorr   popr/   r0   r1   r   valuesr   typer4   set___setstate__r   __dict__updater   listr   pop_markextendr   r    rangelenr   r#   tupler$   r%   r&   r   r   r   r   r   r   r   setr   r(   r   r	   r   r   r)   r;   r!   rJ   r
   intr2   Z_maybe_decode_asciipersistent_loadr   r   rN   r   r   
ValueErrorr   r   r   r"   )rO   rM   rL   keymodulename	full_pathargsclsfuncstateinstitemlist_objitemsvkiZstrlenstrvalZstrdatapididxndatar?   rD   rD   rE   loadx   s$   










 "*



,,

zUnpickler.loadc                 C   s    | j }| j | _ | j j| _|S rK   )r[   rZ   ra   r\   )rO   r}   rD   rD   rE   ri     s    
zUnpickler.pop_markc                 C   s   t dd S )Nz%unsupported persistent id encountered)r'   )rO   r   rD   rD   rE   rp   !  s    zUnpickler.persistent_loadN)r=   r<   __qualname__r;   rQ   r   ri   rp   rD   rD   rD   rE   rG   q   s
    $rG   ASCIIrI   c                C   s   t | |d S )NrI   )rG   r   )rP   rJ   rD   rD   rE   r   %  s    r   )8	functools
_functoolscollectionsr   pickler   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   structr(   sysr)   typingr*   r+   r,   r/   	lru_cacherF   rG   r;   r   rD   rD   rD   rE   <module>   s   '

, 5