This commit is contained in:
Eric Froemling 2022-07-06 15:41:30 -07:00
parent 5e9d38176e
commit 142c4eb5cc
No known key found for this signature in database
GPG Key ID: 89C93F0F8D6D5A98
14 changed files with 196 additions and 137 deletions

View File

@ -2589,12 +2589,12 @@
"assets/build/pylib-android/abc.py": "https://files.ballistica.net/cache/ba1/dd/5d/479e9cf06248ed39cf30d7849609",
"assets/build/pylib-android/aifc.py": "https://files.ballistica.net/cache/ba1/e4/58/a75af0c597af1ed6a69b0d0408f3",
"assets/build/pylib-android/antigravity.py": "https://files.ballistica.net/cache/ba1/bc/5c/f8951b7abdac55a1a32d74b2fe50",
"assets/build/pylib-android/argparse.py": "https://files.ballistica.net/cache/ba1/5c/48/1c36b200d5658524678417da965e",
"assets/build/pylib-android/argparse.py": "https://files.ballistica.net/cache/ba1/a1/a6/6f3a5154526eaa600b76a533b126",
"assets/build/pylib-android/ast.py": "https://files.ballistica.net/cache/ba1/e4/5b/b25a82736f1a9f4e1f1f8b451a3a",
"assets/build/pylib-android/asynchat.py": "https://files.ballistica.net/cache/ba1/6a/73/7ba88b8e06566c40987426d73894",
"assets/build/pylib-android/asyncio/__init__.py": "https://files.ballistica.net/cache/ba1/03/13/e0b34767cf91bd9a931a7b5fa7a9",
"assets/build/pylib-android/asyncio/__main__.py": "https://files.ballistica.net/cache/ba1/00/05/038811ebbd5ac847aaf99cd8f2f9",
"assets/build/pylib-android/asyncio/base_events.py": "https://files.ballistica.net/cache/ba1/b8/aa/c817666fba2e8d017790b7c86f83",
"assets/build/pylib-android/asyncio/base_events.py": "https://files.ballistica.net/cache/ba1/55/96/175d7ac6b04ae9b66a5e00ec6139",
"assets/build/pylib-android/asyncio/base_futures.py": "https://files.ballistica.net/cache/ba1/89/ee/3f980b3d7b480c7fe3d34ff876f5",
"assets/build/pylib-android/asyncio/base_subprocess.py": "https://files.ballistica.net/cache/ba1/72/c7/ccf47dbfa076fdf5dd38474a18dc",
"assets/build/pylib-android/asyncio/base_tasks.py": "https://files.ballistica.net/cache/ba1/f0/b8/3f75f12f1851216b9a16772dfa63",
@ -2611,7 +2611,7 @@
"assets/build/pylib-android/asyncio/protocols.py": "https://files.ballistica.net/cache/ba1/17/b6/4a3fe4965cd04ad1092399ce7316",
"assets/build/pylib-android/asyncio/queues.py": "https://files.ballistica.net/cache/ba1/43/4d/26f1ed380b3bda3e2df2e37ca877",
"assets/build/pylib-android/asyncio/runners.py": "https://files.ballistica.net/cache/ba1/7f/48/6292d754af0b0344f39a9adc31c5",
"assets/build/pylib-android/asyncio/selector_events.py": "https://files.ballistica.net/cache/ba1/cc/25/b045179279dcf12d6e49c8a0a57d",
"assets/build/pylib-android/asyncio/selector_events.py": "https://files.ballistica.net/cache/ba1/9e/0b/f3f5ae0768044d1335791ad7e194",
"assets/build/pylib-android/asyncio/sslproto.py": "https://files.ballistica.net/cache/ba1/c5/2b/1050d935d2f32dcac57b7ac22ef7",
"assets/build/pylib-android/asyncio/staggered.py": "https://files.ballistica.net/cache/ba1/f5/44/45851798434a9265934b4bb83368",
"assets/build/pylib-android/asyncio/streams.py": "https://files.ballistica.net/cache/ba1/2d/04/1224d72abd97b32e32663254accd",
@ -2644,8 +2644,8 @@
"assets/build/pylib-android/compileall.py": "https://files.ballistica.net/cache/ba1/18/01/0974dc4f20e7417e91459b15952f",
"assets/build/pylib-android/concurrent/__init__.py": "https://files.ballistica.net/cache/ba1/37/3e/87f9ab4111608e0442bc82ff572f",
"assets/build/pylib-android/concurrent/futures/__init__.py": "https://files.ballistica.net/cache/ba1/0a/eb/2954f0e71c4a1e71db5c13548aec",
"assets/build/pylib-android/concurrent/futures/_base.py": "https://files.ballistica.net/cache/ba1/57/ac/0ba723368916915f826882c29b93",
"assets/build/pylib-android/concurrent/futures/process.py": "https://files.ballistica.net/cache/ba1/83/32/82f0df449e026612d64737bd3e9b",
"assets/build/pylib-android/concurrent/futures/_base.py": "https://files.ballistica.net/cache/ba1/77/02/cd3c13ded2262bb023361a801345",
"assets/build/pylib-android/concurrent/futures/process.py": "https://files.ballistica.net/cache/ba1/fe/ed/9bd137c04de2fa8045a307c50626",
"assets/build/pylib-android/concurrent/futures/thread.py": "https://files.ballistica.net/cache/ba1/54/c0/f14c081285722cd0bfdf7a6a3990",
"assets/build/pylib-android/configparser.py": "https://files.ballistica.net/cache/ba1/db/70/a2ddcd9e05e9fb0d6d10afc21510",
"assets/build/pylib-android/contextlib.py": "https://files.ballistica.net/cache/ba1/4a/ed/5ea5c6e0272355d280fbe712dfb8",
@ -2669,18 +2669,18 @@
"assets/build/pylib-android/curses/panel.py": "https://files.ballistica.net/cache/ba1/42/0f/580d5d6de90a64ade37f0a8e4696",
"assets/build/pylib-android/curses/textpad.py": "https://files.ballistica.net/cache/ba1/a9/3f/ac729e39c1c9fcecd8e3525c7079",
"assets/build/pylib-android/dataclasses.py": "https://files.ballistica.net/cache/ba1/76/e6/8a82672bae89691b0a0dabd15cc7",
"assets/build/pylib-android/datetime.py": "https://files.ballistica.net/cache/ba1/a6/76/7a8cfa10bdd911d286648c2b4e26",
"assets/build/pylib-android/datetime.py": "https://files.ballistica.net/cache/ba1/31/dc/651eaa03a087f60726a944a2ee92",
"assets/build/pylib-android/decimal.py": "https://files.ballistica.net/cache/ba1/92/94/b8be378718b3ede8f05f07aa257b",
"assets/build/pylib-android/difflib.py": "https://files.ballistica.net/cache/ba1/4a/86/a4728b9e0626216560ea205122d2",
"assets/build/pylib-android/difflib.py": "https://files.ballistica.net/cache/ba1/b6/80/e34a54d317e56d1cd9778457afc5",
"assets/build/pylib-android/dis.py": "https://files.ballistica.net/cache/ba1/99/a5/3074e813c5188b690b6bac77f7f4",
"assets/build/pylib-android/doctest.py": "https://files.ballistica.net/cache/ba1/c9/12/81d2883b80b606cc85691acb2820",
"assets/build/pylib-android/doctest.py": "https://files.ballistica.net/cache/ba1/dd/f2/64a5506888615fe045917a322b80",
"assets/build/pylib-android/email/__init__.py": "https://files.ballistica.net/cache/ba1/2b/f0/8c85ab15e7cdbdaa0e1705223012",
"assets/build/pylib-android/email/_encoded_words.py": "https://files.ballistica.net/cache/ba1/08/fa/de22bc96e1e332bbe1cf76162a1c",
"assets/build/pylib-android/email/_header_value_parser.py": "https://files.ballistica.net/cache/ba1/2d/c8/cbec982a4900ba1c15ea815624d7",
"assets/build/pylib-android/email/_encoded_words.py": "https://files.ballistica.net/cache/ba1/f1/20/54b74af7ab4f03f89f54cfa29b1b",
"assets/build/pylib-android/email/_header_value_parser.py": "https://files.ballistica.net/cache/ba1/31/3a/dbc2461fc26b2e3adf28c4796b1c",
"assets/build/pylib-android/email/_parseaddr.py": "https://files.ballistica.net/cache/ba1/ff/35/b427b328dc4c49aae4db0e2bfc72",
"assets/build/pylib-android/email/_policybase.py": "https://files.ballistica.net/cache/ba1/19/f9/844a8a848bc5670a810d06f0a6de",
"assets/build/pylib-android/email/base64mime.py": "https://files.ballistica.net/cache/ba1/e0/5f/25fbb5f0dde9de81ef3a6177a01f",
"assets/build/pylib-android/email/charset.py": "https://files.ballistica.net/cache/ba1/a0/ba/c0b3f8daa9769adb9ba291937736",
"assets/build/pylib-android/email/charset.py": "https://files.ballistica.net/cache/ba1/d0/28/dac9a2adff3763f6ae413f26df95",
"assets/build/pylib-android/email/contentmanager.py": "https://files.ballistica.net/cache/ba1/c2/1d/0acd924b8731b932e4a6ced58d77",
"assets/build/pylib-android/email/encoders.py": "https://files.ballistica.net/cache/ba1/7a/9c/eca8d9e60fa733457fc32facd2fe",
"assets/build/pylib-android/email/errors.py": "https://files.ballistica.net/cache/ba1/93/32/f046674ffc01766eeb9c54dd0830",
@ -2828,7 +2828,7 @@
"assets/build/pylib-android/enum.py": "https://files.ballistica.net/cache/ba1/56/4c/86116596f3af3892c7d77f5a34b2",
"assets/build/pylib-android/filecmp.py": "https://files.ballistica.net/cache/ba1/0e/1e/8f865dd6bcc2d60880839762e007",
"assets/build/pylib-android/fileinput.py": "https://files.ballistica.net/cache/ba1/9e/5c/ff3df618103ee025749af647a0d8",
"assets/build/pylib-android/fnmatch.py": "https://files.ballistica.net/cache/ba1/79/a3/778dda2ff1d92a37aa3709ec141c",
"assets/build/pylib-android/fnmatch.py": "https://files.ballistica.net/cache/ba1/7d/7a/889383848f167117d0b473e1bc39",
"assets/build/pylib-android/fractions.py": "https://files.ballistica.net/cache/ba1/77/8a/fa5448bc945714954bd2e4bd0fc1",
"assets/build/pylib-android/ftplib.py": "https://files.ballistica.net/cache/ba1/15/f9/66c87baf6cd7be154d0b904a131a",
"assets/build/pylib-android/functools.py": "https://files.ballistica.net/cache/ba1/5b/5c/09cccab90e637eb0de81deb20cad",
@ -2843,7 +2843,7 @@
"assets/build/pylib-android/heapq.py": "https://files.ballistica.net/cache/ba1/63/79/bb9abc2fb3665fffc59e588aba1f",
"assets/build/pylib-android/hmac.py": "https://files.ballistica.net/cache/ba1/1d/a6/4a78ec8815727fd28b0e8c10ef59",
"assets/build/pylib-android/html/__init__.py": "https://files.ballistica.net/cache/ba1/63/0b/9695269a02f0ec6d8b2b928d1f3f",
"assets/build/pylib-android/html/entities.py": "https://files.ballistica.net/cache/ba1/02/4d/e42a17593176e35ff5da8d720cf9",
"assets/build/pylib-android/html/entities.py": "https://files.ballistica.net/cache/ba1/51/10/faad91b2e1fe51ade90c4618e88f",
"assets/build/pylib-android/html/parser.py": "https://files.ballistica.net/cache/ba1/f3/63/57d38fd5ba0432c401807fdd216e",
"assets/build/pylib-android/http/__init__.py": "https://files.ballistica.net/cache/ba1/80/a7/800c5f996f53155c5a626cdd6613",
"assets/build/pylib-android/http/client.py": "https://files.ballistica.net/cache/ba1/73/6e/d63677c78de7bebec669debb7d79",
@ -2872,7 +2872,7 @@
"assets/build/pylib-android/importlib/util.py": "https://files.ballistica.net/cache/ba1/5c/13/dc6eb9c324c3a7a30680f56b2712",
"assets/build/pylib-android/inspect.py": "https://files.ballistica.net/cache/ba1/68/27/da7d2295c7fa8d60d529f7155d9f",
"assets/build/pylib-android/io.py": "https://files.ballistica.net/cache/ba1/9b/0e/b9fb6e1de0991b21e97e9d1997e1",
"assets/build/pylib-android/ipaddress.py": "https://files.ballistica.net/cache/ba1/20/70/ef510c93d0bb97e371a08e2bdbe1",
"assets/build/pylib-android/ipaddress.py": "https://files.ballistica.net/cache/ba1/8e/de/a27a5427d9ef1bb7758e50ba20eb",
"assets/build/pylib-android/json/__init__.py": "https://files.ballistica.net/cache/ba1/0a/6b/bb8407abb743492bf84a2e472f7c",
"assets/build/pylib-android/json/decoder.py": "https://files.ballistica.net/cache/ba1/3f/bf/6fd2a01d31cd85e4c21cf2c0a5c8",
"assets/build/pylib-android/json/encoder.py": "https://files.ballistica.net/cache/ba1/57/77/3f0ccd21441273ff30116fa76ba3",
@ -2898,7 +2898,7 @@
"assets/build/pylib-android/operator.py": "https://files.ballistica.net/cache/ba1/c7/e1/faab3be799d4a4bfd844c2425b04",
"assets/build/pylib-android/optparse.py": "https://files.ballistica.net/cache/ba1/0f/08/ec8ce5e48392a3f9bdc3c07f49cc",
"assets/build/pylib-android/os.py": "https://files.ballistica.net/cache/ba1/98/a1/d44b87acd1e25e7fe895f0d7ce86",
"assets/build/pylib-android/pathlib.py": "https://files.ballistica.net/cache/ba1/ff/e4/5ff7175e0173b5d9d3789af09275",
"assets/build/pylib-android/pathlib.py": "https://files.ballistica.net/cache/ba1/8a/c7/07ab66e2e8fc2ca436d4c129377f",
"assets/build/pylib-android/pdb.py": "https://files.ballistica.net/cache/ba1/bf/d0/f2d06639315624e00183fd69c46d",
"assets/build/pylib-android/pickle.py": "https://files.ballistica.net/cache/ba1/b5/c5/6a5af50d16fc23f35633e8c3722b",
"assets/build/pylib-android/pickletools.py": "https://files.ballistica.net/cache/ba1/72/c5/182517538ac4e0c1b7d25bde80e4",
@ -2915,19 +2915,19 @@
"assets/build/pylib-android/py_compile.py": "https://files.ballistica.net/cache/ba1/a7/9e/7f4e8da084e2d0761352120a331c",
"assets/build/pylib-android/pyclbr.py": "https://files.ballistica.net/cache/ba1/e2/ed/7a1e35b368c6de0b51b9d9edc4a1",
"assets/build/pylib-android/pydoc.py": "https://files.ballistica.net/cache/ba1/aa/e3/6409048f80e37ae5737adc9eafc9",
"assets/build/pylib-android/queue.py": "https://files.ballistica.net/cache/ba1/3a/2f/3f5f8f97d6aea42bff93351b960a",
"assets/build/pylib-android/queue.py": "https://files.ballistica.net/cache/ba1/6e/d7/04bd9d41783a2e75af05e14241a9",
"assets/build/pylib-android/quopri.py": "https://files.ballistica.net/cache/ba1/0f/ad/93ff84558a4d8ca0607ab2c35df2",
"assets/build/pylib-android/random.py": "https://files.ballistica.net/cache/ba1/a8/ed/a10fe4ba8a637263efa5d6b5fec7",
"assets/build/pylib-android/re.py": "https://files.ballistica.net/cache/ba1/28/6f/c6088e235e06ea35a34bdd28f73f",
"assets/build/pylib-android/reprlib.py": "https://files.ballistica.net/cache/ba1/81/66/44ee9dceee6943006c4500ee3303",
"assets/build/pylib-android/rlcompleter.py": "https://files.ballistica.net/cache/ba1/41/1a/6e68fca92c466f362f227621ed81",
"assets/build/pylib-android/runpy.py": "https://files.ballistica.net/cache/ba1/41/67/93f1175414b00680fd8eaacfc485",
"assets/build/pylib-android/runpy.py": "https://files.ballistica.net/cache/ba1/f1/db/abb67fceafd6b354c3851f069884",
"assets/build/pylib-android/sched.py": "https://files.ballistica.net/cache/ba1/48/ff/80ac9aee80b53416c702c2a856d4",
"assets/build/pylib-android/secrets.py": "https://files.ballistica.net/cache/ba1/e2/1b/ffc4c1422b6ac0eda4924d2f241a",
"assets/build/pylib-android/selectors.py": "https://files.ballistica.net/cache/ba1/ba/53/3b7515983548e5de15ccd7d37fb7",
"assets/build/pylib-android/shelve.py": "https://files.ballistica.net/cache/ba1/70/fa/16d6647f0b0c8d1db51e54e5db92",
"assets/build/pylib-android/shlex.py": "https://files.ballistica.net/cache/ba1/bf/d2/45bdf01bfb2a8d468d6ff0534fb6",
"assets/build/pylib-android/shutil.py": "https://files.ballistica.net/cache/ba1/13/18/0ab42a7897305d9ad11264a82f2a",
"assets/build/pylib-android/shutil.py": "https://files.ballistica.net/cache/ba1/a6/a2/068d0972d8c54309226a95a62f2c",
"assets/build/pylib-android/signal.py": "https://files.ballistica.net/cache/ba1/49/e4/1b6cac607c01ffaccfc26f21eede",
"assets/build/pylib-android/site.py": "https://files.ballistica.net/cache/ba1/f0/15/6dc1d610a17dcd53be135b7d57a3",
"assets/build/pylib-android/smtpd.py": "https://files.ballistica.net/cache/ba1/d3/7b/4881d213384e3e4df8358906ea26",
@ -2935,19 +2935,19 @@
"assets/build/pylib-android/sndhdr.py": "https://files.ballistica.net/cache/ba1/d8/db/7f9e8c520cd68d3cf3308e3a9923",
"assets/build/pylib-android/socket.py": "https://files.ballistica.net/cache/ba1/b5/38/017a990c761d8d75af5a969661f3",
"assets/build/pylib-android/socketserver.py": "https://files.ballistica.net/cache/ba1/0f/54/a474bf8ddc82d8155de1344e1318",
"assets/build/pylib-android/sqlite3/__init__.py": "https://files.ballistica.net/cache/ba1/ff/a9/7e5749086a4bc2e5921911cb4798",
"assets/build/pylib-android/sqlite3/__init__.py": "https://files.ballistica.net/cache/ba1/7a/d3/a97bad7e5ce8d0e9cde349b1181e",
"assets/build/pylib-android/sqlite3/dbapi2.py": "https://files.ballistica.net/cache/ba1/6a/2b/5618418e0c8edfc04b6ff2f1058c",
"assets/build/pylib-android/sqlite3/dump.py": "https://files.ballistica.net/cache/ba1/1c/d8/dc3fb256cbb05c8fffb52c52404a",
"assets/build/pylib-android/sre_compile.py": "https://files.ballistica.net/cache/ba1/96/3a/830deabdb104a1d219f88ad9c090",
"assets/build/pylib-android/sre_constants.py": "https://files.ballistica.net/cache/ba1/87/9d/78b7e287798d388ac700586308ce",
"assets/build/pylib-android/sre_parse.py": "https://files.ballistica.net/cache/ba1/81/4a/21861aad12cf254a66c434dac9dd",
"assets/build/pylib-android/ssl.py": "https://files.ballistica.net/cache/ba1/69/f9/22520674c24b0e0a3eb22620349c",
"assets/build/pylib-android/sre_compile.py": "https://files.ballistica.net/cache/ba1/fc/be/bb3ebf34da4f6222e45f1e2e7a65",
"assets/build/pylib-android/sre_constants.py": "https://files.ballistica.net/cache/ba1/fc/54/c33aefcbc2dab38c050d444a3548",
"assets/build/pylib-android/sre_parse.py": "https://files.ballistica.net/cache/ba1/09/5d/b45c4c248ea9c70430f858e950f9",
"assets/build/pylib-android/ssl.py": "https://files.ballistica.net/cache/ba1/6d/a5/0555a143cd530ef6d04dfcfdf278",
"assets/build/pylib-android/stat.py": "https://files.ballistica.net/cache/ba1/03/1d/acbfa83d8d94d8a483c6a884b589",
"assets/build/pylib-android/statistics.py": "https://files.ballistica.net/cache/ba1/58/75/7788301683ae47efa836ef9cdb7c",
"assets/build/pylib-android/string.py": "https://files.ballistica.net/cache/ba1/71/7f/8d19b04aea3ea1fc6bb49534d244",
"assets/build/pylib-android/stringprep.py": "https://files.ballistica.net/cache/ba1/20/41/fcfc5f510286ead5f7f4678ac9ec",
"assets/build/pylib-android/struct.py": "https://files.ballistica.net/cache/ba1/37/67/74dea8e8f3831e802c3b5288e901",
"assets/build/pylib-android/subprocess.py": "https://files.ballistica.net/cache/ba1/d1/a4/91085325afda3ef429f83d362cde",
"assets/build/pylib-android/subprocess.py": "https://files.ballistica.net/cache/ba1/49/04/1b24f46851ca9d92a4c7559ae349",
"assets/build/pylib-android/sunau.py": "https://files.ballistica.net/cache/ba1/e5/20/6b38eb6fd8a07086d219d9ab269b",
"assets/build/pylib-android/symtable.py": "https://files.ballistica.net/cache/ba1/51/1e/6efd09781ab558d4ccfdfda3204f",
"assets/build/pylib-android/sysconfig.py": "https://files.ballistica.net/cache/ba1/ab/ca/56bd2cc4682412d0ed87ce887e3e",
@ -2957,7 +2957,7 @@
"assets/build/pylib-android/tempfile.py": "https://files.ballistica.net/cache/ba1/67/78/34399b155c0db5f48a0ec8ea5c92",
"assets/build/pylib-android/textwrap.py": "https://files.ballistica.net/cache/ba1/3e/86/05b5dfd9776a28ada091b543077c",
"assets/build/pylib-android/this.py": "https://files.ballistica.net/cache/ba1/a8/fa/4d1152b689d75bc1a997ff34b799",
"assets/build/pylib-android/threading.py": "https://files.ballistica.net/cache/ba1/c3/db/b53c246ab21d7f8143124dcca0a8",
"assets/build/pylib-android/threading.py": "https://files.ballistica.net/cache/ba1/e4/09/0ae2163973a67d4b686c199caec2",
"assets/build/pylib-android/timeit.py": "https://files.ballistica.net/cache/ba1/68/56/ef8e9c86fdd966f0e8fcc03160ac",
"assets/build/pylib-android/token.py": "https://files.ballistica.net/cache/ba1/de/5c/e38eb5b2f3f3f4e01dbce7f25c86",
"assets/build/pylib-android/tokenize.py": "https://files.ballistica.net/cache/ba1/88/72/7d33fc2a2e89d0eeb2f2c4c20b66",
@ -2970,7 +2970,7 @@
"assets/build/pylib-android/urllib/__init__.py": "https://files.ballistica.net/cache/ba1/b0/56/87601ed47a5181d1e6a40eb4ea40",
"assets/build/pylib-android/urllib/error.py": "https://files.ballistica.net/cache/ba1/07/8c/573897fc3bdc6d3e2e8d449f17c7",
"assets/build/pylib-android/urllib/parse.py": "https://files.ballistica.net/cache/ba1/b8/d9/6cf19b9e635a9a8dcd9ac2e397de",
"assets/build/pylib-android/urllib/request.py": "https://files.ballistica.net/cache/ba1/5d/d3/e1a8e22fa94dfc9b70a763fd3d2d",
"assets/build/pylib-android/urllib/request.py": "https://files.ballistica.net/cache/ba1/ac/b2/4f16fc515abc96d77d3eb3666cc5",
"assets/build/pylib-android/urllib/response.py": "https://files.ballistica.net/cache/ba1/ac/f3/2d5bd4fe5cfcf640e8be71dec9a4",
"assets/build/pylib-android/urllib/robotparser.py": "https://files.ballistica.net/cache/ba1/a4/52/f0d03835bb08e08195aeebd05e04",
"assets/build/pylib-android/uu.py": "https://files.ballistica.net/cache/ba1/a1/89/070ed8553858a75fcafae4b7bd37",
@ -2990,8 +2990,8 @@
"assets/build/pylib-android/xml/dom/pulldom.py": "https://files.ballistica.net/cache/ba1/69/93/695baf453ca1030e7f6a62eb977b",
"assets/build/pylib-android/xml/dom/xmlbuilder.py": "https://files.ballistica.net/cache/ba1/e2/28/cb659e6d308904b5b8349b2fff52",
"assets/build/pylib-android/xml/etree/ElementInclude.py": "https://files.ballistica.net/cache/ba1/bf/14/b35813d60c28bb05f1528c80f062",
"assets/build/pylib-android/xml/etree/ElementPath.py": "https://files.ballistica.net/cache/ba1/45/df/c9faaeb5c2ced3983cecd9a5d527",
"assets/build/pylib-android/xml/etree/ElementTree.py": "https://files.ballistica.net/cache/ba1/81/7e/10cfd4e42d6658be3a2004acd383",
"assets/build/pylib-android/xml/etree/ElementPath.py": "https://files.ballistica.net/cache/ba1/37/66/1c977331552663a6d344885a2253",
"assets/build/pylib-android/xml/etree/ElementTree.py": "https://files.ballistica.net/cache/ba1/25/f0/aecd1da0aba9b78b4fa3134ae257",
"assets/build/pylib-android/xml/etree/__init__.py": "https://files.ballistica.net/cache/ba1/38/44/1792ae5542c1ae5248568ef5abbd",
"assets/build/pylib-android/xml/etree/cElementTree.py": "https://files.ballistica.net/cache/ba1/6f/39/4c840e5eb0e09f709569154159ba",
"assets/build/pylib-android/xml/parsers/__init__.py": "https://files.ballistica.net/cache/ba1/db/92/7283051e5e1c7426985835f506b9",
@ -3006,7 +3006,7 @@
"assets/build/pylib-android/xmlrpc/client.py": "https://files.ballistica.net/cache/ba1/4c/e4/4a92e3e83fdbf8e1578c726fd438",
"assets/build/pylib-android/xmlrpc/server.py": "https://files.ballistica.net/cache/ba1/eb/1a/fae274a8e90aa97ade20712bfe2e",
"assets/build/pylib-android/zipapp.py": "https://files.ballistica.net/cache/ba1/40/ae/178305c27d72cc46ad2220b504ec",
"assets/build/pylib-android/zipfile.py": "https://files.ballistica.net/cache/ba1/f1/ad/05a1db7bc53aaf75eb6d3317f3c0",
"assets/build/pylib-android/zipfile.py": "https://files.ballistica.net/cache/ba1/a2/9f/b75ac1015178f4186f59cf7b1adc",
"assets/build/pylib-android/zipimport.py": "https://files.ballistica.net/cache/ba1/20/ce/c481892e53a1422e4b87119b1acf",
"assets/build/pylib-android/zoneinfo/__init__.py": "https://files.ballistica.net/cache/ba1/b7/4e/bea553b4c2a2e63902c5cb446579",
"assets/build/pylib-android/zoneinfo/_common.py": "https://files.ballistica.net/cache/ba1/ae/e7/6145bfdca63840d5168082339fe0",
@ -3992,50 +3992,50 @@
"assets/src/ba_data/python/ba/_generated/__init__.py": "https://files.ballistica.net/cache/ba1/ee/e8/cad05aa531c7faf7ff7b96db7f6e",
"assets/src/ba_data/python/ba/_generated/enums.py": "https://files.ballistica.net/cache/ba1/b2/e5/0ee0561e16257a32830645239f34",
"ballisticacore-windows/Generic/BallisticaCore.ico": "https://files.ballistica.net/cache/ba1/89/c0/e32c7d2a35dc9aef57cc73b0911a",
"build/prefab/full/linux_arm64_gui/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/70/3b/0c7d541b3856884a747ff4606125",
"build/prefab/full/linux_arm64_gui/release/ballisticacore": "https://files.ballistica.net/cache/ba1/af/8b/9191ae1c05ed11d77bf9099abdaf",
"build/prefab/full/linux_arm64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/8f/88/e96a5cf5728280557a229c3cd196",
"build/prefab/full/linux_arm64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/40/8c/e3932b01bfb03bf3d930fa6b0075",
"build/prefab/full/linux_x86_64_gui/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/4e/dd/cceaa79ecc33d116254129115ab6",
"build/prefab/full/linux_x86_64_gui/release/ballisticacore": "https://files.ballistica.net/cache/ba1/bc/d5/2992911e42d4019062a5ee7922be",
"build/prefab/full/linux_x86_64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/2d/75/b81d14e56fac5cb36204b99d438b",
"build/prefab/full/linux_x86_64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/bd/35/af73fd25f90b260a7e1f2b45604a",
"build/prefab/full/mac_arm64_gui/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/a4/b9/2d9d7fdf7f8fc36a395396c17396",
"build/prefab/full/mac_arm64_gui/release/ballisticacore": "https://files.ballistica.net/cache/ba1/ac/ec/cbd0cd6b30ffc5e9899df476ff75",
"build/prefab/full/mac_arm64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/fb/db/28557fffa11dc30193dfdf2bc1cc",
"build/prefab/full/mac_arm64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/cb/34/83e11c5a79dcb4a925b05a65741c",
"build/prefab/full/mac_x86_64_gui/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/d5/12/cd06cac7c7bb070397da839850df",
"build/prefab/full/mac_x86_64_gui/release/ballisticacore": "https://files.ballistica.net/cache/ba1/da/87/5df008ea5c203eb4a97bfa9648fe",
"build/prefab/full/mac_x86_64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/93/ca/2afe9fc10c37c16a91a556350be0",
"build/prefab/full/mac_x86_64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/19/cc/c1bb1e323387f590c3ad649cf2b1",
"build/prefab/full/windows_x86_gui/debug/BallisticaCore.exe": "https://files.ballistica.net/cache/ba1/a0/31/1f941c66e9290a4ae69f5f4b0aa4",
"build/prefab/full/windows_x86_gui/release/BallisticaCore.exe": "https://files.ballistica.net/cache/ba1/74/15/89bb4aa1472f0848808b215fbab6",
"build/prefab/full/windows_x86_server/debug/dist/BallisticaCoreHeadless.exe": "https://files.ballistica.net/cache/ba1/25/a3/4c7334e53c11997b7cf292c96da8",
"build/prefab/full/windows_x86_server/release/dist/BallisticaCoreHeadless.exe": "https://files.ballistica.net/cache/ba1/64/e0/f9f926a34c2e0243419b20a28138",
"build/prefab/lib/linux_arm64_gui/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/11/a6/7db8addcd876b1933e16f380696a",
"build/prefab/lib/linux_arm64_gui/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/c7/8a/3d8501efecca4f20b9702d24f9db",
"build/prefab/lib/linux_arm64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/74/fb/8ba0b3bddf4e0f1184a68e648959",
"build/prefab/lib/linux_arm64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/24/ab/393d381b77a85cdbba6c47d8a67a",
"build/prefab/lib/linux_x86_64_gui/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/da/23/026d70f770273a92def633d57935",
"build/prefab/lib/linux_x86_64_gui/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/35/e8/37eeb762bbae9daffae6d5d69b7e",
"build/prefab/lib/linux_x86_64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/3a/6b/0e26e2ab6eab60258ddcab0601fd",
"build/prefab/lib/linux_x86_64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/70/38/7ff58456d824e3461c6a1a3f3f5a",
"build/prefab/lib/mac_arm64_gui/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/10/39/9501e3afd9a1a0af817989e18c7d",
"build/prefab/lib/mac_arm64_gui/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/42/f6/e8943073f00d93b2e2cd1822916a",
"build/prefab/lib/mac_arm64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/67/82/220d9a12ed10c885aadc02b9919b",
"build/prefab/lib/mac_arm64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/3f/c5/dc64be0a0f9d09630074e630312b",
"build/prefab/lib/mac_x86_64_gui/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/f2/5f/e75027e1f6f31fae1f1d20a8b2ee",
"build/prefab/lib/mac_x86_64_gui/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/1d/11/18a94007cbcaf2e10c46fc367f7a",
"build/prefab/lib/mac_x86_64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/51/a8/414d1a0ad00982cd961f0a29a501",
"build/prefab/lib/mac_x86_64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/4b/0c/26593bd6f6191a19531ce1dd492b",
"build/prefab/lib/windows/Debug_Win32/BallisticaCoreGenericInternal.lib": "https://files.ballistica.net/cache/ba1/62/9e/e8679467880812a2a31266704517",
"build/prefab/lib/windows/Debug_Win32/BallisticaCoreGenericInternal.pdb": "https://files.ballistica.net/cache/ba1/56/f1/af68b9666c2ce5038b813719c458",
"build/prefab/lib/windows/Debug_Win32/BallisticaCoreHeadlessInternal.lib": "https://files.ballistica.net/cache/ba1/d2/a9/9087249ba5a8873f59503a7cb3e4",
"build/prefab/lib/windows/Debug_Win32/BallisticaCoreHeadlessInternal.pdb": "https://files.ballistica.net/cache/ba1/fd/3f/57f64be3b335dbbe0f261edf0861",
"build/prefab/lib/windows/Release_Win32/BallisticaCoreGenericInternal.lib": "https://files.ballistica.net/cache/ba1/8b/cf/cc26378a8800b0efd14455e7f6b5",
"build/prefab/lib/windows/Release_Win32/BallisticaCoreGenericInternal.pdb": "https://files.ballistica.net/cache/ba1/64/34/18f21d11fda7f1472e0212169904",
"build/prefab/lib/windows/Release_Win32/BallisticaCoreHeadlessInternal.lib": "https://files.ballistica.net/cache/ba1/24/71/93680835ec6af90acf9d4e2fd63f",
"build/prefab/lib/windows/Release_Win32/BallisticaCoreHeadlessInternal.pdb": "https://files.ballistica.net/cache/ba1/af/ae/86b7f88249a684530c6d30831889",
"build/prefab/full/linux_arm64_gui/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/a6/be/d5bc2a6a6d67cb789a71fc2dc799",
"build/prefab/full/linux_arm64_gui/release/ballisticacore": "https://files.ballistica.net/cache/ba1/0d/7d/4df2faa615a02cf848940e7b1b76",
"build/prefab/full/linux_arm64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/72/74/f9672eddfbb64b63f08a654aa1cb",
"build/prefab/full/linux_arm64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/5a/b2/a44f6adf17c52e02cefa8a470d6a",
"build/prefab/full/linux_x86_64_gui/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/c1/54/4e2c0df1cc4c88c8527e9544730b",
"build/prefab/full/linux_x86_64_gui/release/ballisticacore": "https://files.ballistica.net/cache/ba1/8d/49/f27bec9eae7154815f4ef1a696f9",
"build/prefab/full/linux_x86_64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/c9/a6/9509207a918bedc56acd64d91530",
"build/prefab/full/linux_x86_64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/3d/cd/fb1d17ea9dc0e6d8ea567c458b40",
"build/prefab/full/mac_arm64_gui/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/10/49/029f26b735c3141db821d47ae20c",
"build/prefab/full/mac_arm64_gui/release/ballisticacore": "https://files.ballistica.net/cache/ba1/33/e7/2f84fd589ebdd26d8d5f3a4bd01a",
"build/prefab/full/mac_arm64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/1e/61/97ba59db0aedfc5762e64a28c4cd",
"build/prefab/full/mac_arm64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/7d/c4/979fbe7a5f16658cad8f4cc3c6d9",
"build/prefab/full/mac_x86_64_gui/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/10/76/5fe6cadeaba79c24cbeac4b4fb0b",
"build/prefab/full/mac_x86_64_gui/release/ballisticacore": "https://files.ballistica.net/cache/ba1/39/7e/d5bc410c8ca95106501dc29a3ef3",
"build/prefab/full/mac_x86_64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/c9/80/8900a0cabb1ebbe3fa7f01ca0d18",
"build/prefab/full/mac_x86_64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/7f/fb/35f70beb4b0bb820af29de54f34f",
"build/prefab/full/windows_x86_gui/debug/BallisticaCore.exe": "https://files.ballistica.net/cache/ba1/2b/79/a09f270f62268b8532ba53e30445",
"build/prefab/full/windows_x86_gui/release/BallisticaCore.exe": "https://files.ballistica.net/cache/ba1/fd/4a/42a24526e581b6a0021c0a61c0a2",
"build/prefab/full/windows_x86_server/debug/dist/BallisticaCoreHeadless.exe": "https://files.ballistica.net/cache/ba1/e2/5e/c228d10c06c5a27a8dd790cdd7ac",
"build/prefab/full/windows_x86_server/release/dist/BallisticaCoreHeadless.exe": "https://files.ballistica.net/cache/ba1/80/17/0f9b987d6feaaa06586d77708a2a",
"build/prefab/lib/linux_arm64_gui/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/6d/55/43cb804fe2b6b591e8c4713a1f4f",
"build/prefab/lib/linux_arm64_gui/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/fe/61/9eaaa15072167c2928db497e8d36",
"build/prefab/lib/linux_arm64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/99/f1/ac4818ad69cfe75f7091ee08231b",
"build/prefab/lib/linux_arm64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/19/93/20ef44fccd2fbec462e75eaebb94",
"build/prefab/lib/linux_x86_64_gui/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/f5/21/0b5914e203834307064814157891",
"build/prefab/lib/linux_x86_64_gui/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/9b/ec/39c43dc87aa884935ebd41c51a65",
"build/prefab/lib/linux_x86_64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/0f/47/7cdadc48b80922a35fef02954f55",
"build/prefab/lib/linux_x86_64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/b5/1a/9237a45253d7fb78caa61dda705d",
"build/prefab/lib/mac_arm64_gui/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/76/67/9e81120039eaa5dd2fdea8158920",
"build/prefab/lib/mac_arm64_gui/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/9c/f0/b700bcf9f82f3569ff65cec8195c",
"build/prefab/lib/mac_arm64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/83/b6/5e554b5077bd5fe5f539250c11e9",
"build/prefab/lib/mac_arm64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/04/24/505ea85abe32bb75db13d76d7b0d",
"build/prefab/lib/mac_x86_64_gui/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/52/b6/f0ef528479230a231ad44afd0644",
"build/prefab/lib/mac_x86_64_gui/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/8b/4a/df2e8786ef7c5594d57bdd50f753",
"build/prefab/lib/mac_x86_64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/27/a2/2b5dc6f6be53b109294ce735f59f",
"build/prefab/lib/mac_x86_64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/87/e1/2d4766493963104e82f0eaa2b5e9",
"build/prefab/lib/windows/Debug_Win32/BallisticaCoreGenericInternal.lib": "https://files.ballistica.net/cache/ba1/9d/9e/e29c498921f94332eae9a018677a",
"build/prefab/lib/windows/Debug_Win32/BallisticaCoreGenericInternal.pdb": "https://files.ballistica.net/cache/ba1/c4/c1/b3de603cacf7f5653d8f6bd04e92",
"build/prefab/lib/windows/Debug_Win32/BallisticaCoreHeadlessInternal.lib": "https://files.ballistica.net/cache/ba1/49/56/e4f599c6fff94771efb95f3650d6",
"build/prefab/lib/windows/Debug_Win32/BallisticaCoreHeadlessInternal.pdb": "https://files.ballistica.net/cache/ba1/85/5d/dfeae15689ff7e4367b150511668",
"build/prefab/lib/windows/Release_Win32/BallisticaCoreGenericInternal.lib": "https://files.ballistica.net/cache/ba1/d2/ed/47380a2a0284f6af2066420127a6",
"build/prefab/lib/windows/Release_Win32/BallisticaCoreGenericInternal.pdb": "https://files.ballistica.net/cache/ba1/c8/cc/f347c5b8641c8bb2d182a637c84c",
"build/prefab/lib/windows/Release_Win32/BallisticaCoreHeadlessInternal.lib": "https://files.ballistica.net/cache/ba1/00/c5/3c70c8c77994440dd1c9e5f76d18",
"build/prefab/lib/windows/Release_Win32/BallisticaCoreHeadlessInternal.pdb": "https://files.ballistica.net/cache/ba1/63/58/9d32ce2c6a69ce3702994bfff3dc",
"src/ballistica/generated/python_embedded/binding.inc": "https://files.ballistica.net/cache/ba1/6e/6f/004b696e9a13b083069374e4bb6a",
"src/ballistica/generated/python_embedded/bootstrap.inc": "https://files.ballistica.net/cache/ba1/d3/db/e73d4dcf1280d5f677c3cf8b47c3"
}

View File

@ -588,6 +588,7 @@
<w>dereferencing</w>
<w>descpos</w>
<w>dest</w>
<w>destdir</w>
<w>devel</w>
<w>devicename</w>
<w>devtool</w>
@ -1031,6 +1032,7 @@
<w>getstarttime</w>
<w>gettext</w>
<w>gettexture</w>
<w>gettime</w>
<w>gfile</w>
<w>gfxb</w>
<w>ghnc</w>
@ -1387,6 +1389,7 @@
<w>loadpackage</w>
<w>localconfig</w>
<w>localdir</w>
<w>localmodlibs</w>
<w>localns</w>
<w>localuser</w>
<w>locationgroup</w>
@ -1665,6 +1668,7 @@
<w>nowtickets</w>
<w>npos</w>
<w>nprocessors</w>
<w>nsec</w>
<w>nsworkspace</w>
<w>ntpath</w>
<w>ntriple</w>
@ -2443,6 +2447,7 @@
<w>targetpractice</w>
<w>targs</w>
<w>tasklabel</w>
<w>tbegin</w>
<w>tbtcolor</w>
<w>tbtn</w>
<w>tbttxt</w>
@ -2454,6 +2459,7 @@
<w>tcombine</w>
<w>tdelay</w>
<w>tdels</w>
<w>tdiff</w>
<w>tdlds</w>
<w>tdval</w>
<w>teambasesession</w>

View File

@ -1,4 +1,4 @@
### 1.7.3 (20629, 2022-07-05)
### 1.7.3 (20634, 2022-07-06)
- Fixed an issue with King of the Hill flag regions not working when players entered them (Thanks itsre3!)
- Fixed an issue in Chosen One where the flag resetting on top of a player would not cause them to become the chosen one (Thanks Dliwk!)
- Fixed an issue where triple-bomb powerup would not flash before wearing off (Thanks Juleskie!).
@ -13,8 +13,7 @@
- The app now issues a warning if unable to establish secure connections to cloud servers (which can be due to aforementioned issue, but could also stem from other network problems).
- The Network Testing utility (Settings->Advanced->Network Testing) now tests for more potential issues including ones mentioned above.
- The Android version now stores files such as extracted assets and audio caches in the non-backed-up files dir (Android's Context.getNoBackupFilesDir()). These files can always be recreated by the app so they don't need backups, and this makes it more likely that Android will back up what's left in the regular files dir (the app config, etc).
- Fixed an issue causing hitches during background SSL network operations (manifesting on the Android version but theoretically possibly anywhere).
### 1.7.2 (20620, 2022-06-25)
- Minor fixes in some minigames (Thanks Droopy!)

View File

@ -1 +1 @@
26390464474167776621039904449805338328
278132313134406072250536815637474504399

View File

@ -56,6 +56,7 @@ class AdvancedSettingsWindow(ba.Window):
scale=(2.06 if uiscale is ba.UIScale.SMALL else
1.4 if uiscale is ba.UIScale.MEDIUM else 1.0),
stack_offset=(0, -25) if uiscale is ba.UIScale.SMALL else (0, 0)))
self._prev_lang = ''
self._prev_lang_list: list[str] = []
self._complete_langs_list: list | None = None

View File

@ -311,6 +311,7 @@
<w>demangling</w>
<w>denom</w>
<w>dernit</w>
<w>destdir</w>
<w>dets</w>
<w>dfba</w>
<w>dffc</w>
@ -527,6 +528,7 @@
<w>getsession</w>
<w>getsound</w>
<w>gettexture</w>
<w>gettime</w>
<w>gettotalrefcount</w>
<w>gles</w>
<w>glext</w>
@ -686,6 +688,7 @@
<w>linkstoryboards</w>
<w>listobj</w>
<w>llock</w>
<w>localmodlibs</w>
<w>localns</w>
<w>lockpath</w>
<w>lockstr</w>
@ -846,6 +849,7 @@
<w>notorized</w>
<w>nowtickets</w>
<w>nptr</w>
<w>nsec</w>
<w>nsize</w>
<w>nsworkspace</w>
<w>ntoa</w>
@ -1239,8 +1243,10 @@
<w>talloc</w>
<w>targs</w>
<w>tasklabel</w>
<w>tbegin</w>
<w>tcls</w>
<w>tdels</w>
<w>tdiff</w>
<w>tdlds</w>
<w>tegra</w>
<w>telefonaktiebolaget</w>

View File

@ -21,7 +21,7 @@
namespace ballistica {
// These are set automatically via script; don't modify them here.
const int kAppBuildNumber = 20629;
const int kAppBuildNumber = 20634;
const char* kAppVersion = "1.7.3";
// Our standalone globals.

View File

@ -498,10 +498,6 @@ void Game::HandleQuitOnIdle() {
PushCall([this, idle_seconds] {
assert(InGameThread());
// Special exit value the wrapper script looks for to know we idled out.
// UPDATE: no longer need this.
// g_app_globals->return_value = 154;
// Just go through _ba.quit()
// FIXME: Shouldn't need to go out to the python layer here...
g_python->obj(Python::ObjID::kQuitCall).Call();
@ -512,10 +508,10 @@ void Game::HandleQuitOnIdle() {
// Bring our scenes, real-time timers, etc up to date.
void Game::Update() {
auto startms{Platform::GetCurrentMilliseconds()};
assert(InGameThread());
millisecs_t real_time = GetRealTime();
g_platform->SetDebugKey("LastUpdateTime",
std::to_string(Platform::GetCurrentMilliseconds()));
g_platform->SetDebugKey("LastUpdateTime", std::to_string(startms));
if (first_update_) {
master_time_offset_ = master_time_ - real_time;
first_update_ = false;
@ -652,6 +648,20 @@ void Game::Update() {
step++;
}
in_update_ = false;
// Report excessively long updates.
if (real_time >= next_long_update_report_time_) {
auto duration{Platform::GetCurrentMilliseconds() - startms};
// Complain when our full update takes longer than 1/60th second.
if (duration > (1000 / 60)) {
Log("Game update took too long (" + std::to_string(duration) + " ms).",
true, false);
// Limit these if we want (not doing so for now).
next_long_update_report_time_ = real_time;
}
}
}
// Reset the game to a blank slate.

View File

@ -296,6 +296,7 @@ class Game : public Module {
millisecs_t largest_draw_time_increment_since_last_reset_{};
millisecs_t last_draw_real_time_{};
millisecs_t first_draw_real_time_{};
millisecs_t next_long_update_report_time_{};
// *All* existing sessions (including old ones waiting to shut down).
std::vector<Object::Ref<Session> > sessions_;

View File

@ -2246,10 +2246,16 @@ void Python::LogContextAuto() {
}
void Python::AcquireGIL() {
auto startms{Platform::GetCurrentMilliseconds()};
if (thread_state_) {
PyEval_RestoreThread(thread_state_);
thread_state_ = nullptr;
}
auto duration{Platform::GetCurrentMilliseconds() - startms};
if (duration > (1000 / 120)) {
Log("GIL acquire took too long (" + std::to_string(duration) + " ms).",
true, false);
}
}
void Python::ReleaseGIL() {
assert(thread_state_ == nullptr);
@ -2583,12 +2589,10 @@ auto Python::ValidatedPackageAssetName(PyObject* package, const char* name)
class Python::ScopedInterpreterLock::Impl {
public:
Impl() : need_lock_(true), gstate_(PyGILState_UNLOCKED) {
Impl() {
if (need_lock_) {
if (need_lock_) {
// Grab the python GIL.
gstate_ = PyGILState_Ensure();
}
// Grab the python GIL.
gstate_ = PyGILState_Ensure();
}
}
~Impl() {
@ -2599,8 +2603,8 @@ class Python::ScopedInterpreterLock::Impl {
}
private:
bool need_lock_ = false;
PyGILState_STATE gstate_;
bool need_lock_{true};
PyGILState_STATE gstate_{PyGILState_UNLOCKED};
};
Python::ScopedInterpreterLock::ScopedInterpreterLock()

View File

@ -341,7 +341,7 @@ def test_simultaneous_messages() -> None:
)
# This should all go through in the same time that 1 goes through in.
assert (time.monotonic() - starttime) < 1.1 * SLOW_WAIT
assert (time.monotonic() - starttime) < 1.25 * SLOW_WAIT
# Make sure we got all correct responses.
assert all(r.messagetype is _MessageType.RESPONSE_SLOW

View File

@ -1,5 +1,6 @@
# Released under the MIT License. See LICENSE for details.
#
# pylint: disable=too-many-lines
"""A nice collection of ready-to-use pcommands for this package."""
from __future__ import annotations
@ -305,6 +306,12 @@ def gen_fulltest_buildfile_linux() -> None:
batools.build.gen_fulltest_buildfile_linux()
def python_version_build_base() -> None:
"""Print built Python base version."""
from efrotools.pybuild import PY_VER
print(PY_VER, end='')
def python_version_android() -> None:
"""Print Android embedded Python version."""
from efrotools.pybuild import PY_VER_EXACT_ANDROID
@ -734,12 +741,15 @@ def efro_gradle() -> None:
target_words = [w.lower() for w in _camel_case_split(args[-1])]
if 'google' in target_words:
enabled_tags = {'google', 'crashlytics'}
prev_suffix = 'efro_gradle_prev'
buildfilename = 'BallisticaCore/build.gradle'
# Move the original file out of the way and operate on a copy of it.
subprocess.run(['mv', buildfilename, f'{buildfilename}.prev'], check=True)
subprocess.run(['cp', f'{buildfilename}.prev', buildfilename], check=True)
subprocess.run(['mv', buildfilename, f'{buildfilename}.{prev_suffix}'],
check=True)
subprocess.run(['cp', f'{buildfilename}.{prev_suffix}', buildfilename],
check=True)
filter_gradle_file(buildfilename, enabled_tags)
@ -750,7 +760,8 @@ def efro_gradle() -> None:
errored = True
# Restore the original.
subprocess.run(['mv', f'{buildfilename}.prev', buildfilename], check=True)
subprocess.run(['mv', f'{buildfilename}.{prev_suffix}', buildfilename],
check=True)
if errored:
sys.exit(1)

View File

@ -15,7 +15,7 @@ if TYPE_CHECKING:
# Python version we build here (not necessarily same as we use in repo).
PY_VER = '3.10'
PY_VER_EXACT_ANDROID = '3.10.4'
PY_VER_EXACT_ANDROID = '3.10.5'
PY_VER_EXACT_APPLE = '3.10.4'
ANDROID_PYTHON_REPO = 'https://github.com/GRRedWings/python3-android'
@ -170,8 +170,9 @@ def build_android(rootdir: str, arch: str, debug: bool = False) -> None:
)
os.chdir(builddir)
# TEMP - use 3.9.6 branch
# subprocess.run(['git', 'checkout', PY_VER_EXACT_ANDROID], check=True)
# If we need to use a particular branch.
if bool(False):
subprocess.run(['git', 'checkout', PY_VER_EXACT_ANDROID], check=True)
# These builds require ANDROID_NDK to be set; make sure that's the case.
os.environ['ANDROID_NDK'] = subprocess.check_output(
@ -180,8 +181,6 @@ def build_android(rootdir: str, arch: str, debug: bool = False) -> None:
# Disable builds for dependencies we don't use.
ftxt = readfile('Android/build_deps.py')
# ftxt = replace_exact(ftxt, ' NCurses,\n',
# '# NCurses,\n',)
ftxt = replace_exact(
ftxt,
' '
@ -190,13 +189,6 @@ def build_android(rootdir: str, arch: str, debug: bool = False) -> None:
'BZip2, LibUUID, OpenSSL, SQLite, XZ, ZLib,\n',
)
# Older ssl seems to choke on newer ndk layouts.
if bool(False):
ftxt = replace_exact(
ftxt,
"source = 'https://www.openssl.org/source/openssl-1.1.1h.tar.gz'",
"source = 'https://www.openssl.org/source/openssl-1.1.1l.tar.gz'")
# Give ourselves a handle to patch the OpenSSL build.
ftxt = replace_exact(
ftxt,
@ -220,7 +212,7 @@ def build_android(rootdir: str, arch: str, debug: bool = False) -> None:
f' python_android_patch Python-{PY_VER_EXACT_ANDROID}\n popd\n')
writefile('build.sh', ftxt)
# Ok, let 'er rip
# Ok; let 'er rip!
exargs = ' --with-pydebug' if debug else ''
subprocess.run(f'ARCH={arch} ANDROID_API=21 ./build.sh{exargs}',
shell=True,
@ -240,11 +232,64 @@ def apple_patch(arch: str, slc: str) -> None:
outfile.write('# cleared by efrotools build\n')
_patch_setup_file('apple', arch, slc)
_patch_py_ssl()
def android_patch() -> None:
"""Run necessary patches on an android archive before building."""
_patch_setup_file('android', '?', '?')
_patch_py_ssl()
def android_patch_ssl() -> None:
"""Run necessary patches on an android ssl before building."""
# We bundle our own SSL root certificates on various platforms and use
# the OpenSSL 'SSL_CERT_FILE' env var override to get them to be used
# by default. However, OpenSSL is picky about allowing env-vars to be
# used and something about the Android environment makes it disallow
# them. So we need to force the issue. Alternately we could explicitly
# pass 'cafile' args to SSLContexts whenever we do network-y stuff
# but it seems cleaner to just have things work everywhere by default.
fname = 'crypto/getenv.c'
txt = readfile(fname)
txt = replace_exact(
txt,
('char *ossl_safe_getenv(const char *name)\n'
'{\n'),
('char *ossl_safe_getenv(const char *name)\n'
'{\n'
' // ERICF TWEAK: ALWAYS ALLOW GETENV.\n'
' return getenv(name);\n'),
)
writefile(fname, txt)
def _patch_py_ssl() -> None:
# I've tracked down an issue where Python's SSL module
# can spend lots of time in SSL_CTX_set_default_verify_paths()
# while holding the GIL, which hitches the game like crazy.
# On debug builds on older Android devices it can spend up to
# 1-2 seconds there. So its necessary to release the GIL during that
# call to keep things smooth. Will submit a report/patch to the
# Python folks, but for now am just patching it for our Python builds.
# NOTE TO SELF: It would also be good to look into why that call can be
# so slow and if there's anything we can do about that.
fname = 'Modules/_ssl.c'
txt = readfile(fname)
txt = replace_exact(
txt,
' if (!SSL_CTX_set_default_verify_paths(self->ctx)) {',
' int ret = 0;\n'
'\n'
' PySSL_BEGIN_ALLOW_THREADS\n'
' ret = SSL_CTX_set_default_verify_paths(self->ctx);\n'
' PySSL_END_ALLOW_THREADS\n'
'\n'
' if (!ret) {',
)
writefile(fname, txt)
def _patch_setup_file(platform: str, arch: str, slc: str) -> None:
@ -409,30 +454,6 @@ def _patch_setup_file(platform: str, arch: str, slc: str) -> None:
writefile(fname, txt)
def android_patch_ssl() -> None:
"""Run necessary patches on an android ssl before building."""
# We bundle our own SSL root certificates on various platforms and use
# the OpenSSL 'SSL_CERT_FILE' env var override to get them to be used
# by default. However, OpenSSL is picky about allowing env-vars to be
# used and something about the Android environment makes it disallow
# them. So we need to force the issue. Alternately we could explicitly
# pass 'cafile' args to SSLContexts whenever we do network-y stuff
# but it seems cleaner to just have things work by default.
fname = 'crypto/getenv.c'
txt = readfile(fname)
txt = replace_exact(
txt,
('char *ossl_safe_getenv(const char *name)\n'
'{\n'),
('char *ossl_safe_getenv(const char *name)\n'
'{\n'
' // ERICF TWEAK: ALWAYS ALLOW GETENV.\n'
' return getenv(name);\n'),
)
writefile(fname, txt)
def winprune() -> None:
"""Prune unneeded files from windows python dists."""
for libdir in ('assets/src/windows/Win32/Lib',

View File

@ -31,11 +31,11 @@ from batools.pcommand import (
gen_fulltest_buildfile_android, gen_fulltest_buildfile_windows,
gen_fulltest_buildfile_apple, gen_fulltest_buildfile_linux,
python_version_android, python_version_apple, python_build_apple,
python_build_apple_debug, python_build_android, python_build_android_debug,
python_android_patch, python_android_patch_ssl, python_apple_patch,
python_gather, python_winprune, capitalize, upper, efrocache_update,
efrocache_get, get_modern_make, warm_start_asset_build, gendocs,
list_pip_reqs, install_pip_reqs, checkenv, ensure_prefab_platform,
python_version_build_base, python_build_apple_debug, python_build_android,
python_build_android_debug, python_android_patch, python_android_patch_ssl,
python_apple_patch, python_gather, python_winprune, capitalize, upper,
efrocache_update, efrocache_get, get_modern_make, warm_start_asset_build,
gendocs, list_pip_reqs, install_pip_reqs, checkenv, ensure_prefab_platform,
prefab_run_var, make_prefab, lazybuild, android_archive_unstripped_libs,
efro_gradle, stage_assets, update_assets_makefile, update_project,
update_cmake_prefab_lib, cmake_prep_dir, gen_binding_code,