JFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3RbrJFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbra XC?h@spgdZddlZddlZddlmZddlmZeZejZ ej Z ddZ dZ ddd Z dd d Zdd d ZdS))choice randbelowrandbits SystemRandom token_bytes token_hex token_urlsafecompare_digestN)r)rcCs|dkrtdt|S)Nr zUpper bound must be positive.) ValueError_sysrandZ _randbelow)Zexclusive_upper_boundr ,/opt/alt/python39/lib64/python3.9/secrets.pyrsr cCs|dur t}t|S)N)DEFAULT_ENTROPYr Z randbytesnbytesr r r r"s rcCstt|dS)Nascii)binasciiZhexlifyrdecoderr r r r0s rcCst|}t|ddS)N=r)rbase64Zurlsafe_b64encoderstripr)rtokr r r r=s r)N)N)N)__all__rrZhmacrZrandomrr Z getrandbitsrrrrrrrr r r r  s