o
    e7                    @   s   d Z ddlZddlmZ ddlmZ ejd dk rdd ZneZdZd	Z	d
Z
dZdZdZdZdZdZdZdZdZdZdd ZG dd deZdS )zv
This is a copy of the OpenSimplex library,
based on commit d861cb290531ad15825f21dc4cc35c5d4f407259 from 20.07.2017.
    N)c_long)floor   c                 C   s   t t| S N)int_floor)num r	   KD:\Projects\ConvertPro\env\Lib\site-packages\imgaug/external/opensimplex.pyr      s   r   gÙt˿g[l?gUUUUUUſgUUUUUU?g%	 mgH/7?/   g      )      r   r   r   r   r   r   r   r   r   r   r   r   )H   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   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   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   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   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   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   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   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   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   c                 C   s
   t | jS r   )r   value)xr	   r	   r
   overflowR   s   
r   c                   @   sL   e Zd ZdZefddZdd Zdd Zdd	 Zd
d Z	dd Z
dd ZdS )OpenSimplexz=
    OpenSimplex n-dimensional gradient noise functions.
    c                 C   s   dgd  }| _ dgd  }| _dd tddD }t|d d }t|d d }t|d d }tdddD ]:}t|d d }t|d	 |d
  }|dk rV||d
 7 }|| ||< t|| ttd  d ||< || ||< q8dS )zX
        Initiate the class and generate permutation arrays from a seed number.
        r      c                 S   s   g | ]}|qS r	   r	   ).0ir	   r	   r
   
<listcomp>f   s    z(OpenSimplex.__init__.<locals>.<listcomp>l   -*PB l   Onm+     r      r   r   N)_perm_perm_grad_index_3Dranger   r   lenGRADIENTS_3D)selfseedpermZperm_grad_index_3Dsourcer   rr	   r	   r
   __init__]   s    zOpenSimplex.__init__c           	      C   sF   | j }|||d@  | d@  d@ }t||d  \}}|| ||  S )Nr!      r   )r#   GRADIENTS_2D)	r(   xsbysbdxdyr*   indexg1g2r	   r	   r
   _extrapolate2ds   s   zOpenSimplex._extrapolate2dc                 C   sZ   | j }| j|||d@  | d@  | d@  }t||d  \}	}
}|	| |
|  ||  S )Nr!   r   )r#   r$   r'   )r(   r0   r1   zsbr2   r3   dzr*   r4   r5   r6   g3r	   r	   r
   _extrapolate3dz   s   zOpenSimplex._extrapolate3dc	                 C   sr   | j }	|	|	|	|	|d@  | d@  | d@  | d@  d@ }
t|
|
d  \}}}}|| ||  ||  ||  S )Nr!      r   )r#   GRADIENTS_4D)r(   r0   r1   r8   wsbr2   r3   r9   Zdwr*   r4   r5   r6   r:   Zg4r	   r	   r
   _extrapolate4d   s    zOpenSimplex._extrapolate4dc                 C   s$  || t  }|| }|| }t|}t|}|| t }|| }	|| }
|| }|| }|| }||	 }||
 }d}|d t }|d t }d||  ||  }| j}|dkrl||9 }||| ||d |d || 7 }|d t }|d t }d||  ||  }|dkr||9 }||| ||d |d || 7 }|dkrd| }||ks||kr||kr|d }|d }|d }|d }n|d }|d }|d }|d }n}|d }|d }|d dt  }|d dt  }ndd| }||k s||k r.||kr|d }|d }|d dt  }|d dt  }n!|d }|d }|d dt  }|d dt  }n|}|}|}|}|d7 }|d7 }|d dt  }|d dt  }d||  ||  }|dkrn||9 }||| ||||| 7 }d||  ||  }|dkr||9 }||| ||||| 7 }|t S )zE
        Generate 2D OpenSimplex noise from X,Y coordinates.
        r   r   r   )STRETCH_CONSTANT_2Dr   SQUISH_CONSTANT_2Dr7   NORM_CONSTANT_2D)r(   r   ystretch_offsetxsysr0   r1   squish_offsetxbybxinsyinsin_sumdx0dy0r   dx1dy1attn1extrapolatedx2dy2attn2zinsZxsv_extZysv_extZdx_extZdy_extattn0Zattn_extr	   r	   r
   noise2d   s   ""




zOpenSimplex.noise2dc           M   	   C   s  || | t  }|| }|| }|| }t|}t|}	t|}
||	 |
 t }|| }|	| }|
| }|| }||	 }||
 }|| | }|| }|| }|| }d}| j}|dkrmd}|}d}|}||krq||krq|}d}n||k r}||kr}|}d}d| }||ks||kr||kr|n|}|d@ dkr|d }|}|d } |}!n|d  }}|d  } }!|d@ dkr|	 }"}#| }$}%|d@ dkr|#d8 }#|%d7 }%n|"d8 }"|$d7 }$n|	d  }"}#|d  }$}%|d@ dkr|
}&|
d }'|}(|d })n|
d  }&}'|d  }(})n||B }|d@ dkr!|}|d }|dt  } |d t }!n|d  }}|d dt  } |d t }!|d@ dkrO|	}"|	d }#|dt  }$|d t }%n|	d  }"}#|d dt  }$|d t }%|d@ dkr}|
}&|
d }'|dt  }(|d t })n|
d  }&}'|d dt  }(|d t })d||  ||  ||  }*|*dkr|*|*9 }*||*|* ||d |	d |
d ||| 7 }|d t }+|d t },|d t }-d|+|+  |,|,  |-|-  }.|.dkr|.|.9 }.||.|. ||d |	d |
d |+|,|- 7 }|d t }/|d t }0|-}1d|/|/  |0|0  |1|1  }2|2dkr5|2|29 }2||2|2 ||d |	d |
d |/|0|1 7 }|/}3|,}4|d t }5d|3|3  |4|4  |5|5  }6|6dkrk|6|69 }6||6|6 ||d |	d |
d |3|4|5 7 }n|dkrd}|}d}|}||kr||k r|}d}n||kr||k r|}d}d| }||k s||k rC||k r|n|}|d@ dkr|d }|d }|d dt  } |d dt  }!n| }}|dt   } }!|d@ dkr
|	d  }"}#|d dt   }$}%|d@ dkr|#d7 }#|%d8 }%n|"d7 }"|$d8 }$n|	 }"}#|dt   }$}%|d@ dkr6|
d }&|
d }'|d dt  }(|d dt  })n|
 }&}'|dt   }(})n||@ }|d@ dkre|d }|d }|d t } |d dt  }!n| }}|t } |dt  }!|d@ dkr|	d }"|	d }#|d t }$|d dt  }%n|	 }"}#|t }$|dt  }%|d@ dkr|
d }&|
d }'|d t }(|d dt  })n|
 }&}'|t }(|dt  })|d dt  }3|d dt  }4|d dt  }5d|3|3  |4|4  |5|5  }6|6dkr|6|69 }6||6|6 ||d |	d |
d |3|4|5 7 }|3}/|d dt  }0|d dt  }1d|/|/  |0|0  |1|1  }2|2dkrM|2|29 }2||2|2 ||d |	d |
d |/|0|1 7 }|d dt  }+|4},|1}-d|+|+  |,|,  |-|-  }.|.dkr|.|.9 }.||.|. ||d |	d |
d |+|,|- 7 }|d dt  }|d dt  }|d dt  }d||  ||  ||  }*|*dkr|*|*9 }*||*|* ||d |	d |
d ||| 7 }n|| }7|7dkr|7d }d}d}8nd|7 }d}d	}8|| }9|9dkr|9d }d}d}:nd|9 }d}d	}:|| };|;dkr*|;d }<||kr||<k rd}d}8n0||kr)||<k r)d}d}:n!d|; }<||kr=||<k r=d}d	}8n||krK||<k rKd}d	}:|8|:kr^|8r|d dt  } |d dt  }$|d dt  }(|d }|	d }"|
d }&||@ }|d@ dkr|d dt  }!|dt  }%|dt  })|d }|	}#|
}'nt|d@ dkr|dt  }!|d dt  }%|dt  })|}|	d }#|
}'nO|dt  }!|dt  }%|d dt  })|}|	}#|
d }'n1|} |}$|}(|}|	}"|
}&||B }|d@ dkr|d t }!|d t }%|d t })|d }|	d }#|
d }'n|d@ dkr?|d t }!|d t }%|d t })|d }|	d }#|
d }'n|d t }!|d t }%|d t })|d }|	d }#|
d }'n|8rf|}=|}>n|}=|}>|=d@ dkr|d t } |d t }$|d t }(|d }|	d }"|
d }&nD|=d@ dkr|d t } |d t }$|d t }(|d }|	d }"|
d }&n|d t } |d t }$|d t }(|d }|	d }"|
d }&|dt  }!|dt  }%|dt  })|}|	}#|
}'|>d@ dkr|!d8 }!|d7 }n|>d@ dkr|%d8 }%|#d7 }#n|)d8 })|'d7 }'|d t }+|d t },|d t }-d|+|+  |,|,  |-|-  }.|.dkrR|.|.9 }.||.|. ||d |	d |
d |+|,|- 7 }|d t }/|d t }0|-}1d|/|/  |0|0  |1|1  }2|2dkr|2|29 }2||2|2 ||d |	d |
d |/|0|1 7 }|/}3|,}4|d t }5d|3|3  |4|4  |5|5  }6|6dkr|6|69 }6||6|6 ||d |	d |
d |3|4|5 7 }|d dt  }?|d dt  }@|d dt  }Ad|?|?  |@|@  |A|A  }B|Bdkr|B|B9 }B||B|B ||d |	d |
d |?|@|A 7 }|?}C|d dt  }D|d dt  }Ed|C|C  |D|D  |E|E  }F|FdkrD|F|F9 }F||F|F ||d |	d |
d |C|D|E 7 }|d dt  }G|@}H|E}Id|G|G  |H|H  |I|I  }J|Jdkr||J|J9 }J||J|J ||d |	d |
d |G|H|I 7 }d| |   |$|$  |(|(  }K|Kdkr|K|K9 }K||K|K |||"|&| |$|( 7 }d|!|!  |%|%  |)|)  }L|Ldkr|L|L9 }L||L|L |||#|'|!|%|) 7 }|t S )
zG
        Generate 3D OpenSimplex noise from X,Y,Z coordinates.
        r   r   r   r      r   r   TF)STRETCH_CONSTANT_3Dr   SQUISH_CONSTANT_3Dr;   NORM_CONSTANT_3D)Mr(   r   rC   zrD   rE   rF   zsr0   r1   r8   rG   rH   rI   zbrJ   rK   rV   rL   rM   rN   dz0r   rR   Za_pointa_scoreZb_pointb_scorewinscxsv_ext0xsv_ext1dx_ext0dx_ext1ysv_ext0ysv_ext1dy_ext0dy_ext1zsv_ext0zsv_ext1dz_ext0dz_ext1rW   rO   rP   dz1rQ   rS   rT   dz2rU   dx3dy3dz3attn3p1Za_is_further_sidep2Zb_is_further_sidep3scorec1c2dx4dy4dz4attn4dx5dy5dz5attn5dx6dy6dz6attn6	attn_ext0	attn_ext1r	   r	   r
   noise3d   s  




*
*
*
*



*
*
*
*











*
*
*
*
*
*

zOpenSimplex.noise3dc           {      C   sN.  || | | t  }|| }|| }|| }|| }	t|}
t|}t|}t|	}|
| | | t }|
| }|| }|| }|| }||
 }|| }|| }|	| }|| | | }|| }|| }|| }|| }d}| j}|dkrd}|}d} |}!||!kr||!kr|}!d} n||!k r||kr|}d}||!kr||!kr|}!d} n||!k r||kr|}d}d| }"|"|ks|"|!kr|!|kr| n|}#|#d@ dkr|
d }$|
 }%}&|d }'| }(})n|
d  }$ }%}&|d  }' }(})|#d@ dkr| }* }+},| }- }.}/|#d@ dkr|*d8 }*|-d7 }-n|+d8 }+|.d7 }.n|d  }* }+},|d  }- }.}/|#d@ dkrd| }0 }1}2| }3 }4}5|#d@ dkr[|#d@ dkrR|0d8 }0|3d7 }3n"|1d8 }1|4d7 }4n|2d8 }2|5d7 }5n|d  }0 }1}2|d  }3 }4}5|#d@ dkr| }6}7|d }8| }9}:|d };n|d  }6 }7}8|d  }9 }:};n|| B }#|#d@ dkr|
 }$}&|
d }%|dt  }'|d t }(|t })n|
d  }$ }%}&|d dt  }'|d t  }(})|#d@ dkr| }* }+},|dt  }-|t  }.}/|#d@ dkr|+d8 }+|.d7 }.n!|,d8 },|/d7 }/n|d  }* }+},|d dt  }-|d t  }.}/|#d@ dkrW| }0 }1}2|dt  }3|t  }4}5|#d@ dkrN|1d8 }1|4d7 }4n!|2d8 }2|5d7 }5n|d  }0 }1}2|d dt  }3|d t  }4}5|#d@ dkr| }6}7|d }8|dt  }9|t }:|d t };n|d  }6 }7}8|d dt  }9|d t  }:};d||  ||  ||  ||  }<|<dkr|<|<9 }<||<|< ||
d |d |d |d |||| 7 }|d t }=|d t }>|d t }?|d t }@d|=|=  |>|>  |?|?  |@|@  }A|Adkr'|A|A9 }A||A|A ||
d |d |d |d |=|>|?|@ 7 }|d t }B|d t }C|?}D|@}Ed|B|B  |C|C  |D|D  |E|E  }F|Fdkrk|F|F9 }F||F|F ||
d |d |d |d |B|C|D|E 7 }|B}G|>}H|d t }I|@}Jd|G|G  |H|H  |I|I  |J|J  }K|Kdkr|K|K9 }K||K|K ||
d |d |d |d |G|H|I|J 7 }|B}L|>}M|?}N|d t }Od|L|L  |M|M  |N|N  |O|O  }P|Pdkr|P|P9 }P||P|P ||
d |d |d |d |L|M|N|O 7 }n|dkrd}|}d} |}!||!kr	||!k r	|}!d	} n||!kr||k r|}d	}||!kr&||!k r&|}!d
} n||!kr4||k r4|}d
}d| }"|"|k sB|"|!k rN|!|k rI| n|}#|#d@ dkro|
d }$|
d  }%}&|d dt  }'|d dt   }(})n|
 }$ }%}&|dt   }' }(})|#d@ dkr|d  }* }+},|d dt   }- }.}/|#d@ dkr|+d7 }+|.d8 }.n|*d7 }*|-d8 }-n| }* }+},|dt   }- }.}/|#d@ dkr|d  }0 }1}2|d dt   }3 }4}5|#d@ dkr|#d@ dkr|0d7 }0|3d8 }3n"|1d7 }1|4d8 }4n|2d7 }2|5d8 }5n| }0 }1}2|dt   }3 }4}5|#d@ dkr<|d  }6}7|d }8|d dt   }9}:|d dt  };n.| }6 }7}8|dt   }9 }:};n|| @ }#|#d@ dkr||
d  }$}&|
d }%|d dt  }'|d dt  }(|d dt  })n|
 }$ }%}&|dt  }'|dt   }(})|#d@ dkr|d  }* }+},|d dt  }-|d dt   }.}/|#d@ dkr|,d7 },|/d8 }/n|+d7 }+|.d8 }.n| }* }+},|dt  }-|dt   }.}/|#d@ dkr|d  }0 }1}2|d dt  }3|d dt   }4}5|#d@ dkr|2d7 }2|5d8 }5n|1d7 }1|4d8 }4n| }0 }1}2|dt  }3|dt   }4}5|#d@ dkrV|d  }6}7|d }8|d dt  }9|d dt  }:|d dt  };n| }6 }7}8|dt  }9|dt   }:};|d dt  }L|d dt  }M|d dt  }N|dt  }Od|L|L  |M|M  |N|N  |O|O  }P|Pdkr|P|P9 }P||P|P ||
d |d |d |d |L|M|N|O 7 }|L}G|M}H|dt  }I|d dt  }Jd|G|G  |H|H  |I|I  |J|J  }K|Kdkr|K|K9 }K||K|K ||
d |d |d |d |G|H|I|J 7 }|L}B|dt  }C|N}D|J}Ed|B|B  |C|C  |D|D  |E|E  }F|FdkrB|F|F9 }F||F|F ||
d |d |d |d |B|C|D|E 7 }|dt  }=|N}?|M}>|J}@d|=|=  |>|>  |?|?  |@|@  }A|Adkr|A|A9 }A||A|A ||
d |d |d |d |=|>|?|@ 7 }|d dt  }|d dt  }|d dt  }|d dt  }d||  ||  ||  ||  }<|<dkr|<|<9 }<||<|< ||
d |d |d |d |||| 7 }n|dkr#d}Qd}R|| || kr|| }d}n|| }d}|| || kr|| }!d} n|| }!d} || || kr8|| }S||!kr)|S|!kr)|S}!d} n0||!k r7|S|kr7|S}d}n!|| }S||!krK|S|!krK|S}!d} n||!k rY|S|krY|S}d}d| | }T||!krp|T|!krp|T}!d} d}Rn||!k r|T|kr|T}d}d}Qd| | }U||!kr|U|!kr|U}!d} d}Rn||!k r|U|kr|U}d}d}Qd| | }V||!kr|V|!kr|V}!d} d}Rn||!k r|V|kr|V}d}d}Qd| | }W||!kr|W|!krd} d}Rn||!k r|W|krd}d}Q|Q|Rk
r|Q
r&|| B }X|| @ }Y|Xd@ dk	r|
}$|
d }%|dt  }'|d dt  }(n|
d  }$}%|d dt  }'|d dt  }(|Xd@ dk	rO|}*|d }+|dt  }-|d dt  }.n|d  }*}+|d dt  }-|d dt  }.|Xd@ dk	r|}0|d }1|dt  }3|d dt  }4n|d  }0}1|d dt  }3|d dt  }4|Xd@ dk	r|}6|d }7|dt  }9|d dt  }:n|d  }6}7|d dt  }9|d dt  }:|
}&|},|}2|}8|dt  })|dt  }/|dt  }5|dt  };|Yd@ dk	r|&d7 }&|)d8 })n|Yd@ dk
r|,d7 },|/d8 }/n|Yd@ dk
r|2d7 }2|5d8 }5n|8d7 }8|;d8 };n|
}&|},|}2|}8|})|}/|}5|};|| B }#|#d@ dk
rR|
d }$|
}%|d t }'|t }(n|
d  }$}%|d t  }'}(|#d@ dk
r| }*}+|t  }-}.|#d@ dk
r|*d8 }*|-d7 }-n|+d8 }+|.d7 }.n|d  }*}+|d t  }-}.|#d@ dk
r| }0}1|t  }3}4|#d@ dk
r|0d8 }0|3d7 }3n|1d8 }1|4d7 }4n|d  }0}1|d t  }3}4|#d@ dk
r|}6|d }7|t }9|d t }:n0|d  }6}7|d t  }9}:n |Qr|}X| }Yn| }X|}Y|Xd@ dkr|
d }$|
}%|d t }'|t }(n|
d  }$}%|d t  }'}(|Xd@ dkrU| }*}+|t  }-}.|Xd@ dkrL|*d8 }*|-d7 }-n|+d8 }+|.d7 }.n|d  }*}+|d t  }-}.|Xd@ dkr| }0}1|t  }3}4|Xd@ dkr|0d8 }0|3d7 }3n|1d8 }1|4d7 }4n|d  }0}1|d t  }3}4|Xd@ dkr|}6|d }7|t }9|d t }:n|d  }6}7|d t  }9}:|
}&|},|}2|}8|dt  })|dt  }/|dt  }5|dt  };|Yd@ dkr|&d7 }&|)d8 })n(|Yd@ dkr|,d7 },|/d8 }/n|Yd@ dkr|2d7 }2|5d8 }5n|8d7 }8|;d8 };|d t }=|d t }>|d t }?|d t }@d|=|=  |>|>  |?|?  |@|@  }A|Adkre|A|A9 }A||A|A ||
d |d |d |d |=|>|?|@ 7 }|d t }B|d t }C|?}D|@}Ed|B|B  |C|C  |D|D  |E|E  }F|Fdkr|F|F9 }F||F|F ||
d |d |d |d |B|C|D|E 7 }|B}G|>}H|d t }I|@}Jd|G|G  |H|H  |I|I  |J|J  }K|Kdkr|K|K9 }K||K|K ||
d |d |d |d |G|H|I|J 7 }|B}L|>}M|?}N|d t }Od|L|L  |M|M  |N|N  |O|O  }P|Pdkr)|P|P9 }P||P|P ||
d |d |d |d |L|M|N|O 7 }|d dt  }Z|d dt  }[|d dt  }\|d dt  }]d|Z|Z  |[|[  |\|\  |]|]  }^|^dkr}|^|^9 }^||^|^ ||
d |d |d |d |Z|[|\|] 7 }|d dt  }_|d dt  }`|d dt  }a|d dt  }bd|_|_  |`|`  |a|a  |b|b  }c|cdkr|c|c9 }c||c|c ||
d |d |d |d |_|`|a|b 7 }|d dt  }d|d dt  }e|d dt  }f|d dt  }gd|d|d  |e|e  |f|f  |g|g  }h|hdkr%|h|h9 }h||h|h ||
d |d |d |d |d|e|f|g 7 }|d dt  }i|d dt  }j|d dt  }k|d dt  }ld|i|i  |j|j  |k|k  |l|l  }m|mdkry|m|m9 }m||m|m ||
d |d |d |d |i|j|k|l 7 }|d dt  }n|d dt  }o|d dt  }p|d dt  }qd|n|n  |o|o  |p|p  |q|q  }r|rdkr|r|r9 }r||r|r ||
d |d |d |d |n|o|p|q 7 }|d dt  }s|d dt  }t|d dt  }u|d dt  }vd|s|s  |t|t  |u|u  |v|v  }w|wdkr!|w|w9 }w||w|w ||
d |d |d |d |s|t|u|v 7 }n|d}Qd}R|| || k r7|| }d}n|| }d}|| || k rM|| }!d} n|| }!d} || || k r~|| }S||!kro|S|!k ro|S}!d} n0||!kr}|S|k r}|S}d}n!|| }S||!kr|S|!k r|S}!d} n||!kr|S|k r|S}d}d| | }T||!kr|T|!k r|T}!d} d}Rn||!kr|T|k r|T}d}d}Qd| | }U||!kr|U|!k r|U}!d} d}Rn||!kr|U|k r|U}d}d}Qd| | }V||!kr|V|!k r|V}!d	} d}Rn||!kr|V|k r|V}d	}d}Qd| | }W||!kr)|W|!k r)d
} d}Rn||!kr7|W|k r7d
}d}Q|Q|RkrK|QrD|| @ }X|| B }Y|
 }$}%| }*}+| }0}1| }6}7|t }'|t }-|t }3|t }9|dt  }(|dt  }.|dt  }4|dt  }:|Xd@ dkr|$d7 }$|'d8 }'|%d7 }%|(d8 }(n@|Xd@ dkr|*d7 }*|-d8 }-|+d7 }+|.d8 }.n(|Xd@ dkr|0d7 }0|3d8 }3|1d7 }1|4d8 }4n|6d7 }6|9d8 }9|7d7 }7|:d8 }:|
d }&|d },|d }2|d }8|d dt  })|d dt  }/|d dt  }5|d dt  };|Yd@ dkr|&d8 }&|)d7 })nw|Yd@ dkr)|,d8 },|/d7 }/nf|Yd@ dkr:|2d8 }2|5d7 }5nU|8d8 }8|;d7 };nK|
d }&|d },|d }2|d }8|d dt  })|d dt  }/|d dt  }5|d dt  };|| @ }#|#d@ dkr|
d }$|
d }%|d dt  }'|d dt  }(n|
 }$}%|dt   }'}(|#d@ dkr|d  }*}+|d dt   }-}.|#d@ dkr|*d7 }*|-d8 }-n|+d7 }+|.d8 }.n| }*}+|dt   }-}.|#d@ dkr|d  }0}1|d dt   }3}4|#d@ dkr|0d7 }0|3d8 }3n|1d7 }1|4d8 }4n| }0}1|dt   }3}4|#d@ dkr=|d }6|d }7|d dt  }9|d dt  }:nR| }6}7|dt   }9}:nD|QrS|}X| }Yn| }X|}Y|Xd@ dkrw|
d }$|
d }%|d dt  }'|d dt  }(n|
 }$}%|dt   }'}(|Xd@ dkr|d  }*}+|d dt   }-}.|Xd@ dkr|*d7 }*|-d8 }-n|+d7 }+|.d8 }.n| }*}+|dt   }-}.|Xd@ dkr|d  }0}1|d dt   }3}4|Xd@ dkr|0d7 }0|3d8 }3n|1d7 }1|4d8 }4n| }0}1|dt   }3}4|Xd@ dkr|d }6|d }7|d dt  }9|d dt  }:n| }6}7|dt   }9}:|
d }&|d },|d }2|d }8|d dt  })|d dt  }/|d dt  }5|d dt  };|Yd@ dkrg|&d8 }&|)d7 })n(|Yd@ dkrw|,d8 },|/d7 }/n|Yd@ dkr|2d8 }2|5d7 }5n|8d8 }8|;d7 };|d dt  }L|d dt  }M|d dt  }N|dt  }Od|L|L  |M|M  |N|N  |O|O  }P|Pdkr|P|P9 }P||P|P ||
d |d |d |d |L|M|N|O 7 }|L}G|M}H|dt  }I|d dt  }Jd|G|G  |H|H  |I|I  |J|J  }K|Kdkr'|K|K9 }K||K|K ||
d |d |d |d |G|H|I|J 7 }|L}B|dt  }C|N}D|J}Ed|B|B  |C|C  |D|D  |E|E  }F|Fdkrg|F|F9 }F||F|F ||
d |d |d |d |B|C|D|E 7 }|dt  }=|N}?|M}>|J}@d|=|=  |>|>  |?|?  |@|@  }A|Adkr|A|A9 }A||A|A ||
d |d |d |d |=|>|?|@ 7 }|d dt  }Z|d dt  }[|d dt  }\|d dt  }]d|Z|Z  |[|[  |\|\  |]|]  }^|^dkr|^|^9 }^||^|^ ||
d |d |d |d |Z|[|\|] 7 }|d dt  }_|d dt  }`|d dt  }a|d dt  }bd|_|_  |`|`  |a|a  |b|b  }c|cdkrO|c|c9 }c||c|c ||
d |d |d |d |_|`|a|b 7 }|d dt  }d|d dt  }e|d dt  }f|d dt  }gd|d|d  |e|e  |f|f  |g|g  }h|hdkr|h|h9 }h||h|h ||
d |d |d |d |d|e|f|g 7 }|d dt  }i|d dt  }j|d dt  }k|d dt  }ld|i|i  |j|j  |k|k  |l|l  }m|mdkr|m|m9 }m||m|m ||
d |d |d |d |i|j|k|l 7 }|d dt  }n|d dt  }o|d dt  }p|d dt  }qd|n|n  |o|o  |p|p  |q|q  }r|rdkrK|r|r9 }r||r|r ||
d |d |d |d |n|o|p|q 7 }|d dt  }s|d dt  }t|d dt  }u|d dt  }vd|s|s  |t|t  |u|u  |v|v  }w|wdkr|w|w9 }w||w|w ||
d |d |d |d |s|t|u|v 7 }d|'|'  |-|-  |3|3  |9|9  }x|xdkr|x|x9 }x||x|x ||$|*|0|6|'|-|3|9 7 }d|(|(  |.|.  |4|4  |:|:  }y|ydkr|y|y9 }y||y|y ||%|+|1|7|(|.|4|: 7 }d|)|)  |/|/  |5|5  |;|;  }z|zdkr#|z|z9 }z||z|z ||&|,|2|8|)|/|5|; 7 }|t S )zI
        Generate 4D OpenSimplex noise from X,Y,Z,W coordinates.
        r   r   r   r      r   r.      r      T   r   
   	   rY   F)STRETCH_CONSTANT_4Dr   SQUISH_CONSTANT_4Dr?   NORM_CONSTANT_4D){r(   r   rC   r]   wrD   rE   rF   r^   wsr0   r1   r8   r>   rG   rH   rI   r_   wbrJ   rK   rV   rc   rL   rM   rN   r`   Zdw0r   rR   Za_pora   Zb_porb   Zuinsrd   re   rf   Zxsv_ext2rg   rh   Zdx_ext2ri   rj   Zysv_ext2rk   rl   Zdy_ext2rm   rn   Zzsv_ext2ro   rp   Zdz_ext2Zwsv_ext0Zwsv_ext1Zwsv_ext2Zdw_ext0Zdw_ext1Zdw_ext2rW   rO   rP   rq   Zdw1rQ   rS   rT   rr   Zdw2rU   rs   rt   ru   Zdw3rv   r}   r~   r   Zdw4r   Za_is_bigger_sideZb_is_bigger_siderz   rw   rx   ry   Zp4r{   r|   r   r   r   Zdw5r   r   r   r   Zdw6r   Zdx7Zdy7Zdz7Zdw7Zattn7Zdx8Zdy8Zdz8Zdw8Zattn8Zdx9Zdy9Zdz9Zdw9Zattn9Zdx10Zdy10Zdz10Zdw10Zattn10r   r   Z	attn_ext2r	   r	   r
   noise4d  s"  











$
2$
2$
2$
2$
2









$
2$
2$
2$
2$
2














$
2$
2$
2$
2$
2$
2$
2$
2$
2$
2














$
2$
2$
2$
2$
2$
2$
2$
2$
2$
2$
"$
"$
"zOpenSimplex.noise4dN)__name__
__module____qualname____doc__DEFAULT_SEEDr-   r7   r;   r?   rX   r   r   r	   r	   r	   r
   r   X   s    	h   sr   )r   sysctypesr   mathr   r   version_infor@   rA   rZ   r[   r   r   rB   r\   r   r   r/   r'   r=   r   objectr   r	   r	   r	   r
   <module>   s,    
