(self, source: str)
| 27 | MAX_PASSES = 10 |
| 28 | |
| 29 | def decode_all(self, source: str) -> str: |
| 30 | try: |
| 31 | for _ in range(self.MAX_PASSES): |
| 32 | decoded = self._single_pass(source) |
| 33 | if decoded == source: |
| 34 | break |
| 35 | source = decoded |
| 36 | except RecursionError: |
| 37 | pass # return whatever we have so far |
| 38 | except Exception: |
| 39 | pass # return whatever we have so far |
| 40 | return source |
| 41 | |
| 42 | def _single_pass(self, source: str) -> str: |
| 43 | # 0a. AST constant folding: handles b64/b85 chains, chr(ord(i)-N), |